ROL
src
function
dynamic
ROL_TimeStamp.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ************************************************************************
3
//
4
// Rapid Optimization Library (ROL) Package
5
// Copyright (2014) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact lead developers:
38
// Drew Kouri (dpkouri@sandia.gov) and
39
// Denis Ridzal (dridzal@sandia.gov)
40
//
41
// ************************************************************************
42
// @HEADER
43
44
45
#pragma once
46
#ifndef ROL_TIMESTAMP_HPP
47
#define ROL_TIMESTAMP_HPP
48
49
50
#include <vector>
51
52
#include "ROL_Ptr.hpp"
53
59
namespace
ROL
{
60
61
62
template
<
typename
>
struct
TimeStamp;
63
64
// Alias for pointer vector of TimeStamp objects
65
template
<
typename
Real>
66
using
TimeStampsPtr
= Ptr<std::vector<TimeStamp<Real>>>;
67
68
69
template
<
typename
Real>
70
struct
TimeStamp
{
71
72
using
size_type
=
typename
std::vector<Real>::size_type;
73
74
size_type
k
;
// Time-step number
75
std::vector<Real>
t
;
// Time points for this time step
76
77
TimeStamp
&
operator=
(
const
TimeStamp
& ts ) {
78
k
= ts.
k
;
t
= ts.
t
;
79
return
*
this
;
80
}
81
85
static
TimeStampsPtr<Real>
make_uniform
( Real t_initial,
86
Real t_final,
87
const
std::vector<Real>& t_ref,
88
size_type
num_steps ) {
89
90
auto
timeStamp = ROL::makePtr<std::vector<ROL::TimeStamp<Real>>>(num_steps);
91
92
Real dt = (t_final-t_initial)/num_steps;
// size of each time step
93
size_type
nt = t_ref.size();
// number of time points per step
94
95
for
(
size_type
k
=0;
k
<num_steps; ++
k
) {
96
(*timeStamp)[
k
].t.resize(nt);
97
for
(
size_type
l=0; l<nt; ++l ) (*timeStamp)[
k
].t[l] = dt*(
k
+t_ref[l]);
98
(*timeStamp)[
k
].k =
k
;
99
}
100
return
timeStamp;
101
}
102
};
103
104
}
// namespace ROL
105
106
107
#endif
// ROL_TIMESTAMP_HPP
108
ROL
Definition
ROL_ElementwiseVector.hpp:61
ROL::TimeStampsPtr
Ptr< std::vector< TimeStamp< Real > > > TimeStampsPtr
Definition
ROL_TimeStamp.hpp:66
ROL::TimeStamp
Contains local time step information.
Definition
ROL_TimeStamp.hpp:70
ROL::TimeStamp::size_type
typename std::vector< Real >::size_type size_type
Definition
ROL_TimeStamp.hpp:72
ROL::TimeStamp::operator=
TimeStamp & operator=(const TimeStamp &ts)
Definition
ROL_TimeStamp.hpp:77
ROL::TimeStamp::k
size_type k
Definition
ROL_TimeStamp.hpp:74
ROL::TimeStamp::t
std::vector< Real > t
Definition
ROL_TimeStamp.hpp:75
ROL::TimeStamp::make_uniform
static TimeStampsPtr< Real > make_uniform(Real t_initial, Real t_final, const std::vector< Real > &t_ref, size_type num_steps)
Create a vector of uniform TimeStamp objects for the interval [t_initial,t_final] where each step has...
Definition
ROL_TimeStamp.hpp:85
Generated by
1.10.0