9 #include "Teuchos_UnitTestHarness.hpp" 
   10 #include "Teuchos_XMLParameterListHelpers.hpp" 
   11 #include "Teuchos_TimeMonitor.hpp" 
   13 #include "Tempus_config.hpp" 
   14 #include "Tempus_IntegratorPseudoTransientForwardSensitivity.hpp" 
   15 #include "Tempus_IntegratorPseudoTransientAdjointSensitivity.hpp" 
   17 #include "Thyra_VectorStdOps.hpp" 
   18 #include "Thyra_MultiVectorStdOps.hpp" 
   20 #include "../TestModels/SteadyQuadraticModel.hpp" 
   22 #include "Thyra_DefaultMultiVectorProductVector.hpp" 
   23 #include "Thyra_DefaultProductVector.hpp" 
   28 namespace Tempus_Test {
 
   31 using Teuchos::ParameterList;
 
   32 using Teuchos::sublist;
 
   33 using Teuchos::getParametersFromXmlFile;
 
   38                               Teuchos::FancyOStream &out, 
bool &success)
 
   41   RCP<ParameterList> pList =
 
   42     getParametersFromXmlFile(
"Tempus_ExplicitRK_SteadyQuadratic.xml");
 
   45   RCP<ParameterList> scm_pl = sublist(pList, 
"SteadyQuadraticModel", 
true);
 
   46   scm_pl->set(
"Use DfDp as Tangent", use_dfdp_as_tangent);
 
   47   RCP<SteadyQuadraticModel<double> > model =
 
   48     Teuchos::rcp(
new SteadyQuadraticModel<double>(scm_pl));
 
   51   RCP<ParameterList> pl = sublist(pList, 
"Tempus", 
true);
 
   52   ParameterList& sens_pl = pl->sublist(
"Sensitivities");
 
   53   sens_pl.set(
"Use DfDp as Tangent", use_dfdp_as_tangent);
 
   56   RCP<Tempus::IntegratorPseudoTransientForwardSensitivity<double> > integrator =
 
   57     Tempus::integratorPseudoTransientForwardSensitivity<double>(pl, model);
 
   60   bool integratorStatus = integrator->advanceTime();
 
   61   TEST_ASSERT(integratorStatus);
 
   64   double time = integrator->getTime();
 
   65   double timeFinal = pl->sublist(
"Demo Integrator")
 
   66     .sublist(
"Time Step Control").get<
double>(
"Final Time");
 
   67   TEST_FLOATING_EQUALITY(time, timeFinal, 1.0e-14);
 
   70   RCP<const Thyra::VectorBase<double> > x_vec = integrator->getX();
 
   71   RCP<const Thyra::MultiVectorBase<double> > DxDp_vec = integrator->getDxDp();
 
   72   const double x = Thyra::get_ele(*x_vec, 0);
 
   73   const double dxdb = Thyra::get_ele(*(DxDp_vec->col(0)), 0);
 
   74   const double x_exact = model->getSteadyStateSolution();
 
   75   const double dxdb_exact = model->getSteadyStateSolutionSensitivity();
 
   77   TEST_FLOATING_EQUALITY( x,    x_exact,    1.0e-6 );
 
   78   TEST_FLOATING_EQUALITY( dxdb, dxdb_exact, 1.0e-6 );
 
   97   RCP<ParameterList> pList =
 
   98     getParametersFromXmlFile(
"Tempus_ExplicitRK_SteadyQuadratic.xml");
 
  101   RCP<ParameterList> scm_pl = sublist(pList, 
"SteadyQuadraticModel", 
true);
 
  102   RCP<SteadyQuadraticModel<double> > model =
 
  106   RCP<ParameterList> pl = sublist(pList, 
"Tempus", 
true);
 
  110   RCP<Tempus::IntegratorPseudoTransientAdjointSensitivity<double> > integrator =
 
  111     Tempus::integratorPseudoTransientAdjointSensitivity<double>(pl, model);
 
  114   bool integratorStatus = integrator->advanceTime();
 
  115   TEST_ASSERT(integratorStatus);
 
  118   double time = integrator->getTime();
 
  119   double timeFinal =pl->sublist(
"Demo Integrator")
 
  120     .sublist(
"Time Step Control").get<
double>(
"Final Time");
 
  121   TEST_FLOATING_EQUALITY(time, timeFinal, 1.0e-14);
 
  124   RCP<const Thyra::VectorBase<double> > x_vec = integrator->getX();
 
  125   RCP<const Thyra::MultiVectorBase<double> > DxDp_vec = integrator->getDgDp();
 
  126   const double x = Thyra::get_ele(*x_vec, 0);
 
  127   const double dxdb = Thyra::get_ele(*(DxDp_vec->col(0)), 0);
 
  128   const double x_exact = model->getSteadyStateSolution();
 
  129   const double dxdb_exact = model->getSteadyStateSolutionSensitivity();
 
  131   TEST_FLOATING_EQUALITY( x,    x_exact,    1.0e-6 );
 
  132   TEST_FLOATING_EQUALITY( dxdb, dxdb_exact, 1.0e-6 );
 
void test_pseudotransient_fsa(const bool use_dfdp_as_tangent, Teuchos::FancyOStream &out, bool &success)
 
TEUCHOS_UNIT_TEST(BackwardEuler, SinCos_ASA)
 
Simple quadratic equation with a stable steady-state. This is a simple differential equation  which h...