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:

[legend]
List of all members.

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 : 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&lt;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&lt;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&lt;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&lt;vector&lt;int>>{ptr=0xb9c4b0,node=0xb9d120,count=2}   [unused]"/>
        <Parameter name="smoother: Aztec params" type="any" value="RCP&lt;vector&lt;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>

Examples:

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


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.

Stratimikos::DefaultLinearSolverBuilder::~DefaultLinearSolverBuilder  ) 
 


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.

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

Set a new preconditioner strategy factory object.

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.

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.

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.

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().

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

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

void Stratimikos::DefaultLinearSolverBuilder::setParameterList RCP< ParameterList > const &  paramList  )  [virtual]
 

Implements Teuchos::ParameterListAcceptor.

Examples:
MixedOrderPhysicsBasedPreconditioner.cpp.

RCP< Teuchos::ParameterList > Stratimikos::DefaultLinearSolverBuilder::getNonconstParameterList  )  [virtual]
 

Implements Teuchos::ParameterListAcceptor.

RCP< Teuchos::ParameterList > Stratimikos::DefaultLinearSolverBuilder::unsetParameterList  )  [virtual]
 

Implements Teuchos::ParameterListAcceptor.

RCP< const Teuchos::ParameterList > Stratimikos::DefaultLinearSolverBuilder::getParameterList  )  const [virtual]
 

Reimplemented from Teuchos::ParameterListAcceptor.

RCP< const Teuchos::ParameterList > Stratimikos::DefaultLinearSolverBuilder::getValidParameters  )  const [virtual]
 

Reimplemented from Teuchos::ParameterListAcceptor.

Examples:
simple_stratimikos_example.cpp.

RCP< Thyra::LinearOpWithSolveFactoryBase< double > > Stratimikos::DefaultLinearSolverBuilder::createLinearSolveStrategy const std::string &  linearSolveStrategyName  )  const [virtual]
 

Implements Thyra::LinearSolverBuilderBase< double >.

Examples:
simple_stratimikos_example.cpp.

RCP< Thyra::PreconditionerFactoryBase< double > > Stratimikos::DefaultLinearSolverBuilder::createPreconditioningStrategy const std::string &  preconditioningStrategyName  )  const [virtual]
 

Implements Thyra::LinearSolverBuilderBase< double >.


The documentation for this class was generated from the following files:
Generated on Mon Feb 16 12:20:18 2009 for Stratimikos by  doxygen 1.3.9.1