Panzer
Version of the Day
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
disc-fe
src
Panzer_ExplicitTemplateInstantiation.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_EXPLICIT_TEMPLATE_INSTANTIATION_HPP
44
#define PANZER_EXPLICIT_TEMPLATE_INSTANTIATION_HPP
45
46
#include "
Panzer_Traits.hpp
"
47
48
// ONE template argument
49
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_ONE_T(name) \
50
template class name<panzer::Traits::Residual>;
51
52
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_ONE_T(name) \
53
template class name<panzer::Traits::Tangent>;
54
55
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_ONE_T(name) \
56
template class name<panzer::Traits::Jacobian>;
57
58
#ifdef Panzer_BUILD_HESSIAN_SUPPORT
59
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_ONE_T(name) \
60
template class name<panzer::Traits::Hessian>;
61
#else
62
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_ONE_T(name)
63
#endif
64
65
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_ONE_T(name) \
66
PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_ONE_T(name) \
67
PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_ONE_T(name) \
68
PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_ONE_T(name) \
69
PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_ONE_T(name)
70
71
// TWO template arguments
72
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_TWO_T(name) \
73
template class name<panzer::Traits::Residual, panzer::Traits>;
74
75
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_TWO_T(name) \
76
template class name<panzer::Traits::Tangent, panzer::Traits>;
77
78
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_TWO_T(name) \
79
template class name<panzer::Traits::Jacobian, panzer::Traits>;
80
81
#ifdef Panzer_BUILD_HESSIAN_SUPPORT
82
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_TWO_T(name) \
83
template class name<panzer::Traits::Hessian, panzer::Traits>;
84
#else
85
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_TWO_T(name)
86
#endif
87
88
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_TWO_T(name) \
89
PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_TWO_T(name) \
90
PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_TWO_T(name) \
91
PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_TWO_T(name) \
92
PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_TWO_T(name)
93
94
// THREE (one user defined) template arguments
95
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_THREE_T(name,ExtraT) \
96
template class name<panzer::Traits::Residual, panzer::Traits,ExtraT>;
97
98
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_THREE_T(name,ExtraT) \
99
template class name<panzer::Traits::Tangent, panzer::Traits,ExtraT>;
100
101
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_THREE_T(name,ExtraT) \
102
template class name<panzer::Traits::Jacobian, panzer::Traits,ExtraT>;
103
104
#ifdef Panzer_BUILD_HESSIAN_SUPPORT
105
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_THREE_T(name,ExtraT) \
106
template class name<panzer::Traits::Hessian, panzer::Traits,ExtraT>;
107
#else
108
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_THREE_T(name,ExtraT)
109
#endif
110
111
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_THREE_T(name,ExtraT) \
112
PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_THREE_T(name,ExtraT) \
113
PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_THREE_T(name,ExtraT) \
114
PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_THREE_T(name,ExtraT) \
115
PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_THREE_T(name,ExtraT)
116
117
// THREE (two user defined) template arguments
118
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_THREE_2U_T(name,FirstExtraT,SecondExtraT) \
119
template class name<panzer::Traits::Residual,FirstExtraT,SecondExtraT>;
120
121
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_THREE_2U_T(name,FirstExtraT,SecondExtraT) \
122
template class name<panzer::Traits::Tangent,FirstExtraT,SecondExtraT>;
123
124
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_THREE_2U_T(name,FirstExtraT,SecondExtraT) \
125
template class name<panzer::Traits::Jacobian,FirstExtraT,SecondExtraT>;
126
127
#ifdef Panzer_BUILD_HESSIAN_SUPPORT
128
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_THREE_2U_T(name,FirstExtraT,SecondExtraT) \
129
template class name<panzer::Traits::Hessian,FirstExtraT,SecondExtraT>;
130
#else
131
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_THREE_2U_T(name,FirstExtraT,SecondExtraT)
132
#endif
133
134
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_THREE_2U_T(name,FirstExtraT,SecondExtraT) \
135
PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_THREE_2U_T(name,FirstExtraT,SecondExtraT) \
136
PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_THREE_2U_T(name,FirstExtraT,SecondExtraT) \
137
PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_THREE_2U_T(name,FirstExtraT,SecondExtraT) \
138
PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_THREE_2U_T(name,FirstExtraT,SecondExtraT)
139
140
// FOUR (two user defined) template arguments
141
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_FOUR_T(name,FirstExtraT,SecondExtraT) \
142
template class name<panzer::Traits::Residual, panzer::Traits,FirstExtraT,SecondExtraT>;
143
144
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_FOUR_T(name,FirstExtraT,SecondExtraT) \
145
template class name<panzer::Traits::Tangent, panzer::Traits,FirstExtraT,SecondExtraT>;
146
147
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_FOUR_T(name,FirstExtraT,SecondExtraT) \
148
template class name<panzer::Traits::Jacobian, panzer::Traits,FirstExtraT,SecondExtraT>;
149
150
#ifdef Panzer_BUILD_HESSIAN_SUPPORT
151
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_FOUR_T(name,FirstExtraT,SecondExtraT) \
152
template class name<panzer::Traits::Hessian, panzer::Traits,FirstExtraT,SecondExtraT>;
153
#else
154
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_FOUR_T(name,FirstExtraT,SecondExtraT)
155
#endif
156
157
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_FOUR_T(name,FirstExtraT,SecondExtraT) \
158
PANZER_INSTANTIATE_TEMPLATE_CLASS_RESIDUAL_FOUR_T(name,FirstExtraT,SecondExtraT) \
159
PANZER_INSTANTIATE_TEMPLATE_CLASS_TANGENT_FOUR_T(name,FirstExtraT,SecondExtraT) \
160
PANZER_INSTANTIATE_TEMPLATE_CLASS_JACOBIAN_FOUR_T(name,FirstExtraT,SecondExtraT) \
161
PANZER_INSTANTIATE_TEMPLATE_CLASS_HESSIAN_FOUR_T(name,FirstExtraT,SecondExtraT)
162
163
#endif
Panzer_Traits.hpp
Generated by
1.8.5