xref: /petsc/include/petscdmplexegads.h (revision 0ff9d02ecf1627951ed050a8344155223c6ca4ea)
15552b385SBrandon #pragma once
25552b385SBrandon 
35552b385SBrandon #include <petscdmplex.h>
45552b385SBrandon 
5*1850900dSBarry Smith /* MANSEC = DM */
6*1850900dSBarry Smith /* SUBMANSEC = DMPlex */
7*1850900dSBarry Smith 
85552b385SBrandon #if !defined(PETSC_HAVE_EGADS)
95552b385SBrandon   #error "PETSc not configured for EGADS; reconfigrue --with-egads or --download-egads"
105552b385SBrandon #endif
115552b385SBrandon 
125552b385SBrandon /* Declarations below provide an interface to the EGADS/EGADSlite libraries, that can be automatically installed
135552b385SBrandon    by PETSc. These functions enable the creation, interrogation, and manipulation of CAD geometries attached to
145552b385SBrandon    a DMPlex. */
155552b385SBrandon #include <egads.h>
165552b385SBrandon #include <egads_lite.h>
175552b385SBrandon typedef ego PetscGeom;
185552b385SBrandon 
195552b385SBrandon #define PetscCallEGADS(func, args) \
205552b385SBrandon   do { \
215552b385SBrandon     int _status; \
225552b385SBrandon     PetscStackPushExternal(#func); \
235552b385SBrandon     _status = func args; \
245552b385SBrandon     PetscStackPop; \
255552b385SBrandon     PetscCheck(_status >= 0, PETSC_COMM_SELF, PETSC_ERR_LIB, "Error in EGADS call %s() Status %d", #func, (int)_status); \
265552b385SBrandon   } while (0)
275552b385SBrandon 
285552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGeomDataAndGrads(DM, PetscBool);
295552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexModifyGeomModel(DM, MPI_Comm, PetscScalar[], PetscScalar[], PetscBool, PetscBool, const char[]);
305552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexInflateToGeomModelUseXYZ(DM);
315552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelTUV(DM);
325552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexInflateToGeomModelUseTUV(DM);
335552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelBodies(DM, PetscGeom **, PetscInt *);
345552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelBodyShells(DM, PetscGeom, PetscGeom **, PetscInt *);
355552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelBodyFaces(DM, PetscGeom, PetscGeom **, PetscInt *);
365552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelBodyLoops(DM, PetscGeom, PetscGeom **, PetscInt *);
375552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelBodyEdges(DM, PetscGeom, PetscGeom **, PetscInt *);
385552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelBodyNodes(DM, PetscGeom, PetscGeom **, PetscInt *);
395552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelShellFaces(DM, PetscGeom, PetscGeom, PetscGeom **, PetscInt *);
405552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelFaceLoops(DM, PetscGeom, PetscGeom, PetscGeom **, PetscInt *);
415552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelFaceEdges(DM, PetscGeom, PetscGeom, PetscGeom **, PetscInt *);
425552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomModelEdgeNodes(DM, PetscGeom, PetscGeom, PetscGeom **, PetscInt *);
435552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomBodyMassProperties(DM, PetscGeom, PetscScalar *, PetscScalar *, PetscScalar **, PetscInt *, PetscScalar **, PetscInt *);
445552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexRestoreGeomBodyMassProperties(DM, PetscGeom, PetscScalar *, PetscScalar *, PetscScalar **, PetscInt *, PetscScalar **, PetscInt *);
455552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomID(DM, PetscGeom, PetscGeom, PetscInt *);
465552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomObject(DM, PetscGeom, PetscInt, PetscInt, PetscGeom *);
475552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomFaceNumOfControlPoints(DM, PetscGeom, PetscInt *);
485552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexFreeGeomObject(DM, PetscGeom *);
495552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomCntrlPntAndWeightData(DM, PetscHMapI *, PetscInt *, PetscScalar **, PetscInt *, Mat *, PetscHMapI *, PetscInt *, PetscScalar **);
505552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexRestoreGeomCntrlPntAndWeightData(DM, PetscHMapI *, PetscInt *, PetscScalar **, PetscInt *, Mat *, PetscHMapI *, PetscInt *, PetscScalar **);
515552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomGradData(DM, PetscHMapI *, Mat *, PetscInt *, PetscScalar **, PetscScalar **, PetscInt *, PetscScalar **, PetscScalar **);
525552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexRestoreGeomGradData(DM, PetscHMapI *, Mat *, PetscInt *, PetscScalar **, PetscScalar **, PetscInt *, PetscScalar **, PetscScalar **);
535552b385SBrandon PETSC_EXTERN PetscErrorCode DMPlexGetGeomCntrlPntMaps(DM, PetscInt *, PetscInt **, PetscInt **, PetscInt **, PetscInt **, PetscInt **, PetscInt **);
54