Stratimikos::DefaultLinearSolverBuilder Class Reference

Concrete subclass of 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:
Inheritance graph
[legend]

List of all members.

Private Types

typedef RCP< const
AbstractFactory
< Thyra::LinearOpWithSolveFactoryBase
< double > > > 
lowsf_fcty_t
typedef RCP< const
AbstractFactory
< Thyra::PreconditionerFactoryBase
< double > > > 
pf_fcty_t

Private Member Functions

void initializeDefaults ()

Private Attributes

RCP< ParameterListparamList_
RCP< const ParameterListvalidParamList_
Array< std::string > validLowsfNames_
Array< lowsf_fcty_tlowsfArray_
std::string defaultLOWSF_
Array< std::string > validPfNames_
Array< pf_fcty_tpfArray_
std::string defaultPF_
bool enableDelayedSolverConstruction_

Constructors/Initializers/Accessors



 DefaultLinearSolverBuilder (const std::string &paramsXmlFileName="", const std::string &extraParamsXmlString="", const std::string &paramsUsedXmlOutFileName="", const std::string &paramsXmlFileNameOption="linear-solver-params-file", const std::string &extraParamsXmlStringOption="extra-linear-solver-params", const std::string &paramsUsedXmlOutFileNameOption="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 &paramList)
 
RCP< ParameterListgetNonconstParameterList ()
 
RCP< ParameterListunsetParameterList ()
 
RCP< const ParameterListgetParameterList () const
 
RCP< const ParameterListgetValidParameters () const
 

Overridden from LinearSolverBuilderBase.



RCP
< Thyra::LinearOpWithSolveFactoryBase
< double > > 
createLinearSolveStrategy (const std::string &linearSolveStrategyName) const
 
RCP
< Thyra::PreconditionerFactoryBase
< double > > 
createPreconditioningStrategy (const std::string &preconditioningStrategyName) const
 

Detailed Description

Concrete subclass of 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 : bool = 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.
     #       "Pseudo Block CG"
     #          CG solver that performs single-RHS CG 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.
     #       "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 Style : int = 0
       # Option of General (0) or Brief (1) style of output
      Output Stream : Teuchos::RCP<std::ostream> = Teuchos::RCP<std::ostream>{ptr=0x53b820,node=0x544990,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.
      Explicit Residual Test : bool = 0
       # Whether the explicitly computed residual should be used in the 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 Style : int = 0
       # Option of General (0) or Brief (1) style of output
      Output Stream : Teuchos::RCP<std::ostream> = Teuchos::RCP<std::ostream>{ptr=0x53b820,node=0x544730,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 Style : int = 0
       # Option of General (0) or Brief (1) style of output
      Output Stream : Teuchos::RCP<std::ostream> = Teuchos::RCP<std::ostream>{ptr=0x53b820,node=0x544860,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: pre or post : string = post
     coarse: sweeps : int = 1
     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 : Teuchos::RCP<__gnu_debug_def::vector<int, std::allocator<int> > > = Teuchos::RCP<__gnu_debug_def::vector<int, std::allocator<int> > >{ptr=0x55de40,node=0x55df40,count=2}
     smoother: Aztec params : Teuchos::RCP<__gnu_debug_def::vector<double, std::allocator<double> > > = Teuchos::RCP<__gnu_debug_def::vector<double, std::allocator<double> > >{ptr=0x55e140,node=0x55e920,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 : bool = 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 Style : int = 0
      Output Stream : Teuchos::RCP<std::ostream> = Teuchos::RCP<std::ostream>{ptr=0x53b820,node=0x544990,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
      Explicit Residual Test : bool = 0
      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 Style : int = 0
      Output Stream : Teuchos::RCP<std::ostream> = Teuchos::RCP<std::ostream>{ptr=0x53b820,node=0x544730,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 Style : int = 0
      Output Stream : Teuchos::RCP<std::ostream> = Teuchos::RCP<std::ostream>{ptr=0x53b820,node=0x544860,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: pre or post : string = post
     coarse: sweeps : int = 1
     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 : Teuchos::RCP<__gnu_debug_def::vector<int, std::allocator<int> > > = Teuchos::RCP<__gnu_debug_def::vector<int, std::allocator<int> > >{ptr=0x55de40,node=0x55df40,count=2}
     smoother: Aztec params : Teuchos::RCP<__gnu_debug_def::vector<double, std::allocator<double> > > = Teuchos::RCP<__gnu_debug_def::vector<double, std::allocator<double> > >{ptr=0x55e140,node=0x55e920,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="false"/>
  <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="false"/>
        <Parameter name="ComputeTrueResidual" type="bool" value="false"/>
        <Parameter name="ComputeVectorNorms" type="bool" value="false"/>
        <Parameter name="DebugLevel" type="int" value="0"/>
        <ParameterList name="Lapack">
          <Parameter name="Equilibrate" type="bool" value="true"/>
        </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="true"/>
          <Parameter name="RowScaling" type="any" value="0   [unused]"/>
        </ParameterList>
        <Parameter name="NoDestroy" type="bool" value="false"/>
        <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="false"/>
        <Parameter name="RcondThreshold" type="double" value="1e-12"/>
        <Parameter name="Redistribute" type="bool" value="false"/>
        <Parameter name="Refactorize" type="bool" value="false"/>
        <Parameter name="Reindex" type="bool" value="false"/>
        <ParameterList name="Scalapack">
          <Parameter name="2D distribution" type="bool" value="true"/>
          <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="false"/>
          <Parameter name="Fact" type="string" value="SamePattern"/>
          <Parameter name="IterRefine" type="string" value="NOT SET"/>
          <Parameter name="PrintNonzeros" type="bool" value="false"/>
          <Parameter name="ReplaceTinyPivot" type="bool" value="true"/>
          <Parameter name="ReuseSymbolic" type="bool" value="false"/>
          <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="false"/>
      </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="true"/>
      <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="false"/>
      <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="true"/>
          <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 Style" type="int" value="0"/>
          <Parameter name="Output Stream" type="any" value="Teuchos::RCP&lt;std::ostream>{ptr=0x53b820,node=0x544990,count=4}   [unused]"/>
          <Parameter name="Show Maximum Residual Norm Only" type="bool" value="false"/>
          <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="true"/>
          <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="Explicit Residual Test" type="bool" value="false"/>
          <Parameter name="Flexible Gmres" type="bool" value="false"/>
          <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 Style" type="int" value="0"/>
          <Parameter name="Output Stream" type="any" value="Teuchos::RCP&lt;std::ostream>{ptr=0x53b820,node=0x544730,count=4}   [unused]"/>
          <Parameter name="Show Maximum Residual Norm Only" type="bool" value="false"/>
          <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="true"/>
          <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 Style" type="int" value="0"/>
          <Parameter name="Output Stream" type="any" value="Teuchos::RCP&lt;std::ostream>{ptr=0x53b820,node=0x544860,count=4}   [unused]"/>
          <Parameter name="Show Maximum Residual Norm Only" type="bool" value="false"/>
          <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="true"/>
        <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="true"/>
        <Parameter name="schwarz: combine mode" type="string" value="Zero"/>
        <Parameter name="schwarz: compute condest" type="bool" value="true"/>
        <Parameter name="schwarz: filter singletons" type="bool" value="false"/>
        <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: pre or post" type="string" value="post"/>
        <Parameter name="coarse: sweeps" type="int" value="1"/>
        <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="false"/>
        <Parameter name="smoother: Aztec options" type="any" value="Teuchos::RCP&lt;__gnu_debug_def::vector&lt;int, std::allocator&lt;int> > >{ptr=0x55de40,node=0x55df40,count=2}   [unused]"/>
        <Parameter name="smoother: Aztec params" type="any" value="Teuchos::RCP&lt;__gnu_debug_def::vector&lt;double, std::allocator&lt;double> > >{ptr=0x55e140,node=0x55e920,count=2}   [unused]"/>
        <Parameter name="smoother: Hiptmair efficient symmetric" type="bool" value="true"/>
        <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>

Examples:

MixedOrderPhysicsBasedPreconditioner.cpp, simple_stratimikos_example.cpp, and test_single_stratimikos_solver.cpp.

Definition at line 82 of file Stratimikos_DefaultLinearSolverBuilder.hpp.


Member Typedef Documentation

Definition at line 261 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 263 of file Stratimikos_DefaultLinearSolverBuilder.hpp.


Constructor & Destructor Documentation

Stratimikos::DefaultLinearSolverBuilder::DefaultLinearSolverBuilder ( const std::string &  paramsXmlFileName = "",
const std::string &  extraParamsXmlString = "",
const std::string &  paramsUsedXmlOutFileName = "",
const std::string &  paramsXmlFileNameOption = "linear-solver-params-file",
const std::string &  extraParamsXmlStringOption = "extra-linear-solver-params",
const std::string &  paramsUsedXmlOutFileNameOption = "linear-solver-params-used-file" 
)

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 *this is constructed. This will help to avoid problems with updates to the ordering of the arguments.

Definition at line 86 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

Stratimikos::DefaultLinearSolverBuilder::~DefaultLinearSolverBuilder (  ) 

Definition at line 106 of file Stratimikos_DefaultLinearSolverBuilder.cpp.


Member Function Documentation

Stratimikos::DefaultLinearSolverBuilder::STANDARD_MEMBER_COMPOSITION_MEMBERS ( std::string  ,
paramsXmlFileName   
)

The name an XML file that will be read to get XML parameters (if not "").

Stratimikos::DefaultLinearSolverBuilder::STANDARD_MEMBER_COMPOSITION_MEMBERS ( std::string  ,
extraParamsXmlString   
)

An XML string that will be used to update the parameters (if not "").

Stratimikos::DefaultLinearSolverBuilder::STANDARD_MEMBER_COMPOSITION_MEMBERS ( std::string  ,
paramsUsedXmlOutFileName   
)

The name of an XML file that will be written (if not "") for the parameters actually used.

Stratimikos::DefaultLinearSolverBuilder::STANDARD_MEMBER_COMPOSITION_MEMBERS ( std::string  ,
paramsXmlFileNameOption   
)

The name of the option that will be added the the commandline processor that will set paramsXmlFileName() .

Stratimikos::DefaultLinearSolverBuilder::STANDARD_MEMBER_COMPOSITION_MEMBERS ( std::string  ,
extraParamsXmlStringOption   
)

The name of the option that will be added the the commandline processor that will set extraParamsXmlString() .

Stratimikos::DefaultLinearSolverBuilder::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 Stratimikos::DefaultLinearSolverBuilder::setLinearSolveStrategyFactory ( const RCP< const AbstractFactory< Thyra::LinearOpWithSolveFactoryBase< double > > > &  solveStrategyFactory,
const std::string &  solveStrategyName 
)

Set a new linear solver strategy factory object.

Definition at line 116 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

void Stratimikos::DefaultLinearSolverBuilder::setPreconditioningStrategyFactory ( const RCP< const AbstractFactory< Thyra::PreconditionerFactoryBase< double > > > &  precStrategyFactory,
const std::string &  precStrategyName 
)

Set a new preconditioner strategy factory object.

Definition at line 129 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

void Stratimikos::DefaultLinearSolverBuilder::setupCLP ( Teuchos::CommandLineProcessor clp  ) 

Setup the command-line processor to read in the needed data to extra the parameters from.

Command-line options with names this->paramsXmlFileNameOption(), this->extraParamsXmlStringOption(), and this->paramsUsedXmlOutFileNameOption() will be set if they are not empty.

Then, when cpl->parse(...) is called, then the options set will be read into this->paramsXmlFileName(), this->extraParamsXmlString(), and this->paramsUsedXmlOutFileName().

After this function is called, this->readParameters() can be called to actually read in the parameters and fill the parameter list.

Examples:
simple_stratimikos_example.cpp.

Definition at line 142 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

void Stratimikos::DefaultLinearSolverBuilder::readParameters ( std::ostream *  out  ) 

Force the parameters to be read from a file and/or an extra XML string.

First, if this->getParameterList().get()==NULL and new parameter list will be created.

Second, if this->paramsXmlFileName()!="" then the file this->paramsXmlFileName() will be read to get XML parameters append/update those already in the parameter list.

Third, if this->extraParamsXmlString()!="" then the XML string this->extraParamsXmlString() will be read and used to append/update the parameters already in the parameter list..

Postconditions:

Examples:
simple_stratimikos_example.cpp.

Definition at line 162 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

void Stratimikos::DefaultLinearSolverBuilder::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.

If outputXmlFileName!="" then the parameter list with be written to the file outputXmlFileName in XML format. If outputXmlFileName=="", but this->paramsUsedXmlOutFileNameOption()!="" then the parameter list will be written to the file this->paramsUsedXmlOutFileNameOption(). If both outputXmlFileName=="" and this->paramsUsedXmlOutFileNameOption()=="" then no file is written.

Examples:
simple_stratimikos_example.cpp.

Definition at line 180 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

std::string Stratimikos::DefaultLinearSolverBuilder::getLinearSolveStrategyName (  )  const

Get the name of the linear solver strategy that will be created on the next call to this->createLinearSolverStrategy().

Definition at line 195 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

std::string Stratimikos::DefaultLinearSolverBuilder::getPreconditionerStrategyName (  )  const

Get the name of the preconditioner strategy that will be created on the next call to this->createPreconditioningStrategy().

Definition at line 206 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

void Stratimikos::DefaultLinearSolverBuilder::setParameterList ( RCP< ParameterList > const &  paramList  )  [virtual]
RCP< Teuchos::ParameterList > Stratimikos::DefaultLinearSolverBuilder::getNonconstParameterList (  )  [virtual]
RCP< Teuchos::ParameterList > Stratimikos::DefaultLinearSolverBuilder::unsetParameterList (  )  [virtual]
RCP< const Teuchos::ParameterList > Stratimikos::DefaultLinearSolverBuilder::getParameterList (  )  const [virtual]

Reimplemented from Teuchos::ParameterListAcceptor.

Definition at line 251 of file Stratimikos_DefaultLinearSolverBuilder.cpp.

RCP< const Teuchos::ParameterList > Stratimikos::DefaultLinearSolverBuilder::getValidParameters (  )  const [virtual]
RCP< Thyra::LinearOpWithSolveFactoryBase< double > > Stratimikos::DefaultLinearSolverBuilder::createLinearSolveStrategy ( const std::string &  linearSolveStrategyName  )  const [virtual]
RCP< Thyra::PreconditionerFactoryBase< double > > Stratimikos::DefaultLinearSolverBuilder::createPreconditioningStrategy ( const std::string &  preconditioningStrategyName  )  const [virtual]
void Stratimikos::DefaultLinearSolverBuilder::initializeDefaults (  )  [private]

Definition at line 426 of file Stratimikos_DefaultLinearSolverBuilder.cpp.


Member Data Documentation

Definition at line 268 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 269 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 270 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 271 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 272 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 273 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 274 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 275 of file Stratimikos_DefaultLinearSolverBuilder.hpp.

Definition at line 276 of file Stratimikos_DefaultLinearSolverBuilder.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Generated on Wed Apr 13 10:20:31 2011 for Stratimikos Package Browser (Single Doxygen Collection) by  doxygen 1.6.3