Tempus  Version of the Day
Time Integration
Tempus_IntegratorTest.cpp
Go to the documentation of this file.
1 // @HEADER
2 // ****************************************************************************
3 // Tempus: Copyright (2017) Sandia Corporation
4 //
5 // Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6 // ****************************************************************************
7 // @HEADER
8 
9 #include "Teuchos_UnitTestHarness.hpp"
10 #include "Teuchos_XMLParameterListHelpers.hpp"
11 #include "Teuchos_TimeMonitor.hpp"
12 
13 #include "Tempus_IntegratorBasic.hpp"
14 
15 #include "../TestModels/SinCosModel.hpp"
16 
17 #include <vector>
18 
19 namespace Tempus_Test {
20 
21 using Teuchos::RCP;
22 using Teuchos::ParameterList;
23 using Teuchos::sublist;
24 using Teuchos::getParametersFromXmlFile;
25 
29 
30 // Test Integrator construction from ParameterList and ModelEvaluator.
31 TEUCHOS_UNIT_TEST(IntegratorBasic, PL_ME_Construction)
32 {
33  // 1) Setup the ParameterList (here we start with params from .xml file)
34  RCP<ParameterList> pl = getParametersFromXmlFile("Tempus_default.xml");
35 
36  // 2) Setup the ModelEvaluator
37  RCP<SinCosModel<double> > model = Teuchos::rcp(new SinCosModel<double> ());
38 
39  // 3) Setup the Integrator
40  RCP<ParameterList> tempusPL = sublist(pl, "Tempus", true);
41  RCP<Tempus::IntegratorBasic<double> > integrator =
42  Tempus::integratorBasic<double>(tempusPL, model);
43 
44  // Test the ParameterList
45  RCP<ParameterList> testPL = integrator->getTempusParameterList();
46  // Write out ParameterList to rebaseline test.
47  //writeParameterListToXmlFile(*testPL, "Tempus_IntegratorBasic_ref-test.xml");
48 
49  // Read params from reference .xml file
50  RCP<ParameterList> referencePL =
51  getParametersFromXmlFile("Tempus_IntegratorBasic_ref.xml");
52 
53  //std::cout << std::endl;
54  //std::cout << "testPL -------------- \n" << *testPL << std::endl;
55  //std::cout << "referencePL -------------- \n" << *referencePL << std::endl;
56  TEST_ASSERT(haveSameValues(*testPL,*referencePL))
57 }
58 
59 
60 // Test integator construction, and then setParameterList, setStepper, and
61 // initialization.
63 {
64  // 1) Setup the Integrator
65  RCP<Tempus::IntegratorBasic<double> > integrator =
66  Tempus::integratorBasic<double>();
67 
68  // 2) Setup the ParameterList
69  // - Start with the default Tempus PL
70  // - Add Stepper PL
71  RCP<ParameterList> tempusPL = integrator->getTempusParameterList();
72 
73  tempusPL->sublist("Default Integrator").set("Stepper Name", "Demo Stepper");
74  RCP<ParameterList> stepperPL = Teuchos::parameterList();
75  stepperPL->set("Stepper Type", "Forward Euler");
76  tempusPL->set("Demo Stepper", *stepperPL);
77 
78  integrator->setTempusParameterList(tempusPL);
79 
80  // 3) Setup the Stepper
81  RCP<SinCosModel<double> > model = Teuchos::rcp(new SinCosModel<double> ());
82  integrator->setStepper(model);
83 
84  // 4) Initialize integrator
85  integrator->initialize();
86 
87  // Test the ParameterList
88  RCP<ParameterList> testPL = integrator->getTempusParameterList();
89  // Write out ParameterList to rebaseline test.
90  //writeParameterListToXmlFile(*testPL,"Tempus_IntegratorBasic_ref2-test.xml");
91 
92  // Read params from reference .xml file
93  RCP<ParameterList> referencePL =
94  getParametersFromXmlFile("Tempus_IntegratorBasic_ref2.xml");
95 
96  //std::cout << std::endl;
97  //std::cout << "testPL -------------- \n" << *testPL << std::endl;
98  //std::cout << "referencePL -------------- \n" << *referencePL << std::endl;
99  TEST_ASSERT(haveSameValues(*testPL,*referencePL))
100 }
101 
102 } // namespace Tempus_Test
Tempus_Test
Definition: Tempus_BackwardEuler_ASA.cpp:34
Tempus::IntegratorBasic
Basic time integrator.
Definition: Tempus_IntegratorBasic_decl.hpp:35
Tempus_Test::SinCosModel
Sine-Cosine model problem from Rythmos. This is a canonical Sine-Cosine differential equation.
Definition: SinCosModel_decl.hpp:91
Tempus::SolutionState
Solution state for integrators and steppers. SolutionState contains the metadata for solutions and th...
Definition: Tempus_SolutionState_decl.hpp:56
Tempus_Test::TEUCHOS_UNIT_TEST
TEUCHOS_UNIT_TEST(BackwardEuler, SinCos_ASA)
Definition: Tempus_BackwardEuler_ASA.cpp:47
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition: Tempus_Integrator.hpp:25