Actual source code: ex43.c
1: static char help[] = "Tests DMPlexCreateBoxMesh().\n\n";
3: #include <petscdmplex.h>
5: typedef struct {
6: PetscBool sparseLocalize; /* Only localize coordinates where necessary */
7: } AppCtx;
9: PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
10: {
11: PetscFunctionBegin;
12: options->sparseLocalize = PETSC_TRUE;
13: PetscOptionsBegin(comm, "", "DMPlexCreateBoxMesh() Test Options", "DMPLEX");
14: PetscCall(PetscOptionsBool("-sparse_localize", "Only localize coordinates where necessary", "ex43.c", options->sparseLocalize, &options->sparseLocalize, NULL));
15: PetscOptionsEnd();
16: PetscFunctionReturn(PETSC_SUCCESS);
17: }
19: int main(int argc, char **argv)
20: {
21: DM dm;
22: const PetscInt faces[2] = {3, 1};
23: DMBoundaryType periodicity[2] = {DM_BOUNDARY_PERIODIC, DM_BOUNDARY_NONE};
24: AppCtx user;
26: PetscFunctionBeginUser;
27: PetscCall(PetscInitialize(&argc, &argv, NULL, help));
28: PetscCall(ProcessOptions(PETSC_COMM_WORLD, &user));
29: PetscCall(DMPlexCreateBoxMesh(PETSC_COMM_WORLD, 2, PETSC_FALSE, faces, NULL, NULL, periodicity, PETSC_TRUE, 0, user.sparseLocalize, &dm));
30: PetscCall(PetscObjectSetName((PetscObject)dm, "ExampleBoxMesh"));
31: PetscCall(DMViewFromOptions(dm, NULL, "-dm_view"));
32: PetscCall(DMDestroy(&dm));
33: PetscCall(PetscFinalize());
34: return 0;
35: }
37: /*TEST
39: test:
40: suffix: 0
41: args: -sparse_localize 0 -dm_view ascii::ascii_info_detail
43: test:
44: suffix: 1
45: args: -sparse_localize 1 -dm_view ascii::ascii_info_detail
47: TEST*/