PRISMS-PF Manual v3.0-pre
All Classes Functions Variables Enumerations Pages
type_enums.h
1// SPDX-FileCopyrightText: © 2025 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#ifndef type_enums_h
5#define type_enums_h
6
7#include <prismspf/config.h>
8
9#include <cstdint>
10#include <string>
11
12PRISMS_PF_BEGIN_NAMESPACE
13
17enum fieldType : std::uint8_t
18{
19 UNDEFINED_FIELD,
20 SCALAR,
21 VECTOR
22};
23
27enum PDEType : std::uint8_t
28{
29 UNDEFINED_PDE,
30 EXPLICIT_TIME_DEPENDENT,
31 IMPLICIT_TIME_DEPENDENT,
32 TIME_INDEPENDENT,
33 AUXILIARY,
34 CONSTANT
35};
36
40enum solveType : std::uint8_t
41{
42 EXPLICIT_RHS,
43 NONEXPLICIT_RHS,
44 NONEXPLICIT_LHS,
45 POSTPROCESS
46};
47
51enum elasticityModel : std::uint8_t
52{
53 ISOTROPIC,
54 TRANSVERSE,
55 ORTHOTROPIC,
56 ANISOTROPIC
57};
58
70enum fieldSolveType : std::uint8_t
71{
72 UNDEFINED_SOLVE,
73 EXPLICIT_CONSTANT,
74 EXPLICIT,
75 NONEXPLICIT_LINEAR,
76 NONEXPLICIT_SELF_NONLINEAR,
77 NONEXPLICIT_AUXILIARY,
78 NONEXPLICIT_CO_NONLINEAR,
79 EXPLICIT_POSTPROCESS,
80};
81
85enum dependencyType : std::uint8_t
86{
87 NORMAL,
88 CHANGE,
89 OLD_1,
90 OLD_2,
91 OLD_3,
92 OLD_4
93};
94
98enum solverToleranceType : std::uint8_t
99{
100 ABSOLUTE_RESIDUAL,
101 RELATIVE_RESIDUAL_CHANGE
102};
103
107enum preconditionerType : std::uint8_t
108{
109 NONE,
110 GMG
111};
112
116inline std::string
117to_string(fieldType type)
118
119{
120 switch (type)
121 {
122 case fieldType::UNDEFINED_FIELD:
123 return "UNDEFINED_FIELD";
124 case fieldType::SCALAR:
125 return "SCALAR_FIELD";
126 case fieldType::VECTOR:
127 return "VECTOR_FIELD";
128 default:
129 return "UNKNOWN";
130 }
131}
132
136inline std::string
137to_string(PDEType type)
138{
139 switch (type)
140 {
141 case PDEType::UNDEFINED_PDE:
142 return "UNDEFINED_PDE";
143 case PDEType::EXPLICIT_TIME_DEPENDENT:
144 return "EXPLICIT_TIME_DEPENDENT";
145 case PDEType::IMPLICIT_TIME_DEPENDENT:
146 return "IMPLICIT_TIME_DEPENDENT";
147 case PDEType::TIME_INDEPENDENT:
148 return "TIME_INDEPENDENT";
149 case PDEType::AUXILIARY:
150 return "AUXILIARY";
151 case PDEType::CONSTANT:
152 return "CONSTANT";
153 default:
154 return "UNKNOWN";
155 }
156}
157
161inline std::string
162to_string(solveType type)
163{
164 switch (type)
165 {
166 case solveType::EXPLICIT_RHS:
167 return "EXPLICIT_RHS";
168 case solveType::NONEXPLICIT_RHS:
169 return "NONEXPLICIT_RHS";
170 case solveType::NONEXPLICIT_LHS:
171 return "NONEXPLICIT_LHS";
172 case solveType::POSTPROCESS:
173 return "POSTPROCESS";
174 default:
175 return "UNKNOWN";
176 }
177}
178
182inline std::string
183to_string(elasticityModel type)
184{
185 switch (type)
186 {
187 case elasticityModel::ISOTROPIC:
188 return "ISOTROPIC";
189 case elasticityModel::TRANSVERSE:
190 return "TRANSVERSE";
191 case elasticityModel::ORTHOTROPIC:
192 return "ORTHOTROPIC";
193 case elasticityModel::ANISOTROPIC:
194 return "ANISOTROPIC";
195 default:
196 return "UNKNOWN";
197 }
198}
199
203inline std::string
204to_string(fieldSolveType type)
205{
206 switch (type)
207 {
208 case fieldSolveType::UNDEFINED_SOLVE:
209 return "UNDEFINED_SOLVE";
210 case fieldSolveType::EXPLICIT:
211 return "EXPLICIT";
212 case fieldSolveType::NONEXPLICIT_LINEAR:
213 return "NONEXPLICIT_LINEAR";
214 case fieldSolveType::NONEXPLICIT_SELF_NONLINEAR:
215 return "NONEXPLICIT_SELF_NONLINEAR";
216 case fieldSolveType::NONEXPLICIT_AUXILIARY:
217 return "NONEXPLICIT_AUXILIARY";
218 case fieldSolveType::NONEXPLICIT_CO_NONLINEAR:
219 return "NONEXPLICIT_CO_NONLINEAR";
220 case fieldSolveType::EXPLICIT_POSTPROCESS:
221 return "EXPLICIT_POSTPROCESS";
222 case fieldSolveType::EXPLICIT_CONSTANT:
223 return "EXPLICIT_CONSTANT";
224 default:
225 return "UNKNOWN";
226 }
227}
228
232inline std::string
233to_string(dependencyType type)
234{
235 switch (type)
236 {
237 case dependencyType::NORMAL:
238 return "NORMAL";
239 case dependencyType::CHANGE:
240 return "CHANGE";
241 case dependencyType::OLD_1:
242 return "OLD_1";
243 case dependencyType::OLD_2:
244 return "OLD_2";
245 case dependencyType::OLD_3:
246 return "OLD_3";
247 case dependencyType::OLD_4:
248 return "OLD_4";
249 default:
250 return "UNKNOWN";
251 }
252}
253
257inline std::string
258to_string(solverToleranceType type)
259{
260 switch (type)
261 {
262 case solverToleranceType::ABSOLUTE_RESIDUAL:
263 return "ABSOLUTE_RESIDUAL";
264 case solverToleranceType::RELATIVE_RESIDUAL_CHANGE:
265 return "RELATIVE_RESIDUAL_CHANGE";
266 default:
267 return "UNKNOWN";
268 }
269}
270
274inline std::string
275to_string(preconditionerType type)
276{
277 switch (type)
278 {
279 case preconditionerType::NONE:
280 return "NONE";
281 case preconditionerType::GMG:
282 return "GMG";
283 default:
284 return "UNKNOWN";
285 }
286}
287
288PRISMS_PF_END_NAMESPACE
289
290#endif