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_StepperNewmarkImplicitAFormModifierXBase.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_StepperNewmarkImplicitAFormModifierXBase_hpp
10
#define Tempus_StepperNewmarkImplicitAFormModifierXBase_hpp
11
12
#include "Tempus_config.hpp"
13
#include "Tempus_SolutionHistory.hpp"
14
#include "
Tempus_StepperNewmarkImplicitAFormAppAction.hpp
"
15
16
namespace
Tempus {
17
35
template
<
class
Scalar>
36
class
StepperNewmarkImplicitAFormModifierXBase
37
:
virtual
public
Tempus::StepperNewmarkImplicitAFormAppAction
<Scalar> {
38
private
:
39
/* \brief Adaptor execute function
40
*
41
* This is an adaptor function to bridge between the AppAction
42
* interface and the ModifierX interface. It is meant to be private
43
* and non-virtual as deriving from this class should only need to
44
* implement the modify function.
45
*
46
* For the ModifierX interface, this adaptor maps the
47
* StepperNewmarkImplicitAFormAppAction::ACTION_LOCATION to the
48
* StepperNewmarkImplicitAFormModifierX::MODIFIERX_TYPE, and only pass the
49
* solution
50
* (\f$x\f$ and/or \f$\dot{x}\f$ and other parameters to the modify
51
* function.
52
*/
53
void
execute
(
Teuchos::RCP
<
SolutionHistory<Scalar>
> sh,
54
Teuchos::RCP
<
StepperNewmarkImplicitAForm<Scalar>
> stepper,
55
const
typename
StepperNewmarkImplicitAFormAppAction
<
56
Scalar>::
ACTION_LOCATION
actLoc)
57
{
58
using
Teuchos::RCP
;
59
60
MODIFIER_TYPE
modType =
X_BEGIN_STEP
;
61
RCP<SolutionState<Scalar> > workingState = sh->getWorkingState();
62
const
Scalar time = workingState->getTime();
63
const
Scalar dt = workingState->getTimeStep();
64
RCP<Thyra::VectorBase<Scalar> > x;
65
66
switch
(actLoc) {
67
case
StepperNewmarkImplicitAFormAppAction<Scalar>::BEGIN_STEP
: {
68
modType =
X_BEGIN_STEP
;
69
x = workingState->getX();
70
break
;
71
}
72
case
StepperNewmarkImplicitAFormAppAction<Scalar>::BEFORE_SOLVE
: {
73
modType =
X_BEFORE_SOLVE
;
74
x = workingState->getX();
75
break
;
76
}
77
case
StepperNewmarkImplicitAFormAppAction<Scalar>::AFTER_SOLVE
: {
78
modType =
X_AFTER_SOLVE
;
79
x = workingState->getX();
80
break
;
81
}
82
case
StepperNewmarkImplicitAFormAppAction<Scalar>::END_STEP
: {
83
modType =
X_END_STEP
;
84
x = workingState->getX();
85
break
;
86
}
87
default
:
88
TEUCHOS_TEST_FOR_EXCEPTION
(
true
, std::logic_error,
89
"Error - unknown action location.\n"
);
90
}
91
92
this->
modify
(x, time, dt, modType);
93
}
94
95
public
:
97
enum
MODIFIER_TYPE
{
98
X_BEGIN_STEP
,
99
X_BEFORE_SOLVE
,
100
X_AFTER_SOLVE
,
101
X_END_STEP
102
};
103
105
virtual
void
modify
(
Teuchos::RCP
<
Thyra::VectorBase<Scalar>
>
/* x */
,
106
const
Scalar
/* time */
,
const
Scalar
/* dt */
,
107
const
MODIFIER_TYPE
modType) = 0;
108
};
109
110
}
// namespace Tempus
111
112
#endif // Tempus_StepperNewmarkImplicitAFormModifierXBase_hpp
Tempus::StepperNewmarkImplicitAFormAppAction
Application Action for StepperNewmarkImplicitAForm.
Definition:
Tempus_StepperNewmarkImplicitAFormAppAction.hpp:34
TEUCHOS_TEST_FOR_EXCEPTION
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Tempus::StepperNewmarkImplicitAFormModifierXBase::execute
void execute(Teuchos::RCP< SolutionHistory< Scalar > > sh, Teuchos::RCP< StepperNewmarkImplicitAForm< Scalar > > stepper, const typename StepperNewmarkImplicitAFormAppAction< Scalar >::ACTION_LOCATION actLoc)
Execute application action for NewmarkImplicitAForm Stepper.
Definition:
Tempus_StepperNewmarkImplicitAFormModifierXBase.hpp:53
Tempus::StepperNewmarkImplicitAFormModifierXBase::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::StepperNewmarkImplicitAFormModifierXBase< double >::MODIFIER_TYPE
MODIFIER_TYPE
Indicates the location of application action (see algorithm).
Definition:
Tempus_StepperNewmarkImplicitAFormModifierXBase.hpp:97
Tempus::StepperNewmarkImplicitAFormModifierXBase::X_BEGIN_STEP
Modify at the beginning of the step.
Definition:
Tempus_StepperNewmarkImplicitAFormModifierXBase.hpp:98
Thyra::VectorBase
Tempus_StepperNewmarkImplicitAFormAppAction.hpp
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition:
Tempus_Integrator.hpp:27
Tempus::StepperNewmarkImplicitAFormModifierXBase
Base ModifierX for StepperNewmarkImplicitAForm.
Definition:
Tempus_StepperNewmarkImplicitAFormModifierXBase.hpp:36
Tempus::StepperNewmarkImplicitAFormModifierXBase::X_AFTER_SOLVE
Modify after the implicit solve.
Definition:
Tempus_StepperNewmarkImplicitAFormModifierXBase.hpp:100
Teuchos::RCP
Tempus::StepperNewmarkImplicitAFormModifierXBase::X_END_STEP
Modify at the end of the step.
Definition:
Tempus_StepperNewmarkImplicitAFormModifierXBase.hpp:101
Tempus::StepperNewmarkImplicitAFormAppAction< double >::ACTION_LOCATION
ACTION_LOCATION
Indicates the location of application action (see algorithm).
Definition:
Tempus_StepperNewmarkImplicitAFormAppAction.hpp:37
Tempus::StepperNewmarkImplicitAForm
Newmark time stepper in acceleration form (a-form).
Definition:
Tempus_StepperNewmarkImplicitAForm_decl.hpp:91
Tempus::StepperNewmarkImplicitAFormModifierXBase::X_BEFORE_SOLVE
Modify before the implicit solve.
Definition:
Tempus_StepperNewmarkImplicitAFormModifierXBase.hpp:99
Generated on Wed Apr 24 2024 09:26:17 for Tempus by
1.8.5