Actual source code: plexcgns.c

  1: #define PETSCDM_DLL
  2: #include <petsc/private/dmpleximpl.h>

  4: /*@C
  5:   DMPlexCreateCGNSFromFile - Create a `DMPLEX` mesh from a CGNS file.

  7:   Collective

  9:   Input Parameters:
 10: + comm        - The MPI communicator
 11: . filename    - The name of the CGNS file
 12: - interpolate - Create faces and edges in the mesh

 14:   Output Parameter:
 15: . dm - The `DM` object representing the mesh

 17:   Level: beginner

 19:   Note:
 20:   https://cgns.github.io

 22: .seealso: [](ch_unstructured), `DM`, `DMPLEX`, `DMPlexCreate()`, `DMPlexCreateCGNS()`, `DMPlexCreateExodus()`
 23: @*/
 24: PetscErrorCode DMPlexCreateCGNSFromFile(MPI_Comm comm, const char filename[], PetscBool interpolate, DM *dm)
 25: {
 26:   PetscFunctionBegin;
 27:   PetscAssertPointer(filename, 2);
 28: #if defined(PETSC_HAVE_CGNS)
 29:   PetscCall(DMPlexCreateCGNSFromFile_Internal(comm, filename, interpolate, dm));
 30: #else
 31:   SETERRQ(comm, PETSC_ERR_SUP, "Loading meshes requires CGNS support. Reconfigure using --with-cgns-dir");
 32: #endif
 33:   PetscFunctionReturn(PETSC_SUCCESS);
 34: }

 36: /*@
 37:   DMPlexCreateCGNS - Create a `DMPLEX` mesh from a CGNS file ID.

 39:   Collective

 41:   Input Parameters:
 42: + comm        - The MPI communicator
 43: . cgid        - The CG id associated with a file and obtained using cg_open
 44: - interpolate - Create faces and edges in the mesh

 46:   Output Parameter:
 47: . dm - The `DM` object representing the mesh

 49:   Level: beginner

 51:   Note:
 52:   https://cgns.github.io

 54: .seealso: [](ch_unstructured), `DM`, `DMPLEX`, `DMPlexCreate()`, `DMPlexCreateExodus()`
 55: @*/
 56: PetscErrorCode DMPlexCreateCGNS(MPI_Comm comm, PetscInt cgid, PetscBool interpolate, DM *dm)
 57: {
 58:   PetscFunctionBegin;
 59: #if defined(PETSC_HAVE_CGNS)
 60:   {
 61:     PetscBool use_parallel_viewer = PETSC_FALSE;

 63:     PetscCall(PetscOptionsGetBool(NULL, NULL, "-dm_plex_cgns_parallel", &use_parallel_viewer, NULL));
 64:     if (use_parallel_viewer) PetscCall(DMPlexCreateCGNS_Internal_Parallel(comm, cgid, interpolate, dm));
 65:     else PetscCall(DMPlexCreateCGNS_Internal_Serial(comm, cgid, interpolate, dm));
 66:   }
 67: #else
 68:   SETERRQ(comm, PETSC_ERR_SUP, "Loading meshes requires CGNS support. Reconfigure using --download-cgns");
 69: #endif
 70:   PetscFunctionReturn(PETSC_SUCCESS);
 71: }