Panzer
Version of the Day
Loading...
Searching...
No Matches
disc-fe
src
Panzer_TypeAssocMap.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Panzer: A partial differential equation assembly
5
// engine for strongly coupled complex multiphysics systems
6
// Copyright (2011) Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Roger P. Pawlowski (rppawlo@sandia.gov) and
39
// Eric C. Cyr (eccyr@sandia.gov)
40
// ***********************************************************************
41
// @HEADER
42
43
#ifndef __Panzer_TypeAssocMap_hpp__
44
#define __Panzer_TypeAssocMap_hpp__
45
46
#include "Sacado_mpl_for_each.hpp"
47
48
namespace
panzer
{
49
53
template
<
typename
TypesVector,
typename
ValueType>
54
class
TypeAssocMap
{
55
public
:
56
typedef
TypesVector
types_vector
;
57
58
TypeAssocMap
()
59
{
60
const
int
sz = Sacado::mpl::size<TypesVector>::value;
61
mapValues_
.resize(sz);
62
}
63
65
template
<
typename
T>
66
void
set
(ValueType v)
67
{
68
const
int
idx = Sacado::mpl::find<TypesVector,T>::value;
69
mapValues_
[idx] = v;
70
}
71
73
template
<
typename
T>
74
ValueType
get
()
const
75
{
76
const
int
idx = Sacado::mpl::find<TypesVector,T>::value;
77
return
mapValues_
[idx];
78
}
79
80
template
<
typename
BuilderOpT>
81
void
buildObjects
(
const
BuilderOpT & builder)
82
{ Sacado::mpl::for_each_no_kokkos<TypesVector>(
BuildObjects<BuilderOpT>
(
mapValues_
,builder)); }
83
84
public
:
85
87
template
<
typename
BuilderOpT>
88
struct
BuildObjects
{
89
std::vector<ValueType> &
mv_
;
90
const
BuilderOpT &
builder_
;
91
BuildObjects
(std::vector<ValueType> & mv,
const
BuilderOpT& builder) :
mv_
(mv),
builder_
(builder) {}
92
93
template
<
typename
T>
void
operator()
(T)
const
{
94
const
int
idx = Sacado::mpl::find<TypesVector,T>::value;
95
mv_
[idx] =
builder_
.template build<T>();
96
}
97
};
98
99
std::vector<ValueType>
mapValues_
;
100
};
101
102
}
103
104
#endif
panzer::TypeAssocMap
Definition
Panzer_TypeAssocMap.hpp:54
panzer::TypeAssocMap::mapValues_
std::vector< ValueType > mapValues_
Definition
Panzer_TypeAssocMap.hpp:99
panzer::TypeAssocMap::types_vector
TypesVector types_vector
Definition
Panzer_TypeAssocMap.hpp:56
panzer::TypeAssocMap::TypeAssocMap
TypeAssocMap()
Definition
Panzer_TypeAssocMap.hpp:58
panzer::TypeAssocMap::get
ValueType get() const
Access routine.
Definition
Panzer_TypeAssocMap.hpp:74
panzer::TypeAssocMap::set
void set(ValueType v)
Modify routine.
Definition
Panzer_TypeAssocMap.hpp:66
panzer::TypeAssocMap::buildObjects
void buildObjects(const BuilderOpT &builder)
Definition
Panzer_TypeAssocMap.hpp:81
panzer
Computes .
Definition
Panzer_BasisValues_Evaluator_decl.hpp:54
panzer::TypeAssocMap::BuildObjects
This struct helps will build the values stored in the map.
Definition
Panzer_TypeAssocMap.hpp:88
panzer::TypeAssocMap::BuildObjects::BuildObjects
BuildObjects(std::vector< ValueType > &mv, const BuilderOpT &builder)
Definition
Panzer_TypeAssocMap.hpp:91
panzer::TypeAssocMap::BuildObjects::operator()
void operator()(T) const
Definition
Panzer_TypeAssocMap.hpp:93
panzer::TypeAssocMap::BuildObjects::builder_
const BuilderOpT & builder_
Definition
Panzer_TypeAssocMap.hpp:90
panzer::TypeAssocMap::BuildObjects::mv_
std::vector< ValueType > & mv_
Definition
Panzer_TypeAssocMap.hpp:89
Generated by
1.10.0