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