|
OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Implements the solution of linear system of equation in the form
using iterative solvers from IML++ library.
More...
#include <imlsolver.h>
Inheritance diagram for oofem::IMLSolver:
Collaboration diagram for oofem::IMLSolver:Public Member Functions | |
| IMLSolver (Domain *d, EngngModel *m) | |
| Constructor. Creates new instance of LDLTFactorization, with number i, belonging to domain d and Engngmodel m. More... | |
| virtual | ~IMLSolver () |
| Destructor. More... | |
| virtual NM_Status | solve (SparseMtrx &A, FloatArray &b, FloatArray &x) |
| Solves the given linear system iteratively by method described by IMLSolverType. More... | |
| virtual IRResultType | initializeFrom (InputRecord *ir) |
| virtual const char * | giveClassName () const |
| virtual LinSystSolverType | giveLinSystSolverType () const |
| virtual SparseMtrxType | giveRecommendedMatrix (bool symmetric) const |
| Returns the recommended sparse matrix type for this solver. More... | |
Public Member Functions inherited from oofem::SparseLinearSystemNM | |
| SparseLinearSystemNM (Domain *d, EngngModel *m) | |
| Constructor. More... | |
| virtual | ~SparseLinearSystemNM () |
| Destructor. More... | |
| std::string | errorInfo (const char *func) |
| virtual NM_Status | solve (SparseMtrx &A, FloatMatrix &B, FloatMatrix &X) |
Solves the given sparse linear system of equations . More... | |
Public Member Functions inherited from oofem::NumericalMethod | |
| NumericalMethod (Domain *d, EngngModel *m) | |
| Constructor. More... | |
| virtual | ~NumericalMethod () |
| Destructor. More... | |
| EngngModel * | giveEngngModel () |
| virtual void | reinitialize () |
| Reinitializes the receiver. More... | |
| virtual void | setDomain (Domain *d) |
| virtual contextIOResultType | saveContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
| virtual contextIOResultType | restoreContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Private Types | |
| enum | IMLSolverType { IML_ST_CG, IML_ST_GMRES } |
| Solver type. More... | |
| enum | IMLPrecondType { IML_VoidPrec, IML_DiagPrec, IML_ILU_CompColPrec, IML_ILU_CompRowPrec, IML_ICPrec } |
| Preconditioner type. More... | |
Private Attributes | |
| SparseMtrx * | Lhs |
| Last mapped Lhs matrix. More... | |
| SparseMtrx::SparseMtrxVersionType | lhsVersion |
| Last mapped matrix version. More... | |
| Preconditioner * | M |
| Preconditioner. More... | |
| IMLSolverType | solverType |
| IML Solver type. More... | |
| IMLPrecondType | precondType |
| IML Preconditioner type. More... | |
| bool | precondInit |
| Precond. init flag. More... | |
| double | tol |
| Tolerance of residual. More... | |
| int | maxite |
| Max number of iterations. More... | |
Additional Inherited Members | |
Protected Attributes inherited from oofem::NumericalMethod | |
| Domain * | domain |
| Pointer to domain. More... | |
| EngngModel * | engngModel |
| Pointer to engineering model. More... | |
Implements the solution of linear system of equation in the form
using iterative solvers from IML++ library.
Can work with any sparse matrix implementation.
Definition at line 61 of file imlsolver.h.
|
private |
Preconditioner type.
| Enumerator | |
|---|---|
| IML_VoidPrec | |
| IML_DiagPrec | |
| IML_ILU_CompColPrec | |
| IML_ILU_CompRowPrec | |
| IML_ICPrec | |
Definition at line 67 of file imlsolver.h.
|
private |
| oofem::IMLSolver::IMLSolver | ( | Domain * | d, |
| EngngModel * | m | ||
| ) |
Constructor. Creates new instance of LDLTFactorization, with number i, belonging to domain d and Engngmodel m.
|
virtual |
|
inlinevirtual |
Implements oofem::SparseLinearSystemNM.
Definition at line 106 of file imlsolver.h.
|
inlinevirtual |
Implements oofem::SparseLinearSystemNM.
Definition at line 107 of file imlsolver.h.
References oofem::ST_IML.
|
inlinevirtual |
Returns the recommended sparse matrix type for this solver.
Implements oofem::SparseLinearSystemNM.
Definition at line 108 of file imlsolver.h.
References oofem::SMT_CompCol, and oofem::SMT_SymCompCol.
|
virtual |
Reimplemented from oofem::NumericalMethod.
Definition at line 74 of file imlsolver.C.
References _IFT_IMLSolver_lsiter, _IFT_IMLSolver_lsprecond, _IFT_IMLSolver_lstol, _IFT_IMLSolver_stype, IML_DiagPrec, IML_ICPrec, IML_ILU_CompColPrec, IML_ILU_CompRowPrec, IML_VoidPrec, oofem::Preconditioner::initializeFrom(), IR_GIVE_OPTIONAL_FIELD, oofem::IRRT_BAD_FORMAT, M, maxite, OOFEM_WARNING, precondType, solverType, and tol.
|
virtual |
Solves the given linear system iteratively by method described by IMLSolverType.
| A | Coefficient matrix. |
| b | Right hand side. |
| x | Solution array. |
Implements oofem::SparseLinearSystemNM.
Definition at line 114 of file imlsolver.C.
References oofem::Timer::getUtime(), oofem::Preconditioner::giveClassName(), oofem::FloatArray::giveSize(), oofem::SparseMtrx::giveVersion(), IML_ST_CG, IML_ST_GMRES, oofem::Preconditioner::init(), Lhs, lhsVersion, M, maxite, NM_Success, OOFEM_ERROR, OOFEM_LOG_INFO, precondInit, solverType, oofem::Timer::startTimer(), oofem::Timer::stopTimer(), and tol.
|
private |
|
private |
|
private |
Definition at line 74 of file imlsolver.h.
Referenced by initializeFrom(), solve(), and ~IMLSolver().
|
private |
Max number of iterations.
Definition at line 87 of file imlsolver.h.
Referenced by initializeFrom(), and solve().
|
private |
|
private |
|
private |
IML Solver type.
Definition at line 76 of file imlsolver.h.
Referenced by initializeFrom(), and solve().
|
private |
Tolerance of residual.
Definition at line 85 of file imlsolver.h.
Referenced by initializeFrom(), and solve().