bool Foam::SolverPerformance<Type>::operator!= ( const SolverPerformance<Type>& sp ) const { return ( solverName() != sp.solverName() || fieldName() != sp.fieldName() || initialResidual() != sp.initialResidual() || finalResidual() != sp.finalResidual() || nIterations() != sp.nIterations() || converged() != sp.converged() || singular() != sp.singular() ); }
autoPtr<coupledLduSolver> coupledLduSolver::New ( const word& fieldName, const coupledLduMatrix& matrix, const PtrList<FieldField<Field, scalar> >& bouCoeffs, const PtrList<FieldField<Field, scalar> >& intCoeffs, const lduInterfaceFieldPtrsListList& interfaces, const dictionary& dict ) { word solverName(dict.lookup("solver")); if (matrix.diagonal()) { return autoPtr<coupledLduSolver> ( new coupledDiagonalSolver ( fieldName, matrix, bouCoeffs, intCoeffs, interfaces ) ); } else if (matrix.symmetric()) { symMatrixConstructorTable::iterator constructorIter = symMatrixConstructorTablePtr_->find(solverName); if (constructorIter == symMatrixConstructorTablePtr_->end()) { FatalIOErrorIn ( "autoPtr<coupledLduSolver> coupledLduSolver::New\n" "(\n" " const word& fieldName,\n" " const coupledLduMatrix& matrix,\n" " const PtrList<FieldField<Field, scalar> >& bouCoeffs,\n" " const PtrList<FieldField<Field, scalar> >& intCoeffs,\n" " const lduInterfaceFieldPtrsListList& interfaces,\n" " const dictionary& dict\n" ")", dict ) << "Unknown symmetric matrix solver " << solverName << endl << endl << "Valid symmetric matrix solvers are :" << endl << symMatrixConstructorTablePtr_->sortedToc() << exit(FatalIOError); } return autoPtr<coupledLduSolver> ( constructorIter() ( fieldName, matrix, bouCoeffs, intCoeffs, interfaces, dict ) ); } else if (matrix.asymmetric()) { asymMatrixConstructorTable::iterator constructorIter = asymMatrixConstructorTablePtr_->find(solverName); if (constructorIter == asymMatrixConstructorTablePtr_->end()) { FatalIOErrorIn ( "autoPtr<coupledLduSolver> coupledLduSolver::New\n" "(\n" " const word& fieldName,\n" " const coupledLduMatrix& matrix,\n" " const PtrList<FieldField<Field, scalar> >& bouCoeffs,\n" " const PtrList<FieldField<Field, scalar> >& intCoeffs,\n" " const lduInterfaceFieldPtrsListList& interfaces,\n" " const dictionary& dict\n" ")", dict ) << "Unknown asymmetric matrix solver " << solverName << endl << endl << "Valid asymmetric matrix solvers are :" << endl << asymMatrixConstructorTablePtr_->sortedToc() << exit(FatalIOError); } return autoPtr<coupledLduSolver> ( constructorIter() ( fieldName, matrix, bouCoeffs, intCoeffs, interfaces, dict ) ); } else { FatalErrorIn ( "autoPtr<coupledLduSolver> coupledLduSolver::New\n" "(\n" " const word& fieldName,\n" " const coupledLduMatrix& matrix,\n" " const direction cmpt,\n" " const PtrList<FieldField<Field, scalar> >& bouCoeffs,\n" " const PtrList<FieldField<Field, scalar> >& intCoeffs,\n" " const lduInterfaceFieldPtrsListList& interfaces,\n" " const dictionary& dict\n" ")" ) << "cannot solve incomplete matrix, " "no diagonal or off-diagonal coefficient" << exit(FatalError); return autoPtr<coupledLduSolver>(NULL); } }
Foam::autoPtr<Foam::lduMatrix::solver> Foam::lduMatrix::solver::New ( const word& fieldName, const lduMatrix& matrix, const FieldField<Field, scalar>& coupleBouCoeffs, const FieldField<Field, scalar>& coupleIntCoeffs, const lduInterfaceFieldPtrsList& interfaces, const dictionary& dict ) { word solverName(dict.lookup("solver")); if (matrix.diagonal()) { return autoPtr<lduSolver> ( new diagonalSolver ( fieldName, matrix, coupleBouCoeffs, coupleIntCoeffs, interfaces, dict ) ); } else if (matrix.symmetric()) { symMatrixConstructorTable::iterator constructorIter = symMatrixConstructorTablePtr_->find(solverName); if (constructorIter == symMatrixConstructorTablePtr_->end()) { FatalIOErrorIn ( "lduSolver::New", dict ) << "Unknown symmetric matrix solver " << solverName << nl << nl << "Valid symmetric matrix solvers are :" << endl << symMatrixConstructorTablePtr_->toc() << exit(FatalIOError); } return autoPtr<lduSolver> ( constructorIter() ( fieldName, matrix, coupleBouCoeffs, coupleIntCoeffs, interfaces, dict ) ); } else if (matrix.asymmetric()) { asymMatrixConstructorTable::iterator constructorIter = asymMatrixConstructorTablePtr_->find(solverName); if (constructorIter == asymMatrixConstructorTablePtr_->end()) { FatalIOErrorIn ( "lduSolver::New", dict ) << "Unknown asymmetric matrix solver " << solverName << nl << nl << "Valid asymmetric matrix solvers are :" << endl << asymMatrixConstructorTablePtr_->toc() << exit(FatalIOError); } return autoPtr<lduSolver> ( constructorIter() ( fieldName, matrix, coupleBouCoeffs, coupleIntCoeffs, interfaces, dict ) ); } else { FatalIOErrorIn ( "lduSolver::New", dict ) << "cannot solve incomplete matrix, " "no diagonal or off-diagonal coefficient" << exit(FatalIOError); return autoPtr<lduSolver>(NULL); } }