Actual source code: ex14.c

  1: /*$Id: ex14.c,v 1.17 2001/08/07 03:04:42 balay Exp $*/

  3: static char help[] = "Tests saving DA vectors to files.nn";

 5:  #include petscda.h
 6:  #include petscsys.h

  8: int main(int argc,char **argv)
  9: {
 10:   int         rank,M = 10,N = 8,m = PETSC_DECIDE,n = PETSC_DECIDE,ierr;
 11:   int         dof = 1;
 12:   DA          da;
 13:   Vec         local,global,natural;
 14:   PetscScalar value;
 15:   PetscViewer bviewer;

 17:   PetscInitialize(&argc,&argv,(char*)0,help);

 19:   /* Read options */
 20:   PetscOptionsGetInt(PETSC_NULL,"-M",&M,PETSC_NULL);
 21:   PetscOptionsGetInt(PETSC_NULL,"-N",&N,PETSC_NULL);
 22:   PetscOptionsGetInt(PETSC_NULL,"-m",&m,PETSC_NULL);
 23:   PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);
 24:   PetscOptionsGetInt(PETSC_NULL,"-dof",&dof,PETSC_NULL);

 26:   /* Create distributed array and get vectors */
 27:   DACreate2d(PETSC_COMM_WORLD,DA_NONPERIODIC,DA_STENCIL_BOX,
 28:                     M,N,m,n,dof,1,PETSC_NULL,PETSC_NULL,&da);
 29:   DACreateGlobalVector(da,&global);
 30:   DACreateLocalVector(da,&local);

 32:   value = -3.0;
 33:   VecSet(&value,global);
 34:   DAGlobalToLocalBegin(da,global,INSERT_VALUES,local);
 35:   DAGlobalToLocalEnd(da,global,INSERT_VALUES,local);

 37:   MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
 38:   value = rank+1;
 39:   VecScale(&value,local);
 40:   DALocalToGlobal(da,local,ADD_VALUES,global);

 42:   DACreateNaturalVector(da,&natural);
 43:   DAGlobalToNaturalBegin(da,global,INSERT_VALUES,natural);
 44:   DAGlobalToNaturalEnd(da,global,INSERT_VALUES,natural);

 46:   DASetFieldName(da,0,"First field");
 47:   VecView(global,PETSC_VIEWER_DRAW_WORLD);

 49:   PetscViewerBinaryOpen(PETSC_COMM_WORLD,"daoutput",PETSC_BINARY_CREATE,&bviewer);
 50:   DAView(da,bviewer);
 51:   VecView(global,bviewer);
 52:   PetscViewerDestroy(bviewer);

 54:   /* Free memory */
 55:   VecDestroy(local);
 56:   VecDestroy(global);
 57:   VecDestroy(natural);
 58:   DADestroy(da);
 59:   PetscFinalize();
 60:   return 0;
 61: }
 62: