Tempus
Version of the Day
Time Integration
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
Tempus_StepperNewmarkExplicitAFormModifierXBase.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_StepperNewmarkExplicitAFormModifierXBase_hpp
10
#define Tempus_StepperNewmarkExplicitAFormModifierXBase_hpp
11
12
#include "Tempus_config.hpp"
13
#include "Tempus_SolutionHistory.hpp"
14
#include "
Tempus_StepperNewmarkExplicitAFormAppAction.hpp
"
15
16
17
namespace
Tempus {
18
36
template
<
class
Scalar>
37
class
StepperNewmarkExplicitAFormModifierXBase
38
:
virtual
public
Tempus::StepperNewmarkExplicitAFormAppAction
<Scalar>
39
{
40
private
:
41
42
/* \brief Adaptor execute function
43
*
44
* This is an adaptor function to bridge between the AppAction
45
* interface and the ModifierX interface. It is meant to be private
46
* and non-virtual as deriving from this class should only need to
47
* implement the modify function.
48
*
49
* For the ModifierX interface, this adaptor maps the
50
* StepperNewmarkExplicitAFormAppAction::ACTION_LOCATION to the
51
* StepperNewmarkExplicitAFormModifierX::MODIFIERX_TYPE, and only pass the solution
52
* (\f$x\f$ and/or \f$\dot{x}\f$ and other parameters to the modify
53
* function.
54
*/
55
void
execute
(
56
Teuchos::RCP
<
SolutionHistory<Scalar>
> sh,
57
Teuchos::RCP
<
StepperNewmarkExplicitAForm<Scalar>
> stepper,
58
const
typename
StepperNewmarkExplicitAFormAppAction<Scalar>::ACTION_LOCATION
actLoc)
59
{
60
using
Teuchos::RCP
;
61
62
MODIFIER_TYPE
modType =
X_BEGIN_STEP
;
63
RCP<SolutionState<Scalar> > workingState = sh->getWorkingState();
64
const
Scalar time = workingState->getTime();
65
const
Scalar dt = workingState->getTimeStep();
66
RCP<Thyra::VectorBase<Scalar> > x;
67
68
switch
(actLoc) {
69
case
StepperNewmarkExplicitAFormAppAction<Scalar>::BEGIN_STEP
:
70
{
71
modType =
X_BEGIN_STEP
;
72
x = workingState->getX();
73
break
;
74
}
75
case
StepperNewmarkExplicitAFormAppAction<Scalar>::BEFORE_EXPLICIT_EVAL
:
76
{
77
modType =
X_BEFORE_EXPLICIT_EVAL
;
78
x = workingState->getX();
79
break
;
80
}
81
case
StepperNewmarkExplicitAFormAppAction<Scalar>::AFTER_EXPLICIT_EVAL
:
82
{
83
modType =
X_AFTER_EXPLICIT_EVAL
;
84
x = workingState->getX();
85
break
;
86
}
87
case
StepperNewmarkExplicitAFormAppAction<Scalar>::END_STEP
:
88
{
89
modType =
X_END_STEP
;
90
x = workingState->getX();
91
break
;
92
}
93
default
:
94
TEUCHOS_TEST_FOR_EXCEPTION
(
true
, std::logic_error,
95
"Error - unknown action location.\n"
);
96
}
97
98
this->
modify
(x, time, dt, modType);
99
}
100
101
public
:
102
104
enum
MODIFIER_TYPE
{
105
X_BEGIN_STEP
,
106
X_BEFORE_EXPLICIT_EVAL
,
107
X_AFTER_EXPLICIT_EVAL
,
108
X_END_STEP
109
};
110
112
virtual
void
modify
(
113
Teuchos::RCP
<
Thyra::VectorBase<Scalar>
>
/* x */
,
114
const
Scalar
/* time */
,
const
Scalar
/* dt */
,
115
const
MODIFIER_TYPE
modType) = 0;
116
117
};
118
119
}
// namespace Tempus
120
121
#endif // Tempus_StepperNewmarkExplicitAFormModifierXBase_hpp
Tempus::StepperNewmarkExplicitAFormAppAction
Application Action for StepperNewmarkExplicitAForm.
Definition:
Tempus_StepperNewmarkExplicitAFormAppAction.hpp:34
TEUCHOS_TEST_FOR_EXCEPTION
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Tempus::StepperNewmarkExplicitAFormModifierXBase::X_END_STEP
Modify at the end of the step.
Definition:
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:108
Tempus::StepperNewmarkExplicitAFormModifierXBase::X_BEFORE_EXPLICIT_EVAL
Modify before the explicit evaluation.
Definition:
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:106
Tempus::StepperNewmarkExplicitAForm
Newmark Explicit time stepper.
Definition:
Tempus_StepperNewmarkExplicitAForm_decl.hpp:93
Tempus::StepperNewmarkExplicitAFormAppAction::ACTION_LOCATION
ACTION_LOCATION
Indicates the location of application action (see algorithm).
Definition:
Tempus_StepperNewmarkExplicitAFormAppAction.hpp:39
Tempus::StepperNewmarkExplicitAFormModifierXBase::X_AFTER_EXPLICIT_EVAL
Modify after the explicit evaluation.
Definition:
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:107
Thyra::VectorBase
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition:
Tempus_Integrator.hpp:25
Tempus::StepperNewmarkExplicitAFormModifierXBase::X_BEGIN_STEP
Modify at the beginning of the step.
Definition:
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:105
Tempus::StepperNewmarkExplicitAFormModifierXBase::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::StepperNewmarkExplicitAFormModifierXBase::execute
void execute(Teuchos::RCP< SolutionHistory< Scalar > > sh, Teuchos::RCP< StepperNewmarkExplicitAForm< Scalar > > stepper, const typename StepperNewmarkExplicitAFormAppAction< Scalar >::ACTION_LOCATION actLoc)
Execute application action for NewmarkExplicitAForm Stepper.
Definition:
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:55
Tempus_StepperNewmarkExplicitAFormAppAction.hpp
Tempus::StepperNewmarkExplicitAFormModifierXBase< double >::MODIFIER_TYPE
MODIFIER_TYPE
Indicates the location of application action (see algorithm).
Definition:
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:104
Teuchos::RCP
Tempus::StepperNewmarkExplicitAFormModifierXBase
Base ModifierX for StepperNewmarkExplicitAForm.
Definition:
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:37
Generated by
1.8.5