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