Actual source code: plexcgns.c

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

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

      6:   Collective

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

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

     16:   Level: beginner

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

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

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

     38:   Collective

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

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

     48:   Level: beginner

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

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

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