xref: /petsc/src/dm/impls/plex/plexcgns.c (revision 1cc06b555e92f8ec64db10330b8bbd830e5bc876)
1e1b39ce3SMatthew G. Knepley #define PETSCDM_DLL
2af0996ceSBarry Smith #include <petsc/private/dmpleximpl.h> /*I   "petscdmplex.h"   I*/
3e1b39ce3SMatthew G. Knepley 
444cd5272SMichael Lange /*@C
5a1cb98faSBarry Smith   DMPlexCreateCGNS - Create a `DMPLEX` mesh from a CGNS file.
644cd5272SMichael Lange 
7d083f849SBarry Smith   Collective
844cd5272SMichael Lange 
944cd5272SMichael Lange   Input Parameters:
1044cd5272SMichael Lange + comm  - The MPI communicator
1144cd5272SMichael Lange . filename - The name of the CGNS file
1244cd5272SMichael Lange - interpolate - Create faces and edges in the mesh
1344cd5272SMichael Lange 
1444cd5272SMichael Lange   Output Parameter:
15a1cb98faSBarry Smith . dm  - The `DM` object representing the mesh
1644cd5272SMichael Lange 
1744cd5272SMichael Lange   Level: beginner
1844cd5272SMichael Lange 
19a1cb98faSBarry Smith   Note:
20a1cb98faSBarry Smith   https://cgns.github.io
21a1cb98faSBarry Smith 
22*1cc06b55SBarry Smith .seealso: [](ch_unstructured), `DM`, `DMPLEX`, `DMPlexCreate()`, `DMPlexCreateCGNS()`, `DMPlexCreateExodus()`
2344cd5272SMichael Lange @*/
24d71ae5a4SJacob Faibussowitsch PetscErrorCode DMPlexCreateCGNSFromFile(MPI_Comm comm, const char filename[], PetscBool interpolate, DM *dm)
25d71ae5a4SJacob Faibussowitsch {
2644cd5272SMichael Lange   PetscFunctionBegin;
2744cd5272SMichael Lange   PetscValidCharPointer(filename, 2);
2844cd5272SMichael Lange #if defined(PETSC_HAVE_CGNS)
295f34f2dcSJed Brown   PetscCall(DMPlexCreateCGNSFromFile_Internal(comm, filename, interpolate, dm));
3044cd5272SMichael Lange #else
3144cd5272SMichael Lange   SETERRQ(comm, PETSC_ERR_SUP, "Loading meshes requires CGNS support. Reconfigure using --with-cgns-dir");
3244cd5272SMichael Lange #endif
333ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3444cd5272SMichael Lange }
3544cd5272SMichael Lange 
36e1b39ce3SMatthew G. Knepley /*@
37a1cb98faSBarry Smith   DMPlexCreateCGNS - Create a `DMPLEX` mesh from a CGNS file ID.
38e1b39ce3SMatthew G. Knepley 
39d083f849SBarry Smith   Collective
40e1b39ce3SMatthew G. Knepley 
41e1b39ce3SMatthew G. Knepley   Input Parameters:
42e1b39ce3SMatthew G. Knepley + comm  - The MPI communicator
43e1b39ce3SMatthew G. Knepley . cgid - The CG id associated with a file and obtained using cg_open
44e1b39ce3SMatthew G. Knepley - interpolate - Create faces and edges in the mesh
45e1b39ce3SMatthew G. Knepley 
46e1b39ce3SMatthew G. Knepley   Output Parameter:
47a1cb98faSBarry Smith . dm  - The `DM` object representing the mesh
48e1b39ce3SMatthew G. Knepley 
49e1b39ce3SMatthew G. Knepley   Level: beginner
50e1b39ce3SMatthew G. Knepley 
51a1cb98faSBarry Smith   Note:
52a1cb98faSBarry Smith   https://cgns.github.io
53a1cb98faSBarry Smith 
54*1cc06b55SBarry Smith .seealso: [](ch_unstructured), `DM`, `DMPLEX`, `DMPlexCreate()`, `DMPlexCreateExodus()`
55e1b39ce3SMatthew G. Knepley @*/
56d71ae5a4SJacob Faibussowitsch PetscErrorCode DMPlexCreateCGNS(MPI_Comm comm, PetscInt cgid, PetscBool interpolate, DM *dm)
57d71ae5a4SJacob Faibussowitsch {
58e1b39ce3SMatthew G. Knepley   PetscFunctionBegin;
59e1b39ce3SMatthew G. Knepley #if defined(PETSC_HAVE_CGNS)
605f34f2dcSJed Brown   PetscCall(DMPlexCreateCGNS_Internal(comm, cgid, interpolate, dm));
61e1b39ce3SMatthew G. Knepley #else
625f34f2dcSJed Brown   SETERRQ(comm, PETSC_ERR_SUP, "Loading meshes requires CGNS support. Reconfigure using --download-cgns");
63e1b39ce3SMatthew G. Knepley #endif
643ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
65e1b39ce3SMatthew G. Knepley }
66