Skip to content

Commit

Permalink
Merge Pull Request #8807 from trilinos/Trilinos/tempus-stepper-dirk-s…
Browse files Browse the repository at this point in the history
…et-app-solver-pl

Automatically Merged using Trilinos Pull Request AutoTester
PR Title: Tempus: set App nonlinear solver PL if available
PR Author: sconde
  • Loading branch information
trilinos-autotester authored Mar 15, 2021
2 parents 5434315 + 29193a0 commit e8641f9
Show file tree
Hide file tree
Showing 4 changed files with 158 additions and 1 deletion.
2 changes: 2 additions & 0 deletions packages/tempus/src/Tempus_StepperDIRK_decl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,8 @@ class StepperDIRK : virtual public Tempus::StepperImplicit<Scalar>,
this->setUseEmbedded(pl->get<bool>("Use Embedded"));
if ( pl->isParameter("Zero Initial Guess") )
this->setZeroInitialGuess(pl->get<bool>("Zero Initial Guess"));
if (pl->isParameter("Solver Name") )
this->setStepperSolverValues(pl);
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/tempus/unit_test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,6 @@ TRIBITS_ADD_EXECUTABLE_AND_TEST(
)

TRIBITS_COPY_FILES_TO_BINARY_DIR(UnitTest_NewmarkImplicitAForm_CopyFiles
DEST_FILES Tempus_NewmarkImplicitAForm_HarmonicOscillator_Damped_SecondOrder.xml Tempus_NewmarkExplicitAForm_HarmonicOscillator_Damped.xml
DEST_FILES Tempus_NewmarkImplicitAForm_HarmonicOscillator_Damped_SecondOrder.xml Tempus_NewmarkExplicitAForm_HarmonicOscillator_Damped.xml Tempus_DIRK_VanDerPol.xml
EXEDEPS UnitTest_NewmarkImplicitAForm
)
126 changes: 126 additions & 0 deletions packages/tempus/unit_test/Tempus_DIRK_VanDerPol.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
<ParameterList name="DIRK_VanDerPol">
<!--<ParameterList name="VanDerPolModel">-->
<!--<Parameter name="Accept model parameters" type="bool" value="false"/>-->
<!--<Parameter name="Provide nominal values" type="bool" value="true"/>-->
<!--<Parameter name="Coeff epsilon" type="double" value="0.1"/>-->
<!--<Parameter name="IC x0" type="double" value="2.0"/>-->
<!--<Parameter name="IC x1" type="double" value="0.0"/>-->
<!--<Parameter name="IC t0" type="double" value="0.0"/>-->
<!--</ParameterList>-->
<ParameterList name="VanDerPolModel"> <!-- For embedded reference solution -->
<Parameter name="Accept model parameters" type="bool" value="false"/>
<Parameter name="Provide nominal values" type="bool" value="true"/>
<Parameter name="Coeff epsilon" type="double" value="0.1"/>
<Parameter name="IC x0" type="double" value="2.0"/>
<Parameter name="IC x1" type="double" value="-0.6654321"/>
<Parameter name="IC t0" type="double" value="0.0"/>
</ParameterList>
<ParameterList name="Tempus">
<Parameter name="Integrator Name" type="string" value="Default Integrator"/>

<ParameterList name="Default Integrator">
<Parameter name="Integrator Type" type="string" value="Integrator Basic"/>
<Parameter name="Screen Output Index List" type="string" value="1"/>
<Parameter name="Screen Output Index Interval" type="int" value="1000"/>
<Parameter name="Stepper Name" type="string" value="App Stepper"/>
<ParameterList name="Solution History">
<Parameter name="Storage Type" type="string" value="Unlimited"/>
<Parameter name="Storage Limit" type="int" value="20"/>
</ParameterList>
<ParameterList name="Time Step Control">
<Parameter name="Initial Time" type="double" value="0.0"/>
<Parameter name="Final Time" type="double" value="0.3"/>
<Parameter name="Initial Time Index" type="int" value="0"/>
<Parameter name="Final Time Index" type="int" value="500000"/>
<Parameter name="Minimum Time Step" type="double" value="0.00001"/>
<Parameter name="Initial Time Step" type="double" value="0.1"/>
<Parameter name="Maximum Time Step" type="double" value="1.0"/>
<Parameter name="Maximum Absolute Error" type="double" value="1.0e-8"/>
<Parameter name="Maximum Relative Error" type="double" value="1.0e-8"/>
<Parameter name="Output Time List" type="string" value=""/>
<Parameter name="Output Index List" type="string" value=""/>
<Parameter name="Output Time Interval" type="double" value="1.0"/>
<Parameter name="Output Index Interval" type="int" value="100000"/>
<Parameter name="Maximum Number of Stepper Failures" type="int" value="10"/>
<Parameter name="Maximum Number of Consecutive Stepper Failures" type="int" value="5"/>
<ParameterList name="Time Step Control Strategy">
<Parameter name="Strategy Type" type="string" value="Basic VS"/>
<Parameter name="Reduction Factor" type="double" value="0.5"/>
<Parameter name="Amplification Factor" type="double" value="1.75"/>
<Parameter name="Minimum Value Monitoring Function" type="double" value="1.0e-6"/>
<Parameter name="Maximum Value Monitoring Function" type="double" value="5.0e-1"/>
</ParameterList>
</ParameterList>
</ParameterList>


<ParameterList name="App Stepper">

<Parameter name="Stepper Type" type="string" value="RK Backward Euler"/>
<Parameter name="Use FSAL" type="bool" value="false"/>
<Parameter name="Initial Condition Consistency" type="string" value="None"/>
<Parameter name="Initial Condition Consistency Check" type="bool" value="false"/>
<Parameter name="Zero Initial Guess" type="bool" value="0"/>
<Parameter name="Reset Initial Guess" type="bool" value="1"/>
<Parameter name="Solver Name" type="string" value="App Solver"/>

<ParameterList name="App Solver">
<ParameterList name="NOX">
<ParameterList name="Direction">
<Parameter name="Method" type="string" value="Newton"/>
<ParameterList name="Newton">
<Parameter name="Forcing Term Method" type="string" value="Constant"/>
<Parameter name="Rescue Bad Newton Solve" type="bool" value="1"/>
</ParameterList>
</ParameterList>
<ParameterList name="Line Search">
<ParameterList name="Full Step">
<Parameter name="Full Step" type="double" value="1"/>
</ParameterList>
<Parameter name="Method" type="string" value="Full Step"/>
</ParameterList>
<Parameter name="Nonlinear Solver" type="string" value="Line Search Based"/>
<ParameterList name="Printing">
<Parameter name="Output Precision" type="int" value="3"/>
<Parameter name="Output Processor" type="int" value="0"/>
<ParameterList name="Output Information">
<Parameter name="Error" type="bool" value="1"/>
<Parameter name="Warning" type="bool" value="1"/>
<Parameter name="Outer Iteration" type="bool" value="0"/>
<Parameter name="Parameters" type="bool" value="0"/>
<Parameter name="Details" type="bool" value="0"/>
<Parameter name="Linear Solver Details" type="bool" value="1"/>
<Parameter name="Stepper Iteration" type="bool" value="1"/>
<Parameter name="Stepper Details" type="bool" value="1"/>
<Parameter name="Stepper Parameters" type="bool" value="1"/>
</ParameterList>
</ParameterList>
<ParameterList name="Solver Options">
<Parameter name="Status Test Check Type" type="string" value="Minimal"/>
</ParameterList>
<ParameterList name="Status Tests">
<Parameter name="Test Type" type="string" value="Combo"/>
<Parameter name="Combo Type" type="string" value="OR"/>
<Parameter name="Number of Tests" type="int" value="3"/>
<ParameterList name="Test 0">
<Parameter name="Test Type" type="string" value="NormF"/>
<Parameter name="Tolerance" type="double" value="1.0e-8"/>
</ParameterList>
<ParameterList name="Test 1">
<Parameter name="Test Type" type="string" value="MaxIters"/>
<Parameter name="Maximum Iterations" type="int" value="10"/>
</ParameterList>
<ParameterList name="Test 2">
<Parameter name="Test Type" type="string" value="FiniteValue"/>
</ParameterList>
</ParameterList>
</ParameterList>
</ParameterList>

</ParameterList>



</ParameterList>

</ParameterList>
29 changes: 29 additions & 0 deletions packages/tempus/unit_test/Tempus_UnitTest_DIRK_BackwardEuler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "Teuchos_DefaultComm.hpp"

#include "Thyra_VectorStdOps.hpp"
#include "Tempus_IntegratorBasic.hpp"

#include "Tempus_UnitTest_Utils.hpp"

Expand Down Expand Up @@ -54,6 +55,34 @@ TEUCHOS_UNIT_TEST(DIRK_BackwardEuler, StepperFactory_Construction)
}


// ************************************************************
//* Test: construct the integrator from PL and make sure that
//* the solver PL is the same as the provided solver PL
//* and not the default solver PL
// ************************************************************

TEUCHOS_UNIT_TEST(DIRK_BackwardEuler, App_PL)
{
auto model = rcp(new Tempus_Test::SinCosModel<double>());

// read the params from xml file
auto pList = getParametersFromXmlFile("Tempus_DIRK_VanDerPol.xml");
auto pl = sublist(pList, "Tempus", true);
auto appSolverPL = pl->sublist("App Stepper").sublist("App Solver");


// setup the Integrator
auto integrator = Tempus::integratorBasic<double>(pl, model);
auto stepperSolverPL = Teuchos::ParameterList();
stepperSolverPL.set("NOX", *(integrator->getStepper()->getSolver()->getParameterList()));

// make sure the app Solver PL is being used
TEUCHOS_ASSERT( Teuchos::haveSameValues(appSolverPL, stepperSolverPL) );

}



// ************************************************************
// ************************************************************
TEUCHOS_UNIT_TEST(DIRK_BackwardEuler, AppAction)
Expand Down

0 comments on commit e8641f9

Please sign in to comment.