HermesCommon
2.0
|
Namespace for linear / nonlinear / iterative solvers. More...
Classes | |
class | DiscreteProblemInterface |
Minimalistic DiscreteProblem interface required by NoxProblemInterface. More... | |
class | LinearMatrixSolver |
Abstract class for defining solver interface. More... | |
class | DirectSolver |
Base class for defining interface for direct linear solvers. Internal, though utilizable for defining interfaces to other algebraic packages. More... | |
class | IterSolver |
Abstract class for defining interface for iterative solvers. Internal, though utilizable for defining interfaces to other algebraic packages. More... | |
class | NonlinearSolver |
Base class for defining interface for nonlinear solvers. More... | |
Enumerations | |
enum | FactorizationScheme { HERMES_FACTORIZE_FROM_SCRATCH, HERMES_REUSE_MATRIX_REORDERING, HERMES_REUSE_MATRIX_REORDERING_AND_SCALING, HERMES_REUSE_FACTORIZATION_COMPLETELY } |
Functions | |
template<typename Scalar > | |
HERMES_API LinearMatrixSolver < Scalar > * | create_linear_solver (Matrix< Scalar > *matrix, Vector< Scalar > *rhs) |
Function returning a solver according to the users's choice. More... | |
template<typename Scalar > | |
LinearMatrixSolver< Scalar > * | create_linear_solver (Matrix< Scalar > *matrix, Vector< Scalar > *rhs) |
Function returning a solver according to the users's choice. More... | |
template HERMES_API LinearMatrixSolver< double > * | create_linear_solver (Matrix< double > *matrix, Vector< double > *rhs) |
template HERMES_API LinearMatrixSolver < std::complex< double > > * | create_linear_solver (Matrix< std::complex< double > > *matrix, Vector< std::complex< double > > *rhs) |
Namespace for linear / nonlinear / iterative solvers.
\ brief Options for matrix factorization reuse.
Reusing the information computed during previous solution of a similar problem significantly improves efficiency of the solver.
Usage: Each solver which allows factorization reuse should perform complete factorization from scratch for the first time it is invoked, keep the precomputed structures according to the current factorization reuse stratregy and use them for next factorization.
Enabled solvers: -SuperLU
- performs reordering, scaling and factorization separately. When the multithreaded version is used, scaling is performed during the factorization phase (if neccessary) and thus HERMES_REUSE_MATRIX_REORDERING_AND_SCALING
and HERMES_REUSE_MATRIX_REORDERING
have the same effect. -UMFPack
- like the MT version of SuperLU, performs scaling and factorization in one step. HERMES_REUSE_MATRIX_REORDERING_AND_SCALING
has thus the same effect as HERMES_REUSE_MATRIX_REORDERING
(saves the preceding symbolic analysis step). -MUMPS
- If HERMES_REUSE_MATRIX_REORDERING_AND_SCALING
is set, scaling is performed during analysis and only factorization is repeated during each solve. If HERMES_REUSE_MATRIX_REORDERING
is set, scaling is performed during the factorization phase. This may be less efficient, but more reliable, especially for highly non-symmetric matrices. -AMESOS
- Behaves like UMFPack. -PETSc
- Factorization reuse applies to the construction of PETSc preconditioner. Both HERMES_REUSE_MATRIX_REORDERING_AND_SCALING
and HERMES_REUSE_MATRIX_REORDERING
allow to reuse the non-zero pattern of the previously created preconditioner, HERMES_REUSE_FACTORIZATION_COMPLETELY
indicates that the preconditioner may be reused completely for future solves.
Typical scenario: When rhsonly
was set to true
for the assembly phase, HERMES_REUSE_FACTORIZATION_COMPLETELY
should be set for the following solution phase.
Definition at line 73 of file linear_matrix_solver.h.
LinearMatrixSolver<Scalar>* Hermes::Solvers::create_linear_solver | ( | Matrix< Scalar > * | matrix, |
Vector< Scalar > * | rhs | ||
) |
Function returning a solver according to the users's choice.
[in] | matrix | matrix |
[in] | rhs | right hand side vector |
Definition at line 77 of file linear_matrix_solver.cpp.
Referenced by create_linear_solver().
HERMES_API LinearMatrixSolver<Scalar>* Hermes::Solvers::create_linear_solver | ( | Matrix< Scalar > * | matrix, |
Vector< Scalar > * | rhs | ||
) |
Function returning a solver according to the users's choice.
[in] | matrix | matrix |
[in] | rhs | right hand side vector |
Definition at line 77 of file linear_matrix_solver.cpp.
Referenced by create_linear_solver().