ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
function
dynamic
ROL_SerialFunction.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Rapid Optimization Library (ROL) Package
4
//
5
// Copyright 2014 NTESS and the ROL contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#pragma once
11
#ifndef ROL_SERIALFUNCION_HPP
12
#define ROL_SERIALFUNCION_HPP
13
14
#include "
ROL_PartitionedVector.hpp
"
15
#include "
ROL_VectorWorkspace.hpp
"
16
#include "
ROL_TimeStamp.hpp
"
17
22
23
namespace
ROL
{
24
25
template
<
typename
Real>
26
class
SerialFunction
{
27
public
:
28
using
size_type
=
typename
std::vector<Real>::size_type;
29
30
private
:
31
using
PV
=
PartitionedVector<Real>
;
32
33
Ptr<Vector<Real>>
u_initial_
;
// Initial condition
34
Ptr<Vector<Real>>
u_zero_
;
// Zero state vector
35
TimeStampsPtr<Real>
timeStampsPtr_
;
// Set of all time stamps
36
mutable
VectorWorkspace<Real>
workspace_
;
// Memory bank for vector clones
37
size_type
Nt_
;
// Number of type steps
38
bool
skipInitialCond_
=
false
;
39
40
protected
:
41
42
const
TimeStamp<Real>
&
ts
(
size_type
i )
const
{
return
timeStampsPtr_
->at(i); }
43
Ptr<Vector<Real>>
clone
(
const
Vector<Real>
& x ) {
return
workspace_
.clone(x); }
44
45
public
:
46
47
SerialFunction
(
const
Vector<Real>
& u_initial,
48
const
TimeStampsPtr<Real>
& timeStampsPtr ) :
49
u_initial_
(u_initial.
clone
()),
50
u_zero_
(u_initial.
clone
()),
51
timeStampsPtr_
(timeStampsPtr),
52
Nt_
(timeStampsPtr->size()) {
53
u_initial_
->set(u_initial);
54
u_zero_
->zero();
55
}
56
57
size_type
numTimeSteps
()
const
{
return
Nt_
; }
58
59
const
Vector<Real>
&
getInitialCondition
()
const
{
return
*
u_initial_
; }
60
void
setInitialCondition
(
const
Vector<Real>
& u_initial ) {
u_initial_
->set(u_initial); }
61
62
const
Vector<Real>
&
getZeroState
()
const
{
return
*
u_zero_
; }
63
64
bool
getSkipInitialCondition
()
const
{
return
skipInitialCond_
; }
65
void
setSkipInitialCondition
(
bool
skip ) {
skipInitialCond_
= skip; }
66
67
// Get and set methods for all TimeStamps
68
TimeStampsPtr<Real>
getTimeStampsPtr
()
const
{
return
timeStampsPtr_
; }
69
70
void
setTimeStampsPtr
(
const
TimeStampsPtr<Real>
& timeStampsPtr ) {
71
timeStampsPtr_
= timeStampsPtr;
72
Nt_
=
timeStampsPtr_
->size();
73
}
74
75
// Get and set methods for individual TimeStamp objects
76
TimeStamp<Real>
&
getTimeStamp
(
size_type
i ) {
return
timeStampsPtr_
->at(i); }
77
const
TimeStamp<Real>
&
getTimeStamp
(
size_type
i )
const
{
return
timeStampsPtr_
->at(i); }
78
79
void
setTimeStamp
(
size_type
i,
const
TimeStamp<Real>
& timeStamp ) {
80
timeStampsPtr_
->at(i) = timeStamp;
81
}
82
83
84
};
// class SerialFunction
85
86
87
}
// namespace ROL
88
89
#endif
// ROL_SERIALFUNCION_HPP
ROL_PartitionedVector.hpp
ROL_TimeStamp.hpp
ROL_VectorWorkspace.hpp
ROL::PartitionedVector
Defines the linear algebra of vector space on a generic partitioned vector.
Definition
ROL_PartitionedVector.hpp:26
ROL::SerialFunction::setInitialCondition
void setInitialCondition(const Vector< Real > &u_initial)
Definition
ROL_SerialFunction.hpp:60
ROL::SerialFunction::numTimeSteps
size_type numTimeSteps() const
Definition
ROL_SerialFunction.hpp:57
ROL::SerialFunction::workspace_
VectorWorkspace< Real > workspace_
Definition
ROL_SerialFunction.hpp:36
ROL::SerialFunction::u_initial_
Ptr< Vector< Real > > u_initial_
Definition
ROL_SerialFunction.hpp:33
ROL::SerialFunction::getInitialCondition
const Vector< Real > & getInitialCondition() const
Definition
ROL_SerialFunction.hpp:59
ROL::SerialFunction::getZeroState
const Vector< Real > & getZeroState() const
Definition
ROL_SerialFunction.hpp:62
ROL::SerialFunction::setSkipInitialCondition
void setSkipInitialCondition(bool skip)
Definition
ROL_SerialFunction.hpp:65
ROL::SerialFunction::getTimeStampsPtr
TimeStampsPtr< Real > getTimeStampsPtr() const
Definition
ROL_SerialFunction.hpp:68
ROL::SerialFunction::SerialFunction
SerialFunction(const Vector< Real > &u_initial, const TimeStampsPtr< Real > &timeStampsPtr)
Definition
ROL_SerialFunction.hpp:47
ROL::SerialFunction::setTimeStamp
void setTimeStamp(size_type i, const TimeStamp< Real > &timeStamp)
Definition
ROL_SerialFunction.hpp:79
ROL::SerialFunction::getSkipInitialCondition
bool getSkipInitialCondition() const
Definition
ROL_SerialFunction.hpp:64
ROL::SerialFunction::getTimeStamp
TimeStamp< Real > & getTimeStamp(size_type i)
Definition
ROL_SerialFunction.hpp:76
ROL::SerialFunction::clone
Ptr< Vector< Real > > clone(const Vector< Real > &x)
Definition
ROL_SerialFunction.hpp:43
ROL::SerialFunction::setTimeStampsPtr
void setTimeStampsPtr(const TimeStampsPtr< Real > &timeStampsPtr)
Definition
ROL_SerialFunction.hpp:70
ROL::SerialFunction::u_zero_
Ptr< Vector< Real > > u_zero_
Definition
ROL_SerialFunction.hpp:34
ROL::SerialFunction::getTimeStamp
const TimeStamp< Real > & getTimeStamp(size_type i) const
Definition
ROL_SerialFunction.hpp:77
ROL::SerialFunction::PV
PartitionedVector< Real > PV
Definition
ROL_SerialFunction.hpp:31
ROL::SerialFunction::skipInitialCond_
bool skipInitialCond_
Definition
ROL_SerialFunction.hpp:38
ROL::SerialFunction::size_type
typename std::vector< Real >::size_type size_type
Definition
ROL_SerialFunction.hpp:28
ROL::SerialFunction::ts
const TimeStamp< Real > & ts(size_type i) const
Definition
ROL_SerialFunction.hpp:42
ROL::SerialFunction::timeStampsPtr_
TimeStampsPtr< Real > timeStampsPtr_
Definition
ROL_SerialFunction.hpp:35
ROL::SerialFunction::Nt_
size_type Nt_
Definition
ROL_SerialFunction.hpp:37
ROL::Vector
Defines the linear algebra or vector space interface.
Definition
ROL_Vector.hpp:51
ROL::details::VectorWorkspace
Definition
ROL_VectorWorkspace.hpp:64
ROL
Definition
ROL_ElementwiseVector.hpp:27
ROL::TimeStampsPtr
Ptr< std::vector< TimeStamp< Real > > > TimeStampsPtr
Definition
ROL_TimeStamp.hpp:31
ROL::TimeStamp
Contains local time step information.
Definition
ROL_TimeStamp.hpp:35
Generated by
1.17.0