12 #include "Teuchos_DefaultComm.hpp"
14 #include "Thyra_VectorStdOps.hpp"
18 #include "../TestModels/SinCosModel.hpp"
19 #include "../TestModels/DahlquistTestModel.hpp"
20 #include "../TestUtils/Tempus_ConvergenceTestUtils.hpp"
26 namespace Tempus_Unit_Test {
30 using Teuchos::rcp_const_cast;
31 using Teuchos::rcp_dynamic_cast;
33 using Teuchos::sublist;
34 using Teuchos::getParametersFromXmlFile;
70 class StepperRKModifierSDIRK21Test
77 : out(Out), success(Success)
81 virtual ~StepperRKModifierSDIRK21Test(){}
89 const double relTol = 1.0e-14;
90 auto stageNumber = stepper->getStageNumber();
93 auto currentState = sh->getCurrentState();
94 auto workingState = sh->getWorkingState();
95 const double dt = workingState->getTimeStep();
96 double time = currentState->getTime();
97 if (stageNumber >= 0) time += c(stageNumber)*dt;
99 auto x = workingState->getX();
100 auto xDot = workingState->getXDot();
101 if (xDot == Teuchos::null) xDot = stepper->getStepperXDot();
107 auto DME = Teuchos::rcp_dynamic_cast<
113 const double x_0 = get_ele(*(x), 0);
114 const double xDot_0 = get_ele(*(xDot), 0);
125 const double X_i = get_ele(*(x), 0);
126 const double f_i = get_ele(*(xDot), 0);
128 if (stageNumber == 0) {
132 }
else if (stageNumber == 1) {
146 const double X_i = get_ele(*(x), 0);
147 const double f_i = get_ele(*(xDot), 0);
149 if (stageNumber == 0) {
154 }
else if (stageNumber == 1) {
167 const double x_1 = get_ele(*(x), 0);
168 time = workingState->getTime();
174 if (stepper->getUseEmbedded() ==
true) {
176 TEST_ASSERT(std::abs(workingState->getTolAbs()) < relTol);
178 TEST_ASSERT(std::abs(workingState->getErrorRel()) < relTol);
203 auto modifier =
rcp(
new StepperRKModifierSDIRK21Test(out, success));
205 stepper->setModel(model);
206 stepper->setAppAction(modifier);
207 stepper->setICConsistency(
"Consistent");
208 stepper->setUseFSAL(
false);
209 stepper->initialize();
215 stepper->setInitialConditions(solutionHistory);
216 solutionHistory->initWorkingState();
218 solutionHistory->getWorkingState()->setTimeStep(dt);
219 solutionHistory->getWorkingState()->setTime(dt);
220 stepper->takeStep(solutionHistory);
At the beginning of the stage.
At the beginning of the step.
void testRKAppAction(const Teuchos::RCP< Tempus::StepperRKBase< double > > &stepper, const Teuchos::RCP< const Thyra::ModelEvaluator< double > > &model, Teuchos::FancyOStream &out, bool &success)
Unit test utility for Stepper RK AppAction.
void testFactoryConstruction(std::string stepperType, const Teuchos::RCP< const Thyra::ModelEvaluator< double > > &model)
Unit test utility for Stepper construction through StepperFactory.
The classic Dahlquist Test Problem.
#define TEST_COMPARE(v1, comp, v2)
#define TEST_FLOATING_EQUALITY(v1, v2, tol)
Before the implicit solve.
Sine-Cosine model problem from Rythmos. This is a canonical Sine-Cosine differential equation with a...
Teuchos::RCP< SolutionHistory< Scalar > > createSolutionHistoryME(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model)
Nonmember contructor from a Thyra ModelEvaluator.
Base class for Runge-Kutta methods, ExplicitRK, DIRK and IMEX.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
TEUCHOS_UNIT_TEST(BackwardEuler, Default_Construction)
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
ACTION_LOCATION
Indicates the location of application action (see algorithm).
void testDIRKAccessorsFullConstruction(const RCP< Tempus::StepperDIRK< double > > &stepper)
Unit test utility for ExplicitRK Stepper construction and accessors.
After the implicit solve.
Before the explicit evaluation.
#define TEUCHOS_ASSERT(assertion_test)
Base modifier for StepperRK.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)