/// <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); }
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); } }