Foam::GAMGPreconditioner::GAMGPreconditioner ( const lduMatrix& matrix, const FieldField<Field, scalar>& coupleBouCoeffs, const FieldField<Field, scalar>& coupleIntCoeffs, const lduInterfaceFieldPtrsList& interfaces, const dictionary& dict ) : lduPreconditioner ( matrix, coupleBouCoeffs, coupleIntCoeffs, interfaces ), GAMG_ ( "dummy", matrix, coupleBouCoeffs, coupleIntCoeffs, interfaces, dict ), nVcycles_(2) { readControls(); }
Foam::GAMGSolver::GAMGSolver ( const word& fieldName, const lduMatrix& matrix, const FieldField<gpuField, scalar>& interfaceBouCoeffs, const FieldField<gpuField, scalar>& interfaceIntCoeffs, const lduInterfaceFieldPtrsList& interfaces, const dictionary& solverControls ) : lduMatrix::solver ( fieldName, matrix, interfaceBouCoeffs, interfaceIntCoeffs, interfaces, solverControls ), cacheAgglomeration_(true), nPreSweeps_(0), preSweepsLevelMultiplier_(1), maxPreSweeps_(4), nPostSweeps_(2), postSweepsLevelMultiplier_(1), maxPostSweeps_(4), nFinestSweeps_(2), interpolateCorrection_(false), scaleCorrection_(matrix.symmetric()), agglomeration_(GAMGAgglomeration::New(matrix_, controlDict_)), matrixLevels_(agglomeration_.size()), primitiveInterfaceLevels_(agglomeration_.size()), interfaceLevels_(agglomeration_.size()), interfaceLevelsBouCoeffs_(agglomeration_.size()), interfaceLevelsIntCoeffs_(agglomeration_.size()) { readControls(); forAll(agglomeration_, fineLevelIndex) { // Agglomerate on to coarse level mesh agglomerateMatrix ( fineLevelIndex, agglomeration_.meshLevel(fineLevelIndex + 1), agglomeration_.interfaceLevel(fineLevelIndex + 1) ); }
Foam::SmoothSolver<Type, DType, LUType>::SmoothSolver ( const word& fieldName, const LduMatrix<Type, DType, LUType>& matrix, const dictionary& solverDict ) : LduMatrix<Type, DType, LUType>::solver ( fieldName, matrix, solverDict ), nSweeps_(1) { readControls(); }
Foam::lduMatrix::solver::solver ( const word& fieldName, const lduMatrix& matrix, const FieldField<Field, scalar>& interfaceBouCoeffs, const FieldField<Field, scalar>& interfaceIntCoeffs, const lduInterfaceFieldPtrsList& interfaces, const dictionary& solverControls ) : fieldName_(fieldName), matrix_(matrix), interfaceBouCoeffs_(interfaceBouCoeffs), interfaceIntCoeffs_(interfaceIntCoeffs), interfaces_(interfaces), controlDict_(solverControls) { readControls(); }
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(); }
Foam::smoothSolver::smoothSolver ( const word& fieldName, const lduMatrix& matrix, const FieldField<Field, scalar>& interfaceBouCoeffs, const FieldField<Field, scalar>& interfaceIntCoeffs, const lduInterfaceFieldPtrsList& interfaces, const dictionary& solverControls ) : lduMatrix::solver ( fieldName, matrix, interfaceBouCoeffs, interfaceIntCoeffs, interfaces, solverControls ) { readControls(); }
//- Construct from matrix Foam::coupledSmoothSolver::coupledSmoothSolver ( const word& fieldName, const coupledLduMatrix& matrix, const PtrList<FieldField<Field, scalar> >& bouCoeffs, const PtrList<FieldField<Field, scalar> >& intCoeffs, const lduInterfaceFieldPtrsListList& interfaces, const dictionary& solverData ) : coupledIterativeSolver ( fieldName, matrix, bouCoeffs, intCoeffs, interfaces, solverData ), nSweeps_(1) { readControls(); }
Foam::lduMatrix::solver::solver ( const word& fieldName, const lduMatrix& matrix, const FieldField<Field, scalar>& coupleBouCoeffs, const FieldField<Field, scalar>& coupleIntCoeffs, const lduInterfaceFieldPtrsList& interfaces, const dictionary& dict ) : fieldName_(fieldName), dict_(dict), tolerance_(0), relTolerance_(0), minIter_(0), maxIter_(0), matrix_(matrix), coupleBouCoeffs_(coupleBouCoeffs), coupleIntCoeffs_(coupleIntCoeffs), interfaces_(interfaces) { readControls(); }
void Foam::lduMatrix::solver::read(const dictionary& solverControls) { controlDict_ = solverControls; readControls(); }
void Foam::lduMatrix::solver::read(const dictionary& dict) { dict_ = dict; readControls(); }