v0.14.0
definitions.h
Go to the documentation of this file.
1 /** \file definitions.h
2  * \brief useful compiler directives and definitions
3  */
4 
5 
6 #ifndef __DEFINITONS_H__
7 #define __DEFINITONS_H__
8 
9 #ifndef DEPRECATED
10 // taken from http://stackoverflow.com/questions/295120/c-mark-as-deprecated
11 #ifdef __GNUC__
12 #define DEPRECATED __attribute__((deprecated))
13 #elif defined(_MSC_VER)
14 #define DEPRECATED __declspec(deprecated)
15 #else
16 #pragma message("WARNING: You need to implement DEPRECATED for this compiler")
17 #define DEPRECATED
18 #endif
19 #endif
20 
21 /** \brief Error handling
22  *
23  * This is complementary to PETSC error codes. The numerical values for
24  * these are defined in include/petscerror.h. The names are defined in err.c
25  *
26  * MoAB error messages are defined in moab/Types.hpp
27  *
28  */
42 };
43 
44 const static char *const MoFEMErrorCodesNames[] = {
45  "MOFEM_SUCCESS",
46  "MOFEM_DATA_INCONSISTENCY",
47  "MOFEM_NOT_IMPLEMENTED",
48  "MOFEM_NOT_FOUND",
49  "MOFEM_OPERATION_UNSUCCESSFUL",
50  "MOFEM_IMPOSSIBLE_CASE",
51  "MOFEM_INVALID_DATA",
52  "MOFEM_MOFEMEXCEPTION_THROW",
53  "MOFEM_STD_EXCEPTION_THROW",
54  "MOFEM_ATOM_TEST_INVALID",
55  "MOFEM_MOAB_ERROR"};
56 
57 /// \brief approximation base
59  NOBASE = 0,
61  1, ///< Ainsworth Cole (Legendre) approx. base \cite NME:NME847
62  AINSWORTH_LOBATTO_BASE, ///< Like AINSWORTH_LEGENDRE_BASE but with Lobatto
63  ///< base instead Legendre \cite beriot2015efficient
64  AINSWORTH_BERNSTEIN_BEZIER_BASE, ///< See \cite ainsworth2011bernstein and
65  ///< \cite ainsworth2018bernstein
66  DEMKOWICZ_JACOBI_BASE, ///< Construction of base is by Demkowicz \cite
67  ///< fuentes2015orientation
68  USER_BASE, ///< user implemented approximation base
70 };
71 
72 const static char *const ApproximationBaseNames[] = {
73  "NOBASE",
74  "AINSWORTH_LEGENDRE_BASE",
75  "AINSWORTH_LOBATTO_BASE",
76  "AINSWORTH_BERNSTEIN_BEZIER_BASE",
77  "DEMKOWICZ_JACOBI_BASE",
78  "USER_BASE",
79  "LASTBASE"};
80 
81 /// \brief approximation spaces
82 enum FieldSpace {
83  NOSPACE = 0,
84  NOFIELD = 1, ///< scalar or vector of scalars describe (no true field)
85  H1, ///< continuous field
86  HCURL, ///< field with continuous tangents
87  HDIV, ///< field with continuous normal traction
88  L2, ///< field with C-1 continuity
89  LASTSPACE ///< FieldSpace in [ 0, LASTSPACE )
90 };
91 
92 const static char *const FieldSpaceNames[] = {
93  "NOSPACE", "NOFIELD", "H1", "HCURL", "HDIV", "L2", "LASTSPACE"};
94 
95 /// \brief Those types control how functions respond on arguments, f.e. error
96 /// handling
97 enum MoFEMTypes {
98  MF_ZERO = 0,
99  MF_EXCL = 1 << 0,
100  MF_EXIST = 1 << 1,
101  MF_NOT_THROW = 1 << 2
102 };
103 
104 /**
105  * @brief Coordinate system names
106  *
107  */
108 const static char *const CoordinateTypesNames[] = {"Cartesian", "Polar",
109  "Cylindrical", "Spherical"};
110 /**
111  * @brief Coodinate system
112  *
113  */
120 };
121 
122 /// \brief RowColData
124 
125 /**
126  * Controls adjency multi_index container (e.g. BYROW is adjacenciecy by field
127  * on on rows), see \ref MoFEM::FieldEntityEntFiniteElementAdjacencyMap
128  *
129  */
130 enum ByWhat {
131  BYROW = 1 << 0,
132  BYCOL = 1 << 1,
133  BYDATA = 1 << 2,
134  BYROWDATA = 1 << 0 | 1 << 2,
135  BYCOLDATA = 1 << 1 | 1 << 2,
136  BYROWCOL = 1 << 0 | 1 << 1,
137  BYALL = 1 << 0 | 1 << 1 | 1 << 2
138 };
139 
140 /**
141  * \brief Types of sets and boundary conditions
142  *
143  */
144 enum CubitBC {
146  NODESET = 1 << 0,
147  SIDESET = 1 << 1,
148  BLOCKSET = 1 << 2,
149  MATERIALSET = 1 << 3,
150  DISPLACEMENTSET = 1 << 4,
151  FORCESET = 1 << 5,
152  PRESSURESET = 1 << 6,
153  VELOCITYSET = 1 << 7,
154  ACCELERATIONSET = 1 << 8,
155  TEMPERATURESET = 1 << 9,
156  HEATFLUXSET = 1 << 10,
157  INTERFACESET = 1 << 11,
158  UNKNOWNNAME = 1 << 12,
159  MAT_ELASTICSET = 1 << 13, ///< block name is "MAT_ELASTIC"
160  MAT_INTERFSET = 1 << 14,
161  MAT_THERMALSET = 1 << 15, ///< block name is "MAT_THERMAL"
162  BODYFORCESSET = 1 << 16, ///< block name is "BODY_FORCES"
163  MAT_MOISTURESET = 1 << 17, ///< block name is "MAT_MOISTURE"
164  DIRICHLET_BC = 1 << 18,
165  NEUMANN_BC = 1 << 19,
166  LASTSET_BC = 1 << 20
167 };
168 
169 // OFF_DEPRECATED static const unsigned int UNKNOWNCUBITNAME = UNKNOWNNAME;
170 // OFF_DEPRECATED static const unsigned int LASTCUBITSET = LASTSET_BC;
171 
172 /**
173  * \brief Names of types of sets and boundary conditions
174  */
175 const static char *const CubitBCNames[] = {
176  "UNKNOWNSET", "NODESET", "SIDESET", "BLOCKSET",
177  "MATERIALSET", "DISPLACEMENTSET", "FORCESET", "PRESSURESET",
178  "VELOCITYSET", "ACCELERATIONSET", "TEMPERATURESET", "HEATFLUXSET",
179  "INTERFACESET", "UNKNOWNNAME", "MAT_ELASTICSET", "MAT_INTERFSET",
180  "MAT_THERMALSET", "BODYFORCESSET", "MAT_MOISTURESET", "DIRICHLET_BC",
181  "NEUMANN_BC", "LASTSET_BC"};
182 
183 /**
184  * \brief Format in rows of vectorial base functions
185  */
187 
188 /**
189  * \brief Format in rows of vectorial base gradients of base functions
190  */
192  HVEC0_0 = 0,
201 };
202 
203 /**
204  * \brief Verbosity levels
205  */
208  QUIET = 0,
213 };
214 
215 #define MYPCOMM_INDEX 0 ///< default communicator number PCOMM
216 
217 #define MAX_CORE_TMP 1 ///< maximal number of cores
218 #define BITREFEDGES_SIZE 32 ///< number refined edges
219 #define BITREFLEVEL_SIZE 64 ///< max number of refinements
220 #define BITFIELDID_SIZE 32 ///< max number of fields
221 #define BITFEID_SIZE 32 ///< max number of finite elements
222 #define BITPROBLEMID_SIZE 32 ///< max number of problems
223 #define BITINTERFACEUID_SIZE 32
224 
225 // This Is form MOAB
226 #define MB_TYPE_WIDTH 4
227 #define MB_ID_WIDTH (8 * sizeof(EntityHandle) - MB_TYPE_WIDTH)
228 #define MB_TYPE_MASK ((EntityHandle)0xF << MB_ID_WIDTH)
229 // 2^MB_TYPE_WIDTH-1 ------^
230 
231 #define MB_START_ID ((EntityID)1) ///< All entity id's currently start at 1
232 #define MB_END_ID \
233  ((EntityID)MB_ID_MASK) ///< Last id is the complement of the MASK
234 #define MB_ID_MASK (~MB_TYPE_MASK)
235 
236 #define MAX_DOFS_ON_ENTITY 512 ///< Maximal number of DOFs on entity
237 #define MAX_PROCESSORS_NUMBER 1024 ///< Maximal number of processors
238 #define DOF_UID_MASK \
239  (MAX_DOFS_ON_ENTITY - 1) ///< Mask for DOF number on entity form UId
240 #define ENTITY_UID_MASK (~DOF_UID_MASK)
241 
242 #define NOT_USED(x) ((void)(x))
243 
244 /** \brief set barrier start
245  * Run code in sequence, starting from process 0, and ends on last process.
246  *
247  * It can be only used for testing. Do not use that function as a part of these
248  * code.
249  *
250  */
251 #define BARRIER_PCOMM_RANK_START(PCMB) \
252  { \
253  for (unsigned int i = 0; i < PCMB->proc_config().proc_rank(); i++) \
254  MPI_Barrier(PCMB->proc_config().proc_comm()); \
255  };
256 
257 /** \deprecated Do use this macro, instead use BARRIER_PCOMM_RANK_START
258  */
259 #define BARRIER_RANK_START(PCMB) \
260  { \
261  macro_is_deprecated_using_deprecated_function(); \
262  for (unsigned int i = 0; i < PCMB->proc_config().proc_rank(); i++) \
263  MPI_Barrier(PCMB->proc_config().proc_comm()); \
264  };
265 
266 /** \brief set barrier start
267  * Run code in sequence, starting from process 0, and ends on last process.
268  *
269  * It can be only used for testing. Do not use that function as a part of these
270  * code.
271  *
272  */
273 #define BARRIER_PCOMM_RANK_END(PCMB) \
274  { \
275  for (unsigned int i = PCMB->proc_config().proc_rank(); \
276  i < PCMB->proc_config().proc_size(); i++) \
277  MPI_Barrier(PCMB->proc_config().proc_comm()); \
278  };
279 
280 /** \deprecated Do use this macro, instead use BARRIER_PCOMM_RANK_START
281  */
282 #define BARRIER_RANK_END(PCMB) \
283  { \
284  macro_is_deprecated_using_deprecated_function(); \
285  for (unsigned int i = PCMB->proc_config().proc_rank(); \
286  i < PCMB->proc_config().proc_size(); i++) \
287  MPI_Barrier(PCMB->proc_config().proc_comm()); \
288  };
289 
290 /** \brief set barrier start
291  * Run code in sequence, starting from process 0, and ends on last process.
292  *
293  * It can be only used for testing. Do not use that function as a part of these
294  * code.
295  *
296  */
297 #define BARRIER_MOFEM_RANK_START(MOFEM) \
298  { \
299  for (int i = 0; i < (MOFEM)->get_comm_rank(); i++) \
300  MPI_Barrier((MOFEM)->get_comm()); \
301  };
302 
303 /** \brief set barrier start
304  * Run code in sequence, starting from process 0, and ends on last process.
305  *
306  * It can be only used for testing. Do not use that function as a part of these
307  * code.
308  *
309  */
310 #define BARRIER_MOFEM_RANK_END(MOFEM) \
311  { \
312  for (int i = (MOFEM)->get_comm_rank(); i < (MOFEM)->get_comm_size(); i++) \
313  MPI_Barrier((MOFEM)->get_comm()); \
314  };
315 
316 #ifdef __cplusplus
317 extern "C" {
318 #endif
319 
320 /**
321  * \brief Is used to indicate that macro is deprecated
322  * Do nothing just triggers error at the compilation
323  */
325 
326 #ifdef __cplusplus
327 }
328 #endif
329 
330 /**
331  * \brief First executable line of each MoFEM function, used for error handling.
332  Final line of MoFEM functions should be MoFEMFunctionReturn(0);
333 
334  \node Not collective
335 
336  Example
337  \code
338  PetscErrorCode fun() {
339  int something;
340  MoFEMFunctionBegin;
341  MoFEMFunctionReturn(0);
342  }
343  \endcode
344 
345  */
346 #define MoFEMFunctionBegin \
347  PetscFunctionBegin; \
348  try {
349 
350 /**
351  * @brief \brief Catch errors
352  *
353  * Usage in main functions
354  * \code
355  * int main(int argc, char *argv[]) {
356  *
357  * MoFEM::Core::Initialize(&argc, &argv, (char *)0, help);
358  *
359  * try {
360  *
361  * // More code here
362  *
363  * }
364  * CATCH_ERRORS;
365  *
366  * return MoFEM::Core::Finalize();
367  *
368  * }
369  * \endcode
370  *
371  */
372 #define CATCH_ERRORS \
373  catch (MoFEMExceptionInitial const &ex) { \
374  return PetscError(PETSC_COMM_SELF, ex.lINE, PETSC_FUNCTION_NAME, __FILE__, \
375  ex.errorCode, PETSC_ERROR_INITIAL, ex.what()); \
376  } \
377  catch (MoFEMExceptionRepeat const &ex) { \
378  return PetscError(PETSC_COMM_SELF, ex.lINE, PETSC_FUNCTION_NAME, __FILE__, \
379  ex.errorCode, PETSC_ERROR_REPEAT, " "); \
380  } \
381  catch (MoFEMException const &ex) { \
382  SETERRQ(PETSC_COMM_SELF, ex.errorCode, ex.errorMessage); \
383  } \
384  catch (boost::bad_weak_ptr & ex) { \
385  std::string message("Boost bad weak ptr: " + std::string(ex.what()) + \
386  " at " + boost::lexical_cast<std::string>(__LINE__) + \
387  " : " + std::string(__FILE__) + " in " + \
388  std::string(PETSC_FUNCTION_NAME)); \
389  SETERRQ(PETSC_COMM_SELF, MOFEM_STD_EXCEPTION_THROW, message.c_str()); \
390  } \
391  catch (std::out_of_range & ex) { \
392  std::string message("Std out of range error: " + std::string(ex.what()) + \
393  " at " + boost::lexical_cast<std::string>(__LINE__) + \
394  " : " + std::string(__FILE__) + " in " + \
395  std::string(PETSC_FUNCTION_NAME)); \
396  SETERRQ(PETSC_COMM_SELF, MOFEM_STD_EXCEPTION_THROW, message.c_str()); \
397  } \
398  catch (std::exception const &ex) { \
399  std::string message("Std error: " + std::string(ex.what()) + " at " + \
400  boost::lexical_cast<std::string>(__LINE__) + " : " + \
401  std::string(__FILE__) + " in " + \
402  std::string(PETSC_FUNCTION_NAME)); \
403  SETERRQ(PETSC_COMM_SELF, MOFEM_STD_EXCEPTION_THROW, message.c_str()); \
404  }
405 
406 /**
407  * \brief Last executable line of each PETSc function used for error handling.
408  * Replaces return()
409  * @param a error code
410  *
411  * \note MoFEMFunctionReturn has to be used with MoFEMFunctionBegin and can be
412  * used only at the end of the function. If is need to return function in
413  * earlier use MoFEMFunctionReturnHot
414  *
415  */
416 #define MoFEMFunctionReturn(a) \
417  } \
418  CATCH_ERRORS \
419  PetscFunctionReturn(a)
420 
421 /**
422  * \brief First executable line of each MoFEM function, used for error
423  handling. Final line of MoFEM functions should be MoFEMFunctionReturn(0); Use
424  of this function allows for lighter profiling by default.
425 
426  \node Not collective
427 
428  Example:
429  \code
430  PetscErrorCode fun() {
431  int something;
432  MoFEMFunctionBeginHot;
433 
434  // some work here
435 
436  MoFEMFunctionReturnHot(0);
437  }
438  \endcode
439 */
440 #define MoFEMFunctionBeginHot PetscFunctionBeginHot
441 
442 /**
443  * \brief Last executable line of each PETSc function used for error handling.
444  * Replaces return()
445  * @param a error code
446  */
447 #define MoFEMFunctionReturnHot(a) PetscFunctionReturn(a)
448 
449 #define CHKERRQ_PETSC(n) CHKERRQ(n)
450 /**
451  * \brief check error code of MoAB function
452  * @param a MoABErrorCode
453  */
454 #define CHKERRQ_MOAB(a) \
455  if (PetscUnlikely(MB_SUCCESS != (a))) { \
456  std::string error_str = (unsigned)(a) <= (unsigned)MB_FAILURE \
457  ? moab::ErrorCodeStr[a] \
458  : "INVALID ERROR CODE"; \
459  std::string str("MOAB error (" + boost::lexical_cast<std::string>((a)) + \
460  ") " + error_str + " at line " + \
461  boost::lexical_cast<std::string>(__LINE__) + " : " + \
462  std::string(__FILE__)); \
463  SETERRQ(PETSC_COMM_SELF, MOFEM_MOAB_ERROR, str.c_str()); \
464  }
465 
466 /**
467  * \brief Check error code of MoFEM/MOAB/PETSc function
468  * @param a MoFEMErrorCode
469  *
470  * \code
471  * MoFEMErrorCode fun() {
472  * MoFEMFunctionBeginHot;
473  * rval = fun_moab(); CHKERRG(rval);
474  * ierr = fun_petsc(); CHKERRG(ierr);
475  * merr = fun_mofem(); CHKERRG(merr);
476  * MoFEMFunctionReturnHot(0);
477  * \endcode
478  *
479  * \note Function detect type of errocode using specialized template function
480  * getErrorType, i.e. condition is evaluated at compilation time.
481  *
482  */
483 #define CHKERRG(n) \
484  if ((boost::is_same<BOOST_TYPEOF((n)), \
485  MoFEMErrorCodeGeneric<PetscErrorCode>>::value)) { \
486  CHKERRQ_PETSC((n)); \
487  } else if (boost::is_same<BOOST_TYPEOF((n)), \
488  MoFEMErrorCodeGeneric<moab::ErrorCode>>::value) { \
489  CHKERRQ_MOAB((n)); \
490  }
491 
492 /**
493  * @brief Inline error check
494  *
495  * \code
496  *
497  * MoFEMErrorCode foo() {
498  * MoFEMFunctionBegin;
499  *
500  * // Call other functions
501  * CHKERR fun_moab();
502  * CHKERR fun_petsc();
503  * CHKERR fun_mofem();
504  *
505  * // Throw error
506  * SETERRQ(PETSC_COMM_WORLD, MOFEM_DATA_INCONSISTENCY, "Some error message");
507  *
508  * MoFEMFunctionReturn(0);
509  * }
510  *
511  * int main(int argc, char *argv[]) {
512  *
513  * // Initailise MoFEM and Petsc
514  * MoFEM::Core::Initialize(&argc, &argv, (char *)0, help);
515  *
516  * try {
517  *
518  * moab::Core mb_instance; // MoAB database
519  * moab::Interface &moab = mb_instance;
520  * MoFEM::Core core(moab); // MOFEM database
521  * MoFEM::CoreInterface &m_field = core;
522  *
523  * CHKERR foo(); // Call function
524  *
525  * }
526  * CATCH_ERRORS;
527  *
528  * return MoFEM::Core::Finalize();
529  *
530  * }
531  *
532  * \endcode
533  *
534  */
535 #define CHKERR MoFEM::ErrorChecker<__LINE__>() <<
536 
537 /**
538  * \brief Check error code of MoAB function and throw MoFEM exception
539  * @param err MoABErrorCode
540  */
541 #define MOAB_THROW(err) \
542  { \
543  if (PetscUnlikely(MB_SUCCESS != (err))) { \
544  std::string error_str = (unsigned)(err) <= (unsigned)MB_FAILURE \
545  ? moab::ErrorCodeStr[err] \
546  : "INVALID ERROR CODE"; \
547  throw MoFEMException(MOFEM_MOAB_ERROR, \
548  ("MOAB error (" + \
549  boost::lexical_cast<std::string>((err)) + ") " + \
550  error_str + " at line " + \
551  boost::lexical_cast<std::string>(__LINE__) + \
552  " : " + std::string(__FILE__)) \
553  .c_str()); \
554  } \
555  }
556 
557 /**
558  * \brief Throw MoFEM exception
559  * @param msg message
560  */
561 #define THROW_MESSAGE(msg) \
562  { \
563  throw MoFEM::MoFEMException( \
564  MOFEM_MOFEMEXCEPTION_THROW, \
565  ("MoFEM error " + boost::lexical_cast<std::string>((msg)) + \
566  " at line " + boost::lexical_cast<std::string>(__LINE__) + " : " + \
567  std::string(__FILE__)) \
568  .c_str()); \
569  }
570 
571 /**
572  * \brief Check error code of MoAB function and throw MoFEM exception
573  * @param err MoABErrorCode
574  * @param msg error message
575  */
576 #define CHK_MOAB_THROW(err, msg) \
577  { \
578  if (PetscUnlikely(static_cast<int>(MB_SUCCESS) != (err))) \
579  { \
580  std::string str; \
581  throw MoFEMException( \
582  MOFEM_MOAB_ERROR, \
583  ("MOAB error (" + boost::lexical_cast<std::string>((err)) + ") " + \
584  boost::lexical_cast<std::string>((msg)) + " at line " + \
585  boost::lexical_cast<std::string>(__LINE__) + " : " + \
586  std::string(__FILE__)) \
587  .c_str()); \
588  } \
589  }
590 
591 /**
592  * \brief Check and throw MoFEM exception
593  * @param err error code
594  * @param msg message
595  */
596 #define CHK_THROW_MESSAGE(err, msg) \
597  { \
598  if (PetscUnlikely((err) != MOFEM_SUCCESS)) \
599  THROW_MESSAGE(msg); \
600  }
601 
602 /**
603  * \brief Convert number to string
604  * @param x number
605  */
606 #define SSTR(x) toString(x)
607 
608 #define TENSOR1_VEC_PTR(VEC) &VEC[0], &VEC[1], &VEC[2]
609 
610 #define SYMMETRIC_TENSOR4_MAT_PTR(MAT) \
611  &MAT(0, 0), &MAT(0, 1), &MAT(0, 2), &MAT(0, 3), &MAT(0, 4), &MAT(0, 5), \
612  &MAT(1, 0), &MAT(1, 1), &MAT(1, 2), &MAT(1, 3), &MAT(1, 4), &MAT(1, 5), \
613  &MAT(2, 0), &MAT(2, 1), &MAT(2, 2), &MAT(2, 3), &MAT(2, 4), &MAT(2, 5), \
614  &MAT(3, 0), &MAT(3, 1), &MAT(3, 2), &MAT(3, 3), &MAT(3, 4), &MAT(3, 5), \
615  &MAT(4, 0), &MAT(4, 1), &MAT(4, 2), &MAT(4, 3), &MAT(4, 4), &MAT(4, 5), \
616  &MAT(5, 0), &MAT(5, 1), &MAT(5, 2), &MAT(5, 3), &MAT(5, 4), &MAT(5, 5)
617 
618 #define TENSOR4_MAT_PTR(MAT) &MAT(0, 0), MAT.size2()
619 
620 #define TENSOR2_MAT_PTR(MAT) \
621  &MAT(0, 0), &MAT(1, 0), &MAT(2, 0), &MAT(3, 0), &MAT(4, 0), &MAT(5, 0), \
622  &MAT(6, 0), &MAT(7, 0), &MAT(8, 0)
623 
624 #define SYMMETRIC_TENSOR2_MAT_PTR(MAT) \
625  &MAT(0, 0), &MAT(0, 1), &MAT(0, 2), &MAT(0, 3), &MAT(0, 4), &MAT(0, 5)
626 
627 #define SYMMETRIC_TENSOR2_VEC_PTR(VEC) \
628  &VEC[0], &VEC[1], &VEC[2], &VEC[3], &VEC[4], &VEC[5]
629 
630 #endif //__DEFINITONS_H__
NOSPACE
@ NOSPACE
Definition: definitions.h:83
CubitBCNames
const static char *const CubitBCNames[]
Names of types of sets and boundary conditions.
Definition: definitions.h:175
DEFAULT_VERBOSITY
@ DEFAULT_VERBOSITY
Definition: definitions.h:207
SIDESET
@ SIDESET
Definition: definitions.h:147
H1
@ H1
continuous field
Definition: definitions.h:85
DEPRECATED
#define DEPRECATED
Definition: definitions.h:17
MOFEM_STD_EXCEPTION_THROW
@ MOFEM_STD_EXCEPTION_THROW
Definition: definitions.h:39
LASTBASE
@ LASTBASE
Definition: definitions.h:69
CARTESIAN
@ CARTESIAN
Definition: definitions.h:115
HVEC0_2
@ HVEC0_2
Definition: definitions.h:198
NOISY
@ NOISY
Definition: definitions.h:211
PRESSURESET
@ PRESSURESET
Definition: definitions.h:152
NOBASE
@ NOBASE
Definition: definitions.h:59
ApproximationBaseNames
const static char *const ApproximationBaseNames[]
Definition: definitions.h:72
L2
@ L2
field with C-1 continuity
Definition: definitions.h:88
HVEC0_1
@ HVEC0_1
Definition: definitions.h:195
VERY_NOISY
@ VERY_NOISY
Definition: definitions.h:212
MOFEM_SUCCESS
@ MOFEM_SUCCESS
Definition: definitions.h:30
HVecFormatting
HVecFormatting
Format in rows of vectorial base functions.
Definition: definitions.h:186
DATA
@ DATA
Definition: definitions.h:123
HVEC0_0
@ HVEC0_0
Definition: definitions.h:192
HVEC1_1
@ HVEC1_1
Definition: definitions.h:196
CoordinateTypes
CoordinateTypes
Coodinate system.
Definition: definitions.h:114
MOFEM_IMPOSSIBLE_CASE
@ MOFEM_IMPOSSIBLE_CASE
Definition: definitions.h:35
HVEC1
@ HVEC1
Definition: definitions.h:186
USER_BASE
@ USER_BASE
user implemented approximation base
Definition: definitions.h:68
UNKNOWNNAME
@ UNKNOWNNAME
Definition: definitions.h:158
ROW
@ ROW
Definition: definitions.h:123
HVEC2_1
@ HVEC2_1
Definition: definitions.h:197
NODESET
@ NODESET
Definition: definitions.h:146
FieldSpace
FieldSpace
approximation spaces
Definition: definitions.h:82
MATERIALSET
@ MATERIALSET
Definition: definitions.h:149
VERBOSE
@ VERBOSE
Definition: definitions.h:209
CoordinateTypesNames
const static char *const CoordinateTypesNames[]
Coordinate system names.
Definition: definitions.h:108
BYALL
@ BYALL
Definition: definitions.h:137
HVEC2_2
@ HVEC2_2
Definition: definitions.h:200
HVEC1_2
@ HVEC1_2
Definition: definitions.h:199
POLAR
@ POLAR
Definition: definitions.h:116
FORCESET
@ FORCESET
Definition: definitions.h:151
MAT_THERMALSET
@ MAT_THERMALSET
block name is "MAT_THERMAL"
Definition: definitions.h:161
VERBOSITY_LEVELS
VERBOSITY_LEVELS
Verbosity levels.
Definition: definitions.h:206
BODYFORCESSET
@ BODYFORCESSET
block name is "BODY_FORCES"
Definition: definitions.h:162
RowColData
RowColData
RowColData.
Definition: definitions.h:123
ACCELERATIONSET
@ ACCELERATIONSET
Definition: definitions.h:154
MAT_ELASTICSET
@ MAT_ELASTICSET
block name is "MAT_ELASTIC"
Definition: definitions.h:159
DISPLACEMENTSET
@ DISPLACEMENTSET
Definition: definitions.h:150
BYROWDATA
@ BYROWDATA
Definition: definitions.h:134
COL
@ COL
Definition: definitions.h:123
SPHERICAL
@ SPHERICAL
Definition: definitions.h:118
LASTSPACE
@ LASTSPACE
FieldSpace in [ 0, LASTSPACE )
Definition: definitions.h:89
INTERFACESET
@ INTERFACESET
Definition: definitions.h:157
MOFEM_NOT_INSTALLED
@ MOFEM_NOT_INSTALLED
Definition: definitions.h:37
HVecDiffFormatting
HVecDiffFormatting
Format in rows of vectorial base gradients of base functions.
Definition: definitions.h:191
MoFEMErrorCodes
MoFEMErrorCodes
Error handling.
Definition: definitions.h:29
AINSWORTH_LOBATTO_BASE
@ AINSWORTH_LOBATTO_BASE
Definition: definitions.h:62
MOFEM_OPERATION_UNSUCCESSFUL
@ MOFEM_OPERATION_UNSUCCESSFUL
Definition: definitions.h:34
BYDATA
@ BYDATA
Definition: definitions.h:133
UNKNOWNSET
@ UNKNOWNSET
Definition: definitions.h:145
MOFEM_MOFEMEXCEPTION_THROW
@ MOFEM_MOFEMEXCEPTION_THROW
Definition: definitions.h:38
MOFEM_NOT_FOUND
@ MOFEM_NOT_FOUND
Definition: definitions.h:33
VELOCITYSET
@ VELOCITYSET
Definition: definitions.h:153
AINSWORTH_BERNSTEIN_BEZIER_BASE
@ AINSWORTH_BERNSTEIN_BEZIER_BASE
Definition: definitions.h:64
BYCOLDATA
@ BYCOLDATA
Definition: definitions.h:135
LASTSET_BC
@ LASTSET_BC
Definition: definitions.h:166
MF_ZERO
@ MF_ZERO
Definition: definitions.h:98
FieldSpaceNames
const static char *const FieldSpaceNames[]
Definition: definitions.h:92
BYCOL
@ BYCOL
Definition: definitions.h:132
CYLINDRICAL
@ CYLINDRICAL
Definition: definitions.h:117
DEMKOWICZ_JACOBI_BASE
@ DEMKOWICZ_JACOBI_BASE
Definition: definitions.h:66
BLOCKSET
@ BLOCKSET
Definition: definitions.h:148
AINSWORTH_LEGENDRE_BASE
@ AINSWORTH_LEGENDRE_BASE
Ainsworth Cole (Legendre) approx. base .
Definition: definitions.h:60
HCURL
@ HCURL
field with continuous tangents
Definition: definitions.h:86
MOFEM_DATA_INCONSISTENCY
@ MOFEM_DATA_INCONSISTENCY
Definition: definitions.h:31
LAST_COORDINATE_SYSTEM
@ LAST_COORDINATE_SYSTEM
Definition: definitions.h:119
TEMPERATURESET
@ TEMPERATURESET
Definition: definitions.h:155
FieldApproximationBase
FieldApproximationBase
approximation base
Definition: definitions.h:58
MoFEMTypes
MoFEMTypes
Those types control how functions respond on arguments, f.e. error handling.
Definition: definitions.h:97
HVEC2_0
@ HVEC2_0
Definition: definitions.h:194
DIRICHLET_BC
@ DIRICHLET_BC
Definition: definitions.h:164
MAT_INTERFSET
@ MAT_INTERFSET
Definition: definitions.h:160
BYROW
@ BYROW
Definition: definitions.h:131
MOFEM_ATOM_TEST_INVALID
@ MOFEM_ATOM_TEST_INVALID
Definition: definitions.h:40
NEUMANN_BC
@ NEUMANN_BC
Definition: definitions.h:165
HEATFLUXSET
@ HEATFLUXSET
Definition: definitions.h:156
MoFEMErrorCodesNames
const static char *const MoFEMErrorCodesNames[]
Definition: definitions.h:44
QUIET
@ QUIET
Definition: definitions.h:208
LASTROWCOLDATA
@ LASTROWCOLDATA
Definition: definitions.h:123
HVEC2
@ HVEC2
Definition: definitions.h:186
MF_NOT_THROW
@ MF_NOT_THROW
Definition: definitions.h:101
MF_EXCL
@ MF_EXCL
Definition: definitions.h:99
ByWhat
ByWhat
Definition: definitions.h:130
MF_EXIST
@ MF_EXIST
Definition: definitions.h:100
HDIV
@ HDIV
field with continuous normal traction
Definition: definitions.h:87
MOFEM_NOT_IMPLEMENTED
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32
MAT_MOISTURESET
@ MAT_MOISTURESET
block name is "MAT_MOISTURE"
Definition: definitions.h:163
MOFEM_MOAB_ERROR
@ MOFEM_MOAB_ERROR
Definition: definitions.h:41
VERY_VERBOSE
@ VERY_VERBOSE
Definition: definitions.h:210
MOFEM_INVALID_DATA
@ MOFEM_INVALID_DATA
Definition: definitions.h:36
macro_is_deprecated_using_deprecated_function
DEPRECATED void macro_is_deprecated_using_deprecated_function()
Is used to indicate that macro is deprecated Do nothing just triggers error at the compilation.
Definition: Core.cpp:11
CubitBC
CubitBC
Types of sets and boundary conditions.
Definition: definitions.h:144
BYROWCOL
@ BYROWCOL
Definition: definitions.h:136
HVEC1_0
@ HVEC1_0
Definition: definitions.h:193
HVEC0
@ HVEC0
Definition: definitions.h:186
NOFIELD
@ NOFIELD
scalar or vector of scalars describe (no true field)
Definition: definitions.h:84