Tempus
Version of the Day
Time Integration
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Tempus_StepperLeapfrogModifierXBase.hpp
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
#ifndef Tempus_StepperLeapfrogModifierXBase_hpp
10
#define Tempus_StepperLeapfrogModifierXBase_hpp
11
12
#include "Tempus_config.hpp"
13
#include "Tempus_SolutionHistory.hpp"
14
#include "
Tempus_StepperLeapfrogAppAction.hpp
"
15
16
17
namespace
Tempus
{
18
36
37
template
<
class
Scalar>
38
class
StepperLeapfrogModifierXBase
39
:
virtual
public
Tempus::StepperLeapfrogAppAction
<Scalar>
40
{
41
private
:
42
43
/* \brief Adaptor execute function
44
*
45
* This is an adaptor function to bridge between the AppAction
46
* interface and the ModifierX interface. It is meant to be private
47
* and non-virtual as deriving from this class should only need to
48
* implement the modify function.
49
*
50
* For the ModifierX interface, this adaptor maps the
51
* StepperLeapfrogAppAction::ACTION_LOCATION to the
52
* StepperLeapfrogModifierX::MODIFIERX_TYPE, and only pass the solution
53
* (\f$x\f$ and/or \f$\dot{x}\f$ and other parameters to the modify
54
* function.
55
*/
56
void
execute
(
57
Teuchos::RCP<
SolutionHistory<Scalar>
> sh,
58
Teuchos::RCP<
StepperLeapfrog<Scalar>
> stepper,
59
const
typename
StepperLeapfrogAppAction<Scalar>::ACTION_LOCATION
actLoc)
60
{
61
using
Teuchos::RCP;
62
63
MODIFIER_TYPE
modType =
X_BEGIN_STEP
;
64
RCP<SolutionState<Scalar> > workingState = sh->getWorkingState();
65
const
Scalar time = workingState->getTime();
66
const
Scalar dt = workingState->getTimeStep();
67
RCP<Thyra::VectorBase<Scalar> > x;
68
69
switch
(actLoc) {
70
case
StepperLeapfrogAppAction<Scalar>::BEGIN_STEP
:
71
{
72
modType =
X_BEGIN_STEP
;
73
x = workingState->getX();
74
break
;
75
}
76
case
StepperLeapfrogAppAction<Scalar>::BEFORE_X_UPDATE
:
77
{
78
modType =
X_BEFORE_X_UPDATE
;
79
x = workingState->getX();
80
break
;
81
}
82
case
StepperLeapfrogAppAction<Scalar>::BEFORE_EXPLICIT_EVAL
:
83
{
84
modType =
X_BEFORE_EXPLICIT_EVAL
;
85
x = workingState->getX();
86
break
;
87
}
88
case
StepperLeapfrogAppAction<Scalar>::BEFORE_XDOT_UPDATE
:
89
{
90
modType =
X_BEFORE_XDOT_UPDATE
;
91
x = workingState->getX();
92
break
;
93
}
94
case
StepperLeapfrogAppAction<Scalar>::END_STEP
:
95
{
96
modType =
X_END_STEP
;
97
x = workingState->getX();
98
break
;
99
}
100
default
:
101
TEUCHOS_TEST_FOR_EXCEPTION(
true
, std::logic_error,
102
"Error - unknown action location.\n"
);
103
}
104
105
this->
modify
(x, time, dt, modType);
106
}
107
108
public
:
109
111
enum
MODIFIER_TYPE
{
112
X_BEGIN_STEP
,
113
X_BEFORE_X_UPDATE
,
114
X_BEFORE_EXPLICIT_EVAL
,
115
X_BEFORE_XDOT_UPDATE
,
116
X_END_STEP
117
};
118
120
virtual
void
modify
(
121
Teuchos::RCP<
Thyra::VectorBase<Scalar>
>
/* x */
,
122
const
Scalar
/* time */
,
const
Scalar
/* dt */
,
123
const
MODIFIER_TYPE
modType) = 0;
124
125
};
126
127
}
// namespace Tempus
128
129
#endif
// Tempus_StepperLeapfrogModifierXBase_hpp
Tempus_StepperLeapfrogAppAction.hpp
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition
Tempus_SolutionHistory_decl.hpp:121
Tempus::StepperLeapfrogAppAction
Application Action for StepperLeapfrog.
Definition
Tempus_StepperLeapfrogAppAction.hpp:35
Tempus::StepperLeapfrogAppAction::ACTION_LOCATION
ACTION_LOCATION
Indicates the location of application action (see algorithm).
Definition
Tempus_StepperLeapfrogAppAction.hpp:39
Tempus::StepperLeapfrogAppAction::BEFORE_X_UPDATE
@ BEFORE_X_UPDATE
Before updating x.
Definition
Tempus_StepperLeapfrogAppAction.hpp:41
Tempus::StepperLeapfrogAppAction::BEFORE_EXPLICIT_EVAL
@ BEFORE_EXPLICIT_EVAL
Before the explicit ME evaluation.
Definition
Tempus_StepperLeapfrogAppAction.hpp:42
Tempus::StepperLeapfrogAppAction::END_STEP
@ END_STEP
At the end of the step.
Definition
Tempus_StepperLeapfrogAppAction.hpp:44
Tempus::StepperLeapfrogAppAction::BEFORE_XDOT_UPDATE
@ BEFORE_XDOT_UPDATE
Before updating xDot.
Definition
Tempus_StepperLeapfrogAppAction.hpp:43
Tempus::StepperLeapfrogAppAction::BEGIN_STEP
@ BEGIN_STEP
At the beginning of the step.
Definition
Tempus_StepperLeapfrogAppAction.hpp:40
Tempus::StepperLeapfrogModifierXBase
Base ModifierX for StepperLeapfrog.
Definition
Tempus_StepperLeapfrogModifierXBase.hpp:40
Tempus::StepperLeapfrogModifierXBase::modify
virtual void modify(Teuchos::RCP< Thyra::VectorBase< Scalar > >, const Scalar, const Scalar, const MODIFIER_TYPE modType)=0
Modify solution based on the MODIFIER_TYPE.
Tempus::StepperLeapfrogModifierXBase::execute
void execute(Teuchos::RCP< SolutionHistory< Scalar > > sh, Teuchos::RCP< StepperLeapfrog< Scalar > > stepper, const typename StepperLeapfrogAppAction< Scalar >::ACTION_LOCATION actLoc)
Execute application action for Leapfrog Stepper.
Definition
Tempus_StepperLeapfrogModifierXBase.hpp:56
Tempus::StepperLeapfrogModifierXBase::MODIFIER_TYPE
MODIFIER_TYPE
Indicates the location of application action (see algorithm).
Definition
Tempus_StepperLeapfrogModifierXBase.hpp:111
Tempus::StepperLeapfrogModifierXBase::X_BEGIN_STEP
@ X_BEGIN_STEP
Modify at the beginning of the step.
Definition
Tempus_StepperLeapfrogModifierXBase.hpp:112
Tempus::StepperLeapfrogModifierXBase::X_BEFORE_XDOT_UPDATE
@ X_BEFORE_XDOT_UPDATE
Modify Before updating xDot.
Definition
Tempus_StepperLeapfrogModifierXBase.hpp:115
Tempus::StepperLeapfrogModifierXBase::X_END_STEP
@ X_END_STEP
Modify at the end of the step.
Definition
Tempus_StepperLeapfrogModifierXBase.hpp:116
Tempus::StepperLeapfrogModifierXBase::X_BEFORE_X_UPDATE
@ X_BEFORE_X_UPDATE
Modify before updating x.
Definition
Tempus_StepperLeapfrogModifierXBase.hpp:113
Tempus::StepperLeapfrogModifierXBase::X_BEFORE_EXPLICIT_EVAL
@ X_BEFORE_EXPLICIT_EVAL
Modify before the explicit ME evaluation.
Definition
Tempus_StepperLeapfrogModifierXBase.hpp:114
Tempus::StepperLeapfrog
Leapfrog time stepper.
Definition
Tempus_StepperLeapfrog_decl.hpp:97
Thyra::VectorBase
Tempus
Definition
Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp:21
Generated by
1.17.0