diff --git a/packages/tempus/src/Tempus_StepperDIRK_decl.hpp b/packages/tempus/src/Tempus_StepperDIRK_decl.hpp index 31cd04dccb45..7f937a484ccb 100644 --- a/packages/tempus/src/Tempus_StepperDIRK_decl.hpp +++ b/packages/tempus/src/Tempus_StepperDIRK_decl.hpp @@ -235,6 +235,8 @@ class StepperDIRK : virtual public Tempus::StepperImplicit, this->setUseEmbedded(pl->get("Use Embedded")); if ( pl->isParameter("Zero Initial Guess") ) this->setZeroInitialGuess(pl->get("Zero Initial Guess")); + if (pl->isParameter("Solver Name") ) + this->setStepperSolverValues(pl); } } diff --git a/packages/tempus/unit_test/CMakeLists.txt b/packages/tempus/unit_test/CMakeLists.txt index 8d79cca20684..5a62a3e24bd2 100644 --- a/packages/tempus/unit_test/CMakeLists.txt +++ b/packages/tempus/unit_test/CMakeLists.txt @@ -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 ) diff --git a/packages/tempus/unit_test/Tempus_DIRK_VanDerPol.xml b/packages/tempus/unit_test/Tempus_DIRK_VanDerPol.xml new file mode 100644 index 000000000000..d6e9ecfd55c2 --- /dev/null +++ b/packages/tempus/unit_test/Tempus_DIRK_VanDerPol.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/tempus/unit_test/Tempus_UnitTest_DIRK_BackwardEuler.cpp b/packages/tempus/unit_test/Tempus_UnitTest_DIRK_BackwardEuler.cpp index 79ff4bba75d6..91ea6884e76f 100644 --- a/packages/tempus/unit_test/Tempus_UnitTest_DIRK_BackwardEuler.cpp +++ b/packages/tempus/unit_test/Tempus_UnitTest_DIRK_BackwardEuler.cpp @@ -12,6 +12,7 @@ #include "Teuchos_DefaultComm.hpp" #include "Thyra_VectorStdOps.hpp" +#include "Tempus_IntegratorBasic.hpp" #include "Tempus_UnitTest_Utils.hpp" @@ -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()); + + // 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(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)