Stratimikos Package Browser (Single Doxygen Collection)  Version of the Day
Stratimikos_DefaultLinearSolverBuilder.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Stratimikos: Thyra-based strategies for linear solvers
5 // Copyright (2006) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #ifndef STRATIMIKOS_DEFAULT_LINEAR_SOLVER_BUILDING_BASE
43 #define STRATIMIKOS_DEFAULT_LINEAR_SOLVER_BUILDING_BASE
44 
46 #include "Thyra_LinearSolverBuilderBase.hpp"
50 
51 // Include these to make all of the helpful decls appear
52 #ifdef HAVE_STRATIMIKOS_THYRAEPETRAADAPTERS
54 #include "Thyra_EpetraLinearOp.hpp"
55 #endif
56 #include "Thyra_LinearOpWithSolveFactoryHelpers.hpp"
57 #include "Thyra_LinearOpWithSolveBase.hpp"
58 #include "Thyra_PreconditionerFactoryHelpers.hpp"
59 #include "Thyra_DefaultScaledAdjointLinearOp.hpp"
60 #include "Thyra_DefaultPreconditioner.hpp"
61 #include "Thyra_MultiVectorStdOps.hpp"
62 #include "Thyra_VectorStdOps.hpp"
63 #include "Thyra_VectorBase.hpp"
64 
65 
66 namespace Teuchos { class CommandLineProcessor; }
67 
68 
69 namespace Stratimikos {
70 
71 
73 using Teuchos::RCP;
75 using Teuchos::Array;
80 
81 
98 /* (Old comments removed from Doxygen)
99  *
100  * The parameters this class accepts are shown below in different format:
101  * <ul>
102  * <li> \ref HumanReadableWithDocumentation "Human readable format (with documentation) for valid parameters accepted by this class"
103  * <li> \ref HumanReadableWithoutDocumentation "Human readable format (without documentation) for valid parameters accepted by this class"
104  * <li> \ref XmlFormat "XML format for valid parameters accepted by this class"
105  * </ul>
106  *
107  * <b>\anchor HumanReadableWithDocumentation Human readable format (with documentation) for valid parameters accepted by this class</b>
108  *
109  * <b>\anchor HumanReadableWithoutDocumentation Human readable format (without documentation) for valid parameters accepted by this class</b>
110  *
111  * \verbinclude simple_stratimikos_example.options.readable.out
112  *
113  * <b>\anchor XmlFormat XML format for valid parameters accepted by this class</b>
114  *
115  * \verbinclude simple_stratimikos_example.options.xml.out
116  *
117  */
119  : public Thyra::LinearSolverBuilderBase<double>
120 {
121 public:
122 
125 
134  const std::string &paramsXmlFileName = ""
135  ,const std::string &extraParamsXmlString = ""
136  ,const std::string &paramsUsedXmlOutFileName = ""
137  ,const std::string &paramsXmlFileNameOption = "linear-solver-params-file"
138  ,const std::string &extraParamsXmlStringOption = "extra-linear-solver-params"
139  ,const std::string &paramsUsedXmlOutFileNameOption = "linear-solver-params-used-file"
140  );
141 
144 
148  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,paramsXmlFileName);
149 
153  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,extraParamsXmlString);
154 
158  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,paramsUsedXmlOutFileName);
159 
163  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,paramsXmlFileNameOption);
164 
168  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,extraParamsXmlStringOption);
169 
173  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,paramsUsedXmlOutFileNameOption);
174 
177  const RCP<const AbstractFactory<Thyra::LinearOpWithSolveFactoryBase<double> > >
178  &solveStrategyFactory,
179  const std::string &solveStrategyName,
180  const bool makeDefault = false
181  );
182 
185  const std::string &solveStrategyName);
186 
189  const RCP<const AbstractFactory<Thyra::PreconditionerFactoryBase<double> > >
190  &precStrategyFactory,
191  const std::string &precStrategyName,
192  const bool makeDefault = false
193  );
194 
197  const std::string &precStrategyName);
198 
216 
235  void readParameters( std::ostream *out );
236 
252  void writeParamsFile(
253  const Thyra::LinearOpWithSolveFactoryBase<double> &lowsFactory,
254  const std::string &outputXmlFileName = ""
255  ) const;
256 
260  std::string getLinearSolveStrategyName() const;
261 
265  std::string getPreconditionerStrategyName() const;
266 
268 
271 
273  void setParameterList(RCP<ParameterList> const& paramList);
282 
284 
287 
291  const std::string &linearSolveStrategyName
292  ) const;
296  const std::string &preconditioningStrategyName
297  ) const;
298 
300 
301 private:
302 
303  // //////////////////////////////////////
304  // Private types
305 
310 
311  // //////////////////////////////////////
312  // Private data members
313 
317  std::string defaultLOWSF_;
318  Array<std::string> validPfNames_; // Contains "None" as the 0th entry!
320  std::string defaultPF_;
325 
326  // //////////////////////////////////////
327  // Private member functions
328 
329  void initializeDefaults();
330  void justInTimeInitialize() const;
331 
332 };
333 
334 
335 } // namespace Stratimikos
336 
337 
338 #endif // STRATIMIKOS_DEFAULT_LINEAR_SOLVER_BUILDING_BASE
Stratimikos::DefaultLinearSolverBuilder::writeParamsFile
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 ar...
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:219
Stratimikos::DefaultLinearSolverBuilder::lowsfArray_
Array< lowsf_fcty_t > lowsfArray_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:316
Stratimikos::DefaultLinearSolverBuilder::readParameters
void readParameters(std::ostream *out)
Force the parameters to be read from a file and/or an extra XML string.
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:190
Stratimikos::DefaultLinearSolverBuilder::validParamList_
RCP< const ParameterList > validParamList_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:322
Stratimikos::DefaultLinearSolverBuilder::defaultPF_
std::string defaultPF_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:320
Stratimikos::DefaultLinearSolverBuilder::setLinearSolveStrategyFactory
void setLinearSolveStrategyFactory(const RCP< const AbstractFactory< Thyra::LinearOpWithSolveFactoryBase< double > > > &solveStrategyFactory, const std::string &solveStrategyName, const bool makeDefault=false)
Set a new linear solver strategy factory object.
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:124
Thyra_EpetraLinearOp.hpp
Stratimikos::DefaultLinearSolverBuilder::pfValidator_
RCP< const Teuchos::StringToIntegralParameterEntryValidator< int > > pfValidator_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:324
Stratimikos::DefaultLinearSolverBuilder::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.
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:93
Stratimikos::DefaultLinearSolverBuilder::setParameterList
void setParameterList(RCP< ParameterList > const &paramList)
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:254
Stratimikos::DefaultLinearSolverBuilder
Concrete subclass of Thyra::LinearSolverBuilderBase for creating LinearOpWithSolveFactoryBase objects...
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:118
Teuchos_StandardMemberCompositionMacros.hpp
Stratimikos::DefaultLinearSolverBuilder::validLowsfNames_
Array< std::string > validLowsfNames_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:315
Stratimikos_ConfigDefs.hpp
Stratimikos::DefaultLinearSolverBuilder::unsetParameterList
RCP< ParameterList > unsetParameterList()
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:274
Stratimikos::DefaultLinearSolverBuilder::enableDelayedSolverConstruction_
bool enableDelayedSolverConstruction_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:321
Stratimikos::DefaultLinearSolverBuilder::pf_fcty_t
RCP< const AbstractFactory< Thyra::PreconditionerFactoryBase< double > > > pf_fcty_t
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:309
Stratimikos::DefaultLinearSolverBuilder::lowsf_fcty_t
RCP< const AbstractFactory< Thyra::LinearOpWithSolveFactoryBase< double > > > lowsf_fcty_t
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:307
Stratimikos::DefaultLinearSolverBuilder::pfArray_
Array< pf_fcty_t > pfArray_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:319
Teuchos::RCP
Stratimikos::DefaultLinearSolverBuilder::getParameterList
RCP< const ParameterList > getParameterList() const
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:283
Stratimikos::DefaultLinearSolverBuilder::lowsfValidator_
RCP< const Teuchos::StringToIntegralParameterEntryValidator< int > > lowsfValidator_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:323
Teuchos::Array
Teuchos::AbstractFactory
Stratimikos::DefaultLinearSolverBuilder::validPfNames_
Array< std::string > validPfNames_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:318
Teuchos_AbstractFactory.hpp
Stratimikos::DefaultLinearSolverBuilder::getNonconstParameterList
RCP< ParameterList > getNonconstParameterList()
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:267
Stratimikos::DefaultLinearSolverBuilder::getValidParameters
RCP< const ParameterList > getValidParameters() const
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:290
Teuchos_StandardParameterEntryValidators.hpp
Stratimikos::DefaultLinearSolverBuilder::STANDARD_MEMBER_COMPOSITION_MEMBERS
STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string, paramsXmlFileName)
The name an XML file that will be read to get XML parameters (if not "").
Stratimikos
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:87
Stratimikos::DefaultLinearSolverBuilder::setDefaultPreconditioningStrategyFactoryName
void setDefaultPreconditioningStrategyFactoryName(const std::string &precStrategyName)
Set the default linear solver factory name.
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:163
Stratimikos::DefaultLinearSolverBuilder::createLinearSolveStrategy
RCP< Thyra::LinearOpWithSolveFactoryBase< double > > createLinearSolveStrategy(const std::string &linearSolveStrategyName) const
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:377
Stratimikos::DefaultLinearSolverBuilder::justInTimeInitialize
void justInTimeInitialize() const
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:550
Stratimikos::DefaultLinearSolverBuilder::defaultLOWSF_
std::string defaultLOWSF_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:317
Stratimikos::DefaultLinearSolverBuilder::createPreconditioningStrategy
RCP< Thyra::PreconditionerFactoryBase< double > > createPreconditioningStrategy(const std::string &preconditioningStrategyName) const
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:437
Stratimikos::DefaultLinearSolverBuilder::setPreconditioningStrategyFactory
void setPreconditioningStrategyFactory(const RCP< const AbstractFactory< Thyra::PreconditionerFactoryBase< double > > > &precStrategyFactory, const std::string &precStrategyName, const bool makeDefault=false)
Set a new preconditioner strategy factory object.
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:147
Stratimikos::DefaultLinearSolverBuilder::setupCLP
void setupCLP(Teuchos::CommandLineProcessor *clp)
Setup the command-line processor to read in the needed data to extra the parameters from.
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:170
Stratimikos::DefaultLinearSolverBuilder::getLinearSolveStrategyName
std::string getLinearSolveStrategyName() const
Get the name of the linear solver strategy that will be created on the next call to this->createLinea...
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:234
Stratimikos::DefaultLinearSolverBuilder::getPreconditionerStrategyName
std::string getPreconditionerStrategyName() const
Get the name of the preconditioner strategy that will be created on the next call to this->createPrec...
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:243
Stratimikos::DefaultLinearSolverBuilder::initializeDefaults
void initializeDefaults()
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:468
Stratimikos::DefaultLinearSolverBuilder::paramList_
RCP< ParameterList > paramList_
Definition: Stratimikos_DefaultLinearSolverBuilder.hpp:314
Teuchos::CommandLineProcessor
Stratimikos::DefaultLinearSolverBuilder::setDefaultLinearSolveStrategyFactoryName
void setDefaultLinearSolveStrategyFactoryName(const std::string &solveStrategyName)
Set the default linear solver factory name.
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:140
Teuchos::ParameterList
Teuchos
Stratimikos::DefaultLinearSolverBuilder::~DefaultLinearSolverBuilder
~DefaultLinearSolverBuilder()
Definition: Stratimikos_DefaultLinearSolverBuilder.cpp:113
Thyra_EpetraThyraWrappers.hpp