/// <summary> /// Создаёт решатель для метода с указанным логером /// </summary> /// <param name="type">Метод</param> /// <param name="logger">Логер</param> /// <param name="factorizer">Разложение</param> /// <param name="krylovSubspaceDimension">Размерность подпространства Крылова</param> /// <returns></returns> public static ISolver Spawn(MethodsEnum type, ILogger logger, int krylovSubspaceDimension = 4) { IMethod method; switch (type) { case MethodsEnum.CGM: method = new CGM(); break; case MethodsEnum.GaussianSeidel: method = new GaussianSeidelMethod(); break; case MethodsEnum.Jacobi: method = new JacobiMethod(); break; case MethodsEnum.LOS: method = new LOS(); break; case MethodsEnum.BCGStab: method = new BCGStab(); break; default: return(null); } return(new LoggingSolver(method, logger)); }
/// <summary> /// Создаёт решатель для метода с указанным логером /// </summary> /// <param name="type">Метод</param> /// <param name="Logger">Логер</param> /// <param name="Factorizer">Разложение</param> /// <param name="KrylovSubspaceDimension">Размерность подпространства Крылова</param> /// <returns></returns> public ISolver Spawn(MethodsEnum type, ILogger Logger, IFactorization Factorizer = null, int KrylovSubspaceDimension = 4) { IMethod method = null; switch (type) { case MethodsEnum.CGMethod: break; case MethodsEnum.GaussianSeidelMethod: method = new GaussianSeidelMethod(); break; case MethodsEnum.JacobiMethod: method = new JacobiMethod(); break; case MethodsEnum.LOSMethod: break; case MethodsEnum.BCGStabMethod: break; case MethodsEnum.GMResMethod: break; default: return(null); } return(new LoggingSolver(method, Logger)); }