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: }