Tempus
Version of the Day
Time Integration
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Tempus_StepperHHTAlphaModifierXBase.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_StepperHHTAlphaModifierXBase_hpp
10
#define Tempus_StepperHHTAlphaModifierXBase_hpp
11
12
#include "Tempus_config.hpp"
13
#include "Tempus_SolutionHistory.hpp"
14
#include "
Tempus_StepperHHTAlphaAppAction.hpp
"
15
16
17
namespace
Tempus
{
18
31
template
<
class
Scalar>
32
class
StepperHHTAlphaModifierXBase
33
:
virtual
public
Tempus::StepperHHTAlphaAppAction
<Scalar>
34
{
35
private
:
36
37
/* \brief Adaptor execute function
38
*
39
* This is an adaptor function to bridge between the AppAction
40
* interface and the ModifierX interface. It is meant to be private
41
* and non-virtual as deriving from this class should only need to
42
* implement the modify function.
43
*
44
* For the ModifierX interface, this adaptor maps the
45
* StepperHHTAlphaAppAction::ACTION_LOCATION to the
46
* StepperHHTAlphaModifierX::MODIFIERX_TYPE, and only pass the solution
47
* (\f$x\f$ and/or \f$\dot{x}\f$ and other parameters to the modify
48
* function.
49
*/
50
void
execute
(
51
Teuchos::RCP<
SolutionHistory<Scalar>
> sh,
52
Teuchos::RCP<
StepperHHTAlpha<Scalar>
> stepper,
53
const
typename
StepperHHTAlphaAppAction<Scalar>::ACTION_LOCATION
actLoc)
54
{
55
using
Teuchos::RCP;
56
57
MODIFIER_TYPE
modType =
X_BEGIN_STEP
;
58
RCP<SolutionState<Scalar> > workingState = sh->getWorkingState();
59
const
Scalar time = workingState->getTime();
60
const
Scalar dt = workingState->getTimeStep();
61
RCP<Thyra::VectorBase<Scalar> > x;
62
63
switch
(actLoc) {
64
case
StepperHHTAlphaAppAction<Scalar>::BEGIN_STEP
:
65
{
66
modType =
X_BEGIN_STEP
;
67
x = workingState->getX();
68
break
;
69
}
70
case
StepperHHTAlphaAppAction<Scalar>::BEFORE_SOLVE
:
71
{
72
modType =
X_BEFORE_SOLVE
;
73
x = workingState->getX();
74
break
;
75
}
76
case
StepperHHTAlphaAppAction<Scalar>::AFTER_SOLVE
:
77
{
78
modType =
X_AFTER_SOLVE
;
79
x = workingState->getX();
80
break
;
81
}
82
case
StepperHHTAlphaAppAction<Scalar>::END_STEP
:
83
{
84
modType =
X_END_STEP
;
85
if
(workingState->getX() != Teuchos::null)
86
x = workingState->getX();
87
else
88
x = stepper->getStepperX();
89
break
;
90
}
91
default
:
92
TEUCHOS_TEST_FOR_EXCEPTION(
true
, std::logic_error,
93
"Error - unknown action location.\n"
);
94
}
95
96
this->
modify
(x, time, dt, modType);
97
}
98
99
public
:
100
102
enum
MODIFIER_TYPE
{
103
X_BEGIN_STEP
,
104
X_BEFORE_SOLVE
,
105
X_AFTER_SOLVE
,
106
X_END_STEP
107
};
108
110
virtual
void
modify
(
111
Teuchos::RCP<
Thyra::VectorBase<Scalar>
>
/* x */
,
112
const
Scalar
/* time */
,
const
Scalar
/* dt */
,
113
const
MODIFIER_TYPE
modType) = 0;
114
115
};
116
117
}
// namespace Tempus
118
119
#endif
// Tempus_StepperHHTAlphaModifierXBase_hpp
Tempus_StepperHHTAlphaAppAction.hpp
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition
Tempus_SolutionHistory_decl.hpp:121
Tempus::StepperHHTAlphaAppAction
Application Action for HHT Alpha.
Definition
Tempus_StepperHHTAlphaAppAction.hpp:31
Tempus::StepperHHTAlphaAppAction::ACTION_LOCATION
ACTION_LOCATION
Indicates the location of application action (see algorithm).
Definition
Tempus_StepperHHTAlphaAppAction.hpp:35
Tempus::StepperHHTAlphaAppAction::AFTER_SOLVE
@ AFTER_SOLVE
After the implicit solve.
Definition
Tempus_StepperHHTAlphaAppAction.hpp:38
Tempus::StepperHHTAlphaAppAction::BEGIN_STEP
@ BEGIN_STEP
At the beginning of the step.
Definition
Tempus_StepperHHTAlphaAppAction.hpp:36
Tempus::StepperHHTAlphaAppAction::END_STEP
@ END_STEP
At the end of the step.
Definition
Tempus_StepperHHTAlphaAppAction.hpp:39
Tempus::StepperHHTAlphaAppAction::BEFORE_SOLVE
@ BEFORE_SOLVE
Before the implicit solve.
Definition
Tempus_StepperHHTAlphaAppAction.hpp:37
Tempus::StepperHHTAlphaModifierXBase
Base ModifierX for StepperHHTAlpha.
Definition
Tempus_StepperHHTAlphaModifierXBase.hpp:34
Tempus::StepperHHTAlphaModifierXBase::execute
void execute(Teuchos::RCP< SolutionHistory< Scalar > > sh, Teuchos::RCP< StepperHHTAlpha< Scalar > > stepper, const typename StepperHHTAlphaAppAction< Scalar >::ACTION_LOCATION actLoc)
Execute application action for HHTAlpha Stepper.
Definition
Tempus_StepperHHTAlphaModifierXBase.hpp:50
Tempus::StepperHHTAlphaModifierXBase::MODIFIER_TYPE
MODIFIER_TYPE
Indicates the location of application action (see algorithm).
Definition
Tempus_StepperHHTAlphaModifierXBase.hpp:102
Tempus::StepperHHTAlphaModifierXBase::X_END_STEP
@ X_END_STEP
Modify at the end of the step.
Definition
Tempus_StepperHHTAlphaModifierXBase.hpp:106
Tempus::StepperHHTAlphaModifierXBase::X_AFTER_SOLVE
@ X_AFTER_SOLVE
Modify after the implicit solve.
Definition
Tempus_StepperHHTAlphaModifierXBase.hpp:105
Tempus::StepperHHTAlphaModifierXBase::X_BEFORE_SOLVE
@ X_BEFORE_SOLVE
Modify before the implicit solve.
Definition
Tempus_StepperHHTAlphaModifierXBase.hpp:104
Tempus::StepperHHTAlphaModifierXBase::X_BEGIN_STEP
@ X_BEGIN_STEP
Modify at the beginning of the step.
Definition
Tempus_StepperHHTAlphaModifierXBase.hpp:103
Tempus::StepperHHTAlphaModifierXBase::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::StepperHHTAlpha
HHT-Alpha time stepper.
Definition
Tempus_StepperHHTAlpha_decl.hpp:47
Thyra::VectorBase
Tempus
Definition
Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp:21
Generated by
1.17.0