Ejemplo n.º 1
0
        /// <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));
        }