Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
|
#include <Common.hpp>
Public Member Functions | |
virtual | ~LinearSolverTestBase () |
void | setMatrix (const Teuchos::RCP< const OP > &A) |
Set the solver's matrix. More... | |
Teuchos::RCP< const OP > | getMatrix () const |
Get a pointer to this solver's matrix. More... | |
void | setParameters (const Teuchos::RCP< Teuchos::ParameterList > &) |
Set this solver's parameters. More... | |
void | symbolic () |
Set up any part of the solve that depends on the structure of the input matrix, but not its numerical values. More... | |
void | numeric () |
Set up any part of the solve that depends on both the structure and the numerical values of the input matrix. More... | |
Public Member Functions inherited from Trilinos::Details::LinearSolver< MV, OP, NormType > | |
virtual | ~LinearSolver () |
Destructor (virtual for memory safety of derived classes). More... | |
virtual void | solve (MV &X, const MV &B)=0 |
Solve the linear system(s) AX=B. More... | |
Protected Member Functions | |
virtual std::string | name () const =0 |
Private Attributes | |
Teuchos::RCP< const OP > | A_ |
Definition at line 48 of file Common.hpp.
|
inlinevirtual |
Definition at line 53 of file Common.hpp.
|
protectedpure virtual |
|
inlinevirtual |
Set the solver's matrix.
This LinearSolver instance keeps the matrix (by pointer) given to it by this method, and does not modify it. The solver stores any additional data needed for solves separately from the matrix.
Calling this method resets the solver's state. After calling this method, you must call symbolic() and numeric() before you may call solve().
You are allowed to change the structure and/or numerical values in the matrix that this LinearSolver instance holds. If you do so, you do NOT need to call this method. If you change the graph structure of the matrix, you must call symbolic() and numeric() before you may call solve(). If you change the numerical values but not the graph structure of the matrix, you must call numeric() before you may call solve().
Teuchos::RCP is just like std::shared_ptr. It uses reference counting for automatic deallocation. Passing in a "const OP" implies that the solver may not modify A.
Implements Trilinos::Details::LinearSolver< MV, OP, NormType >.
Definition at line 55 of file Common.hpp.
|
inlinevirtual |
Get a pointer to this solver's matrix.
If this LinearSolver instance does not (yet) have a matrix, this method will return Teuchos::null. The solver must have a matrix before you may call solve().
Teuchos::RCP is just like std::shared_ptr. It uses reference counting for automatic deallocation. Returning a "const OP" implies that the caller may not modify A.
Implements Trilinos::Details::LinearSolver< MV, OP, NormType >.
Definition at line 60 of file Common.hpp.
|
inlinevirtual |
Set this solver's parameters.
Depending on the solver and which parameters you set or changed, you may have to recompute the symbolic or numeric setup (by calling symbolic() resp. numeric()) after calling setParameters(), before you may call solve() again.
Different solver implementations have different ideas about how to treat parameters. Some of them (like those in Ifpack2) treat the input parameter list as a complete snapshot of the desired state. Many that do this also fill the input list with unspecified parameters set to default values. Other solvers (like those in Belos) treat the input list as a "delta" – a set of changes from the current state – and thus generally do not fill in the input list.
This interface is compatible with either variant. The solver reserves the right to modify the input list, or to keep a pointer to the input list. Callers are responsible for copying the list if they don't want the solver to see changes, or if the Teuchos::RCP is nonowning. Users are responsible for knowing how the different solvers behave.
Implements Trilinos::Details::LinearSolver< MV, OP, NormType >.
Definition at line 65 of file Common.hpp.
|
inlinevirtual |
Set up any part of the solve that depends on the structure of the input matrix, but not its numerical values.
If the structure of the matrix has changed, or if you have not yet called this method on this LinearSolver instance, then you must call this method before you may call numeric() or solve().
There is no way that the solver can tell users whether the symbolic factorization is "done," because the solver may have no way to know whether the structure of the matrix has changed. Users are responsible for notifying the solver of structure changes, by calling symbolic(). (This is why there is no "symbolicDone" Boolean method.)
Implements Trilinos::Details::LinearSolver< MV, OP, NormType >.
Definition at line 69 of file Common.hpp.
|
inlinevirtual |
Set up any part of the solve that depends on both the structure and the numerical values of the input matrix.
If any values in the matrix have changed, or if you have not yet called this method on this LinearSolver instance, then you must call this method before you may call solve().
There is no way that the solver can tell users whether the numeric factorization is "done," because the solver may have no way to know whether the values of the matrix has changed. Users are responsible for notifying the solver of changes to values, by calling numeric(). (This is why there is no "numericDone" Boolean method.)
Implements Trilinos::Details::LinearSolver< MV, OP, NormType >.
Definition at line 73 of file Common.hpp.
|
private |
Definition at line 78 of file Common.hpp.