Actual source code: ex6.c

petsc-3.11.1 2019-04-12
Report Typos and Errors
  1: static char help[] = "Spot test DMStag->DMDA routines in 3d\n\n";
  2:  #include <petscdm.h>
  3:  #include <petscdmstag.h>

  5: int main(int argc,char **argv)
  6: {
  7:   PetscErrorCode  ierr;
  8:   DM              dm;
  9:   Vec             vec;

 11:   PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr;
 12:   DMStagCreate3d(PETSC_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,4,4,4,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,3,3,3,3,DMSTAG_STENCIL_STAR,1,NULL,NULL,NULL,&dm);
 13:   DMSetFromOptions(dm);
 14:   DMSetUp(dm);
 15:   DMStagSetUniformCoordinatesProduct(dm,0.0,10.0,0.0,10.0,0.0,10.0);

 17:   DMCreateGlobalVector(dm,&vec);
 18:   VecSet(vec,1.234);

 20:   /* All element values */
 21:   {
 22:     DM da;
 23:     Vec vecda;
 24:     DMStagVecSplitToDMDA(dm,vec,DMSTAG_ELEMENT,-3,&da,&vecda);
 25:     DMDestroy(&da);
 26:     VecDestroy(&vecda);
 27:   }

 29:   /* Pad element values */
 30:   {
 31:     DM da;
 32:     Vec vecda;
 33:     DMStagVecSplitToDMDA(dm,vec,DMSTAG_ELEMENT,-5,&da,&vecda);
 34:     DMDestroy(&da);
 35:     VecDestroy(&vecda);
 36:   }

 38:   /* 2 element values */
 39:   {
 40:     DM da;
 41:     Vec vecda;
 42:     DMStagVecSplitToDMDA(dm,vec,DMSTAG_ELEMENT,-2,&da,&vecda);
 43:     DMDestroy(&da);
 44:     VecDestroy(&vecda);
 45:   }

 47:   /* One corner value */
 48:   {
 49:     DM da;
 50:     Vec vecda;
 51:     DMStagVecSplitToDMDA(dm,vec,DMSTAG_FRONT_DOWN_LEFT,2,&da,&vecda);
 52:     DMDestroy(&da);
 53:     VecDestroy(&vecda);
 54:   }

 56:   /* One edge value */
 57:   {
 58:     DM da;
 59:     Vec vecda;
 60:     DMStagVecSplitToDMDA(dm,vec,DMSTAG_BACK_RIGHT,1,&da,&vecda);
 61:     DMDestroy(&da);
 62:     VecDestroy(&vecda);
 63:   }

 65:   /* One face value */
 66:   {
 67:     DM da;
 68:     Vec vecda;
 69:     DMStagVecSplitToDMDA(dm,vec,DMSTAG_DOWN,0,&da,&vecda);
 70:     DMDestroy(&da);
 71:     VecDestroy(&vecda);
 72:   }

 74:   VecDestroy(&vec);
 75:   DMDestroy(&dm);
 76:   PetscFinalize();
 77:   return ierr;
 78: }

 80: /*TEST

 82:    test:
 83:       suffix: 1
 84:       nsize: 12
 85:       args: -stag_ranks_x 2 -stag_ranks_y 3 -stag_ranks_z 2

 87: TEST*/