xref: /petsc/src/dm/impls/plex/tests/ex37.c (revision 4e278199b78715991f5c71ebbd945c1489263e6c)
1 static const char help[] = "Test of EGADSLite CAD functionality";
2 
3 #include <petscdmplex.h>
4 
5 typedef struct {
6   char filename[PETSC_MAX_PATH_LEN];
7 } AppCtx;
8 
9 static PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
10 {
11   PetscErrorCode ierr;
12 
13   PetscFunctionBeginUser;
14   options->filename[0] = '\0';
15 
16   ierr = PetscOptionsBegin(comm, "", "EGADSPlex Problem Options", "EGADSLite");CHKERRQ(ierr);
17   ierr = PetscOptionsString("-filename", "The EGADSLite file", "ex9.c", options->filename, options->filename, sizeof(options->filename), NULL);CHKERRQ(ierr);
18   ierr = PetscOptionsEnd();
19   PetscFunctionReturn(0);
20 }
21 
22 int main(int argc, char *argv[])
23 {
24   DM             dm;
25   DMLabel        bodyLabel, faceLabel, edgeLabel;
26   AppCtx         ctx;
27   MPI_Comm       comm;
28   PetscErrorCode ierr;
29 
30   ierr = PetscInitialize(&argc, &argv, NULL, help); if (ierr) return ierr;
31   comm = PETSC_COMM_WORLD;
32   ierr = ProcessOptions(comm, &ctx);CHKERRQ(ierr);
33   ierr = DMPlexCreateFromFile(comm, ctx.filename, PETSC_TRUE, &dm);CHKERRQ(ierr);
34 
35   ierr = DMGetLabel(dm, "EGADS Body ID", &bodyLabel);CHKERRQ(ierr);
36   ierr = DMGetLabel(dm, "EGADS Face ID", &faceLabel);CHKERRQ(ierr);
37   ierr = DMGetLabel(dm, "EGADS Edge ID", &edgeLabel);CHKERRQ(ierr);
38   ierr = DMLabelView(bodyLabel, PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
39   ierr = DMLabelView(faceLabel, PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
40   ierr = DMLabelView(edgeLabel, PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
41 
42   ierr = DMSetFromOptions(dm);CHKERRQ(ierr);
43   ierr = DMViewFromOptions(dm, NULL, "-dm_view");CHKERRQ(ierr);
44   ierr = DMDestroy(&dm);CHKERRQ(ierr);
45   ierr = PetscFinalize();
46   return ierr;
47 }
48 
49 /*TEST
50 
51   build:
52     requires: egads
53 
54   test:
55     suffix: sphere_0
56     filter: sed "s/DM_[0-9a-zA-Z]*_0/DM__0/g"
57     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/unit_sphere.egadslite -dm_refine 1 -dm_view -dm_plex_check_all -dm_plex_egads_print_model
58 
59   test:
60     suffix: nozzle_0
61     filter: sed "s/DM_[0-9a-zA-Z]*_0/DM__0/g"
62     args: -filename ${wPETSC_DIR}/share/petsc/datafiles/meshes/nozzle.egadslite -dm_refine 1 -dm_view -dm_plex_check_all -dm_plex_egads_print_model
63 
64 TEST*/
65