Foam::GAMGPreconditioner::GAMGPreconditioner ( const lduMatrix::solver& sol, const dictionary& solverControls ) : GAMGSolver ( sol.fieldName(), sol.matrix(), sol.interfaceBouCoeffs(), sol.interfaceIntCoeffs(), sol.interfaces(), solverControls ), lduMatrix::preconditioner(sol), nVcycles_(2) { readControls(); }
//add by xiaow:begin Foam::amgPrecon::amgPrecon ( const lduMatrix::solver& sol, const dictionary& dict ): lduPreconditioner ( sol ), cycle_(amgCycle::cycleNames_.read(dict.lookup("cycle"))), nPreSweeps_(readLabel(dict.lookup("nPreSweeps"))), nPostSweeps_(readLabel(dict.lookup("nPostSweeps"))), nMaxLevels_(readLabel(dict.lookup("nMaxLevels"))), scale_(dict.lookup("scale")), amgPtr_ ( new amgCycle ( autoPtr<amgLevel> ( new fineAmgLevel ( sol.matrix(), sol.interfaceBouCoeffs(), sol.interfaceIntCoeffs(), sol.interfaces(), dict, dict.lookup("policy"), readLabel(dict.lookup("groupSize")), readLabel(dict.lookup("minCoarseEqns")), dict.lookup("smoother") ) ) ) ), xBuffer_(sol.matrix().lduAddr().size()) { // Make coarse levels amgPtr_->makeCoarseLevels(nMaxLevels_); }