Thyra::LinearSolverBuilderBase
for creating LinearOpWithSolveFactoryBase
objects and PreconditionerFactoryBase
object on demand for various Trilinos linear solver packages.
More...
#include <Stratimikos_DefaultLinearSolverBuilder.hpp>
Inheritance diagram for Stratimikos::DefaultLinearSolverBuilder:
Constructors/Initializers/Accessors | |
DefaultLinearSolverBuilder (const std::string ¶msXmlFileName="", const std::string &extraParamsXmlString="", const std::string ¶msUsedXmlOutFileName="", const std::string ¶msXmlFileNameOption="linear-solver-params-file", const std::string &extraParamsXmlStringOption="extra-linear-solver-params", const std::string ¶msUsedXmlOutFileNameOption="linear-solver-params-used-file") | |
Construct with default parameters. | |
~DefaultLinearSolverBuilder () | |
| |
STANDARD_MEMBER_COMPOSITION_MEMBERS (std::string, paramsXmlFileName) | |
The name an XML file that will be read to get XML parameters (if not ""). | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (std::string, extraParamsXmlString) | |
An XML string that will be used to update the parameters (if not ""). | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (std::string, paramsUsedXmlOutFileName) | |
The name of an XML file that will be written (if not "") for the parameters actually used. | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (std::string, paramsXmlFileNameOption) | |
The name of the option that will be added the the commandline processor that will set paramsXmlFileName() . | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (std::string, extraParamsXmlStringOption) | |
The name of the option that will be added the the commandline processor that will set extraParamsXmlString() . | |
STANDARD_MEMBER_COMPOSITION_MEMBERS (std::string, paramsUsedXmlOutFileNameOption) | |
The name of the option that will be added the the commandline processor that will set paramsUsedXmlOutFileName() . | |
void | setLinearSolveStrategyFactory (const RCP< const AbstractFactory< Thyra::LinearOpWithSolveFactoryBase< double > > > &solveStrategyFactory, const std::string &solveStrategyName) |
Set a new linear solver strategy factory object. | |
void | setPreconditioningStrategyFactory (const RCP< const AbstractFactory< Thyra::PreconditionerFactoryBase< double > > > &precStrategyFactory, const std::string &precStrategyName) |
Set a new preconditioner strategy factory object. | |
void | setupCLP (Teuchos::CommandLineProcessor *clp) |
Setup the command-line processor to read in the needed data to extra the parameters from. | |
void | readParameters (std::ostream *out) |
Force the parameters to be read from a file and/or an extra XML string. | |
void | writeParamsFile (const Thyra::LinearOpWithSolveFactoryBase< double > &lowsFactory, const std::string &outputXmlFileName="") const |
Write the parameters list for a LinearOpWithSolveFactoryBase object to a file after the parameters are read in order to show defaults and create a new list for input the next time. | |
std::string | getLinearSolveStrategyName () const |
Get the name of the linear solver strategy that will be created on the next call to this->createLinearSolverStrategy() . | |
std::string | getPreconditionerStrategyName () const |
Get the name of the preconditioner strategy that will be created on the next call to this->createPreconditioningStrategy() . | |
Overridden from ParameterListAcceptor | |
void | setParameterList (RCP< ParameterList > const ¶mList) |
| |
RCP< ParameterList > | getNonconstParameterList () |
| |
RCP< ParameterList > | unsetParameterList () |
| |
RCP< const ParameterList > | getParameterList () const |
| |
RCP< const ParameterList > | getValidParameters () const |
| |
Overridden from LinearSolverBuilderBase. | |
RCP< Thyra::LinearOpWithSolveFactoryBase< double > > | createLinearSolveStrategy (const std::string &linearSolveStrategyName) const |
| |
RCP< Thyra::PreconditionerFactoryBase< double > > | createPreconditioningStrategy (const std::string &preconditioningStrategyName) const |
|
Thyra::LinearSolverBuilderBase
for creating LinearOpWithSolveFactoryBase
objects and PreconditionerFactoryBase
object on demand for various Trilinos linear solver packages.
For an example of how to use this class see simple_stratimikos_example.cpp.
The parameters this class accepts are shown below in different format:
Human readable format (with documentation) for valid parameters accepted by this class
Enable Delayed Solver Construction : bool = 0 # When this option is set to true, the linear solver factory will be wrapped # in a delayed evaluation Decorator factory object. This results in a delay # in the creation of a linear solver (and the associated preconditioner) until # the first solve is actually performed. This helps in cases where it is not # known a-priori if a linear solve will be needed on a given linear operator and # therefore can significantly improve performance for some types of algorithms # such as NOX and LOCA. Linear Solver Type : string = Amesos # Determines the type of linear solver that will be used. # The parameters for each solver type are specified in the sublist "Linear Solver Types" # Valid std::string values: # { # "Belos" # "Amesos" # "AztecOO" # } Preconditioner Type : string = Ifpack # Determines the type of preconditioner that will be used. # This option is only meaningful for linear solvers that accept preconditioner factory objects! # The parameters for each preconditioner are specified in the sublist "Preconditioner Types" # Valid std::string values: # { # "None" # "ML" # "Ifpack" # } Linear Solver Types -> # Sublists for each of the linear solver types set using the parameter # "Linear Solver Type". Note that the options for each # linear solver type given below will only be used if linear solvers # of that type are created. It is fine to list parameter sublists for # linear solver types that are not used. Amesos -> Refactorization Policy : string = RepivotOnRefactorization Solver Type : string = Klu Throw on Preconditioner Input : bool = 1 Amesos Settings -> AddToDiag : double = 0 AddZeroToDiag : bool = 0 ComputeTrueResidual : bool = 0 ComputeVectorNorms : bool = 0 DebugLevel : int = 0 MatrixProperty : string = general MaxProcs : int = -1 NoDestroy : bool = 0 OutputLevel : int = 1 PrintTiming : bool = 0 RcondThreshold : double = 1e-12 Redistribute : bool = 0 Refactorize : bool = 0 Reindex : int = 0 ScaleMethod : int = 0 TrustMe : bool = 0 Lapack -> Equilibrate : bool = 1 Mumps -> ColScaling : double* = 0 Equilibrate : bool = 1 RowScaling : double* = 0 Pardiso -> IPARM(1) : int = 0 IPARM(10) : int = 0 IPARM(11) : int = 0 IPARM(18) : int = 0 IPARM(19) : int = 0 IPARM(2) : int = 0 IPARM(21) : int = 0 IPARM(3) : int = 0 IPARM(4) : int = 0 IPARM(8) : int = 0 MSGLVL : int = 0 Scalapack -> 2D distribution : bool = 1 grid_nb : int = 32 Superludist -> ColPerm : string = NOT SET Equil : bool = 0 Fact : string = SamePattern IterRefine : string = NOT SET PrintNonzeros : bool = 0 ReplaceTinyPivot : bool = 1 ReuseSymbolic : bool = 0 RowPerm : string = NOT SET perm_c : int* = 0 perm_r : int* = 0 VerboseObject -> Output File : string = none # The file to send output to. If the value "none" is used, then # whatever is set in code will be used. However, any other std::string value # will be used to create an std::ofstream object to a file with the given name. # Therefore, any valid file name is a valid std::string value for this parameter. Verbosity Level : string = default # The verbosity level to use to override whatever is set in code. # The value of "default" will allow the level set in code to be used. # Valid std::string values: # { # "default" # Use level set in code # "none" # Produce no output # "low" # Produce minimal output # "medium" # Produce a little more output # "high" # Produce a higher level of output # "extreme" # Produce the highest level of output # } AztecOO -> Output Every RHS : bool = 0 # Determines if output is created for each individual RHS (true or 1) or if output # is just created for an entire set of RHSs (false or 0). Adjoint Solve -> # The options for the adjoint solve. # If this sublist is missing then the parameters from the # "Forward Solve" sublist are used instead. Max Iterations : int = 400 # The maximum number of iterations the AztecOO solver is allowed to perform. Tolerance : double = 1e-06 # The tolerence used in the convergence check (see the convergence test # in the sublist "AztecOO Settings") AztecOO Settings -> # Sets the parameters on the AztecOO object itself. Aztec Preconditioner : string = ilu # Type of internal preconditioner to use. # Note! this preconditioner will only be used if the input operator # supports the Epetra_RowMatrix interface and the client does not pass # in an external preconditioner! # Valid std::string values: # { # "none" # "ilu" # "ilut" # "Jacobi" # "Symmetric Gauss-Seidel" # "Polynomial" # "Least-squares Polynomial" # } Aztec Solver : string = GMRES # Type of linear solver algorithm to use. # Valid std::string values: # { # "CG" # "GMRES" # "CGS" # "TFQMR" # "BiCGStab" # "LU" # } Convergence Test : string = r0 # The convergence test to use for terminating the iterative solver. # Valid std::string values: # { # "r0" # "rhs" # "Anorm" # "no scaling" # "sol" # } Drop Tolerance : double = 0 # The tolerance below which an entry from the factors of an internal "ilut" # preconditioner will be dropped. # Accepted types: "int", "double", "string". Fill Factor : double = 1 # The amount of fill allowed for an internal "ilut" preconditioner. # Accepted types: "int", "double", "string". Graph Fill : int = 0 # The amount of fill allowed for the internal "ilu" preconditioner. # Accepted types: "int", "double", "string". Ill-Conditioning Threshold : double = 1e+11 # The threshold tolerance above which a system is considered # ill conditioned. # Accepted types: "int", "double", "string". Orthogonalization : string = Classical # The type of orthogonalization to use with the "GMRES" solver. # Valid std::string values: # { # "Classical" # "Modified" # } Output Frequency : int = 0 # The number of iterations between each output of the solver's progress. # Accepted types: "int", "double", "string". Overlap : int = 0 # The amount of overlap used for the internal "ilu" and "ilut" preconditioners. # Accepted types: "int", "double", "string". Polynomial Order : int = 3 # The order for of the polynomials used for the "Polynomial" and # "Least-squares Polynomial" internal preconditioners. # Accepted types: "int", "double", "string". RCM Reordering : string = Disabled # Determines if RCM reordering is used with the internal # "ilu" or "ilut" preconditioners. # Valid std::string values: # { # "Enabled" # "Disabled" # } Size of Krylov Subspace : int = 300 # The maximum size of the Krylov subspace used with "GMRES" before # a restart is performed. # Accepted types: "int", "double", "string". Steps : int = 3 # Number of steps taken for the "Jacobi" or the "Symmetric Gauss-Seidel" # internal preconditioners for each preconditioner application. # Accepted types: "int", "double", "string". Forward Solve -> # Gives the options for the forward solve. Max Iterations : int = 400 # The maximum number of iterations the AztecOO solver is allowed to perform. Tolerance : double = 1e-06 # The tolerence used in the convergence check (see the convergence test # in the sublist "AztecOO Settings") AztecOO Settings -> # Sets the parameters on the AztecOO object itself. Aztec Preconditioner : string = ilu # Type of internal preconditioner to use. # Note! this preconditioner will only be used if the input operator # supports the Epetra_RowMatrix interface and the client does not pass # in an external preconditioner! # Valid std::string values: # { # "none" # "ilu" # "ilut" # "Jacobi" # "Symmetric Gauss-Seidel" # "Polynomial" # "Least-squares Polynomial" # } Aztec Solver : string = GMRES # Type of linear solver algorithm to use. # Valid std::string values: # { # "CG" # "GMRES" # "CGS" # "TFQMR" # "BiCGStab" # "LU" # } Convergence Test : string = r0 # The convergence test to use for terminating the iterative solver. # Valid std::string values: # { # "r0" # "rhs" # "Anorm" # "no scaling" # "sol" # } Drop Tolerance : double = 0 # The tolerance below which an entry from the factors of an internal "ilut" # preconditioner will be dropped. # Accepted types: "int", "double", "string". Fill Factor : double = 1 # The amount of fill allowed for an internal "ilut" preconditioner. # Accepted types: "int", "double", "string". Graph Fill : int = 0 # The amount of fill allowed for the internal "ilu" preconditioner. # Accepted types: "int", "double", "string". Ill-Conditioning Threshold : double = 1e+11 # The threshold tolerance above which a system is considered # ill conditioned. # Accepted types: "int", "double", "string". Orthogonalization : string = Classical # The type of orthogonalization to use with the "GMRES" solver. # Valid std::string values: # { # "Classical" # "Modified" # } Output Frequency : int = 0 # The number of iterations between each output of the solver's progress. # Accepted types: "int", "double", "string". Overlap : int = 0 # The amount of overlap used for the internal "ilu" and "ilut" preconditioners. # Accepted types: "int", "double", "string". Polynomial Order : int = 3 # The order for of the polynomials used for the "Polynomial" and # "Least-squares Polynomial" internal preconditioners. # Accepted types: "int", "double", "string". RCM Reordering : string = Disabled # Determines if RCM reordering is used with the internal # "ilu" or "ilut" preconditioners. # Valid std::string values: # { # "Enabled" # "Disabled" # } Size of Krylov Subspace : int = 300 # The maximum size of the Krylov subspace used with "GMRES" before # a restart is performed. # Accepted types: "int", "double", "string". Steps : int = 3 # Number of steps taken for the "Jacobi" or the "Symmetric Gauss-Seidel" # internal preconditioners for each preconditioner application. # Accepted types: "int", "double", "string". VerboseObject -> Output File : string = none # The file to send output to. If the value "none" is used, then # whatever is set in code will be used. However, any other std::string value # will be used to create an std::ofstream object to a file with the given name. # Therefore, any valid file name is a valid std::string value for this parameter. Verbosity Level : string = default # The verbosity level to use to override whatever is set in code. # The value of "default" will allow the level set in code to be used. # Valid std::string values: # { # "default" # Use level set in code # "none" # Produce no output # "low" # Produce minimal output # "medium" # Produce a little more output # "high" # Produce a higher level of output # "extreme" # Produce the highest level of output # } Belos -> Solver Type : string = Block GMRES # Type of linear solver algorithm to use. # Valid std::string values: # { # "Block GMRES" # Performs block and single single-RHS GMRES as well as # flexible GMRES by setting options in the "Block GMRES" sublist. # "Pseudo Block GMRES" # GMRES solver that performs single-RHS GMRES on multiple RHSs taking # advantage of operator multi-vector multiplication and the amortization # of global communication. Individual linear systems are deflated out as # they are solved. # "Block CG" # CG solver that performs block and single-RHS CG. # "GCRODR" # GMRES solver that performs subspace recycling between RHS and linear systems. # } Solver Types -> Block CG -> Adaptive Block Size : bool = 1 # Whether the solver manager should adapt to the block size # based on the number of RHS to solve. Block Size : int = 1 # The number of vectors in each block. Convergence Tolerance : double = 1e-08 # The relative residual tolerance that needs to be achieved by the # iterative solver in order for the linear system to be declared converged. Maximum Iterations : int = 1000 # The maximum number of block iterations allowed for each # set of RHS solved. Orthogonalization : string = DGKS # The type of orthogonalization to use: DGKS, ICGS, or IMGS. Orthogonalization Constant : double = -1 # The constant used by DGKS orthogonalization to determine # whether another step of classical Gram-Schmidt is necessary. Output Frequency : int = -1 # How often convergence information should be outputted # to the output stream. Output Stream : RCP<std::ostream> = RCP<std::ostream>{ptr=0xb76360,node=0xb855a0,count=4} # A reference-counted pointer to the output stream where all # solver output is sent. Show Maximum Residual Norm Only : bool = 0 # When convergence information is printed, only show the maximum # relative residual norm when the block size is greater than one. Timer Label : string = Belos # The string to use as a prefix for the timer labels. Verbosity : int = 0 # What type(s) of solver information should be outputted # to the output stream. Block GMRES -> Adaptive Block Size : bool = 1 # Whether the solver manager should adapt the block size # based on the number of RHS to solve. Block Size : int = 1 # The number of vectors in each block. This number times the # number of blocks is the total Krylov subspace dimension. Convergence Tolerance : double = 1e-08 # The relative residual tolerance that needs to be achieved by the # iterative solver in order for the linear system to be declared converged. Explicit Residual Scaling : string = Norm of Initial Residual # The type of scaling used in the explicit residual convergence test. Flexible Gmres : bool = 0 # Whether the solver manager should use the flexible variant # of GMRES. Implicit Residual Scaling : string = Norm of Preconditioned Initial Residual # The type of scaling used in the implicit residual convergence test. Maximum Iterations : int = 1000 # The maximum number of block iterations allowed for each # set of RHS solved. Maximum Restarts : int = 20 # The maximum number of restarts allowed for each # set of RHS solved. Num Blocks : int = 300 # The maximum number of blocks allowed in the Krylov subspace # for each set of RHS solved. Orthogonalization : string = DGKS # The type of orthogonalization to use: DGKS, ICGS, or IMGS. Orthogonalization Constant : double = -1 # The constant used by DGKS orthogonalization to determine # whether another step of classical Gram-Schmidt is necessary. Output Frequency : int = -1 # How often convergence information should be outputted # to the output stream. Output Stream : RCP<std::ostream> = RCP<std::ostream>{ptr=0xb76360,node=0xb85360,count=4} # A reference-counted pointer to the output stream where all # solver output is sent. Show Maximum Residual Norm Only : bool = 0 # When convergence information is printed, only show the maximum # relative residual norm when the block size is greater than one. Timer Label : string = Belos # The string to use as a prefix for the timer labels. Verbosity : int = 0 # What type(s) of solver information should be outputted # to the output stream. Pseudo Block GMRES -> Adaptive Block Size : bool = 1 # Whether the solver manager should adapt the block size # based on the number of RHS to solve. Block Size : int = 1 # The number of RHS solved simultaneously. Convergence Tolerance : double = 1e-08 # The relative residual tolerance that needs to be achieved by the # iterative solver in order for the linera system to be declared converged. Deflation Quorum : int = 1 # The number of linear systems that need to converge before # they are deflated. This number should be <= block size. Explicit Residual Scaling : string = Norm of Initial Residual # The type of scaling used in the explicit residual convergence test. Implicit Residual Scaling : string = Norm of Preconditioned Initial Residual # The type of scaling used in the implicit residual convergence test. Maximum Iterations : int = 1000 # The maximum number of block iterations allowed for each # set of RHS solved. Maximum Restarts : int = 20 # The maximum number of restarts allowed for each # set of RHS solved. Num Blocks : int = 300 # The maximum number of vectors allowed in the Krylov subspace # for each set of RHS solved. Orthogonalization : string = DGKS # The type of orthogonalization to use: DGKS, ICGS, IMGS. Orthogonalization Constant : double = -1 # The constant used by DGKS orthogonalization to determine # whether another step of classical Gram-Schmidt is necessary. Output Frequency : int = -1 # How often convergence information should be outputted # to the output stream. Output Stream : RCP<std::ostream> = RCP<std::ostream>{ptr=0xb76360,node=0xb85480,count=4} # A reference-counted pointer to the output stream where all # solver output is sent. Show Maximum Residual Norm Only : bool = 0 # When convergence information is printed, only show the maximum # relative residual norm when the block size is greater than one. Timer Label : string = Belos # The string to use as a prefix for the timer labels. Verbosity : int = 0 # What type(s) of solver information should be outputted # to the output stream. VerboseObject -> Output File : string = none # The file to send output to. If the value "none" is used, then # whatever is set in code will be used. However, any other std::string value # will be used to create an std::ofstream object to a file with the given name. # Therefore, any valid file name is a valid std::string value for this parameter. Verbosity Level : string = default # The verbosity level to use to override whatever is set in code. # The value of "default" will allow the level set in code to be used. # Valid std::string values: # { # "default" # Use level set in code # "none" # Produce no output # "low" # Produce minimal output # "medium" # Produce a little more output # "high" # Produce a higher level of output # "extreme" # Produce the highest level of output # } Preconditioner Types -> # Sublists for each of the preconditioner types set using the parameter # "Preconditioner Type". Note that the options for each # preconditioner type given below will only be used if preconditioners # of that type are created. It is fine to list parameter sublists for # preconditioner types that are not used. Ifpack -> Overlap : int = 0 # Number of rows/columns overlapped between subdomains in different # processes in the additive Schwarz-type domain-decomposition preconditioners. Prec Type : string = ILU # Type of Ifpack preconditioner to use. # Valid std::string values: # { # "point relaxation" # "point relaxation stand-alone" # "block relaxation" # "block relaxation stand-alone" # "block relaxation stand-alone (ILU)" # "block relaxation stand-alone (Amesos)" # "block relaxation (Amesos)" # "Amesos" # "Amesos stand-alone" # "IC" # "IC stand-alone" # "ICT" # "ICT stand-alone" # "ILU" # "ILU stand-alone" # "ILUT" # "ILUT stand-alone" # "Chebyshev" # } Ifpack Settings -> # Preconditioner settings that are passed onto the Ifpack preconditioners themselves. amesos: solver type : string = Amesos_Klu fact: absolute threshold : double = 0 fact: drop tolerance : double = 0 fact: ict level-of-fill : double = 1 fact: ilut level-of-fill : double = 1 fact: level-of-fill : int = 0 fact: relative threshold : double = 1 fact: relax value : double = 0 fact: sparskit: alph : double = 0 fact: sparskit: droptol : double = 0 fact: sparskit: lfil : int = 0 fact: sparskit: mbloc : int = -1 fact: sparskit: permtol : double = 0.1 fact: sparskit: tol : double = 0 fact: sparskit: type : string = ILUT partitioner: local parts : int = 1 partitioner: overlap : int = 0 partitioner: print level : int = 0 partitioner: type : string = greedy partitioner: use symmetric graph : bool = 1 relaxation: damping factor : double = 1 relaxation: min diagonal value : double = 1 relaxation: sweeps : int = 1 relaxation: type : string = Jacobi relaxation: zero starting solution : bool = 1 schwarz: combine mode : string = Zero schwarz: compute condest : bool = 1 schwarz: filter singletons : bool = 0 schwarz: reordering type : string = none VerboseObject -> Output File : string = none # The file to send output to. If the value "none" is used, then # whatever is set in code will be used. However, any other std::string value # will be used to create an std::ofstream object to a file with the given name. # Therefore, any valid file name is a valid std::string value for this parameter. Verbosity Level : string = default # The verbosity level to use to override whatever is set in code. # The value of "default" will allow the level set in code to be used. # Valid std::string values: # { # "default" # Use level set in code # "none" # Produce no output # "low" # Produce minimal output # "medium" # Produce a little more output # "high" # Produce a higher level of output # "extreme" # Produce the highest level of output # } ML -> Base Method Defaults : string = DD # Select the default method type which also sets parameter defaults # in the sublist "ML Settings"! # Valid std::string values: # { # "none" # Do not set any default parameters # "SA" # Set default parameters for a smoothed aggregation method # "DD" # Set default parameters for a domain decomposition method # "DD-ML" # Set default parameters for a domain decomposition method special to ML # "maxwell" # Set default parameters for a Maxwell-type of linear operator # } ML Settings -> # Sampling of the parameters directly accpeted by ML # This list of parameters is generated by combining all of # the parameters set for all of the default problem types supported # by ML. Therefore, do not assume these parameters are at values that # are reasonable to ML. This list is just to give a sense of some of # the parameters that ML accepts. Consult ML documentation on how to # set these parameters. Also, you can print the parameter list after # it is used and see what defaults where set for each default problem # type. Warning! the parameters in this sublist are currently *not* # being validated by ML! aggregation: damping factor : double = 1.333 aggregation: edge prolongator drop threshold : double = 0 aggregation: local aggregates : int = 1 aggregation: next-level aggregates per process : int = 128 aggregation: nodes per aggregate : int = 512 aggregation: type : string = Uncoupled-MIS coarse: max size : int = 128 coarse: type : string = Amesos-KLU default values : string = maxwell eigen-analysis: iterations : int = 10 eigen-analysis: type : string = cg increasing or decreasing : string = decreasing max levels : int = 10 prec type : string = MGV smoother: Aztec as solver : bool = 0 smoother: Aztec options : RCP<vector<int>> = RCP<vector<int>>{ptr=0xb9c4d0,node=0xb9d140,count=2} smoother: Aztec params : RCP<vector<double>> = RCP<vector<double>>{ptr=0xb9d360,node=0xb9cb10,count=2} smoother: Hiptmair efficient symmetric : bool = 1 smoother: damping factor : double = 1 smoother: pre or post : string = both smoother: sweeps : int = 1 smoother: type : string = Hiptmair subsmoother: Chebyshev alpha : double = 20 subsmoother: edge sweeps : int = 4 subsmoother: node sweeps : int = 4 subsmoother: type : string = Chebyshev
Human readable format (without documentation) for valid parameters accepted by this class
Enable Delayed Solver Construction : bool = 0 Linear Solver Type : string = Amesos Preconditioner Type : string = Ifpack Linear Solver Types -> Amesos -> Refactorization Policy : string = RepivotOnRefactorization Solver Type : string = Klu Throw on Preconditioner Input : bool = 1 Amesos Settings -> AddToDiag : double = 0 AddZeroToDiag : bool = 0 ComputeTrueResidual : bool = 0 ComputeVectorNorms : bool = 0 DebugLevel : int = 0 MatrixProperty : string = general MaxProcs : int = -1 NoDestroy : bool = 0 OutputLevel : int = 1 PrintTiming : bool = 0 RcondThreshold : double = 1e-12 Redistribute : bool = 0 Refactorize : bool = 0 Reindex : int = 0 ScaleMethod : int = 0 TrustMe : bool = 0 Lapack -> Equilibrate : bool = 1 Mumps -> ColScaling : double* = 0 Equilibrate : bool = 1 RowScaling : double* = 0 Pardiso -> IPARM(1) : int = 0 IPARM(10) : int = 0 IPARM(11) : int = 0 IPARM(18) : int = 0 IPARM(19) : int = 0 IPARM(2) : int = 0 IPARM(21) : int = 0 IPARM(3) : int = 0 IPARM(4) : int = 0 IPARM(8) : int = 0 MSGLVL : int = 0 Scalapack -> 2D distribution : bool = 1 grid_nb : int = 32 Superludist -> ColPerm : string = NOT SET Equil : bool = 0 Fact : string = SamePattern IterRefine : string = NOT SET PrintNonzeros : bool = 0 ReplaceTinyPivot : bool = 1 ReuseSymbolic : bool = 0 RowPerm : string = NOT SET perm_c : int* = 0 perm_r : int* = 0 VerboseObject -> Output File : string = none Verbosity Level : string = default AztecOO -> Output Every RHS : bool = 0 Adjoint Solve -> Max Iterations : int = 400 Tolerance : double = 1e-06 AztecOO Settings -> Aztec Preconditioner : string = ilu Aztec Solver : string = GMRES Convergence Test : string = r0 Drop Tolerance : double = 0 Fill Factor : double = 1 Graph Fill : int = 0 Ill-Conditioning Threshold : double = 1e+11 Orthogonalization : string = Classical Output Frequency : int = 0 Overlap : int = 0 Polynomial Order : int = 3 RCM Reordering : string = Disabled Size of Krylov Subspace : int = 300 Steps : int = 3 Forward Solve -> Max Iterations : int = 400 Tolerance : double = 1e-06 AztecOO Settings -> Aztec Preconditioner : string = ilu Aztec Solver : string = GMRES Convergence Test : string = r0 Drop Tolerance : double = 0 Fill Factor : double = 1 Graph Fill : int = 0 Ill-Conditioning Threshold : double = 1e+11 Orthogonalization : string = Classical Output Frequency : int = 0 Overlap : int = 0 Polynomial Order : int = 3 RCM Reordering : string = Disabled Size of Krylov Subspace : int = 300 Steps : int = 3 VerboseObject -> Output File : string = none Verbosity Level : string = default Belos -> Solver Type : string = Block GMRES Solver Types -> Block CG -> Adaptive Block Size : bool = 1 Block Size : int = 1 Convergence Tolerance : double = 1e-08 Maximum Iterations : int = 1000 Orthogonalization : string = DGKS Orthogonalization Constant : double = -1 Output Frequency : int = -1 Output Stream : RCP<std::ostream> = RCP<std::ostream>{ptr=0xb76360,node=0xb855a0,count=4} Show Maximum Residual Norm Only : bool = 0 Timer Label : string = Belos Verbosity : int = 0 Block GMRES -> Adaptive Block Size : bool = 1 Block Size : int = 1 Convergence Tolerance : double = 1e-08 Explicit Residual Scaling : string = Norm of Initial Residual Flexible Gmres : bool = 0 Implicit Residual Scaling : string = Norm of Preconditioned Initial Residual Maximum Iterations : int = 1000 Maximum Restarts : int = 20 Num Blocks : int = 300 Orthogonalization : string = DGKS Orthogonalization Constant : double = -1 Output Frequency : int = -1 Output Stream : RCP<std::ostream> = RCP<std::ostream>{ptr=0xb76360,node=0xb85360,count=4} Show Maximum Residual Norm Only : bool = 0 Timer Label : string = Belos Verbosity : int = 0 Pseudo Block GMRES -> Adaptive Block Size : bool = 1 Block Size : int = 1 Convergence Tolerance : double = 1e-08 Deflation Quorum : int = 1 Explicit Residual Scaling : string = Norm of Initial Residual Implicit Residual Scaling : string = Norm of Preconditioned Initial Residual Maximum Iterations : int = 1000 Maximum Restarts : int = 20 Num Blocks : int = 300 Orthogonalization : string = DGKS Orthogonalization Constant : double = -1 Output Frequency : int = -1 Output Stream : RCP<std::ostream> = RCP<std::ostream>{ptr=0xb76360,node=0xb85480,count=4} Show Maximum Residual Norm Only : bool = 0 Timer Label : string = Belos Verbosity : int = 0 VerboseObject -> Output File : string = none Verbosity Level : string = default Preconditioner Types -> Ifpack -> Overlap : int = 0 Prec Type : string = ILU Ifpack Settings -> amesos: solver type : string = Amesos_Klu fact: absolute threshold : double = 0 fact: drop tolerance : double = 0 fact: ict level-of-fill : double = 1 fact: ilut level-of-fill : double = 1 fact: level-of-fill : int = 0 fact: relative threshold : double = 1 fact: relax value : double = 0 fact: sparskit: alph : double = 0 fact: sparskit: droptol : double = 0 fact: sparskit: lfil : int = 0 fact: sparskit: mbloc : int = -1 fact: sparskit: permtol : double = 0.1 fact: sparskit: tol : double = 0 fact: sparskit: type : string = ILUT partitioner: local parts : int = 1 partitioner: overlap : int = 0 partitioner: print level : int = 0 partitioner: type : string = greedy partitioner: use symmetric graph : bool = 1 relaxation: damping factor : double = 1 relaxation: min diagonal value : double = 1 relaxation: sweeps : int = 1 relaxation: type : string = Jacobi relaxation: zero starting solution : bool = 1 schwarz: combine mode : string = Zero schwarz: compute condest : bool = 1 schwarz: filter singletons : bool = 0 schwarz: reordering type : string = none VerboseObject -> Output File : string = none Verbosity Level : string = default ML -> Base Method Defaults : string = DD ML Settings -> aggregation: damping factor : double = 1.333 aggregation: edge prolongator drop threshold : double = 0 aggregation: local aggregates : int = 1 aggregation: next-level aggregates per process : int = 128 aggregation: nodes per aggregate : int = 512 aggregation: type : string = Uncoupled-MIS coarse: max size : int = 128 coarse: type : string = Amesos-KLU default values : string = maxwell eigen-analysis: iterations : int = 10 eigen-analysis: type : string = cg increasing or decreasing : string = decreasing max levels : int = 10 prec type : string = MGV smoother: Aztec as solver : bool = 0 smoother: Aztec options : RCP<vector<int>> = RCP<vector<int>>{ptr=0xb9c4d0,node=0xb9d140,count=2} smoother: Aztec params : RCP<vector<double>> = RCP<vector<double>>{ptr=0xb9d360,node=0xb9cb10,count=2} smoother: Hiptmair efficient symmetric : bool = 1 smoother: damping factor : double = 1 smoother: pre or post : string = both smoother: sweeps : int = 1 smoother: type : string = Hiptmair subsmoother: Chebyshev alpha : double = 20 subsmoother: edge sweeps : int = 4 subsmoother: node sweeps : int = 4 subsmoother: type : string = Chebyshev
XML format for valid parameters accepted by this class
<ParameterList> <Parameter name="Enable Delayed Solver Construction" type="bool" value="0"/> <Parameter name="Linear Solver Type" type="string" value="Amesos"/> <ParameterList name="Linear Solver Types"> <ParameterList name="Amesos"> <ParameterList name="Amesos Settings"> <Parameter name="AddToDiag" type="double" value="0"/> <Parameter name="AddZeroToDiag" type="bool" value="0"/> <Parameter name="ComputeTrueResidual" type="bool" value="0"/> <Parameter name="ComputeVectorNorms" type="bool" value="0"/> <Parameter name="DebugLevel" type="int" value="0"/> <ParameterList name="Lapack"> <Parameter name="Equilibrate" type="bool" value="1"/> </ParameterList> <Parameter name="MatrixProperty" type="string" value="general"/> <Parameter name="MaxProcs" type="int" value="-1"/> <ParameterList name="Mumps"> <Parameter name="ColScaling" type="any" value="0 [unused]"/> <Parameter name="Equilibrate" type="bool" value="1"/> <Parameter name="RowScaling" type="any" value="0 [unused]"/> </ParameterList> <Parameter name="NoDestroy" type="bool" value="0"/> <Parameter name="OutputLevel" type="int" value="1"/> <ParameterList name="Pardiso"> <Parameter name="IPARM(1)" type="int" value="0"/> <Parameter name="IPARM(10)" type="int" value="0"/> <Parameter name="IPARM(11)" type="int" value="0"/> <Parameter name="IPARM(18)" type="int" value="0"/> <Parameter name="IPARM(19)" type="int" value="0"/> <Parameter name="IPARM(2)" type="int" value="0"/> <Parameter name="IPARM(21)" type="int" value="0"/> <Parameter name="IPARM(3)" type="int" value="0"/> <Parameter name="IPARM(4)" type="int" value="0"/> <Parameter name="IPARM(8)" type="int" value="0"/> <Parameter name="MSGLVL" type="int" value="0"/> </ParameterList> <Parameter name="PrintTiming" type="bool" value="0"/> <Parameter name="RcondThreshold" type="double" value="1e-12"/> <Parameter name="Redistribute" type="bool" value="0"/> <Parameter name="Refactorize" type="bool" value="0"/> <Parameter name="Reindex" type="int" value="0"/> <ParameterList name="Scalapack"> <Parameter name="2D distribution" type="bool" value="1"/> <Parameter name="grid_nb" type="int" value="32"/> </ParameterList> <Parameter name="ScaleMethod" type="int" value="0"/> <ParameterList name="Superludist"> <Parameter name="ColPerm" type="string" value="NOT SET"/> <Parameter name="Equil" type="bool" value="0"/> <Parameter name="Fact" type="string" value="SamePattern"/> <Parameter name="IterRefine" type="string" value="NOT SET"/> <Parameter name="PrintNonzeros" type="bool" value="0"/> <Parameter name="ReplaceTinyPivot" type="bool" value="1"/> <Parameter name="ReuseSymbolic" type="bool" value="0"/> <Parameter name="RowPerm" type="string" value="NOT SET"/> <Parameter name="perm_c" type="any" value="0 [unused]"/> <Parameter name="perm_r" type="any" value="0 [unused]"/> </ParameterList> <Parameter name="TrustMe" type="bool" value="0"/> </ParameterList> <Parameter name="Refactorization Policy" type="string" value="RepivotOnRefactorization"/> <Parameter name="Solver Type" type="string" value="Klu"/> <Parameter name="Throw on Preconditioner Input" type="bool" value="1"/> <ParameterList name="VerboseObject"> <Parameter name="Output File" type="string" value="none"/> <Parameter name="Verbosity Level" type="string" value="default"/> </ParameterList> </ParameterList> <ParameterList name="AztecOO"> <ParameterList name="Adjoint Solve"> <ParameterList name="AztecOO Settings"> <Parameter name="Aztec Preconditioner" type="string" value="ilu"/> <Parameter name="Aztec Solver" type="string" value="GMRES"/> <Parameter name="Convergence Test" type="string" value="r0"/> <Parameter name="Drop Tolerance" type="double" value="0"/> <Parameter name="Fill Factor" type="double" value="1"/> <Parameter name="Graph Fill" type="int" value="0"/> <Parameter name="Ill-Conditioning Threshold" type="double" value="1e+11"/> <Parameter name="Orthogonalization" type="string" value="Classical"/> <Parameter name="Output Frequency" type="int" value="0"/> <Parameter name="Overlap" type="int" value="0"/> <Parameter name="Polynomial Order" type="int" value="3"/> <Parameter name="RCM Reordering" type="string" value="Disabled"/> <Parameter name="Size of Krylov Subspace" type="int" value="300"/> <Parameter name="Steps" type="int" value="3"/> </ParameterList> <Parameter name="Max Iterations" type="int" value="400"/> <Parameter name="Tolerance" type="double" value="1e-06"/> </ParameterList> <ParameterList name="Forward Solve"> <ParameterList name="AztecOO Settings"> <Parameter name="Aztec Preconditioner" type="string" value="ilu"/> <Parameter name="Aztec Solver" type="string" value="GMRES"/> <Parameter name="Convergence Test" type="string" value="r0"/> <Parameter name="Drop Tolerance" type="double" value="0"/> <Parameter name="Fill Factor" type="double" value="1"/> <Parameter name="Graph Fill" type="int" value="0"/> <Parameter name="Ill-Conditioning Threshold" type="double" value="1e+11"/> <Parameter name="Orthogonalization" type="string" value="Classical"/> <Parameter name="Output Frequency" type="int" value="0"/> <Parameter name="Overlap" type="int" value="0"/> <Parameter name="Polynomial Order" type="int" value="3"/> <Parameter name="RCM Reordering" type="string" value="Disabled"/> <Parameter name="Size of Krylov Subspace" type="int" value="300"/> <Parameter name="Steps" type="int" value="3"/> </ParameterList> <Parameter name="Max Iterations" type="int" value="400"/> <Parameter name="Tolerance" type="double" value="1e-06"/> </ParameterList> <Parameter name="Output Every RHS" type="bool" value="0"/> <ParameterList name="VerboseObject"> <Parameter name="Output File" type="string" value="none"/> <Parameter name="Verbosity Level" type="string" value="default"/> </ParameterList> </ParameterList> <ParameterList name="Belos"> <Parameter name="Solver Type" type="string" value="Block GMRES"/> <ParameterList name="Solver Types"> <ParameterList name="Block CG"> <Parameter name="Adaptive Block Size" type="bool" value="1"/> <Parameter name="Block Size" type="int" value="1"/> <Parameter name="Convergence Tolerance" type="double" value="1e-08"/> <Parameter name="Maximum Iterations" type="int" value="1000"/> <Parameter name="Orthogonalization" type="string" value="DGKS"/> <Parameter name="Orthogonalization Constant" type="double" value="-1"/> <Parameter name="Output Frequency" type="int" value="-1"/> <Parameter name="Output Stream" type="any" value="RCP<std::ostream>{ptr=0xb76360,node=0xb855a0,count=4} [unused]"/> <Parameter name="Show Maximum Residual Norm Only" type="bool" value="0"/> <Parameter name="Timer Label" type="string" value="Belos"/> <Parameter name="Verbosity" type="int" value="0"/> </ParameterList> <ParameterList name="Block GMRES"> <Parameter name="Adaptive Block Size" type="bool" value="1"/> <Parameter name="Block Size" type="int" value="1"/> <Parameter name="Convergence Tolerance" type="double" value="1e-08"/> <Parameter name="Explicit Residual Scaling" type="string" value="Norm of Initial Residual"/> <Parameter name="Flexible Gmres" type="bool" value="0"/> <Parameter name="Implicit Residual Scaling" type="string" value="Norm of Preconditioned Initial Residual"/> <Parameter name="Maximum Iterations" type="int" value="1000"/> <Parameter name="Maximum Restarts" type="int" value="20"/> <Parameter name="Num Blocks" type="int" value="300"/> <Parameter name="Orthogonalization" type="string" value="DGKS"/> <Parameter name="Orthogonalization Constant" type="double" value="-1"/> <Parameter name="Output Frequency" type="int" value="-1"/> <Parameter name="Output Stream" type="any" value="RCP<std::ostream>{ptr=0xb76360,node=0xb85360,count=4} [unused]"/> <Parameter name="Show Maximum Residual Norm Only" type="bool" value="0"/> <Parameter name="Timer Label" type="string" value="Belos"/> <Parameter name="Verbosity" type="int" value="0"/> </ParameterList> <ParameterList name="Pseudo Block GMRES"> <Parameter name="Adaptive Block Size" type="bool" value="1"/> <Parameter name="Block Size" type="int" value="1"/> <Parameter name="Convergence Tolerance" type="double" value="1e-08"/> <Parameter name="Deflation Quorum" type="int" value="1"/> <Parameter name="Explicit Residual Scaling" type="string" value="Norm of Initial Residual"/> <Parameter name="Implicit Residual Scaling" type="string" value="Norm of Preconditioned Initial Residual"/> <Parameter name="Maximum Iterations" type="int" value="1000"/> <Parameter name="Maximum Restarts" type="int" value="20"/> <Parameter name="Num Blocks" type="int" value="300"/> <Parameter name="Orthogonalization" type="string" value="DGKS"/> <Parameter name="Orthogonalization Constant" type="double" value="-1"/> <Parameter name="Output Frequency" type="int" value="-1"/> <Parameter name="Output Stream" type="any" value="RCP<std::ostream>{ptr=0xb76360,node=0xb85480,count=4} [unused]"/> <Parameter name="Show Maximum Residual Norm Only" type="bool" value="0"/> <Parameter name="Timer Label" type="string" value="Belos"/> <Parameter name="Verbosity" type="int" value="0"/> </ParameterList> </ParameterList> <ParameterList name="VerboseObject"> <Parameter name="Output File" type="string" value="none"/> <Parameter name="Verbosity Level" type="string" value="default"/> </ParameterList> </ParameterList> </ParameterList> <Parameter name="Preconditioner Type" type="string" value="Ifpack"/> <ParameterList name="Preconditioner Types"> <ParameterList name="Ifpack"> <ParameterList name="Ifpack Settings"> <Parameter name="amesos: solver type" type="string" value="Amesos_Klu"/> <Parameter name="fact: absolute threshold" type="double" value="0"/> <Parameter name="fact: drop tolerance" type="double" value="0"/> <Parameter name="fact: ict level-of-fill" type="double" value="1"/> <Parameter name="fact: ilut level-of-fill" type="double" value="1"/> <Parameter name="fact: level-of-fill" type="int" value="0"/> <Parameter name="fact: relative threshold" type="double" value="1"/> <Parameter name="fact: relax value" type="double" value="0"/> <Parameter name="fact: sparskit: alph" type="double" value="0"/> <Parameter name="fact: sparskit: droptol" type="double" value="0"/> <Parameter name="fact: sparskit: lfil" type="int" value="0"/> <Parameter name="fact: sparskit: mbloc" type="int" value="-1"/> <Parameter name="fact: sparskit: permtol" type="double" value="0.1"/> <Parameter name="fact: sparskit: tol" type="double" value="0"/> <Parameter name="fact: sparskit: type" type="string" value="ILUT"/> <Parameter name="partitioner: local parts" type="int" value="1"/> <Parameter name="partitioner: overlap" type="int" value="0"/> <Parameter name="partitioner: print level" type="int" value="0"/> <Parameter name="partitioner: type" type="string" value="greedy"/> <Parameter name="partitioner: use symmetric graph" type="bool" value="1"/> <Parameter name="relaxation: damping factor" type="double" value="1"/> <Parameter name="relaxation: min diagonal value" type="double" value="1"/> <Parameter name="relaxation: sweeps" type="int" value="1"/> <Parameter name="relaxation: type" type="string" value="Jacobi"/> <Parameter name="relaxation: zero starting solution" type="bool" value="1"/> <Parameter name="schwarz: combine mode" type="string" value="Zero"/> <Parameter name="schwarz: compute condest" type="bool" value="1"/> <Parameter name="schwarz: filter singletons" type="bool" value="0"/> <Parameter name="schwarz: reordering type" type="string" value="none"/> </ParameterList> <Parameter name="Overlap" type="int" value="0"/> <Parameter name="Prec Type" type="string" value="ILU"/> <ParameterList name="VerboseObject"> <Parameter name="Output File" type="string" value="none"/> <Parameter name="Verbosity Level" type="string" value="default"/> </ParameterList> </ParameterList> <ParameterList name="ML"> <Parameter name="Base Method Defaults" type="string" value="DD"/> <ParameterList name="ML Settings"> <Parameter name="aggregation: damping factor" type="double" value="1.333"/> <Parameter name="aggregation: edge prolongator drop threshold" type="double" value="0"/> <Parameter name="aggregation: local aggregates" type="int" value="1"/> <Parameter name="aggregation: next-level aggregates per process" type="int" value="128"/> <Parameter name="aggregation: nodes per aggregate" type="int" value="512"/> <Parameter name="aggregation: type" type="string" value="Uncoupled-MIS"/> <Parameter name="coarse: max size" type="int" value="128"/> <Parameter name="coarse: type" type="string" value="Amesos-KLU"/> <Parameter name="default values" type="string" value="maxwell"/> <Parameter name="eigen-analysis: iterations" type="int" value="10"/> <Parameter name="eigen-analysis: type" type="string" value="cg"/> <Parameter name="increasing or decreasing" type="string" value="decreasing"/> <Parameter name="max levels" type="int" value="10"/> <Parameter name="prec type" type="string" value="MGV"/> <Parameter name="smoother: Aztec as solver" type="bool" value="0"/> <Parameter name="smoother: Aztec options" type="any" value="RCP<vector<int>>{ptr=0xb9c4b0,node=0xb9d120,count=2} [unused]"/> <Parameter name="smoother: Aztec params" type="any" value="RCP<vector<double>>{ptr=0xb9d340,node=0xb9caf0,count=2} [unused]"/> <Parameter name="smoother: Hiptmair efficient symmetric" type="bool" value="1"/> <Parameter name="smoother: damping factor" type="double" value="1"/> <Parameter name="smoother: pre or post" type="string" value="both"/> <Parameter name="smoother: sweeps" type="int" value="1"/> <Parameter name="smoother: type" type="string" value="Hiptmair"/> <Parameter name="subsmoother: Chebyshev alpha" type="double" value="20"/> <Parameter name="subsmoother: edge sweeps" type="int" value="4"/> <Parameter name="subsmoother: node sweeps" type="int" value="4"/> <Parameter name="subsmoother: type" type="string" value="Chebyshev"/> </ParameterList> </ParameterList> </ParameterList> </ParameterList>
MixedOrderPhysicsBasedPreconditioner.cpp, simple_stratimikos_example.cpp, and test_single_stratimikos_solver.cpp.
|
Construct with default parameters.
Warning! Do not change the defaults by passing then into this constructor. Instead, use the member functions to set them after |
|
|
|
The name an XML file that will be read to get XML parameters (if not "").
|
|
An XML string that will be used to update the parameters (if not "").
|
|
The name of an XML file that will be written (if not "") for the parameters actually used.
|
|
The name of the option that will be added the the commandline processor that will set
|
|
The name of the option that will be added the the commandline processor that will set
|
|
The name of the option that will be added the the commandline processor that will set
|
|
Set a new linear solver strategy factory object.
|
|
Set a new preconditioner strategy factory object.
|
|
Setup the command-line processor to read in the needed data to extra the parameters from.
Command-line options with names
Then, when
After this function is called,
|
|
Force the parameters to be read from a file and/or an extra XML string.
First, if
Second, if
Third, if Postconditions:
|
|
Write the parameters list for a
If
|
|
Get the name of the linear solver strategy that will be created on the next call to
|
|
Get the name of the preconditioner strategy that will be created on the next call to
|
|
Implements Teuchos::ParameterListAcceptor.
|
|
Implements Teuchos::ParameterListAcceptor. |
|
Implements Teuchos::ParameterListAcceptor. |
|
Reimplemented from Teuchos::ParameterListAcceptor. |
|
Reimplemented from Teuchos::ParameterListAcceptor.
|
|
Implements Thyra::LinearSolverBuilderBase< double >.
|
|
Implements Thyra::LinearSolverBuilderBase< double >. |