Tempus
Version of the Day
Time Integration
Loading...
Searching...
No Matches
src
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp
Go to the documentation of this file.
1
//@HEADER
2
// *****************************************************************************
3
// Tempus: Time Integration and Sensitivity Analysis Package
4
//
5
// Copyright 2017 NTESS and the Tempus contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
//@HEADER
9
10
#ifndef Tempus_StepperNewmarkExplicitAFormModifierXBase_hpp
11
#define Tempus_StepperNewmarkExplicitAFormModifierXBase_hpp
12
13
#include "Tempus_config.hpp"
14
#include "Tempus_SolutionHistory.hpp"
15
#include "
Tempus_StepperNewmarkExplicitAFormAppAction.hpp
"
16
17
namespace
Tempus
{
18
36
template
<
class
Scalar>
37
class
StepperNewmarkExplicitAFormModifierXBase
38
:
virtual
public
Tempus::StepperNewmarkExplicitAFormAppAction
<Scalar> {
39
private
:
40
/* \brief Adaptor execute function
41
*
42
* This is an adaptor function to bridge between the AppAction
43
* interface and the ModifierX interface. It is meant to be private
44
* and non-virtual as deriving from this class should only need to
45
* implement the modify function.
46
*
47
* For the ModifierX interface, this adaptor maps the
48
* StepperNewmarkExplicitAFormAppAction::ACTION_LOCATION to the
49
* StepperNewmarkExplicitAFormModifierX::MODIFIERX_TYPE, and only pass the
50
* solution
51
* (\f$x\f$ and/or \f$\dot{x}\f$ and other parameters to the modify
52
* function.
53
*/
54
void
execute
(Teuchos::RCP<
SolutionHistory<Scalar>
> sh,
55
Teuchos::RCP<
StepperNewmarkExplicitAForm<Scalar>
> stepper,
56
const
typename
StepperNewmarkExplicitAFormAppAction
<
57
Scalar>
::ACTION_LOCATION
actLoc)
58
{
59
using
Teuchos::RCP;
60
61
MODIFIER_TYPE
modType =
X_BEGIN_STEP
;
62
RCP<SolutionState<Scalar> > workingState = sh->getWorkingState();
63
const
Scalar time = workingState->getTime();
64
const
Scalar dt = workingState->getTimeStep();
65
RCP<Thyra::VectorBase<Scalar> > x;
66
67
switch
(actLoc) {
68
case
StepperNewmarkExplicitAFormAppAction<Scalar>::BEGIN_STEP
: {
69
modType =
X_BEGIN_STEP
;
70
x = workingState->getX();
71
break
;
72
}
73
case
StepperNewmarkExplicitAFormAppAction<Scalar>::BEFORE_EXPLICIT_EVAL
: {
74
modType =
X_BEFORE_EXPLICIT_EVAL
;
75
x = workingState->getX();
76
break
;
77
}
78
case
StepperNewmarkExplicitAFormAppAction<Scalar>::AFTER_EXPLICIT_EVAL
: {
79
modType =
X_AFTER_EXPLICIT_EVAL
;
80
x = workingState->getX();
81
break
;
82
}
83
case
StepperNewmarkExplicitAFormAppAction<Scalar>::END_STEP
: {
84
modType =
X_END_STEP
;
85
x = workingState->getX();
86
break
;
87
}
88
default
:
89
TEUCHOS_TEST_FOR_EXCEPTION(
true
, std::logic_error,
90
"Error - unknown action location.\n"
);
91
}
92
93
this->
modify
(x, time, dt, modType);
94
}
95
96
public
:
98
enum
MODIFIER_TYPE
{
99
X_BEGIN_STEP
,
100
X_BEFORE_EXPLICIT_EVAL
,
101
X_AFTER_EXPLICIT_EVAL
,
102
X_END_STEP
103
};
104
106
virtual
void
modify
(Teuchos::RCP<
Thyra::VectorBase<Scalar>
>
/* x */
,
107
const
Scalar
/* time */
,
const
Scalar
/* dt */
,
108
const
MODIFIER_TYPE
modType) = 0;
109
};
110
111
}
// namespace Tempus
112
113
#endif
// Tempus_StepperNewmarkExplicitAFormModifierXBase_hpp
Tempus_StepperNewmarkExplicitAFormAppAction.hpp
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition
Tempus_SolutionHistory_decl.hpp:119
Tempus::StepperNewmarkExplicitAFormAppAction
Application Action for StepperNewmarkExplicitAForm.
Definition
Tempus_StepperNewmarkExplicitAFormAppAction.hpp:35
Tempus::StepperNewmarkExplicitAFormAppAction::ACTION_LOCATION
ACTION_LOCATION
Indicates the location of application action (see algorithm).
Definition
Tempus_StepperNewmarkExplicitAFormAppAction.hpp:38
Tempus::StepperNewmarkExplicitAFormModifierXBase
Base ModifierX for StepperNewmarkExplicitAForm.
Definition
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:38
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::MODIFIER_TYPE
MODIFIER_TYPE
Indicates the location of application action (see algorithm).
Definition
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:98
Tempus::StepperNewmarkExplicitAFormModifierXBase::X_BEFORE_EXPLICIT_EVAL
@ X_BEFORE_EXPLICIT_EVAL
Modify before the explicit evaluation.
Definition
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:100
Tempus::StepperNewmarkExplicitAFormModifierXBase::X_END_STEP
@ X_END_STEP
Modify at the end of the step.
Definition
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:102
Tempus::StepperNewmarkExplicitAFormModifierXBase::X_BEGIN_STEP
@ X_BEGIN_STEP
Modify at the beginning of the step.
Definition
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:99
Tempus::StepperNewmarkExplicitAFormModifierXBase::X_AFTER_EXPLICIT_EVAL
@ X_AFTER_EXPLICIT_EVAL
Modify after the explicit evaluation.
Definition
Tempus_StepperNewmarkExplicitAFormModifierXBase.hpp:101
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:54
Tempus::StepperNewmarkExplicitAForm
Newmark Explicit time stepper.
Definition
Tempus_StepperNewmarkExplicitAForm_decl.hpp:94
Thyra::VectorBase
Tempus
Definition
Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp:22
Generated on Thu Oct 9 2025 20:59:09 for Tempus by
1.9.8