xref: /petsc/src/dm/impls/plex/adaptors/mmgcommon.h (revision b3377c29d6b37e63a50383824efed1206340479f)
15f80ce2aSJacob Faibussowitsch #ifndef PETSC_DM_PLEX_MMGCOMMON_H
25f80ce2aSJacob Faibussowitsch #define PETSC_DM_PLEX_MMGCOMMON_H
35f80ce2aSJacob Faibussowitsch 
45f80ce2aSJacob Faibussowitsch #include <petsc/private/dmpleximpl.h>
55f80ce2aSJacob Faibussowitsch 
6*b3377c29SStefano Zampini #define PetscCallMMG_Private(ret, name, ...) \
79371c9d4SSatish Balay   do { \
8*b3377c29SStefano Zampini     PetscCall(PetscFPTrapPush(PETSC_FP_TRAP_OFF)); \
9*b3377c29SStefano Zampini     PetscStackPushExternal(PetscStringize(name)); \
10*b3377c29SStefano Zampini     int PETSC_UNUSED mmg_ierr_ = name(__VA_ARGS__); \
115f80ce2aSJacob Faibussowitsch     PetscStackPop; \
12*b3377c29SStefano Zampini     PetscCall(PetscFPTrapPop()); \
135f80ce2aSJacob Faibussowitsch     /* PetscCheck(mmg_ierr_ == (ret),PETSC_COMM_SELF,PETSC_ERR_LIB,"Error calling %s: error code %d",PetscStringize(__VA_ARGS__),mmg_ierr_); */ \
145f80ce2aSJacob Faibussowitsch   } while (0)
155f80ce2aSJacob Faibussowitsch 
165f80ce2aSJacob Faibussowitsch // MMG sometimes returns 1, sometimes 0 when an error has occurred
17*b3377c29SStefano Zampini #define PetscCallMMG(name, ...)             PetscCallMMG_Private(MMG5_SUCCESS, name, __VA_ARGS__)
18*b3377c29SStefano Zampini #define PetscCallMMG_NONSTANDARD(name, ...) PetscCallMMG_Private(1, name, __VA_ARGS__)
195f80ce2aSJacob Faibussowitsch #endif // PETSC_DM_PLEX_MMGCOMMON_H
20