libMesh
string_to_enum.C
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2019 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 // C++ includes
21 #include <algorithm>
22 #include <map>
23 
24 // Local includes
25 #include "libmesh/libmesh_common.h"
26 #include "libmesh/string_to_enum.h"
27 #include "libmesh/enum_to_string.h"
28 #include "libmesh/enum_convergence_flags.h"
29 #include "libmesh/enum_elem_quality.h"
30 #include "libmesh/enum_elem_type.h"
31 #include "libmesh/enum_eigen_solver_type.h"
32 #include "libmesh/enum_fe_family.h"
33 #include "libmesh/enum_inf_map_type.h"
34 #include "libmesh/enum_io_package.h"
35 #include "libmesh/enum_norm_type.h"
36 #include "libmesh/enum_order.h"
37 #include "libmesh/enum_parallel_type.h"
38 #include "libmesh/enum_point_locator_type.h"
39 #include "libmesh/enum_preconditioner_type.h"
40 #include "libmesh/enum_quadrature_type.h"
41 #include "libmesh/enum_solver_package.h"
42 #include "libmesh/enum_solver_type.h"
43 #include "libmesh/enum_subset_solve_mode.h"
44 #include "libmesh/enum_xdr_mode.h"
45 #include "libmesh/elem.h"
46 
47 namespace libMesh
48 {
49 
50 // ------------------------------------------------------------
51 // Anonymous namespace to hold local data & methods
52 namespace {
53 
54 
55 // Reverse a map
56 template <typename MapIter, class MapType>
57 inline
58 void build_reverse_map (MapIter it, MapIter end, MapType & reverse)
59 {
60  reverse.clear();
61 
62  for (; it != end; ++it)
63  {
64  // If the forward map is not invertible, we might already have
65  // found a preimage of it->second. Choose the "largest"
66  // preimage according to operator<; for std::string this will
67  // give us the longest, hopefully most specific name
68  // corresponding to an enum.
69  typename MapType::iterator preimage = reverse.find(it->second);
70  if (preimage == reverse.end())
71  reverse.insert (std::make_pair(it->second, it->first));
72  else if (preimage->second < it->first)
73  preimage->second = it->first;
74  }
75 }
76 
77 #define INSTANTIATE_ENUM_MAPS(ENUM_NAME,VAR_NAME) \
78  std::map<std::string, ENUM_NAME> VAR_NAME##_to_enum; \
79  \
80  std::map<ENUM_NAME, std::string> enum_to_##VAR_NAME; \
81  \
82  void init_##VAR_NAME##_to_enum (); \
83  \
84  /* Initialize the enum_to_elem_type on first call */ \
85  void init_enum_to_##VAR_NAME () \
86  { \
87  /* Build reverse map */ \
88  if (enum_to_##VAR_NAME .empty()) \
89  { \
90  /* Initialize elem_type_to_enum on first call */ \
91  init_##VAR_NAME##_to_enum(); \
92  \
93  build_reverse_map (VAR_NAME##_to_enum.begin(), \
94  VAR_NAME##_to_enum.end(), \
95  enum_to_##VAR_NAME); \
96  } \
97  }
98 
99 INSTANTIATE_ENUM_MAPS(ElemType, elem_type)
100 
101 //----------------------------------------------------
102 
103 // Initialize elem_type_to_enum on first call
104 void init_elem_type_to_enum ()
105 {
106  if (elem_type_to_enum.empty())
107  {
108  elem_type_to_enum["EDGE" ]=EDGE2;
109  elem_type_to_enum["EDGE2" ]=EDGE2;
110  elem_type_to_enum["EDGE3" ]=EDGE3;
111  elem_type_to_enum["EDGE4" ]=EDGE4;
112 
113  elem_type_to_enum["TRI" ]=TRI3;
114  elem_type_to_enum["TRI3" ]=TRI3;
115  elem_type_to_enum["TRISHELL3" ]=TRISHELL3;
116  elem_type_to_enum["TRI3SUBDIVISION"]=TRI3SUBDIVISION;
117  elem_type_to_enum["TRI6" ]=TRI6;
118 
119  elem_type_to_enum["QUAD" ]=QUAD4;
120  elem_type_to_enum["QUAD4" ]=QUAD4;
121  elem_type_to_enum["QUADSHELL4" ]=QUADSHELL4;
122  elem_type_to_enum["QUAD8" ]=QUAD8;
123  elem_type_to_enum["QUADSHELL8" ]=QUADSHELL8;
124  elem_type_to_enum["QUAD9" ]=QUAD9;
125 
126  elem_type_to_enum["TET" ]=TET4;
127  elem_type_to_enum["TET4" ]=TET4;
128  elem_type_to_enum["TET10" ]=TET10;
129 
130  elem_type_to_enum["HEX" ]=HEX8;
131  elem_type_to_enum["HEX8" ]=HEX8;
132  elem_type_to_enum["HEX20" ]=HEX20;
133  elem_type_to_enum["HEX27" ]=HEX27;
134 
135  elem_type_to_enum["PRISM" ]=PRISM6;
136  elem_type_to_enum["PRISM6" ]=PRISM6;
137  elem_type_to_enum["PRISM15" ]=PRISM15;
138  elem_type_to_enum["PRISM18" ]=PRISM18;
139 
140  elem_type_to_enum["PYRAMID" ]=PYRAMID5;
141  elem_type_to_enum["PYRAMID5" ]=PYRAMID5;
142  elem_type_to_enum["PYRAMID13" ]=PYRAMID13;
143  elem_type_to_enum["PYRAMID14" ]=PYRAMID14;
144 
145  elem_type_to_enum["INFEDGE" ]=INFEDGE2;
146  elem_type_to_enum["INFEDGE2" ]=INFEDGE2;
147 
148  elem_type_to_enum["INFQUAD" ]=INFQUAD4;
149  elem_type_to_enum["INFQUAD4" ]=INFQUAD4;
150  elem_type_to_enum["INFQUAD6" ]=INFQUAD6;
151 
152  elem_type_to_enum["INFHEX" ]=INFHEX8;
153  elem_type_to_enum["INFHEX8" ]=INFHEX8;
154  elem_type_to_enum["INFHEX16" ]=INFHEX16;
155  elem_type_to_enum["INFHEX18" ]=INFHEX18;
156 
157  elem_type_to_enum["INFPRISM" ]=INFPRISM6;
158  elem_type_to_enum["INFPRISM6" ]=INFPRISM6;
159  elem_type_to_enum["INFPRISM12" ]=INFPRISM12;
160 
161  elem_type_to_enum["NODE" ]=NODEELEM;
162  elem_type_to_enum["NODEELEM" ]=NODEELEM;
163 
164  elem_type_to_enum["INVALID_ELEM" ]=INVALID_ELEM;
165  }
166 }
167 
168 
169 INSTANTIATE_ENUM_MAPS(Order, order)
170 
171 // Initialize order_to_enum on first call
172 void init_order_to_enum ()
173 {
174  if (order_to_enum.empty())
175  {
176  order_to_enum["CONSTANT" ]=CONSTANT;
177  order_to_enum["FIRST" ]=FIRST;
178  order_to_enum["SECOND" ]=SECOND;
179  order_to_enum["THIRD" ]=THIRD;
180  order_to_enum["FOURTH" ]=FOURTH;
181  order_to_enum["FIFTH" ]=FIFTH;
182  order_to_enum["SIXTH" ]=SIXTH;
183  order_to_enum["SEVENTH" ]=SEVENTH;
184  order_to_enum["EIGHTH" ]=EIGHTH;
185  order_to_enum["NINTH" ]=NINTH;
186  order_to_enum["TENTH" ]=TENTH;
187 
188  order_to_enum["ELEVENTH" ]=ELEVENTH;
189  order_to_enum["TWELFTH" ]=TWELFTH;
190  order_to_enum["THIRTEENTH" ]=THIRTEENTH;
191  order_to_enum["FOURTEENTH" ]=FOURTEENTH;
192  order_to_enum["FIFTEENTH" ]=FIFTEENTH;
193  order_to_enum["SIXTEENTH" ]=SIXTEENTH;
194  order_to_enum["SEVENTEENTH" ]=SEVENTEENTH;
195  order_to_enum["EIGHTTEENTH" ]=EIGHTTEENTH;
196  order_to_enum["NINETEENTH" ]=NINETEENTH;
197  order_to_enum["TWENTIETH" ]=TWENTIETH;
198 
199  order_to_enum["TWENTYFIRST" ]=TWENTYFIRST;
200  order_to_enum["TWENTYSECOND" ]=TWENTYSECOND;
201  order_to_enum["TWENTYTHIRD" ]=TWENTYTHIRD;
202  order_to_enum["TWENTYFOURTH" ]=TWENTYFOURTH;
203  order_to_enum["TWENTYFIFTH" ]=TWENTYFIFTH;
204  order_to_enum["TWENTYSIXTH" ]=TWENTYSIXTH;
205  order_to_enum["TWENTYSEVENTH"]=TWENTYSEVENTH;
206  order_to_enum["TWENTYEIGHTH" ]=TWENTYEIGHTH;
207  order_to_enum["TWENTYNINTH" ]=TWENTYNINTH;
208  order_to_enum["THIRTIETH" ]=THIRTIETH;
209 
210  order_to_enum["THIRTYFIRST" ]=THIRTYFIRST;
211  order_to_enum["THIRTYSECOND" ]=THIRTYSECOND;
212  order_to_enum["THIRTYTHIRD" ]=THIRTYTHIRD;
213  order_to_enum["THIRTYFOURTH" ]=THIRTYFOURTH;
214  order_to_enum["THIRTYFIFTH" ]=THIRTYFIFTH;
215  order_to_enum["THIRTYSIXTH" ]=THIRTYSIXTH;
216  order_to_enum["THIRTYSEVENTH"]=THIRTYSEVENTH;
217  order_to_enum["THIRTYEIGHTH" ]=THIRTYEIGHTH;
218  order_to_enum["THIRTYNINTH" ]=THIRTYNINTH;
219  order_to_enum["FORTIETH" ]=FORTIETH;
220 
221  order_to_enum["FORTYFIRST" ]=FORTYFIRST;
222  order_to_enum["FORTYSECOND" ]=FORTYSECOND;
223  order_to_enum["FORTYTHIRD" ]=FORTYTHIRD;
224  }
225 }
226 
227 
228 
229 INSTANTIATE_ENUM_MAPS(FEFamily, fefamily)
230 
231 // Initialize fefamily_to_enum on first call
232 void init_fefamily_to_enum ()
233 {
234  if (fefamily_to_enum.empty())
235  {
236  fefamily_to_enum["LAGRANGE" ]=LAGRANGE;
237  fefamily_to_enum["LAGRANGE_VEC" ]=LAGRANGE_VEC;
238  fefamily_to_enum["L2_LAGRANGE" ]=L2_LAGRANGE;
239  fefamily_to_enum["HIERARCHIC" ]=HIERARCHIC;
240  fefamily_to_enum["L2_HIERARCHIC"]=L2_HIERARCHIC;
241  fefamily_to_enum["MONOMIAL" ]=MONOMIAL;
242  fefamily_to_enum["MONOMIAL_VEC" ]=MONOMIAL_VEC;
243  fefamily_to_enum["SCALAR" ]=SCALAR;
244  fefamily_to_enum["XYZ" ]=XYZ;
245  fefamily_to_enum["BERNSTEIN" ]=BERNSTEIN;
246  fefamily_to_enum["RATIONAL_BERNSTEIN"]=RATIONAL_BERNSTEIN;
247  fefamily_to_enum["SZABAB" ]=SZABAB;
248  fefamily_to_enum["INFINITE_MAP" ]=INFINITE_MAP;
249  fefamily_to_enum["JACOBI_20_00" ]=JACOBI_20_00;
250  fefamily_to_enum["JACOBI_30_00" ]=JACOBI_30_00;
251  fefamily_to_enum["LEGENDRE" ]=LEGENDRE;
252  fefamily_to_enum["CLOUGH" ]=CLOUGH;
253  fefamily_to_enum["HERMITE" ]=HERMITE;
254  fefamily_to_enum["SUBDIVISION" ]=SUBDIVISION;
255  fefamily_to_enum["NEDELEC_ONE" ]=NEDELEC_ONE;
256  }
257 
258 }
259 
260 
261 
262 INSTANTIATE_ENUM_MAPS(InfMapType, inf_map_type)
263 
264 // Initialize inf_map_type_to_enum on first call
265 void init_inf_map_type_to_enum ()
266 {
267  if (inf_map_type_to_enum.empty())
268  {
269  inf_map_type_to_enum["CARTESIAN" ]=CARTESIAN;
270  inf_map_type_to_enum["SPHERICAL" ]=SPHERICAL;
271  inf_map_type_to_enum["ELLIPSOIDAL"]=ELLIPSOIDAL;
272  }
273 }
274 
275 
276 INSTANTIATE_ENUM_MAPS(QuadratureType, quadrature_type)
277 
278 // Initialize quadrature_type_to_enum on first call
279 void init_quadrature_type_to_enum ()
280 {
281  if (quadrature_type_to_enum.empty())
282  {
283  quadrature_type_to_enum["QGAUSS" ]=QGAUSS;
284  quadrature_type_to_enum["QJACOBI_1_0"]=QJACOBI_1_0;
285  quadrature_type_to_enum["QJACOBI_2_0"]=QJACOBI_2_0;
286  quadrature_type_to_enum["QSIMPSON" ]=QSIMPSON;
287  quadrature_type_to_enum["QTRAP" ]=QTRAP;
288  quadrature_type_to_enum["QGRID" ]=QGRID;
289  quadrature_type_to_enum["QCLOUGH" ]=QCLOUGH;
290  quadrature_type_to_enum["QGAUSS_LOBATTO" ]=QGAUSS_LOBATTO;
291  quadrature_type_to_enum["QNODAL"]=QNODAL;
292  }
293 }
294 
295 
296 INSTANTIATE_ENUM_MAPS(PreconditionerType, preconditioner_type)
297 
298 // Initialize preconditioner_type_to_enum on first call
299 void init_preconditioner_type_to_enum ()
300 {
301  if (preconditioner_type_to_enum.empty())
302  {
303  preconditioner_type_to_enum["IDENTITY_PRECOND" ]=IDENTITY_PRECOND;
304  preconditioner_type_to_enum["JACOBI_PRECOND" ]=JACOBI_PRECOND;
305  preconditioner_type_to_enum["BLOCK_JACOBI_PRECOND" ]=BLOCK_JACOBI_PRECOND;
306  preconditioner_type_to_enum["SOR_PRECOND" ]=SOR_PRECOND;
307  preconditioner_type_to_enum["SSOR_PRECOND" ]=SSOR_PRECOND;
308  preconditioner_type_to_enum["EISENSTAT_PRECOND" ]=EISENSTAT_PRECOND;
309  preconditioner_type_to_enum["ASM_PRECOND" ]=ASM_PRECOND;
310  preconditioner_type_to_enum["CHOLESKY_PRECOND" ]=CHOLESKY_PRECOND;
311  preconditioner_type_to_enum["ICC_PRECOND" ]=ICC_PRECOND;
312  preconditioner_type_to_enum["ILU_PRECOND" ]=ILU_PRECOND;
313  preconditioner_type_to_enum["LU_PRECOND" ]=LU_PRECOND;
314  preconditioner_type_to_enum["USER_PRECOND" ]=USER_PRECOND;
315  preconditioner_type_to_enum["SHELL_PRECOND" ]=SHELL_PRECOND;
316  preconditioner_type_to_enum["AMG_PRECOND" ]=AMG_PRECOND;
317  preconditioner_type_to_enum["INVALID_PRECONDITIONER"]=INVALID_PRECONDITIONER;
318 
319  //shorter
320  preconditioner_type_to_enum["IDENTITY" ]=IDENTITY_PRECOND;
321  preconditioner_type_to_enum["JACOBI" ]=JACOBI_PRECOND;
322  preconditioner_type_to_enum["BLOCK_JACOBI"]=BLOCK_JACOBI_PRECOND;
323  preconditioner_type_to_enum["SOR" ]=SOR_PRECOND;
324  preconditioner_type_to_enum["SSOR" ]=SSOR_PRECOND;
325  preconditioner_type_to_enum["EISENSTAT" ]=EISENSTAT_PRECOND;
326  preconditioner_type_to_enum["ASM" ]=ASM_PRECOND;
327  preconditioner_type_to_enum["CHOLESKY" ]=CHOLESKY_PRECOND;
328  preconditioner_type_to_enum["ICC" ]=ICC_PRECOND;
329  preconditioner_type_to_enum["ILU" ]=ILU_PRECOND;
330  preconditioner_type_to_enum["LU" ]=LU_PRECOND;
331  preconditioner_type_to_enum["USER" ]=USER_PRECOND;
332  preconditioner_type_to_enum["SHELL" ]=SHELL_PRECOND;
333  preconditioner_type_to_enum["AMG" ]=AMG_PRECOND;
334  preconditioner_type_to_enum["INVALID" ]=INVALID_PRECONDITIONER;
335  }
336 }
337 
338 
339 #ifdef LIBMESH_ENABLE_AMR
340 
341 INSTANTIATE_ENUM_MAPS(Elem::RefinementState, refinementstate_type)
342 
343 // Initialize refinementstate_type_to_enum on first call
344 void init_refinementstate_type_to_enum ()
345 {
346  if (refinementstate_type_to_enum.empty())
347  {
348  refinementstate_type_to_enum["COARSEN" ]=Elem::COARSEN;
349  refinementstate_type_to_enum["DO_NOTHING" ]=Elem::DO_NOTHING;
350  refinementstate_type_to_enum["REFINE" ]=Elem::REFINE;
351  refinementstate_type_to_enum["JUST_REFINED" ]=Elem::JUST_REFINED;
352  refinementstate_type_to_enum["JUST_COARSENED" ]=Elem::JUST_COARSENED;
353  refinementstate_type_to_enum["INACTIVE" ]=Elem::INACTIVE;
354  refinementstate_type_to_enum["COARSEN_INACTIVE" ]=Elem::COARSEN_INACTIVE;
355  refinementstate_type_to_enum["INVALID_REFINEMENTSTATE"]=Elem::INVALID_REFINEMENTSTATE;
356  }
357 }
358 #endif // LIBMESH_ENABLE_AMR
359 
360 
361 INSTANTIATE_ENUM_MAPS(EigenSolverType, eigensolvertype)
362 
363 // Initialize eigensolvertype_to_enum on first call
364 void init_eigensolvertype_to_enum ()
365 {
366  if (eigensolvertype_to_enum.empty())
367  {
368  eigensolvertype_to_enum["POWER" ]=POWER;
369  eigensolvertype_to_enum["LAPACK" ]=LAPACK;
370  eigensolvertype_to_enum["SUBSPACE" ]=SUBSPACE;
371  eigensolvertype_to_enum["ARNOLDI" ]=ARNOLDI;
372  eigensolvertype_to_enum["LANCZOS" ]=LANCZOS;
373  eigensolvertype_to_enum["KRYLOVSCHUR" ]=KRYLOVSCHUR;
374  eigensolvertype_to_enum["INVALID_EIGENSOLVER"]=INVALID_EIGENSOLVER;
375  }
376 }
377 
378 
379 INSTANTIATE_ENUM_MAPS(SolverType, solvertype)
380 
381 // Initialize solvertype_to_enum on first call
382 void init_solvertype_to_enum ()
383 {
384  if (solvertype_to_enum.empty())
385  {
386  solvertype_to_enum["CG" ]=CG;
387  solvertype_to_enum["CGN" ]=CGN;
388  solvertype_to_enum["CGS" ]=CGS;
389  solvertype_to_enum["CR" ]=CR;
390  solvertype_to_enum["QMR" ]=QMR;
391  solvertype_to_enum["TCQMR" ]=TCQMR;
392  solvertype_to_enum["TFQMR" ]=TFQMR;
393  solvertype_to_enum["BICG" ]=BICG;
394  solvertype_to_enum["MINRES" ]=MINRES;
395  solvertype_to_enum["GMRES" ]=GMRES;
396  solvertype_to_enum["LSQR" ]=LSQR;
397  solvertype_to_enum["JACOBI" ]=JACOBI;
398  solvertype_to_enum["SOR_FORWARD" ]=SOR_FORWARD;
399  solvertype_to_enum["SOR_BACKWARD" ]=SOR_BACKWARD;
400  solvertype_to_enum["SSOR" ]=SSOR;
401  solvertype_to_enum["RICHARDSON" ]=RICHARDSON;
402  solvertype_to_enum["CHEBYSHEV" ]=CHEBYSHEV;
403  solvertype_to_enum["INVALID_SOLVER"]=INVALID_SOLVER;
404  }
405 }
406 
407 
408 INSTANTIATE_ENUM_MAPS(ElemQuality, elemquality)
409 
410 // Initialize elemquality_to_enum on first call
411 void init_elemquality_to_enum ()
412 {
413  if (elemquality_to_enum.empty())
414  {
415  elemquality_to_enum["ASPECT_RATIO" ]=ASPECT_RATIO;
416  elemquality_to_enum["SKEW" ]=SKEW;
417  elemquality_to_enum["SHEAR" ]=SHEAR;
418  elemquality_to_enum["SHAPE" ]=SHAPE;
419  elemquality_to_enum["MAX_ANGLE" ]=MAX_ANGLE;
420  elemquality_to_enum["MIN_ANGLE" ]=MIN_ANGLE;
421  elemquality_to_enum["CONDITION" ]=CONDITION;
422  elemquality_to_enum["DISTORTION" ]=DISTORTION;
423  elemquality_to_enum["TAPER" ]=TAPER;
424  elemquality_to_enum["WARP" ]=WARP;
425  elemquality_to_enum["STRETCH" ]=STRETCH;
426  elemquality_to_enum["DIAGONAL" ]=DIAGONAL;
427  elemquality_to_enum["ASPECT_RATIO_BETA" ]=ASPECT_RATIO_BETA;
428  elemquality_to_enum["ASPECT_RATIO_GAMMA" ]=ASPECT_RATIO_GAMMA;
429  elemquality_to_enum["SIZE" ]=SIZE;
430  elemquality_to_enum["JACOBIAN" ]=JACOBIAN;
431  }
432 }
433 
434 
435 INSTANTIATE_ENUM_MAPS(IOPackage, iopackage)
436 
437 // Initialize iopackage_to_enum on first call
438 void init_iopackage_to_enum ()
439 {
440  if (iopackage_to_enum.empty())
441  {
442  iopackage_to_enum["TECPLOT" ]=TECPLOT;
443  iopackage_to_enum["GMV" ]=GMV;
444  iopackage_to_enum["GMSH" ]=GMSH;
445  iopackage_to_enum["VTK" ]=VTK;
446  iopackage_to_enum["DIVA" ]=DIVA;
447  iopackage_to_enum["TETGEN" ]=TETGEN;
448  iopackage_to_enum["UCD" ]=UCD;
449  iopackage_to_enum["LIBMESH" ]=LIBMESH;
450  }
451 }
452 
453 
454 INSTANTIATE_ENUM_MAPS(FEMNormType, norm_type)
455 
456 // Initialize norm_type_to_enum on first call
457 void init_norm_type_to_enum ()
458 {
459  if (norm_type_to_enum.empty())
460  {
461  norm_type_to_enum["L2" ]=L2;
462  norm_type_to_enum["H1" ]=H1;
463  norm_type_to_enum["H2" ]=H2;
464  norm_type_to_enum["HCURL" ]=HCURL;
465  norm_type_to_enum["HDIV" ]=HDIV;
466 
467  norm_type_to_enum["L1" ]=L1;
468  norm_type_to_enum["L_INF" ]=L_INF;
469 
470  norm_type_to_enum["H1_SEMINORM" ]=H1_SEMINORM;
471  norm_type_to_enum["H2_SEMINORM" ]=H2_SEMINORM;
472  norm_type_to_enum["HCURL_SEMINORM" ]=HCURL_SEMINORM;
473  norm_type_to_enum["HDIV_SEMINORM" ]=HDIV_SEMINORM;
474 
475  norm_type_to_enum["W1_INF_SEMINORM" ]=W1_INF_SEMINORM;
476  norm_type_to_enum["W2_INF_SEMINORM" ]=W2_INF_SEMINORM;
477 
478  norm_type_to_enum["DISCRETE_L1" ]=DISCRETE_L1;
479  norm_type_to_enum["DISCRETE_L2" ]=DISCRETE_L2;
480  norm_type_to_enum["DISCRETE_L_INF" ]=DISCRETE_L_INF;
481 
482  norm_type_to_enum["H1_X_SEMINORM" ]=H1_X_SEMINORM;
483  norm_type_to_enum["H1_Y_SEMINORM" ]=H1_Y_SEMINORM;
484  norm_type_to_enum["H1_Z_SEMINORM" ]=H1_Z_SEMINORM;
485 
486  norm_type_to_enum["INVALID_NORM" ]=INVALID_NORM;
487  }
488 }
489 
490 
491 INSTANTIATE_ENUM_MAPS(ParallelType, parallel_type)
492 
493 // Initialize parallel_type_to_enum on first call
494 void init_parallel_type_to_enum ()
495 {
496  if (parallel_type_to_enum.empty())
497  {
498  parallel_type_to_enum["AUTOMATIC" ]=AUTOMATIC;
499  parallel_type_to_enum["SERIAL" ]=SERIAL;
500  parallel_type_to_enum["PARALLEL" ]=PARALLEL;
501  parallel_type_to_enum["GHOSTED" ]=GHOSTED;
502  parallel_type_to_enum["INVALID_PARALLELIZATION" ]=INVALID_PARALLELIZATION;
503  }
504 }
505 
506 
507 INSTANTIATE_ENUM_MAPS(PointLocatorType, point_locator_type)
508 
509 // Initialize point_locator_type_to_enum on first call
510 void init_point_locator_type_to_enum ()
511 {
512  if (point_locator_type_to_enum.empty())
513  {
514  point_locator_type_to_enum["TREE" ]=TREE;
515  point_locator_type_to_enum["INVALID_LOCATOR" ]=INVALID_LOCATOR;
516  }
517 }
518 
519 
520 INSTANTIATE_ENUM_MAPS(SolverPackage, solverpackage_type)
521 
522 // Initialize solverpackage_type_to_enum on first call
523 void init_solverpackage_type_to_enum ()
524 {
525  if (solverpackage_type_to_enum.empty())
526  {
527  solverpackage_type_to_enum["PETSC_SOLVERS" ]=PETSC_SOLVERS;
528  solverpackage_type_to_enum["TRILINOS_SOLVERS" ]=TRILINOS_SOLVERS;
529  solverpackage_type_to_enum["LASPACK_SOLVERS" ]=LASPACK_SOLVERS;
530  solverpackage_type_to_enum["SLEPC_SOLVERS" ]=SLEPC_SOLVERS;
531  solverpackage_type_to_enum["EIGEN_SOLVERS" ]=EIGEN_SOLVERS;
532  solverpackage_type_to_enum["NLOPT_SOLVERS" ]=NLOPT_SOLVERS;
533  solverpackage_type_to_enum["INVALID_SOLVER_PACKAGE" ]=INVALID_SOLVER_PACKAGE;
534  }
535 }
536 
537 
538 INSTANTIATE_ENUM_MAPS(SubsetSolveMode, subset_solve_mode)
539 
540 // Initialize subset_solve_mode_to_enum on first call
541 void init_subset_solve_mode_to_enum ()
542 {
543  if (subset_solve_mode_to_enum.empty())
544  {
545  subset_solve_mode_to_enum["SUBSET_ZERO" ]=SUBSET_ZERO;
546  subset_solve_mode_to_enum["SUBSET_COPY_RHS" ]=SUBSET_COPY_RHS;
547  subset_solve_mode_to_enum["SUBSET_DONT_TOUCH" ]=SUBSET_DONT_TOUCH;
548  }
549 }
550 
551 
552 INSTANTIATE_ENUM_MAPS(XdrMODE, xdr_mode)
553 
554 // Initialize xdr_mode_to_enum on first call
555 void init_xdr_mode_to_enum ()
556 {
557  if (xdr_mode_to_enum.empty())
558  {
559  xdr_mode_to_enum["UNKNOWN" ]=UNKNOWN;
560  xdr_mode_to_enum["ENCODE" ]=ENCODE;
561  xdr_mode_to_enum["DECODE" ]=DECODE;
562  xdr_mode_to_enum["WRITE" ]=WRITE;
563  xdr_mode_to_enum["READ" ]=READ;
564  }
565 }
566 
567 
568 INSTANTIATE_ENUM_MAPS(LinearConvergenceReason, linear_convergence_reason)
569 
570 // Initialize xdr_mode_to_enum on first call
571 void init_linear_convergence_reason_to_enum ()
572 {
573  if (linear_convergence_reason_to_enum.empty())
574  {
575  linear_convergence_reason_to_enum["CONVERGED_RTOL_NORMAL"] = CONVERGED_RTOL_NORMAL;
576  linear_convergence_reason_to_enum["CONVERGED_ATOL_NORMAL"] = CONVERGED_ATOL_NORMAL;
577  linear_convergence_reason_to_enum["CONVERGED_RTOL"] = CONVERGED_RTOL;
578  linear_convergence_reason_to_enum["CONVERGED_ATOL"] = CONVERGED_ATOL;
579  linear_convergence_reason_to_enum["CONVERGED_ITS"] = CONVERGED_ITS;
580  linear_convergence_reason_to_enum["CONVERGED_CG_NEG_CURVE"] = CONVERGED_CG_NEG_CURVE;
581  linear_convergence_reason_to_enum["CONVERGED_CG_CONSTRAINED"] = CONVERGED_CG_CONSTRAINED;
582  linear_convergence_reason_to_enum["CONVERGED_STEP_LENGTH"] = CONVERGED_STEP_LENGTH;
583  linear_convergence_reason_to_enum["CONVERGED_HAPPY_BREAKDOWN"] = CONVERGED_HAPPY_BREAKDOWN;
584  linear_convergence_reason_to_enum["DIVERGED_NULL"] = DIVERGED_NULL;
585  linear_convergence_reason_to_enum["DIVERGED_ITS"] = DIVERGED_ITS;
586  linear_convergence_reason_to_enum["DIVERGED_DTOL"] = DIVERGED_DTOL;
587  linear_convergence_reason_to_enum["DIVERGED_BREAKDOWN"] = DIVERGED_BREAKDOWN;
588  linear_convergence_reason_to_enum["DIVERGED_BREAKDOWN_BICG"] = DIVERGED_BREAKDOWN_BICG;
589  linear_convergence_reason_to_enum["DIVERGED_NONSYMMETRIC"] = DIVERGED_NONSYMMETRIC;
590  linear_convergence_reason_to_enum["DIVERGED_INDEFINITE_PC"] = DIVERGED_INDEFINITE_PC;
591  linear_convergence_reason_to_enum["DIVERGED_NAN"] = DIVERGED_NAN;
592  linear_convergence_reason_to_enum["DIVERGED_INDEFINITE_MAT"] = DIVERGED_INDEFINITE_MAT;
593  linear_convergence_reason_to_enum["DIVERGED_PCSETUP_FAILED"] = DIVERGED_PCSETUP_FAILED;
594  linear_convergence_reason_to_enum["CONVERGED_ITERATING"] = CONVERGED_ITERATING;
595  linear_convergence_reason_to_enum["UNKNOWN_FLAG"] = UNKNOWN_FLAG;
596  }
597 }
598 
599 
600 #undef INSTANTIATE_ENUM_MAPS
601 
602 } // end anonymous namespace
603 
604 
605 
606 // ------------------------------------------------------
607 // Utility::string_to_enum<> & Utility::enum_to_string<>
608 // full specializations
609 namespace Utility {
610 
611 #define INSTANTIATE_STRING_TO_ENUM(ENUM_NAME,VAR_NAME) \
612  template <> \
613  ENUM_NAME string_to_enum<ENUM_NAME> (const std::string & s) \
614  { \
615  init_##VAR_NAME##_to_enum(); \
616  \
617  std::string upper(s); \
618  std::transform(upper.begin(), upper.end(), upper.begin(), ::toupper); \
619  \
620  if (!VAR_NAME##_to_enum.count(upper)) \
621  { \
622  libmesh_error_msg("No " #ENUM_NAME " named " + s + " found."); \
623  } \
624  \
625  return VAR_NAME##_to_enum[upper]; \
626  } \
627  \
628  template <> \
629  std::string enum_to_string<ENUM_NAME> (const ENUM_NAME e) \
630  { \
631  init_enum_to_##VAR_NAME (); \
632  \
633  if (!enum_to_##VAR_NAME .count(e)) \
634  libmesh_error_msg("No " #ENUM_NAME " with enumeration " << e << " found."); \
635  \
636  return enum_to_##VAR_NAME [e]; \
637  }
638 
639 
640 INSTANTIATE_STRING_TO_ENUM(ElemType,elem_type)
641 INSTANTIATE_STRING_TO_ENUM(Order,order)
642 INSTANTIATE_STRING_TO_ENUM(FEFamily,fefamily)
643 INSTANTIATE_STRING_TO_ENUM(InfMapType,inf_map_type)
644 INSTANTIATE_STRING_TO_ENUM(QuadratureType,quadrature_type)
645 INSTANTIATE_STRING_TO_ENUM(PreconditionerType,preconditioner_type)
646 
647 #ifdef LIBMESH_ENABLE_AMR
648 INSTANTIATE_STRING_TO_ENUM(Elem::RefinementState,refinementstate_type)
649 #endif // LIBMESH_ENABLE_AMR
650 
651 INSTANTIATE_STRING_TO_ENUM(SolverType,solvertype)
652 INSTANTIATE_STRING_TO_ENUM(EigenSolverType,eigensolvertype)
653 INSTANTIATE_STRING_TO_ENUM(ElemQuality,elemquality)
654 INSTANTIATE_STRING_TO_ENUM(IOPackage,iopackage)
655 INSTANTIATE_STRING_TO_ENUM(FEMNormType, norm_type)
656 INSTANTIATE_STRING_TO_ENUM(ParallelType, parallel_type)
657 INSTANTIATE_STRING_TO_ENUM(PointLocatorType, point_locator_type)
658 INSTANTIATE_STRING_TO_ENUM(SolverPackage,solverpackage_type)
659 INSTANTIATE_STRING_TO_ENUM(SubsetSolveMode,subset_solve_mode)
660 INSTANTIATE_STRING_TO_ENUM(XdrMODE,xdr_mode)
661 INSTANTIATE_STRING_TO_ENUM(LinearConvergenceReason, linear_convergence_reason)
662 
663 #undef INSTANTIATE_STRING_TO_ENUM
664 
665 } // namespace Utility
666 
667 } // namespace libMesh
libMesh::DISCRETE_L_INF
Definition: enum_norm_type.h:54
libMesh::HEX20
Definition: enum_elem_type.h:48
libMesh::DIVERGED_BREAKDOWN_BICG
Definition: enum_convergence_flags.h:49
libMesh::SolverPackage
SolverPackage
Defines an enum for various linear solver packages.
Definition: enum_solver_package.h:34
libMesh::INVALID_PRECONDITIONER
Definition: enum_preconditioner_type.h:49
libMesh::THIRTYFOURTH
Definition: enum_order.h:75
libMesh::PRISM6
Definition: enum_elem_type.h:50
libMesh::LU_PRECOND
Definition: enum_preconditioner_type.h:44
libMesh::CONVERGED_STEP_LENGTH
Definition: enum_convergence_flags.h:42
libMesh::UNKNOWN_FLAG
Definition: enum_convergence_flags.h:58
libMesh::STRETCH
Definition: enum_elem_quality.h:45
libMesh::TWENTYFIFTH
Definition: enum_order.h:66
libMesh::TREE
Definition: enum_point_locator_type.h:36
libMesh::THIRTYSECOND
Definition: enum_order.h:73
libMesh::Elem::JUST_REFINED
Definition: elem.h:1172
libMesh::DIVERGED_INDEFINITE_MAT
Definition: enum_convergence_flags.h:53
libMesh::CLOUGH
Definition: enum_fe_family.h:53
libMesh::LAPACK
Definition: enum_eigen_solver_type.h:35
libMesh::THIRTYFIFTH
Definition: enum_order.h:76
libMesh::POWER
Definition: enum_eigen_solver_type.h:34
libMesh::PETSC_SOLVERS
Definition: enum_solver_package.h:36
libMesh::L_INF
Definition: enum_norm_type.h:42
libMesh::DISTORTION
Definition: enum_elem_quality.h:42
libMesh::PARALLEL
Definition: enum_parallel_type.h:36
libMesh::L2_HIERARCHIC
Definition: enum_fe_family.h:40
libMesh::QCLOUGH
Definition: enum_quadrature_type.h:44
libMesh::H1_Y_SEMINORM
Definition: enum_norm_type.h:58
libMesh::HEX8
Definition: enum_elem_type.h:47
libMesh::DIVERGED_BREAKDOWN
Definition: enum_convergence_flags.h:48
libMesh::NINETEENTH
Definition: enum_order.h:60
libMesh::NLOPT_SOLVERS
Definition: enum_solver_package.h:41
libMesh::DIVERGED_DTOL
Definition: enum_convergence_flags.h:47
libMesh::INFINITE_MAP
Definition: enum_fe_family.h:48
libMesh::EDGE4
Definition: enum_elem_type.h:37
libMesh::INFHEX8
Definition: enum_elem_type.h:60
libMesh::SIXTH
Definition: enum_order.h:47
libMesh::DIVERGED_ITS
Definition: enum_convergence_flags.h:46
libMesh::IOPackage
IOPackage
libMesh interfaces with several different software packages for the purposes of creating,...
Definition: enum_io_package.h:37
libMesh::INFQUAD4
Definition: enum_elem_type.h:58
libMesh::Elem::COARSEN
Definition: elem.h:1169
libMesh::HERMITE
Definition: enum_fe_family.h:54
libMesh::AMG_PRECOND
Definition: enum_preconditioner_type.h:47
libMesh::JACOBI
Definition: enum_solver_type.h:46
libMesh::BICG
Definition: enum_solver_type.h:41
libMesh::DISCRETE_L2
Definition: enum_norm_type.h:53
libMesh::FOURTEENTH
Definition: enum_order.h:55
libMesh::INVALID_LOCATOR
Definition: enum_point_locator_type.h:40
libMesh::FORTYSECOND
Definition: enum_order.h:83
libMesh::IDENTITY_PRECOND
Definition: enum_preconditioner_type.h:34
libMesh::CR
Definition: enum_solver_type.h:37
libMesh::SERIAL
Definition: enum_parallel_type.h:35
libMesh
The libMesh namespace provides an interface to certain functionality in the library.
Definition: factoryfunction.C:55
libMesh::Elem::COARSEN_INACTIVE
Definition: elem.h:1175
libMesh::JACOBI_20_00
Definition: enum_fe_family.h:49
libMesh::L1
Definition: enum_norm_type.h:41
libMesh::TET10
Definition: enum_elem_type.h:46
libMesh::XYZ
Definition: enum_fe_family.h:46
libMesh::JACOBI_PRECOND
Definition: enum_preconditioner_type.h:35
libMesh::H1_SEMINORM
Definition: enum_norm_type.h:43
libMesh::QuadratureType
QuadratureType
Defines an enum for currently available quadrature rules.
Definition: enum_quadrature_type.h:33
libMesh::SSOR
Definition: enum_solver_type.h:49
libMesh::SOR_FORWARD
Definition: enum_solver_type.h:47
libMesh::Order
Order
Definition: enum_order.h:40
end
IterBase * end
Also have a polymorphic pointer to the end object, this prevents iterating past the end.
Definition: variant_filter_iterator.h:343
libMesh::RICHARDSON
Definition: enum_solver_type.h:50
libMesh::MINRES
Definition: enum_solver_type.h:43
libMesh::DIVERGED_NULL
Definition: enum_convergence_flags.h:45
libMesh::GHOSTED
Definition: enum_parallel_type.h:37
libMesh::MONOMIAL_VEC
Definition: enum_fe_family.h:62
libMesh::ASPECT_RATIO_BETA
Definition: enum_elem_quality.h:47
libMesh::Elem::RefinementState
RefinementState
Enumeration of possible element refinement states.
Definition: elem.h:1169
libMesh::W2_INF_SEMINORM
Definition: enum_norm_type.h:50
libMesh::H2
Definition: enum_norm_type.h:38
libMesh::WRITE
Definition: enum_xdr_mode.h:40
libMesh::EISENSTAT_PRECOND
Definition: enum_preconditioner_type.h:39
libMesh::FIFTH
Definition: enum_order.h:46
libMesh::W1_INF_SEMINORM
Definition: enum_norm_type.h:49
libMesh::GMV
Definition: enum_io_package.h:40
libMesh::THIRTEENTH
Definition: enum_order.h:54
libMesh::QMR
Definition: enum_solver_type.h:38
libMesh::CONVERGED_CG_CONSTRAINED
Definition: enum_convergence_flags.h:41
libMesh::SUBSET_COPY_RHS
Definition: enum_subset_solve_mode.h:40
libMesh::DIAGONAL
Definition: enum_elem_quality.h:46
libMesh::THIRTYSEVENTH
Definition: enum_order.h:78
libMesh::SECOND
Definition: enum_order.h:43
libMesh::CONVERGED_ITERATING
Definition: enum_convergence_flags.h:56
libMesh::QGAUSS
Definition: enum_quadrature_type.h:34
libMesh::THIRTIETH
Definition: enum_order.h:71
libMesh::INFEDGE2
Definition: enum_elem_type.h:57
libMesh::TWENTIETH
Definition: enum_order.h:61
libMesh::DIVA
Definition: enum_io_package.h:43
libMesh::LIBMESH
Definition: enum_io_package.h:46
libMesh::DIVERGED_NONSYMMETRIC
Definition: enum_convergence_flags.h:50
libMesh::TWELFTH
Definition: enum_order.h:53
libMesh::SSOR_PRECOND
Definition: enum_preconditioner_type.h:38
libMesh::TWENTYEIGHTH
Definition: enum_order.h:69
libMesh::SUBSET_ZERO
Definition: enum_subset_solve_mode.h:37
libMesh::FORTYTHIRD
Definition: enum_order.h:84
libMesh::TET4
Definition: enum_elem_type.h:45
libMesh::CARTESIAN
Definition: enum_inf_map_type.h:35
libMesh::GMSH
Definition: enum_io_package.h:41
libMesh::QSIMPSON
Definition: enum_quadrature_type.h:37
libMesh::PRISM15
Definition: enum_elem_type.h:51
libMesh::SZABAB
Definition: enum_fe_family.h:44
libMesh::THIRTYEIGHTH
Definition: enum_order.h:79
libMesh::CONVERGED_RTOL
Definition: enum_convergence_flags.h:37
libMesh::INFPRISM6
Definition: enum_elem_type.h:63
libMesh::SOR_BACKWARD
Definition: enum_solver_type.h:48
libMesh::FEMNormType
FEMNormType
Definition: enum_norm_type.h:34
libMesh::ELEVENTH
Definition: enum_order.h:52
libMesh::CG
Definition: enum_solver_type.h:34
libMesh::EIGHTTEENTH
Definition: enum_order.h:59
libMesh::LinearConvergenceReason
LinearConvergenceReason
Linear solver convergence flags (taken from the PETSc flags).
Definition: enum_convergence_flags.h:33
libMesh::INVALID_SOLVER
Definition: enum_solver_type.h:54
libMesh::TFQMR
Definition: enum_solver_type.h:40
libMesh::JACOBI_30_00
Definition: enum_fe_family.h:50
libMesh::HEX27
Definition: enum_elem_type.h:49
libMesh::TWENTYSECOND
Definition: enum_order.h:63
libMesh::CGS
Definition: enum_solver_type.h:36
libMesh::XdrMODE
XdrMODE
Defines an enum for read/write mode in Xdr format.
Definition: enum_xdr_mode.h:35
libMesh::TWENTYTHIRD
Definition: enum_order.h:64
libMesh::DECODE
Definition: enum_xdr_mode.h:39
libMesh::QTRAP
Definition: enum_quadrature_type.h:38
libMesh::QNODAL
Definition: enum_quadrature_type.h:46
libMesh::TWENTYFIRST
Definition: enum_order.h:62
libMesh::FORTYFIRST
Definition: enum_order.h:82
libMesh::INVALID_SOLVER_PACKAGE
Definition: enum_solver_package.h:43
libMesh::TWENTYSIXTH
Definition: enum_order.h:67
libMesh::INFHEX18
Definition: enum_elem_type.h:62
libMesh::QUAD4
Definition: enum_elem_type.h:41
libMesh::SHEAR
Definition: enum_elem_quality.h:37
libMesh::THIRTYFIRST
Definition: enum_order.h:72
libMesh::TCQMR
Definition: enum_solver_type.h:39
libMesh::FORTIETH
Definition: enum_order.h:81
libMesh::CHOLESKY_PRECOND
Definition: enum_preconditioner_type.h:41
libMesh::TRI3
Definition: enum_elem_type.h:39
libMesh::SOR_PRECOND
Definition: enum_preconditioner_type.h:37
libMesh::BLOCK_JACOBI_PRECOND
Definition: enum_preconditioner_type.h:36
libMesh::LEGENDRE
Definition: enum_fe_family.h:51
libMesh::H1_X_SEMINORM
Definition: enum_norm_type.h:57
libMesh::MAX_ANGLE
Definition: enum_elem_quality.h:39
libMesh::CONSTANT
Definition: enum_order.h:41
libMesh::Elem::DO_NOTHING
Definition: elem.h:1170
libMesh::TWENTYSEVENTH
Definition: enum_order.h:68
libMesh::EIGHTH
Definition: enum_order.h:49
libMesh::RATIONAL_BERNSTEIN
Definition: enum_fe_family.h:64
libMesh::BERNSTEIN
Definition: enum_fe_family.h:43
libMesh::Elem::JUST_COARSENED
Definition: elem.h:1173
libMesh::Elem::REFINE
Definition: elem.h:1171
libMesh::INFHEX16
Definition: enum_elem_type.h:61
libMesh::ASPECT_RATIO
Definition: enum_elem_quality.h:35
libMesh::TENTH
Definition: enum_order.h:51
libMesh::LASPACK_SOLVERS
Definition: enum_solver_package.h:38
libMesh::PreconditionerType
PreconditionerType
Defines an enum for preconditioner types.
Definition: enum_preconditioner_type.h:33
libMesh::H2_SEMINORM
Definition: enum_norm_type.h:44
libMesh::READ
Definition: enum_xdr_mode.h:41
libMesh::CONVERGED_HAPPY_BREAKDOWN
Definition: enum_convergence_flags.h:43
libMesh::GMRES
Definition: enum_solver_type.h:44
libMesh::EigenSolverType
EigenSolverType
Defines an enum for iterative eigenproblem solver types.
Definition: enum_eigen_solver_type.h:33
libMesh::KRYLOVSCHUR
Definition: enum_eigen_solver_type.h:39
libMesh::SPHERICAL
Definition: enum_inf_map_type.h:36
libMesh::ELLIPSOIDAL
Definition: enum_inf_map_type.h:37
libMesh::HIERARCHIC
Definition: enum_fe_family.h:37
libMesh::JACOBIAN
Definition: enum_elem_quality.h:50
libMesh::MONOMIAL
Definition: enum_fe_family.h:39
libMesh::INFPRISM12
Definition: enum_elem_type.h:64
libMesh::HCURL
Definition: enum_norm_type.h:39
libMesh::SIZE
Definition: enum_elem_quality.h:49
libMesh::UNKNOWN
Definition: enum_xdr_mode.h:37
libMesh::ElemQuality
ElemQuality
Defines an enum for element quality metrics.
Definition: enum_elem_quality.h:34
libMesh::FOURTH
Definition: enum_order.h:45
libMesh::CONDITION
Definition: enum_elem_quality.h:41
libMesh::TWENTYNINTH
Definition: enum_order.h:70
libMesh::CONVERGED_RTOL_NORMAL
Definition: enum_convergence_flags.h:35
libMesh::DIVERGED_INDEFINITE_PC
Definition: enum_convergence_flags.h:51
libMesh::TRILINOS_SOLVERS
Definition: enum_solver_package.h:37
libMesh::TRI6
Definition: enum_elem_type.h:40
libMesh::ENCODE
Definition: enum_xdr_mode.h:38
libMesh::INVALID_ELEM
Definition: enum_elem_type.h:75
libMesh::HDIV_SEMINORM
Definition: enum_norm_type.h:47
libMesh::CONVERGED_CG_NEG_CURVE
Definition: enum_convergence_flags.h:40
libMesh::ARNOLDI
Definition: enum_eigen_solver_type.h:37
libMesh::SHAPE
Definition: enum_elem_quality.h:38
libMesh::MIN_ANGLE
Definition: enum_elem_quality.h:40
libMesh::ASPECT_RATIO_GAMMA
Definition: enum_elem_quality.h:48
libMesh::CONVERGED_ATOL_NORMAL
Definition: enum_convergence_flags.h:36
libMesh::HCURL_SEMINORM
Definition: enum_norm_type.h:46
libMesh::SUBSET_DONT_TOUCH
Definition: enum_subset_solve_mode.h:45
libMesh::CONVERGED_ITS
Definition: enum_convergence_flags.h:39
libMesh::DISCRETE_L1
Definition: enum_norm_type.h:52
libMesh::SUBSPACE
Definition: enum_eigen_solver_type.h:36
libMesh::FEFamily
FEFamily
Definition: enum_fe_family.h:34
libMesh::QGAUSS_LOBATTO
Definition: enum_quadrature_type.h:43
libMesh::INFQUAD6
Definition: enum_elem_type.h:59
libMesh::QJACOBI_1_0
Definition: enum_quadrature_type.h:35
libMesh::SEVENTH
Definition: enum_order.h:48
libMesh::SHELL_PRECOND
Definition: enum_preconditioner_type.h:46
libMesh::ICC_PRECOND
Definition: enum_preconditioner_type.h:42
libMesh::QUADSHELL8
Definition: enum_elem_type.h:73
libMesh::PYRAMID5
Definition: enum_elem_type.h:53
libMesh::NEDELEC_ONE
Definition: enum_fe_family.h:61
libMesh::ASM_PRECOND
Definition: enum_preconditioner_type.h:40
libMesh::INVALID_PARALLELIZATION
Definition: enum_parallel_type.h:39
libMesh::CONVERGED_ATOL
Definition: enum_convergence_flags.h:38
libMesh::WARP
Definition: enum_elem_quality.h:44
libMesh::EDGE3
Definition: enum_elem_type.h:36
libMesh::LSQR
Definition: enum_solver_type.h:45
libMesh::SubsetSolveMode
SubsetSolveMode
Definition: enum_subset_solve_mode.h:35
libMesh::INVALID_EIGENSOLVER
Definition: enum_eigen_solver_type.h:41
libMesh::H1_Z_SEMINORM
Definition: enum_norm_type.h:59
libMesh::PointLocatorType
PointLocatorType
Definition: enum_point_locator_type.h:35
libMesh::QUADSHELL4
Definition: enum_elem_type.h:72
libMesh::DIVERGED_PCSETUP_FAILED
Definition: enum_convergence_flags.h:54
libMesh::FIFTEENTH
Definition: enum_order.h:56
libMesh::DIVERGED_NAN
Definition: enum_convergence_flags.h:52
libMesh::L2
Definition: enum_norm_type.h:36
libMesh::InfMapType
InfMapType
Definition: enum_inf_map_type.h:34
libMesh::SLEPC_SOLVERS
Definition: enum_solver_package.h:39
libMesh::NODEELEM
Definition: enum_elem_type.h:66
libMesh::THIRTYNINTH
Definition: enum_order.h:80
libMesh::QJACOBI_2_0
Definition: enum_quadrature_type.h:36
libMesh::TETGEN
Definition: enum_io_package.h:44
libMesh::VTK
Definition: enum_io_package.h:42
libMesh::USER_PRECOND
Definition: enum_preconditioner_type.h:45
libMesh::THIRTYTHIRD
Definition: enum_order.h:74
libMesh::TAPER
Definition: enum_elem_quality.h:43
libMesh::L2_LAGRANGE
Definition: enum_fe_family.h:41
libMesh::AUTOMATIC
Definition: enum_parallel_type.h:34
libMesh::SolverType
SolverType
Defines an enum for iterative solver types.
Definition: enum_solver_type.h:33
libMesh::SIXTEENTH
Definition: enum_order.h:57
libMesh::INVALID_NORM
Definition: enum_norm_type.h:61
libMesh::THIRD
Definition: enum_order.h:44
libMesh::ParallelType
ParallelType
Defines an enum for parallel data structure types.
Definition: enum_parallel_type.h:33
libMesh::QUAD9
Definition: enum_elem_type.h:43
libMesh::LAGRANGE_VEC
Definition: enum_fe_family.h:60
libMesh::NINTH
Definition: enum_order.h:50
libMesh::LAGRANGE
Definition: enum_fe_family.h:36
libMesh::SCALAR
Definition: enum_fe_family.h:58
libMesh::SUBDIVISION
Definition: enum_fe_family.h:55
libMesh::CHEBYSHEV
Definition: enum_solver_type.h:51
libMesh::TRI3SUBDIVISION
Definition: enum_elem_type.h:69
libMesh::H1
Definition: enum_norm_type.h:37
libMesh::Elem::INACTIVE
Definition: elem.h:1174
libMesh::CGN
Definition: enum_solver_type.h:35
libMesh::TWENTYFOURTH
Definition: enum_order.h:65
libMesh::PRISM18
Definition: enum_elem_type.h:52
libMesh::TRISHELL3
Definition: enum_elem_type.h:71
libMesh::UCD
Definition: enum_io_package.h:45
libMesh::FIRST
Definition: enum_order.h:42
libMesh::EIGEN_SOLVERS
Definition: enum_solver_package.h:40
libMesh::Elem::INVALID_REFINEMENTSTATE
Definition: elem.h:1176
libMesh::THIRTYSIXTH
Definition: enum_order.h:77
libMesh::TECPLOT
Definition: enum_io_package.h:39
libMesh::HDIV
Definition: enum_norm_type.h:40
libMesh::PYRAMID13
Definition: enum_elem_type.h:54
libMesh::PYRAMID14
Definition: enum_elem_type.h:55
libMesh::EDGE2
Definition: enum_elem_type.h:35
libMesh::QUAD8
Definition: enum_elem_type.h:42
libMesh::ElemType
ElemType
Defines an enum for geometric element types.
Definition: enum_elem_type.h:33
libMesh::QGRID
Definition: enum_quadrature_type.h:39
libMesh::LANCZOS
Definition: enum_eigen_solver_type.h:38
libMesh::SEVENTEENTH
Definition: enum_order.h:58
libMesh::SKEW
Definition: enum_elem_quality.h:36
libMesh::ILU_PRECOND
Definition: enum_preconditioner_type.h:43