Currently, Stratimikos is really just the single class Stratimikos::DefaultLinearSolverBuilder which provides uniform access to linear solver capabilities in Trilinos where the underlying operator can be viewed as either an Epetra_CrsMatrix object or as an Epetra_RowMatrix object. This class builds linear solvers using the Thyra linear solver and preconditioner factory adapters given below. The linear solver and preconditioner factories are returned as Thyra::LinearOpWithSolveFactoryBase and Thyra::PreconditionerFactoryBase objects respectively.
The class Stratimikos::DefaultLinearSolverBuilder is parameter-list driven. An example parameter list in XML form that selects AztecOO and Ifpack is shown below:
<ParameterList>
<Parameter name="Linear Solver Type" type="string" value="AztecOO"/>
<ParameterList name="Linear Solver Types">
<ParameterList name="AztecOO">
<ParameterList name="Forward Solve">
<ParameterList name="AztecOO Settings">
<Parameter name="Aztec Solver" type="string" value="GMRES"/>
<Parameter name="Convergence Test" type="string" value="r0"/>
<Parameter name="Size of Krylov Subspace" type="int" value="300"/>
</ParameterList>
<Parameter name="Max Iterations" type="int" value="400"/>
<Parameter name="Tolerance" type="double" value="1e-13"/>
</ParameterList>
<Parameter name="Output Every RHS" type="bool" value="1"/>
</ParameterList>
</ParameterList>
<Parameter name="Preconditioner Type" type="string" value="Ifpack"/>
<ParameterList name="Preconditioner Types">
<ParameterList name="Ifpack">
<Parameter name="Prec Type" type="string" value="ILU"/>
<Parameter name="Overlap" type="int" value="1"/>
<ParameterList name="Ifpack Settings">
<Parameter name="fact: level-of-fill" type="int" value="2"/>
</ParameterList>
</ParameterList>
</ParameterList>
</ParameterList>
The parameter "Linear Solver Type" selects the linear solver type (currently supported are "Amesos", "AztecOO", and "Belos"). The parameter "Preconditioner Type" selects the preconditioner type (currently supported are "None", "ML", and "Ifpack").
Many other example XML input files (e.g. *.xml) can be found in the directory stratimikos/example. The full listing of supported parameters can be found in the documentation for Stratimikos::DefaultLinearSolverBuilder.
The example simple_stratimikos_example.cpp shows how to wrap Epetra objects and then use Stratimikos::DefaultLinearSolverBuilder to solve a linear system.
The example MixedOrderPhysicsBasedPreconditioner.cpp shows the use of Stratimikos in a more sophisticated context.
See how all of the examples and tests are run by looking at stratimikos/test/definition.
Thyra::LinearOpWithSolveFactoryBase and Thyra::LinearOpWithSolveBase. It is these implementations that are used in the implementation of Stratimikos::DefaultLinearSolverBuilder but they can also be used on their own.
Thyra::AmesosLinearOpWithSolveFactory : Amesos/Thyra adatpers. Must be enabled with --enable-amesos.
Thyra::AztecOOLinearOpWithSolveFactory : AztecOO/Thyra adatpers. Must be enabled with --enable-aztecoo.
Thyra::BelosLinearOpWithSolveFactory : Belos/Thyra adatpers. Must be enabled with --enable-belos.
Thyra::PreconditionerFactoryBase. It is these implementations that are used in the implementation of Stratimikos::DefaultLinearSolverBuilder but can also be used on their own.
Thyra::IfpackPreconditionerFactory : Ifpack/Thyra adatpers. Must be enabled with --enable-ifpack.
Thyra::MLPreconditionerFactory : ML/Thyra adatpers. Must be enabled with --enable-ifpack.
simple_stratimikos_example.cpp: Shows how to use the Stratimikos::DefaultLinearSolverBuilder to solve linear systems based on Epetra objects.
MixedOrderPhysicsBasedPreconditioner.cpp: Shows a more sophisticated example including the use of multiple Stratimikos sublists embedded in a single parameter-list.
1.3.9.1