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; 95f80ce2aSJacob Faibussowitsch CHKERRQ(DMCreate(comm, dm)); 105f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetType(*dm, DMPLEX)); 115f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetFromOptions(*dm)); 125f80ce2aSJacob Faibussowitsch CHKERRQ(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; 245f80ce2aSJacob Faibussowitsch CHKERRQ(DMGetDimension(dm, &dim)); 255f80ce2aSJacob Faibussowitsch CHKERRQ(DMPlexIsSimplex(dm, &simplex)); 265f80ce2aSJacob Faibussowitsch CHKERRQ(PetscFECreateDefault(PETSC_COMM_SELF, dim, dim, simplex, "field0_", -1, &fe[0])); 275f80ce2aSJacob Faibussowitsch CHKERRQ(PetscFECreateDefault(PETSC_COMM_SELF, dim, 1, simplex, "field1_", -1, &fe[1])); 285f80ce2aSJacob Faibussowitsch CHKERRQ(PetscFECreateDefault(PETSC_COMM_SELF, dim, 1, simplex, "field2_", -1, &fe[2])); 29c4762a1bSJed Brown 305f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetField(dm, 0, NULL, (PetscObject) fe[0])); 315f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetField(dm, 1, NULL, (PetscObject) fe[1])); 325f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetField(dm, 2, NULL, (PetscObject) fe[2])); 335f80ce2aSJacob Faibussowitsch CHKERRQ(DMCreateDS(dm)); 345f80ce2aSJacob Faibussowitsch CHKERRQ(DMGetLocalSection(dm, &s)); 355f80ce2aSJacob Faibussowitsch CHKERRQ(PetscObjectViewFromOptions((PetscObject) s, NULL, "-dof_view")); 36c4762a1bSJed Brown 375f80ce2aSJacob Faibussowitsch CHKERRQ(DMGetNumFields(dm, &Nf)); 385f80ce2aSJacob Faibussowitsch for (f = 0; f < Nf; ++f) CHKERRQ(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*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscInitialize(&argc, &argv, NULL, help)); 475f80ce2aSJacob Faibussowitsch CHKERRQ(CreateMesh(PETSC_COMM_WORLD, &dm)); 485f80ce2aSJacob Faibussowitsch CHKERRQ(TestLocalDofOrder(dm)); 495f80ce2aSJacob Faibussowitsch CHKERRQ(DMDestroy(&dm)); 50*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscFinalize()); 51*b122ec5aSJacob 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