Linear Solvers#
Base class for providing ApplyInverse() methods on operators.
Matrix provides existing Operators with an inverse. Note this may be iterative or non-iterative, assembled or non-assembled, approximate or exact to machine precision.
inverse-typed-spec
“iterative method”
[string]
optional“direct method”
[string]
optional“preconditioning method”
[string]
optional
DOCUMENT ME!
Linear Solver: PCG#
Preconditioned conjugate gradient method for a linear solver.
iterative-method-pcg-spec
“error tolerance”
[double]
1.e-6 Tolerance on which to declare success.“maximum number of iterations”
[int]
100 Maximum iterations before declaring failure.“overflow tolerance”
[double]
3.e50 Error above this value results in failure.“convergence criterial”
[Array(string)]
{relative rhs} A list of criteria, any of which can be applied. Valid include:“relative rhs” : measure error relative to the norm of the RHS vector
“relative residual” : measure error relative to the norm of the residual
“absolute residual” : measure error directly, norm of error
“make one iteration” : require at least one iteration to be performed before declaring success
<ParameterList name="_PCG with HYPRE AMG"> <!-- parent list -->
<ParameterList name="pcg parameters">
<Parameter name="error tolerance" type="double" value="1e-12"/>
<Parameter name="maximum number of iterations" type="int" value="400"/>
<Parameter name="convergence criteria" type="Array(string)" value="{relative residual,make one iteration}"/>
<Parameter name="overflow tolerance" type="double" value="3.0e+50"/>
<ParameterList name="verbose object">
<Parameter name="verbosity level" type="string" value="high"/>
</ParameterList>
</ParameterList>
</ParameterList>
Linear Solver: GMRES#
Generalized minimum residual method for a linear solver.
Based on the methods of Yu. Kuznetsov, 1968; Y.Saad, 1986. Deflated version of GMRES is due to R.Morgan, GMRES with deflated restarting, 2002 SISC; S.Rollin, W.Fichtner, Improving accuracy of GMRES with deflated restarting, 2007 SISC.
iterative-method-gmres-spec
“error tolerance”
[double]
1.e-6 Tolerance on which to declare success.“maximum number of iterations”
[int]
100 Maximum iterations before declaring failure.“overflow tolerance”
[double]
3.e50 Error above this value results in failure.“convergence criterial”
[Array(string)]
{relative rhs} A list of criteria, any of which can be applied. Valid include:“relative rhs” : measure error relative to the norm of the RHS vector
“relative residual” : measure error relative to the norm of the residual
“absolute residual” : measure error directly, norm of error
“make one iteration” : require at least one iteration to be performed before declaring success
“size of Krylov space”
[int]
10 Size of the Krylov space used to span the residual.“controller training start”
[int]
0 Start iteration for determining convergence rates. (Add more please!)“controller training end”
[int]
3 Start iteration for determining convergence rates. (Add more please!)“preconditioning strategy”
[string]
left Valid are “left” and “right”-type preconditioning (see Saad 1986)“maximum size of deflation space”
[int]
0 Size of the deflation space, see Rollin et al.
<ParameterList name="_GMRES with HYPRE AMG"> <!-- parent list -->
<ParameterList name="gmres parameters">
<Parameter name="error tolerance" type="double" value="1e-12"/>
<Parameter name="maximum number of iterations" type="int" value="400"/>
<Parameter name="convergence criteria" type="Array(string)" value="{relative residual}"/>
<Parameter name="size of Krylov space" type="int" value="10"/>
<Parameter name="overflow tolerance" type="double" value="3.0e+50"/>
<Parameter name="maximum size of deflation space" type="int" value="0"/>
<Parameter name="preconditioning strategy`" type="string" value="left"/>
<Parameter name="release Krylov vectors" type="bool" value="false"/>
<ParameterList name="verbose object">
<Parameter name="verbosity level" type="string" value="high"/>
</ParameterList>
</ParameterList>
<!-- Alternative implementation
<ParameterList name="belos gmres parameters">
<Parameter name="error tolerance" type="double" value="1e-12"/>
<Parameter name="maximum number of iterations" type="int" value="400"/>
<Parameter name="convergence criteria" type="Array(string)" value="{relative residual}"/>
<Parameter name="size of Krylov space" type="int" value="10"/>
<Parameter name="overflow tolerance" type="double" value="3.0e+50"/>
</ParameterList-->
</ParameterList>
Linear Solver: NKA#
Uses NKA method as a linear solver.
This is effectively equivalent to GMRES with a rolling restart, where vectors fall off the end of the space.
iterative-method-nka-spec
“error tolerance”
[double]
1.e-6 Tolerance on which to declare success.“maximum number of iterations”
[int]
100 Maximum iterations before declaring failure.“overflow tolerance”
[double]
3.e50 Error above this value results in failure.“convergence criterial”
[Array(string)]
{relative rhs} A list of criteria, any of which can be applied. Valid include:“relative rhs” : measure error relative to the norm of the RHS vector
“relative residual” : measure error relative to the norm of the residual
“absolute residual” : measure error directly, norm of error
“make one iteration” : require at least one iteration to be performed before declaring success
“max nka vectors”
[int]
10 Size of the NKA space used to span the residual, conceptually equivalent to the size of the Krylov space.“nka vector tolerance”
[double]
0.05 Vectors whose dot product are within this tolerance are considered parallel, and therefore the old vector is thrown out.
<ParameterList name="_NKA"> <!-- parent list -->
<ParameterList name="nka parameters">
<Parameter name="error tolerance" type="double" value="1e-12"/>
<Parameter name="maximum number of iterations" type="int" value="400"/>
<Parameter name="convergence criteria" type="Array(string)" value="{relative residual}"/>
<Parameter name="overflow tolerance" type="double" value="3.0e+50"/>
<Parameter name="max nka vectors" type="int" value="10"/>
<Parameter name="nka vector tolerance" type="double" value="0.05"/>
<ParameterList name="verbose object">
<Parameter name="verbosity level" type="string" value="high"/>
</ParameterList>
</ParameterList>
</ParameterList>
Linear Solver: Amesos#
Direct solvers via Trilinos.
Amesos library of Trilinos package provides interfaces to a few direct solvers. List “amesos parameters” contains parameters that understood by this library. These parameters may violate the camel-case convention employed by this spec. Additional parameters are:
“solver name” [string] declares name of one of the supported direct solvers. Available options are “klu”, “superludist”, “basker”, etc, see Amesos and Amesos2 manuals for details. The default value is serial solver “klu”.
“amesos version” [int] specifies version of Amesos. Available options are 1 and 2. The default value is 1.
<ParameterList name="_AMESOS KLU"> <!-- parent list -->
<Parameter name="direct method" type="string" value="amesos"/>
<ParameterList name="amesos parameters">
<Parameter name="solver name" type="string" value="klu"/>
<Parameter name="amesos version" type="int" value="1"/>
</ParameterList>
</ParameterList>
Linear Solver: Amesos#
Direct solvers via Trilinos.
Warning
undocumented
Linear Solver: Belos (GMRES)#
Trilinos/Belos implementations of iterative methods.
Includes GMRES and other Belos methods.
Warning
undocumented