1c4762a1bSJed Brown static char help[] = "Test section ordering for FEM discretizations\n\n"; 2c4762a1bSJed Brown 3c4762a1bSJed Brown #include <petscdmplex.h> 4c4762a1bSJed Brown #include <petscds.h> 5c4762a1bSJed Brown 630602db0SMatthew G. Knepley static PetscErrorCode CreateMesh(MPI_Comm comm, DM *dm) 7c4762a1bSJed Brown { 8c4762a1bSJed Brown PetscFunctionBegin; 9*9566063dSJacob Faibussowitsch PetscCall(DMCreate(comm, dm)); 10*9566063dSJacob Faibussowitsch PetscCall(DMSetType(*dm, DMPLEX)); 11*9566063dSJacob Faibussowitsch PetscCall(DMSetFromOptions(*dm)); 12*9566063dSJacob Faibussowitsch PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view")); 13c4762a1bSJed Brown PetscFunctionReturn(0); 14c4762a1bSJed Brown } 15c4762a1bSJed Brown 1630602db0SMatthew G. Knepley static PetscErrorCode TestLocalDofOrder(DM dm) 17c4762a1bSJed Brown { 18c4762a1bSJed Brown PetscFE fe[3]; 19c4762a1bSJed Brown PetscSection s; 2030602db0SMatthew G. Knepley PetscBool simplex; 21c4762a1bSJed Brown PetscInt dim, Nf, f; 22c4762a1bSJed Brown 23c4762a1bSJed Brown PetscFunctionBegin; 24*9566063dSJacob Faibussowitsch PetscCall(DMGetDimension(dm, &dim)); 25*9566063dSJacob Faibussowitsch PetscCall(DMPlexIsSimplex(dm, &simplex)); 26*9566063dSJacob Faibussowitsch PetscCall(PetscFECreateDefault(PETSC_COMM_SELF, dim, dim, simplex, "field0_", -1, &fe[0])); 27*9566063dSJacob Faibussowitsch PetscCall(PetscFECreateDefault(PETSC_COMM_SELF, dim, 1, simplex, "field1_", -1, &fe[1])); 28*9566063dSJacob Faibussowitsch PetscCall(PetscFECreateDefault(PETSC_COMM_SELF, dim, 1, simplex, "field2_", -1, &fe[2])); 29c4762a1bSJed Brown 30*9566063dSJacob Faibussowitsch PetscCall(DMSetField(dm, 0, NULL, (PetscObject) fe[0])); 31*9566063dSJacob Faibussowitsch PetscCall(DMSetField(dm, 1, NULL, (PetscObject) fe[1])); 32*9566063dSJacob Faibussowitsch PetscCall(DMSetField(dm, 2, NULL, (PetscObject) fe[2])); 33*9566063dSJacob Faibussowitsch PetscCall(DMCreateDS(dm)); 34*9566063dSJacob Faibussowitsch PetscCall(DMGetLocalSection(dm, &s)); 35*9566063dSJacob Faibussowitsch PetscCall(PetscObjectViewFromOptions((PetscObject) s, NULL, "-dof_view")); 36c4762a1bSJed Brown 37*9566063dSJacob Faibussowitsch PetscCall(DMGetNumFields(dm, &Nf)); 38*9566063dSJacob Faibussowitsch for (f = 0; f < Nf; ++f) PetscCall(PetscFEDestroy(&fe[f])); 39c4762a1bSJed Brown PetscFunctionReturn(0); 40c4762a1bSJed Brown } 41c4762a1bSJed Brown 42c4762a1bSJed Brown int main(int argc, char **argv) 43c4762a1bSJed Brown { 44c4762a1bSJed Brown DM dm; 45c4762a1bSJed Brown 46*9566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 47*9566063dSJacob Faibussowitsch PetscCall(CreateMesh(PETSC_COMM_WORLD, &dm)); 48*9566063dSJacob Faibussowitsch PetscCall(TestLocalDofOrder(dm)); 49*9566063dSJacob Faibussowitsch PetscCall(DMDestroy(&dm)); 50*9566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 51b122ec5aSJacob Faibussowitsch return 0; 52c4762a1bSJed Brown } 53c4762a1bSJed Brown 54c4762a1bSJed Brown /*TEST 55c4762a1bSJed Brown 56c4762a1bSJed Brown test: 57c4762a1bSJed Brown suffix: tri_pm 58c4762a1bSJed Brown requires: triangle 5930602db0SMatthew G. Knepley args: -dm_plex_box_faces 1,1 -field0_petscspace_degree 2 -field1_petscspace_degree 1 -field2_petscspace_degree 1 -dm_view -dof_view 60c4762a1bSJed Brown 61c4762a1bSJed Brown test: 62c4762a1bSJed Brown suffix: quad_pm 63c4762a1bSJed Brown requires: 6430602db0SMatthew G. Knepley args: -dm_plex_simplex 0 -dm_plex_box_faces 1,1 -field0_petscspace_degree 2 -field1_petscspace_degree 1 -field2_petscspace_degree 1 -dm_view -dof_view 65c4762a1bSJed Brown 66c4762a1bSJed Brown test: 67c4762a1bSJed Brown suffix: tri_fm 68c4762a1bSJed Brown requires: triangle 6930602db0SMatthew G. Knepley args: -dm_coord_space 0 -dm_plex_box_faces 1,1 -field0_petscspace_degree 2 -field1_petscspace_degree 1 -field2_petscspace_degree 1 -petscsection_point_major 0 -dm_view -dof_view 70c4762a1bSJed Brown 71c4762a1bSJed Brown test: 72c4762a1bSJed Brown suffix: quad_fm 73c4762a1bSJed Brown requires: 7430602db0SMatthew G. Knepley args: -dm_coord_space 0 -dm_plex_simplex 0 -dm_plex_box_faces 1,1 -field0_petscspace_degree 2 -field1_petscspace_degree 1 -field2_petscspace_degree 1 -petscsection_point_major 0 -dm_view -dof_view 75c4762a1bSJed Brown 76c4762a1bSJed Brown TEST*/ 77