Stokhos Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Stokhos_StaticStandardStorage.hpp
Go to the documentation of this file.
1
// $Id$
2
// $Source$
3
// @HEADER
4
// ***********************************************************************
5
//
6
// Stokhos Package
7
// Copyright (2009) Sandia Corporation
8
//
9
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
10
// license for use of this work by or on behalf of the U.S. Government.
11
//
12
// Redistribution and use in source and binary forms, with or without
13
// modification, are permitted provided that the following conditions are
14
// met:
15
//
16
// 1. Redistributions of source code must retain the above copyright
17
// notice, this list of conditions and the following disclaimer.
18
//
19
// 2. Redistributions in binary form must reproduce the above copyright
20
// notice, this list of conditions and the following disclaimer in the
21
// documentation and/or other materials provided with the distribution.
22
//
23
// 3. Neither the name of the Corporation nor the names of the
24
// contributors may be used to endorse or promote products derived from
25
// this software without specific prior written permission.
26
//
27
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
28
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
31
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
34
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
35
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
//
39
// Questions? Contact Eric T. Phipps (etphipp@sandia.gov).
40
//
41
// ***********************************************************************
42
// @HEADER
43
44
#ifndef STOKHOS_STATIC_STANDARD_STORAGE_HPP
45
#define STOKHOS_STATIC_STANDARD_STORAGE_HPP
46
47
#include "Sacado_StaticArrayTraits.hpp"
48
#include <algorithm>
49
50
namespace
Stokhos
{
51
53
template
<
typename
ordinal_type,
typename
value_type,
int
Num>
54
class
StaticStandardStorage
{
55
public
:
56
57
typedef
value_type
&
reference
;
58
typedef
const
value_type
&
const_reference
;
59
typedef
value_type
*
pointer
;
60
typedef
const
value_type
*
const_pointer
;
61
typedef
Sacado::ss_array<value_type>
ss
;
62
64
template
<
typename
ord_t,
typename
val_t>
65
struct
apply
{
66
typedef
StaticStandardStorage<ord_t,val_t,Num>
type
;
67
};
68
70
StaticStandardStorage
(
const
ordinal_type
& sz_,
71
const
value_type
& x =
value_type
(0.0)) :
sz
(sz_) {
72
std::fill(
coeff_
,
coeff_
+
sz
, x);
73
}
74
76
StaticStandardStorage
(
const
StaticStandardStorage
& s) :
sz
(s.
sz
) {
77
ss::copy(s.
coeff_
,
coeff_
,
sz
);
78
}
79
81
~StaticStandardStorage
() {}
82
84
StaticStandardStorage
&
operator=
(
const
StaticStandardStorage
& s) {
85
sz
= s.
sz
;
86
ss::copy(s.
coeff_
,
coeff_
,
sz
);
87
return
*
this
;
88
}
89
91
void
init
(
const_reference
v) {
92
std::fill(
coeff_
,
coeff_
+
sz
, v);
93
}
94
96
void
init
(
const_pointer
v,
const
ordinal_type
& sz_ = 0) {
97
if
(sz_ == 0)
98
ss::copy(v,
coeff_
,
sz
);
99
else
100
ss::copy(v,
coeff_
, sz_);
101
}
102
104
void
load
(
pointer
v) {
105
ss::copy(
coeff_
, v,
sz
);
106
}
107
109
void
resize
(
const
ordinal_type
& sz_) {
110
if
(sz_ >
sz
)
111
std::fill(
coeff_
+
sz
,
coeff_
+sz_,
value_type
(0.0));
112
sz
= sz_;
113
}
114
116
ordinal_type
size
()
const
{
return
sz
; }
117
119
const_reference
operator[]
(
const
ordinal_type
& i)
const
{
120
return
coeff_
[i];
121
}
122
124
reference
operator[]
(
const
ordinal_type
& i) {
return
coeff_
[i]; }
125
127
const_pointer
coeff
()
const
{
return
coeff_
; }
128
130
pointer
coeff
() {
return
coeff_
; }
131
132
private
:
133
135
value_type
coeff_
[Num];
136
138
ordinal_type
sz
;
139
140
};
141
142
}
143
144
#endif
// STOKHOS_STANDARD_STORAGE_HPP
Stokhos::value_type
Stokhos::StaticStandardStorage::reference
value_type & reference
Definition
Stokhos_StaticStandardStorage.hpp:57
Stokhos::StaticStandardStorage::ss
Sacado::ss_array< value_type > ss
Definition
Stokhos_StaticStandardStorage.hpp:61
Stokhos::StaticStandardStorage::load
void load(pointer v)
Load values to an array of values.
Definition
Stokhos_StaticStandardStorage.hpp:104
Stokhos::StaticStandardStorage::StaticStandardStorage
StaticStandardStorage(const StaticStandardStorage &s)
Copy constructor.
Definition
Stokhos_StaticStandardStorage.hpp:76
Stokhos::StaticStandardStorage< ord_t, val_t, Num >::coeff_
val_t coeff_[Num]
Definition
Stokhos_StaticStandardStorage.hpp:135
Stokhos::StaticStandardStorage< ord_t, val_t, Num >::sz
ord_t sz
Definition
Stokhos_StaticStandardStorage.hpp:138
Stokhos::StaticStandardStorage::~StaticStandardStorage
~StaticStandardStorage()
Destructor.
Definition
Stokhos_StaticStandardStorage.hpp:81
Stokhos::StaticStandardStorage::coeff
pointer coeff()
Get coefficients.
Definition
Stokhos_StaticStandardStorage.hpp:130
Stokhos::StaticStandardStorage::operator[]
const_reference operator[](const ordinal_type &i) const
Coefficient access (avoid if possible).
Definition
Stokhos_StaticStandardStorage.hpp:119
Stokhos::StaticStandardStorage::operator=
StaticStandardStorage & operator=(const StaticStandardStorage &s)
Assignment operator.
Definition
Stokhos_StaticStandardStorage.hpp:84
Stokhos::StaticStandardStorage::const_pointer
const value_type * const_pointer
Definition
Stokhos_StaticStandardStorage.hpp:60
Stokhos::StaticStandardStorage::init
void init(const_reference v)
Initialize values to a constant value.
Definition
Stokhos_StaticStandardStorage.hpp:91
Stokhos::StaticStandardStorage::pointer
value_type * pointer
Definition
Stokhos_StaticStandardStorage.hpp:59
Stokhos::StaticStandardStorage::StaticStandardStorage
StaticStandardStorage(const ordinal_type &sz_, const value_type &x=value_type(0.0))
Constructor.
Definition
Stokhos_StaticStandardStorage.hpp:70
Stokhos::StaticStandardStorage::size
ordinal_type size() const
Return size.
Definition
Stokhos_StaticStandardStorage.hpp:116
Stokhos::StaticStandardStorage::init
void init(const_pointer v, const ordinal_type &sz_=0)
Initialize values to an array of values.
Definition
Stokhos_StaticStandardStorage.hpp:96
Stokhos::StaticStandardStorage::const_reference
const value_type & const_reference
Definition
Stokhos_StaticStandardStorage.hpp:58
Stokhos::StaticStandardStorage::resize
void resize(const ordinal_type &sz_)
Resize to new size (values are preserved).
Definition
Stokhos_StaticStandardStorage.hpp:109
Stokhos::StaticStandardStorage::coeff
const_pointer coeff() const
Get coefficients.
Definition
Stokhos_StaticStandardStorage.hpp:127
Stokhos
Top-level namespace for Stokhos classes and functions.
Definition
Stokhos_AbstractPreconditionerFactory.hpp:48
Stokhos::StaticStandardStorage::apply
Turn StaticStandardStorage into a meta-function class usable with mpl::apply.
Definition
Stokhos_StaticStandardStorage.hpp:65
Stokhos::StaticStandardStorage::apply::type
StaticStandardStorage< ord_t, val_t, Num > type
Definition
Stokhos_StaticStandardStorage.hpp:66
Generated by
1.17.0