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_StepperNewmarkImplicitDFormModifierXBase.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_StepperNewmarkImplicitDFormModifierXBase_hpp
11
#define Tempus_StepperNewmarkImplicitDFormModifierXBase_hpp
12
13
#include "Tempus_config.hpp"
14
#include "Tempus_SolutionHistory.hpp"
15
#include "
Tempus_StepperNewmarkImplicitDFormAppAction.hpp
"
16
17
namespace
Tempus {
18
36
template
<
class
Scalar>
37
class
StepperNewmarkImplicitDFormModifierXBase
38
:
virtual
public
Tempus::StepperNewmarkImplicitDFormAppAction
<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
* StepperNewmarkImplicitDFormAppAction::ACTION_LOCATION to the
49
* StepperNewmarkImplicitDFormModifierX::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
<
StepperNewmarkImplicitDForm<Scalar>
> stepper,
56
const
typename
StepperNewmarkImplicitDFormAppAction
<
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
StepperNewmarkImplicitDFormAppAction<Scalar>::BEGIN_STEP
: {
69
modType =
X_BEGIN_STEP
;
70
x = workingState->getX();
71
break
;
72
}
73
case
StepperNewmarkImplicitDFormAppAction<Scalar>::BEFORE_SOLVE
: {
74
modType =
X_BEFORE_SOLVE
;
75
x = workingState->getX();
76
break
;
77
}
78
case
StepperNewmarkImplicitDFormAppAction<Scalar>::AFTER_SOLVE
: {
79
modType =
X_AFTER_SOLVE
;
80
x = workingState->getX();
81
break
;
82
}
83
case
StepperNewmarkImplicitDFormAppAction<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_SOLVE
,
101
X_AFTER_SOLVE
,
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_StepperNewmarkImplicitDFormModifierXBase_hpp
Tempus::StepperNewmarkImplicitDFormModifierXBase::X_END_STEP
Modify at the end of the step.
Definition:
Tempus_StepperNewmarkImplicitDFormModifierXBase.hpp:102
Tempus::StepperNewmarkImplicitDFormModifierXBase
Base ModifierX for StepperNewmarkImplicitDForm.
Definition:
Tempus_StepperNewmarkImplicitDFormModifierXBase.hpp:37
Tempus::StepperNewmarkImplicitDFormModifierXBase::X_AFTER_SOLVE
Modify after the implicit solve.
Definition:
Tempus_StepperNewmarkImplicitDFormModifierXBase.hpp:101
TEUCHOS_TEST_FOR_EXCEPTION
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Tempus::StepperNewmarkImplicitDFormModifierXBase::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::StepperNewmarkImplicitDForm
Newmark time stepper.
Definition:
Tempus_StepperNewmarkImplicitDForm_decl.hpp:78
Tempus::StepperNewmarkImplicitDFormModifierXBase::X_BEGIN_STEP
Modify at the beginning of the step.
Definition:
Tempus_StepperNewmarkImplicitDFormModifierXBase.hpp:99
Tempus::StepperNewmarkImplicitDFormAppAction< double >::ACTION_LOCATION
ACTION_LOCATION
Indicates the location of application action (see algorithm).
Definition:
Tempus_StepperNewmarkImplicitDFormAppAction.hpp:38
Thyra::VectorBase
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition:
Tempus_Integrator.hpp:28
Tempus::StepperNewmarkImplicitDFormModifierXBase::X_BEFORE_SOLVE
Modify before the implicit solve.
Definition:
Tempus_StepperNewmarkImplicitDFormModifierXBase.hpp:100
Tempus::StepperNewmarkImplicitDFormAppAction
Application Action for StepperNewmarkImplicitDForm.
Definition:
Tempus_StepperNewmarkImplicitDFormAppAction.hpp:35
Tempus_StepperNewmarkImplicitDFormAppAction.hpp
Teuchos::RCP
Tempus::StepperNewmarkImplicitDFormModifierXBase::execute
void execute(Teuchos::RCP< SolutionHistory< Scalar > > sh, Teuchos::RCP< StepperNewmarkImplicitDForm< Scalar > > stepper, const typename StepperNewmarkImplicitDFormAppAction< Scalar >::ACTION_LOCATION actLoc)
Execute application action for NewmarkImplicitDForm Stepper.
Definition:
Tempus_StepperNewmarkImplicitDFormModifierXBase.hpp:54
Tempus::StepperNewmarkImplicitDFormModifierXBase< double >::MODIFIER_TYPE
MODIFIER_TYPE
Indicates the location of application action (see algorithm).
Definition:
Tempus_StepperNewmarkImplicitDFormModifierXBase.hpp:98
Generated on Thu Dec 26 2024 09:25:16 for Tempus by
1.8.5