Exemplo n.º 1
0
        /// <summary>
        /// ToDo: Cloning of Preconditioner is not supported.
        /// </summary>
        /// <returns></returns>
        public ISolverSmootherTemplate Clone()
        {
            var clone = new SoftPCG();

            clone.IterationCallback = this.IterationCallback;
            clone.NoOfIterations    = this.NoOfIterations;
            clone.m_Tolerance       = this.m_Tolerance;
            clone.m_MaxIterations   = this.m_MaxIterations;
            clone.m_MinIterations   = this.m_MinIterations;
            clone.Precond           = null;
            return(clone);
        }
Exemplo n.º 2
0
        static public ISolverSmootherTemplate InitMultigridChain(MultigridOperator MgOp,
                                                                 Action <int, SoftPCG> ParamsSeter,
                                                                 Func <ISolverSmootherTemplate> CoarsestSolverFactory)
        {
            //
            if (MgOp.CoarserLevel == null)
            {
                return(CoarsestSolverFactory());
            }
            else
            {
                var MgTop = new SoftPCG();
                ParamsSeter(MgOp.LevelIndex, MgTop);

                var R = new GenericRestriction();
                MgTop.Precond        = R;
                R.CoarserLevelSolver = InitMultigridChain(MgOp.CoarserLevel, ParamsSeter, CoarsestSolverFactory);

                return(MgTop);
            }
        }