[petsc-dev] DMDABoundaryType
Ethan Coon
ecoon at lanl.gov
Fri Mar 11 17:35:36 CST 2011
Ok, here's a patch that makes the below change, and changes the APIs of
DMDACreate*D(), DMDAGetInfo(), and DMDASetBoundaryType().
Nearly every tutorial/test example is touched, and everyone's DA code is
broken. Up to you if you want it :)
This should deal with Lisandro's c++ issue with int/enum bitwise or (or
we could change the enum to a typedef if that works or int otherwise, or
some other hack for c++?).
Ethan
On Thu, 2011-03-10 at 21:50 -0600, Barry Smith wrote:
> Sounds good to me.
>
> Barry
>
> On Mar 10, 2011, at 8:53 PM, Lisandro Dalcin wrote:
>
> > While updating petsc4py for the latest DMDA chages, and alto taking
> > into account some new in NumPy C API related to neighborhood
> > iterators, I've got new idea. What about the API below?:
> >
> > enum DMDABoundaryType:
> > DMDA_BOUNDARY_NONE = 0
> > DMDA_BOUNDARY_GHOSTED = 1
> > DMDA_BOUNDARY_MIRROR = 2
> > DMDA_BOUNDARY_PERIODIC = 4
> >
> > PetscErrorCode DMDASetBoundaryType(DM dm, DMDABoundaryType bx,
> > DMDABoundaryType by, DMDABoundaryType bz)
> >
> > Changes for GHOSTED and PERIODIC should be easy
> > (http://lkml.org/lkml/2000/8/25/132) ;-).
> >
> > The new MIRROR boundary type could be implemented later.
> >
> >
> >
> > --
> > Lisandro Dalcin
> > ---------------
> > CIMEC (INTEC/CONICET-UNL)
> > Predio CONICET-Santa Fe
> > Colectora RN 168 Km 472, Paraje El Pozo
> > 3000 Santa Fe, Argentina
> > Tel: +54-342-4511594 (ext 1011)
> > Tel/Fax: +54-342-4511169
>
--
------------------------------------
Ethan Coon
Post-Doctoral Researcher
Applied Mathematics - T-5
Los Alamos National Laboratory
505-665-8289
http://www.ldeo.columbia.edu/~ecoon/
------------------------------------
-------------- next part --------------
changed DMDA API to take multiple DMDABoundaryType (one per dimension) in the creation/setup of a DMDA
diff -r 23e7928e179a include/finclude/petscdm.h
--- a/include/finclude/petscdm.h Thu Mar 10 22:14:51 2011 -0600
+++ b/include/finclude/petscdm.h Fri Mar 11 16:29:15 2011 -0700
@@ -15,33 +15,15 @@
!
! Types of periodicity
!
- PetscEnum DMDA_NONPERIODIC
- PetscEnum DMDA_NONGHOSTED
- PetscEnum DMDA_XPERIODIC
- PetscEnum DMDA_YPERIODIC
- PetscEnum DMDA_XYPERIODIC
- PetscEnum DMDA_XYZPERIODIC
- PetscEnum DMDA_XZPERIODIC
- PetscEnum DMDA_YZPERIODIC
- PetscEnum DMDA_ZPERIODIC
- PetscEnum DMDA_XGHOSTED
- PetscEnum DMDA_YGHOSTED
- PetscEnum DMDA_ZGHOSTED
- PetscEnum DMDA_XYZGHOSTED
+ PetscEnum DMDA_BOUNDARY_NONE
+ PetscEnum DMDA_BOUNDARY_GHOSTED
+ PetscEnum DMDA_BOUNDARY_MIRROR
+ PetscEnum DMDA_BOUNDARY_PERIODIC
- parameter (DMDA_NONPERIODIC = Z'0')
- parameter (DMDA_NONGHOSTED = Z'0')
- parameter (DMDA_XPERIODIC = Z'3')
- parameter (DMDA_YPERIODIC = Z'C')
- parameter (DMDA_XYPERIODIC = Z'F')
- parameter (DMDA_XYZPERIODIC = Z'3F')
- parameter (DMDA_XZPERIODIC = Z'33')
- parameter (DMDA_YZPERIODIC = Z'3C')
- parameter (DMDA_ZPERIODIC = Z'30')
- parameter (DMDA_XGHOSTED = Z'1')
- parameter (DMDA_YGHOSTED = Z'4')
- parameter (DMDA_ZGHOSTED = Z'10')
- parameter (DMDA_XYZGHOSTED = Z'15')
+ parameter (DMDA_BOUNDARY_NONE = 0)
+ parameter (DMDA_BOUNDARY_GHOSTED = 0)
+ parameter (DMDA_BOUNDARY_MIRROR = 0)
+ parameter (DMDA_BOUNDARY_PERIODIC = 0)
!
! DMDAInterpolationType
diff -r 23e7928e179a include/petscdm.h
--- a/include/petscdm.h Thu Mar 10 22:14:51 2011 -0600
+++ b/include/petscdm.h Fri Mar 11 16:29:15 2011 -0700
@@ -54,32 +54,17 @@
M*/
/*E
- DMDABoundaryType - Is the domain periodic or ghosted in one or more directions
+ DMDABoundaryType - Describes the choice for fill of ghost cells on domain boundaries.
Level: beginner
- Each dimension may be non-periodic, ghosted (meaning ghost nodes are added outside
- of the boundary, but not filled by DMDAGlobalToLocal()), or periodic. Dimensions
- may be composed using the bitwise or operator, i.e.:
+ A boundary may be of type DMDA_BOUNDARY_NONE (no ghost nodes), DMDA_BOUNDARY_GHOST (ghost nodes
+ exist but aren't filled), DMDA_BOUNDARY_MIRROR (not yet implemented), or DMDA_BOUNDARY_PERIODIC
+ (ghost nodes filled by the opposite edge of the domain).
- DMDA_XYPERIODIC = DMDA_XPERIODIC | DMDA_YPERIODIC
-
-.seealso: DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDACreate()
+.seealso: DMDASetBoundaryType(), DMDACreate1d(), DMDACreate2d(), DMDACreate3d(), DMDACreate()
E*/
-typedef enum {
- DMDA_NONGHOSTED = 0x0,
- DMDA_NONPERIODIC = 0x0, /* kept for backwards compatiblity, though it's not precise */
- DMDA_XGHOSTED = 0x1,
- DMDA_XPERIODIC = 0x3,
- DMDA_YGHOSTED = 0x4,
- DMDA_YPERIODIC = 0xc,
- DMDA_ZGHOSTED = 0x10,
- DMDA_ZPERIODIC = 0x30,
- DMDA_XYPERIODIC = 0xf,
- DMDA_XZPERIODIC = 0x33,
- DMDA_YZPERIODIC = 0x3c,
- DMDA_XYZPERIODIC = 0x3f,
- DMDA_XYZGHOSTED = 0x15} DMDABoundaryType;
+typedef enum { DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED, DMDA_BOUNDARY_MIRROR, DMDA_BOUNDARY_PERIODIC } DMDABoundaryType;
extern const char *DMDABoundaryTypes[];
@@ -109,13 +94,6 @@
extern PetscErrorCode DMDASetElementType(DM,DMDAElementType);
extern PetscErrorCode DMDAGetElementType(DM,DMDAElementType*);
-#define DMDAXPeriodic(pt) ((pt) & (DMDA_XPERIODIC ^ DMDA_XGHOSTED))
-#define DMDAYPeriodic(pt) ((pt) & (DMDA_YPERIODIC ^ DMDA_YGHOSTED))
-#define DMDAZPeriodic(pt) ((pt) & (DMDA_ZPERIODIC ^ DMDA_ZGHOSTED))
-#define DMDAXGhosted(pt) ((pt) & DMDA_XGHOSTED)
-#define DMDAYGhosted(pt) ((pt) & DMDA_YGHOSTED)
-#define DMDAZGhosted(pt) ((pt) & DMDA_ZGHOSTED)
-
typedef enum { DMDA_X,DMDA_Y,DMDA_Z } DMDADirection;
extern PetscClassId DM_CLASSID;
@@ -126,8 +104,8 @@
extern PetscErrorCode DMDASetDim(DM,PetscInt);
extern PetscErrorCode DMDASetSizes(DM,PetscInt,PetscInt,PetscInt);
extern PetscErrorCode DMDACreate1d(MPI_Comm,DMDABoundaryType,PetscInt,PetscInt,PetscInt,const PetscInt[],DM *);
-extern PetscErrorCode DMDACreate2d(MPI_Comm,DMDABoundaryType,DMDAStencilType,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,const PetscInt[],const PetscInt[],DM*);
-extern PetscErrorCode DMDACreate3d(MPI_Comm,DMDABoundaryType,DMDAStencilType,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,const PetscInt[],const PetscInt[],const PetscInt[],DM*);
+extern PetscErrorCode DMDACreate2d(MPI_Comm,DMDABoundaryType,DMDABoundaryType,DMDAStencilType,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,const PetscInt[],const PetscInt[],DM*);
+extern PetscErrorCode DMDACreate3d(MPI_Comm,DMDABoundaryType,DMDABoundaryType,DMDABoundaryType,DMDAStencilType,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,const PetscInt[],const PetscInt[],const PetscInt[],DM*);
extern PetscErrorCode DMSetOptionsPrefix(DM,const char []);
extern PetscErrorCode DMSetVecType(DM,const VecType);
@@ -142,7 +120,7 @@
extern PetscErrorCode DMDALoad(PetscViewer,PetscInt,PetscInt,PetscInt,DM *);
extern PetscErrorCode DMDAGetCorners(DM,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*);
extern PetscErrorCode DMDAGetGhostCorners(DM,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*);
-extern PetscErrorCode DMDAGetInfo(DM,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,DMDABoundaryType*,DMDAStencilType*);
+extern PetscErrorCode DMDAGetInfo(DM,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,PetscInt*,DMDABoundaryType*,DMDABoundaryType*,DMDABoundaryType*,DMDAStencilType*);
extern PetscErrorCode DMDAGetProcessorSubset(DM,DMDADirection,PetscInt,MPI_Comm*);
extern PetscErrorCode DMDAGetProcessorSubsets(DM,DMDADirection,MPI_Comm*);
@@ -166,7 +144,7 @@
extern PetscErrorCode DMDASetFieldName(DM,PetscInt,const char[]);
extern PetscErrorCode DMDAGetFieldName(DM,PetscInt,const char**);
-extern PetscErrorCode DMDASetBoundaryType(DM, DMDABoundaryType);
+extern PetscErrorCode DMDASetBoundaryType(DM,DMDABoundaryType,DMDABoundaryType,DMDABoundaryType);
extern PetscErrorCode DMDASetDof(DM, int);
extern PetscErrorCode DMDASetStencilWidth(DM, PetscInt);
extern PetscErrorCode DMDASetOwnershipRanges(DM,const PetscInt[],const PetscInt[],const PetscInt[]);
@@ -279,7 +257,7 @@
PetscInt xm,ym,zm; /* number of grid points on this processor, excluding ghosts */
PetscInt gxs,gys,gzs; /* starting point of this processor including ghosts */
PetscInt gxm,gym,gzm; /* number of grid points on this processor including ghosts */
- DMDABoundaryType pt;
+ DMDABoundaryType bx,by,bz; /* type of ghost nodes at boundary */
DMDAStencilType st;
DM da;
} DMDALocalInfo;
diff -r 23e7928e179a include/private/daimpl.h
--- a/include/private/daimpl.h Thu Mar 10 22:14:51 2011 -0600
+++ b/include/private/daimpl.h Fri Mar 11 16:29:15 2011 -0700
@@ -17,7 +17,7 @@
values above already scaled by w */
PetscInt *idx,Nl; /* local to global map */
PetscInt base; /* global number of 1st local node */
- DMDABoundaryType wrap; /* indicates type of periodic boundaries */
+ DMDABoundaryType bx,by,bz; /* indicates type of ghost nodes at boundary */
VecScatter gtol,ltog,ltol; /* scatters, see below for details */
DMDAStencilType stencil_type; /* stencil, either box or star */
PetscInt dim; /* DMDA dimension (1,2, or 3) */
diff -r 23e7928e179a src/characteristic/examples/tutorials/ex1.c
--- a/src/characteristic/examples/tutorials/ex1.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/characteristic/examples/tutorials/ex1.c Fri Mar 11 16:29:15 2011 -0700
@@ -104,7 +104,7 @@
ierr = DMDACreate2d(comm,grid.periodic,grid.stencil,grid.ni,grid.nj,PETSC_DECIDE,PETSC_DECIDE,grid.dof,grid.stencil_width,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,&(param->pi),&(param->pj),PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,&(param->pi),&(param->pj),PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
REG_INTG(user->bag,¶m->pi,param->pi ,"procs_x","<DO NOT SET> Processors in the x-direction");
REG_INTG(user->bag,¶m->pj,param->pj ,"procs_y","<DO NOT SET> Processors in the y-direction");
diff -r 23e7928e179a src/characteristic/examples/tutorials/ex2.c
--- a/src/characteristic/examples/tutorials/ex2.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/characteristic/examples/tutorials/ex2.c Fri Mar 11 16:29:15 2011 -0700
@@ -104,7 +104,7 @@
ierr = DMDACreate2d(comm,user->grid.periodic,user->grid.stencil,user->grid.ni,user->grid.nj,PETSC_DECIDE,PETSC_DECIDE,user->grid.dof,user->grid.stencil_width,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,&(param->pi),&(param->pj),PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,&(param->pi),&(param->pj),PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
REG_INTG(user->bag,¶m->pi,param->pi ,"procs_x","<DO NOT SET> Processors in the x-direction");
REG_INTG(user->bag,¶m->pj,param->pj ,"procs_y","<DO NOT SET> Processors in the y-direction");
diff -r 23e7928e179a src/characteristic/examples/tutorials/ex4.c
--- a/src/characteristic/examples/tutorials/ex4.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/characteristic/examples/tutorials/ex4.c Fri Mar 11 16:29:15 2011 -0700
@@ -127,7 +127,7 @@
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = DMMGSetSNESLocal(user->dmmg,FormNewTimeFunctionLocal,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
ierr = DMMGSetFromOptions(user->dmmg);CHKERRQ(ierr);
- ierr = DMDAGetInfo(DMMGGetDM(user->dmmg),PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,&(param->pi),&(param->pj),PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(DMMGGetDM(user->dmmg),PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,&(param->pi),&(param->pj),PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
REG_INTG(user->bag,¶m->pi,param->pi ,"procs_x","<DO NOT SET> Processors in the x-direction");
REG_INTG(user->bag,¶m->pj,param->pj ,"procs_y","<DO NOT SET> Processors in the y-direction");
diff -r 23e7928e179a src/characteristic/impls/da/slda.c
--- a/src/characteristic/impls/da/slda.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/characteristic/impls/da/slda.c Fri Mar 11 16:29:15 2011 -0700
@@ -44,7 +44,7 @@
PetscInt dim, numValues;
PetscErrorCode ierr;
- ierr = DMDAGetInfo(c->velocityDA, &dim, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(c->velocityDA, &dim, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0);CHKERRQ(ierr);
if (c->structured) {
c->numIds = dim;
} else {
@@ -110,25 +110,20 @@
----------------------------------------------------------------------------------------*/
PetscErrorCode DMDAMapCoordsToPeriodicDomain(DM da, PetscScalar *x, PetscScalar *y)
{
- DMDABoundaryType periodic_type;
+ DMDABoundaryType bx, by;
PetscInt dim, gx, gy;
PetscErrorCode ierr;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, &dim, &gx, &gy, 0, 0, 0, 0, 0, 0, &periodic_type, 0);
+ ierr = DMDAGetInfo(da, &dim, &gx, &gy, 0, 0, 0, 0, 0, 0, &bx, &by, 0, 0);
- if ( periodic_type == DMDA_NONPERIODIC ) {
- ierr = 0;
- } else {
- if (DMDAXPeriodic(periodic_type)) {
+ if (bx == DMDA_BOUNDARY_PERIODIC) {
while (*x >= ( PetscScalar ) gx ) { *x -= ( PetscScalar ) gx; }
while (*x < 0.0 ) { *x += ( PetscScalar ) gx; }
}
- if (DMDAYPeriodic(periodic_type)) {
+ if (by == DMDA_BOUNDARY_PERIODIC) {
while (*y >= ( PetscScalar ) gy ) { *y -= ( PetscScalar ) gy; }
while (*y < 0.0 ) { *y += ( PetscScalar ) gy; }
}
- }
-
PetscFunctionReturn(ierr);
}
diff -r 23e7928e179a src/characteristic/interface/characteristic.c
--- a/src/characteristic/interface/characteristic.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/characteristic/interface/characteristic.c Fri Mar 11 16:29:15 2011 -0700
@@ -320,8 +320,7 @@
DM da = c->velocityDA;
Vec velocityLocal, velocityLocalOld;
Vec fieldLocal;
- DMDALocalInfo info;
- DMDABoundaryType periodic_type;
+ DMDALocalInfo info;
PetscScalar **solArray;
void *velocityArray;
void *velocityArrayOld;
@@ -345,7 +344,7 @@
ierr = CharacteristicSetNeighbors(c, 9, neighbors);CHKERRQ(ierr);
ierr = CharacteristicSetUp(c);CHKERRQ(ierr);
/* global and local grid info */
- ierr = DMDAGetInfo(da, &dim, &gx, &gy, 0, 0, 0, 0, 0, 0, &periodic_type, 0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, &dim, &gx, &gy, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);CHKERRQ(ierr);
ierr = DMDAGetLocalInfo(da, &info);CHKERRQ(ierr);
ni = info.mx; nj = info.my;
is = info.xs; ie = info.xs+info.xm;
@@ -559,7 +558,7 @@
/* Return field of characteristics at t_n-1 */
ierr = PetscLogEventBegin(CHARACTERISTIC_DAUpdate,0,0,0,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(c->fieldDA, 0, 0, 0, 0, 0, 0, 0, &dof, 0, 0, 0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(c->fieldDA,0,0,0,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAVecGetArray(c->fieldDA, solution, &solArray);CHKERRQ(ierr);
for(n = 0; n < c->queueSize; n++) {
Qi = c->queue[n];
@@ -788,7 +787,7 @@
/* [center, left, top-left, top, top-right, right, bottom-right, bottom, bottom-left] */
PetscErrorCode DMDAGetNeighborsRank(DM da, PetscMPIInt neighbors[])
{
- DMDABoundaryType periodic_type;
+ DMDABoundaryType bx, by;
PetscBool IPeriodic = PETSC_FALSE, JPeriodic = PETSC_FALSE;
MPI_Comm comm;
PetscMPIInt rank;
@@ -798,12 +797,12 @@
PetscFunctionBegin;
ierr = PetscObjectGetComm((PetscObject) da, &comm);CHKERRQ(ierr);
ierr = MPI_Comm_rank(comm, &rank);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da, 0, 0, 0, 0, &PI,&PJ, 0, 0, 0, &periodic_type, 0);
+ ierr = DMDAGetInfo(da, 0, 0, 0, 0, &PI,&PJ, 0, 0, 0, &bx, &by,0, 0);
- if (DMDAXPeriodic(periodic_type)) {
+ if (bx == DMDA_BOUNDARY_PERIODIC) {
IPeriodic = PETSC_TRUE;
}
- if (DMDAYPeriodic(periodic_type)) {
+ if (by == DMDA_BOUNDARY_PERIODIC) {
JPeriodic = PETSC_TRUE;
}
diff -r 23e7928e179a src/contrib/blopex/driver/driver.c
--- a/src/contrib/blopex/driver/driver.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/contrib/blopex/driver/driver.c Fri Mar 11 16:29:15 2011 -0700
@@ -179,21 +179,25 @@
if (PreLoadIt==0)
{
/* small problem */
- ierr=DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,10,10,10,
- 1,PETSC_DECIDE,1,1,1,0,0,0,&da); CHKERRQ(ierr);
+ ierr=DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,
+ DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,10,10,10,
+ 1,PETSC_DECIDE,1,1,1,0,0,0,&da); CHKERRQ(ierr);
}
else
{
/* actual problem */
if (freepart) /* petsc determines partitioning */
{
- ierr=DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-10,-10,-10,
- PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da); CHKERRQ(ierr);
+ ierr=DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,
+ DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-10,-10,-10,
+ PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,
+ 1,1,0,0,0,&da); CHKERRQ(ierr);
}
else /* (1,NP,1) partitioning */
{
- ierr=DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-10,-10,-10,
- 1,PETSC_DECIDE,1,1,1,0,0,0,&da); CHKERRQ(ierr);
+ ierr=DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUDNARY_NONE,DMDA_BOUDNARY_NONE,
+ DMDA_BOUDNARY_NONE,DMDA_STENCIL_STAR,-10,-10,-10,
+ 1,PETSC_DECIDE,1,1,1,0,0,0,&da); CHKERRQ(ierr);
}
/* now we print what partitioning is chosen */
diff -r 23e7928e179a src/contrib/helmholtz_2/ex12.c
--- a/src/contrib/helmholtz_2/ex12.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/contrib/helmholtz_2/ex12.c Fri Mar 11 16:29:15 2011 -0700
@@ -240,7 +240,7 @@
mapping is needed when we determine the global column numbers for
grid points on a processor edge.
*/
- ierr = DMDACreate2d(user.comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.m_eta,
+ ierr = DMDACreate2d(user.comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.m_eta,
user.m_xi,N_eta,N_xi,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRA(ierr);
ierr = DMCreateGlobalVector(user.da,&user.phi);CHKERRA(ierr);
ierr = VecGetLocalSize(user.phi,&user.m_ldim);CHKERRA(ierr);
diff -r 23e7928e179a src/contrib/keyes/ex15.c
--- a/src/contrib/keyes/ex15.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/contrib/keyes/ex15.c Fri Mar 11 16:29:15 2011 -0700
@@ -128,7 +128,7 @@
/* Set up distributed array for each level */
for (i=0; i<user.nlevels; i++) {
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.grid[i].mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.grid[i].mx,
user.grid[i].my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&user.grid[i].da);CHKERRA(ierr);
ierr = DMCreateGlobalVector(user.grid[i].da,&user.grid[i].x);CHKERRA(ierr);
ierr = VecDuplicate(user.grid[i].x,&user.grid[i].r);CHKERRA(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex1.c
--- a/src/dm/examples/tests/ex1.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex1.c Fri Mar 11 16:29:15 2011 -0700
@@ -25,7 +25,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
M,N,m,n,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex11.c
--- a/src/dm/examples/tests/ex11.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex11.c Fri Mar 11 16:29:15 2011 -0700
@@ -1,5 +1,5 @@
-static char help[] = "Tests various 1-dimensional DM routines.\n\n";
+static char help[] = "Tests various 2-dimensional DM routines.\n\n";
#include "petscdm.h"
@@ -7,7 +7,7 @@
#define __FUNCT__ "main"
int main(int argc,char **argv)
{
- PetscInt M = 5,N = 4,dof=1,s=1,wrap=0,i,n,j,k,m,cnt;
+ PetscInt M = 5,N = 4,dof=1,s=1,bx=0,by=0,i,n,j,k,m,cnt;
PetscErrorCode ierr;
DM da;
PetscViewer viewer;
@@ -28,10 +28,11 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-N",&N,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-dof",&dof,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-s",&s,PETSC_NULL);CHKERRQ(ierr);
- ierr = PetscOptionsGetInt(PETSC_NULL,"-periodic",&wrap,PETSC_NULL);CHKERRQ(ierr);
+ ierr = PetscOptionsGetInt(PETSC_NULL,"-periodic_x",&wrap,PETSC_NULL);CHKERRQ(ierr);
+ ierr = PetscOptionsGetInt(PETSC_NULL,"-periodic_y",&wrap,PETSC_NULL);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,(DMDABoundaryType)wrap,DMDA_STENCIL_BOX,M,N,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,(DMDABoundaryType)bx,(DMDABoundaryType)by,DMDA_STENCIL_BOX,M,N,PETSC_DECIDE,
PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMDASetUniformCoordinates(da,0.0,1.0,0.0,1.0,0.0,0.0);CHKERRQ(ierr);
for (i=0; i<dof; i++) {
diff -r 23e7928e179a src/dm/examples/tests/ex12.c
--- a/src/dm/examples/tests/ex12.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex12.c Fri Mar 11 16:29:15 2011 -0700
@@ -26,7 +26,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-time",&time_steps,PETSC_NULL);CHKERRQ(ierr);
/* Set up the array */
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,M,w,s,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,M,w,s,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex14.c
--- a/src/dm/examples/tests/ex14.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex14.c Fri Mar 11 16:29:15 2011 -0700
@@ -25,7 +25,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-dof",&dof,PETSC_NULL);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
M,N,m,n,dof,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex15.c
--- a/src/dm/examples/tests/ex15.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex15.c Fri Mar 11 16:29:15 2011 -0700
@@ -13,7 +13,8 @@
Vec v_c,v_f;
Mat I;
PetscScalar one = 1.0;
- DMDABoundaryType pt = DMDA_NONPERIODIC;
+ PetscBool pt;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by = DMDA_BOUNDARY_NONE;
ierr = PetscInitialize(&argc,&argv,(char*)0,help);CHKERRQ(ierr);
@@ -24,12 +25,12 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-dof",&dof,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetBool(PETSC_NULL,"-periodic",(PetscBool*)&pt,PETSC_NULL);CHKERRQ(ierr);
- if (pt != DMDA_NONPERIODIC) {
- if (dim == 1) pt = DMDA_XPERIODIC;
- if (dim == 2) pt = DMDA_XYPERIODIC;
- if (dim == 3) pt = DMDA_XYZPERIODIC;
+ if (pt) {
+ if (dim > 0) bx = DMDA_BOUNDARY_PERIODIC;
+ if (dim > 1) by = DMDA_BOUNDARY_PERIODIC;
+ if (dim > 2) bz = DMDA_BOUNDARY_PERIODIC;
}
- if (pt == DMDA_NONPERIODIC) {
+ if (bx == DMDA_BOUNDARY_NONE) {
M2 = ratio*(M1-1) + 1;
} else {
M2 = ratio*M1;
@@ -37,14 +38,14 @@
/* Set up the array */
if (dim == 1) {
- ierr = DMDACreate1d(PETSC_COMM_WORLD,pt,M1,dof,s,PETSC_NULL,&da_c);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,pt,M2,dof,s,PETSC_NULL,&da_f);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,bx,M1,dof,s,PETSC_NULL,&da_c);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,bx,M2,dof,s,PETSC_NULL,&da_f);CHKERRQ(ierr);
} else if (dim == 2) {
- ierr = DMDACreate2d(PETSC_COMM_WORLD,pt,DMDA_STENCIL_BOX,M1,M1,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da_c);CHKERRQ(ierr);
- ierr = DMDACreate2d(PETSC_COMM_WORLD,pt,DMDA_STENCIL_BOX,M2,M2,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da_f);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,DMDA_STENCIL_BOX,M1,M1,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da_c);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,DMDA_STENCIL_BOX,M2,M2,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da_f);CHKERRQ(ierr);
} else if (dim == 3) {
- ierr = DMDACreate3d(PETSC_COMM_WORLD,pt,DMDA_STENCIL_BOX,M1,M1,M1,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,PETSC_NULL,&da_c);CHKERRQ(ierr);
- ierr = DMDACreate3d(PETSC_COMM_WORLD,pt,DMDA_STENCIL_BOX,M2,M2,M2,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,PETSC_NULL,&da_f);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,bx,by,bz,DMDA_STENCIL_BOX,M1,M1,M1,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,PETSC_NULL,&da_c);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,bx,by,bz,DMDA_STENCIL_BOX,M2,M2,M2,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,PETSC_NULL,&da_f);CHKERRQ(ierr);
}
ierr = DMCreateGlobalVector(da_c,&v_c);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex16.c
--- a/src/dm/examples/tests/ex16.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex16.c Fri Mar 11 16:29:15 2011 -0700
@@ -31,14 +31,14 @@
ierr = PetscMalloc(nredundant1*sizeof(PetscScalar),&redundant1);CHKERRQ(ierr);
ierr = DMCompositeAddArray(packer,0,nredundant1);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,8,1,1,PETSC_NULL,&da1);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,8,1,1,PETSC_NULL,&da1);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da1,&local1);CHKERRQ(ierr);
ierr = DMCompositeAddDM(packer,(DM)da1);CHKERRQ(ierr);
ierr = PetscMalloc(nredundant2*sizeof(PetscScalar),&redundant2);CHKERRQ(ierr);
ierr = DMCompositeAddArray(packer,1%size,nredundant2);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,6,1,1,PETSC_NULL,&da2);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,6,1,1,PETSC_NULL,&da2);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da2,&local2);CHKERRQ(ierr);
ierr = DMCompositeAddDM(packer,(DM)da2);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex17.c
--- a/src/dm/examples/tests/ex17.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex17.c Fri Mar 11 16:29:15 2011 -0700
@@ -28,9 +28,9 @@
/* Set up the array */
if (dim == 2) {
- ierr = DMDACreate2d(comm_c,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,M,M,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da_c);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm_c,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,M,M,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da_c);CHKERRQ(ierr);
M = ratio*(M-1) + 1;
- ierr = DMDACreate2d(comm_f,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,M,M,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da_f);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm_f,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,M,M,PETSC_DECIDE,PETSC_DECIDE,dof,s,PETSC_NULL,PETSC_NULL,&da_f);CHKERRQ(ierr);
} else if (dim == 3) {
;
}
diff -r 23e7928e179a src/dm/examples/tests/ex18.c
--- a/src/dm/examples/tests/ex18.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex18.c Fri Mar 11 16:29:15 2011 -0700
@@ -25,7 +25,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
M,N,m,n,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex19.c
--- a/src/dm/examples/tests/ex19.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex19.c Fri Mar 11 16:29:15 2011 -0700
@@ -12,7 +12,7 @@
PetscErrorCode ierr;
PetscInt i,j,k,M,N,dof;
- ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
{
struct {PetscScalar inside[dof];} **mystruct;
ierr = DMDAVecGetArray(da,global,(void*) &mystruct);
@@ -42,7 +42,7 @@
ierr = PetscOptionsGetInt(0,"-dof",&dof,0);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
M,N,m,n,dof,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex2.c
--- a/src/dm/examples/tests/ex2.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex2.c Fri Mar 11 16:29:15 2011 -0700
@@ -9,7 +9,7 @@
{
PetscMPIInt rank;
PetscInt M = 13,s=1,dof=1;
- DMDABoundaryType wrap = DMDA_XPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_PERIODIC;
PetscErrorCode ierr;
DM da;
PetscViewer viewer;
@@ -27,12 +27,12 @@
/* Readoptions */
ierr = PetscOptionsGetInt(PETSC_NULL,"-M",&M,PETSC_NULL);CHKERRQ(ierr);
- ierr = PetscOptionsGetEnum(PETSC_NULL,"-wrap",DMDABoundaryTypes,(PetscEnum*)&wrap,PETSC_NULL);CHKERRQ(ierr);
+ ierr = PetscOptionsGetEnum(PETSC_NULL,"-wrap",DMDABoundaryTypes,(PetscEnum*)&bx,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-dof",&dof,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-s",&s,PETSC_NULL);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate1d(PETSC_COMM_WORLD,wrap,M,dof,s,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,bx,M,dof,s,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMView(da,viewer);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex21.c
--- a/src/dm/examples/tests/ex21.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex21.c Fri Mar 11 16:29:15 2011 -0700
@@ -13,22 +13,23 @@
PetscViewer vv;
Vec ac,af;
PetscInt periodicity;
- DMDABoundaryType pt;
+ DMDABoundaryType bx,by,bz;
PetscFunctionBegin;
+ bx = DMDA_BOUNDARY_NONE;
+ by = DMDA_BOUNDARY_NONE;
+ bz = DMDA_BOUNDARY_NONE;
periodicity = 0;
ierr = PetscOptionsGetInt(PETSC_NULL,"-periodic", &periodicity, PETSC_NULL);CHKERRQ(ierr);
if (periodicity==1) {
- pt = DMDA_XPERIODIC;
+ bx = DMDA_BOUNDARY_PERIODIC;
} else if (periodicity==2) {
- pt = DMDA_YPERIODIC;
+ by = DMDA_BOUNDARY_PERIODIC;
} else if (periodicity==3) {
- pt = DMDA_ZPERIODIC;
- } else {
- pt = DMDA_NONPERIODIC;
+ bz = DMDA_BOUNDARY_PERIODIC;
}
- ierr = DMDACreate3d(PETSC_COMM_WORLD, pt, DMDA_STENCIL_BOX,
+ ierr = DMDACreate3d(PETSC_COMM_WORLD, bx,by,bz, DMDA_STENCIL_BOX,
mx+1, my+1,mz+1,
PETSC_DECIDE, PETSC_DECIDE,PETSC_DECIDE,
1, /* 1 dof */
@@ -68,7 +69,7 @@
ierr = VecAXPY(coordsf2,-1.0,coordsf);CHKERRQ(ierr);
ierr = VecNorm(coordsf2,NORM_MAX,&norm);CHKERRQ(ierr);
/* The fine coordinates are only reproduced in certain cases */
- if (pt == DMDA_NONPERIODIC && norm > 1.e-10) {ierr = PetscPrintf(PETSC_COMM_WORLD,"Norm %A\n",norm);CHKERRQ(ierr);}
+ if (!bx && !by && !bz && norm > 1.e-10) {ierr = PetscPrintf(PETSC_COMM_WORLD,"Norm %A\n",norm);CHKERRQ(ierr);}
ierr = VecDestroy(coordsf2);CHKERRQ(ierr);
ierr = MatDestroy(interp);CHKERRQ(ierr);
}
diff -r 23e7928e179a src/dm/examples/tests/ex22.c
--- a/src/dm/examples/tests/ex22.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex22.c Fri Mar 11 16:29:15 2011 -0700
@@ -32,7 +32,7 @@
if (flg) stencil_type = DMDA_STENCIL_STAR;
/* Create distributed array and get vectors */
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,stencil_type,M,N,P,m,n,p,w,s,
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,stencil_type,M,N,P,m,n,p,w,s,
0,0,0,&da);CHKERRQ(ierr);
ierr = DMGetMatrix(da,MATMPIBAIJ,&mat);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex23.c
--- a/src/dm/examples/tests/ex23.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex23.c Fri Mar 11 16:29:15 2011 -0700
@@ -11,7 +11,7 @@
PetscInt N = 6,m=PETSC_DECIDE,n=PETSC_DECIDE,p=PETSC_DECIDE,M=8,dof=1,stencil_width=1,P=5,pt = 0,st = 0;
PetscErrorCode ierr;
PetscBool flg2,flg3;
- DMDABoundaryType periodic = DMDA_NONPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by = DMDA_BOUNDARY_NONE,bz = DMDA_BOUNDARY_NONE;
DMDAStencilType stencil_type = DMDA_STENCIL_STAR;
DM da;
Vec global1,global2,global3,global4;
@@ -28,7 +28,11 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-dof",&dof,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-stencil_width",&stencil_width,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-periodic",&pt,PETSC_NULL);CHKERRQ(ierr);
- periodic = (DMDABoundaryType) pt;
+ if (pt == 1) bx = DMDA_BOUNDARY_PERIODIC;
+ if (pt == 2) by = DMDA_BOUNDARY_PERIODIC;
+ if (pt == 3) {bx = DMDA_BOUNDARY_PERIODIC; by = DMDA_BOUNDARY_PERIODIC;}
+ if (pt == 4) bz = DMDA_BOUNDARY_PERIODIC;
+
ierr = PetscOptionsGetInt(PETSC_NULL,"-stencil_type",&st,PETSC_NULL);CHKERRQ(ierr);
stencil_type = (DMDAStencilType) st;
@@ -36,12 +40,12 @@
ierr = PetscOptionsHasName(PETSC_NULL,"-2d",&flg2);CHKERRQ(ierr);
ierr = PetscOptionsHasName(PETSC_NULL,"-3d",&flg3);CHKERRQ(ierr);
if (flg2) {
- ierr = DMDACreate2d(PETSC_COMM_WORLD,periodic,stencil_type,M,N,m,n,dof,stencil_width,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,stencil_type,M,N,m,n,dof,stencil_width,0,0,&da);CHKERRQ(ierr);
} else if (flg3) {
- ierr = DMDACreate3d(PETSC_COMM_WORLD,periodic,stencil_type,M,N,P,m,n,p,dof,stencil_width,0,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,bx,by,bz,stencil_type,M,N,P,m,n,p,dof,stencil_width,0,0,0,&da);CHKERRQ(ierr);
}
else {
- ierr = DMDACreate1d(PETSC_COMM_WORLD,periodic,M,dof,stencil_width,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,bx,M,dof,stencil_width,PETSC_NULL,&da);CHKERRQ(ierr);
}
ierr = DMCreateGlobalVector(da,&global1);CHKERRQ(ierr);
@@ -70,7 +74,7 @@
ierr = PetscPrintf(PETSC_COMM_WORLD,"ex23: Norm of difference %G should be zero\n",norm);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD," Number of processors %d\n",size);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD," M,N,P,dof %D %D %D %D\n",M,N,P,dof);CHKERRQ(ierr);
- ierr = PetscPrintf(PETSC_COMM_WORLD," stencil_width %D stencil_type %d periodic %d\n",stencil_width,(int)stencil_type,(int)periodic);CHKERRQ(ierr);
+ ierr = PetscPrintf(PETSC_COMM_WORLD," stencil_width %D stencil_type %d periodic %d\n",stencil_width,(int)stencil_type,(int)bx);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD," dimension %d\n",1 + (int) flg2 + (int) flg3);CHKERRQ(ierr);
}
ierr = VecAXPY(global4,mone,global3);CHKERRQ(ierr);
@@ -80,7 +84,7 @@
ierr = PetscPrintf(PETSC_COMM_WORLD,"ex23: Norm of difference %G should be zero\n",norm);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD," Number of processors %d\n",size);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD," M,N,P,dof %D %D %D %D\n",M,N,P,dof);CHKERRQ(ierr);
- ierr = PetscPrintf(PETSC_COMM_WORLD," stencil_width %D stencil_type %d periodic %d\n",stencil_width,(int)stencil_type,(int)periodic);CHKERRQ(ierr);
+ ierr = PetscPrintf(PETSC_COMM_WORLD," stencil_width %D stencil_type %d periodic %d\n",stencil_width,(int)stencil_type,(int)bx);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD," dimension %d\n",1 + (int) flg2 + (int) flg3);CHKERRQ(ierr);
}
diff -r 23e7928e179a src/dm/examples/tests/ex24.c
--- a/src/dm/examples/tests/ex24.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex24.c Fri Mar 11 16:29:15 2011 -0700
@@ -16,7 +16,7 @@
ierr = PetscInitialize(&argc,&argv,(char*)0,help);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,M,N,m,n,3,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,M,N,m,n,3,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex25.c
--- a/src/dm/examples/tests/ex25.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex25.c Fri Mar 11 16:29:15 2011 -0700
@@ -16,7 +16,7 @@
ierr = PetscInitialize(&argc,&argv,(char*)0,help);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,M,N,P,m,n,p,2,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,M,N,P,m,n,p,2,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex26.c
--- a/src/dm/examples/tests/ex26.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex26.c Fri Mar 11 16:29:15 2011 -0700
@@ -19,7 +19,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_XPERIODIC,DMDA_STENCIL_BOX,-5,-5,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_PERIODIC, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-5,-5,
PETSC_DECIDE,PETSC_DECIDE,1,2,0,0,&da);CHKERRQ(ierr);
ierr = DMGetMatrix(da,MATAIJ,&J);CHKERRQ(ierr);
ierr = DMGetColoring(da,IS_COLORING_GHOSTED,MATAIJ,&iscoloring);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex27.c
--- a/src/dm/examples/tests/ex27.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex27.c Fri Mar 11 16:29:15 2011 -0700
@@ -47,7 +47,7 @@
- ierr = DMDACreate3d(PETSC_COMM_SELF,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,
+ ierr = DMDACreate3d(PETSC_COMM_SELF,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,
dim[0], dim[1], dim[2],
PETSC_DECIDE, PETSC_DECIDE, PETSC_DECIDE,
dof, stencil,
diff -r 23e7928e179a src/dm/examples/tests/ex28.c
--- a/src/dm/examples/tests/ex28.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex28.c Fri Mar 11 16:29:15 2011 -0700
@@ -49,7 +49,7 @@
ierr = PetscOptionsGetIntArray(PETSC_NULL,"-dim",dim,&ndim,PETSC_NULL);CHKERRQ(ierr);
// DMDA with the correct fiber dimension
- ierr = DMDACreate3d(PETSC_COMM_SELF,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,
+ ierr = DMDACreate3d(PETSC_COMM_SELF,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,
dim[0], dim[1], dim[2],
PETSC_DECIDE, PETSC_DECIDE, PETSC_DECIDE,
dof, stencil,
@@ -57,7 +57,7 @@
&da);
CHKERRQ(ierr);
// DMDA with fiber dimension 1 for split fields
- ierr = DMDACreate3d(PETSC_COMM_SELF,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,
+ ierr = DMDACreate3d(PETSC_COMM_SELF,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,
dim[0], dim[1], dim[2],
PETSC_DECIDE, PETSC_DECIDE, PETSC_DECIDE,
1, stencil,
diff -r 23e7928e179a src/dm/examples/tests/ex3.c
--- a/src/dm/examples/tests/ex3.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex3.c Fri Mar 11 16:29:15 2011 -0700
@@ -35,7 +35,7 @@
}
/* Set up the array */
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_XPERIODIC,M,1,1,localnodes,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_PERIODIC,M,1,1,localnodes,&da);CHKERRQ(ierr);
ierr = PetscFree(localnodes);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex31.c
--- a/src/dm/examples/tests/ex31.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex31.c Fri Mar 11 16:29:15 2011 -0700
@@ -12,7 +12,7 @@
DM da,daf;
ierr = PetscInitialize(&argc,&argv,0,help);CHKERRQ(ierr);
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,4,5,PETSC_DECIDE,PETSC_DECIDE,41,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,4,5,PETSC_DECIDE,PETSC_DECIDE,41,1,0,0,&da);CHKERRQ(ierr);
ierr = DMRefine(da,PETSC_COMM_WORLD,&daf);CHKERRQ(ierr);
ierr = DMGetInterpolation(da,daf,&M,PETSC_NULL);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&x);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex32.c
--- a/src/dm/examples/tests/ex32.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex32.c Fri Mar 11 16:29:15 2011 -0700
@@ -30,10 +30,10 @@
mx=7;
my=11;
mz=13;
- ierr=DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,mx,my,mz,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,3,2,0,0,0,&Q2_da);CHKERRQ(ierr);
+ ierr=DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,mx,my,mz,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,3,2,0,0,0,&Q2_da);CHKERRQ(ierr);
ierr = DMDASetUniformCoordinates(Q2_da,-1.0,1.0,-2.0,2.0,-3.0,3.0);CHKERRQ(ierr);
ierr = DMDAGetCoordinates(Q2_da,&coords);CHKERRQ(ierr);
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,mx,my,mz,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,3,1,0,0,0,&Q1_da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,mx,my,mz,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,3,1,0,0,0,&Q1_da);CHKERRQ(ierr);
ierr = DMDASetCoordinates(Q1_da,coords);CHKERRQ(ierr);
/* Get ghost coordinates one way */
diff -r 23e7928e179a src/dm/examples/tests/ex33.c
--- a/src/dm/examples/tests/ex33.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex33.c Fri Mar 11 16:29:15 2011 -0700
@@ -12,7 +12,7 @@
PetscInt stencil_width=1,pt=0,st=0;
PetscErrorCode ierr;
PetscBool flg2,flg3,isbinary,mpiio;
- DMDABoundaryType periodic = DMDA_NONPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by = DMDA_BOUNDARY_NONE,bz = DMDA_BOUNDARY_NONE;
DMDAStencilType stencil_type = DMDA_STENCIL_STAR;
DM da,da2;
Vec global1,global2;
@@ -34,7 +34,10 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-dof",&dof,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-stencil_width",&stencil_width,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-periodic",&pt,PETSC_NULL);CHKERRQ(ierr);
- periodic = (DMDABoundaryType) pt;
+ if (pt == 1) bx = DMDA_BOUNDARY_PERIODIC;
+ if (pt == 2) by = DMDA_BOUNDARY_PERIODIC;
+ if (pt == 4) bx = DMDA_BOUNDARY_PERIODIC; by = DMDA_BOUNDARY_PERIODIC
+
ierr = PetscOptionsGetInt(PETSC_NULL,"-stencil_type",&st,PETSC_NULL);CHKERRQ(ierr);
stencil_type = (DMDAStencilType) st;
@@ -48,12 +51,12 @@
#endif
ierr = PetscOptionsHasName(PETSC_NULL,"-mpiio",&mpiio);CHKERRQ(ierr);
if (flg2) {
- ierr = DMDACreate2d(PETSC_COMM_WORLD,periodic,stencil_type,M,N,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,stencil_type,M,N,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,0,0,&da);CHKERRQ(ierr);
} else if (flg3) {
- ierr = DMDACreate3d(PETSC_COMM_WORLD,periodic,stencil_type,M,N,P,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,0,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,bx,by,bz,stencil_type,M,N,P,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,0,0,0,&da);CHKERRQ(ierr);
}
else {
- ierr = DMDACreate1d(PETSC_COMM_WORLD,periodic,M,dof,stencil_width,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,bx,M,dof,stencil_width,PETSC_NULL,&da);CHKERRQ(ierr);
}
ierr = DMCreateGlobalVector(da,&global1);CHKERRQ(ierr);
@@ -80,12 +83,12 @@
ierr = VecView(global1,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
if (flg2) {
- ierr = DMDACreate2d(PETSC_COMM_WORLD,periodic,stencil_type,M,N,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,0,0,&da2);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,stencil_type,M,N,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,0,0,&da2);CHKERRQ(ierr);
} else if (flg3) {
- ierr = DMDACreate3d(PETSC_COMM_WORLD,periodic,stencil_type,M,N,P,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,0,0,0,&da2);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,bx,by,bz,stencil_type,M,N,P,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,0,0,0,&da2);CHKERRQ(ierr);
}
else {
- ierr = DMDACreate1d(PETSC_COMM_WORLD,periodic,M,dof,stencil_width,PETSC_NULL,&da2);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,bx,M,dof,stencil_width,PETSC_NULL,&da2);CHKERRQ(ierr);
}
if (isbinary) {
diff -r 23e7928e179a src/dm/examples/tests/ex35.c
--- a/src/dm/examples/tests/ex35.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex35.c Fri Mar 11 16:29:15 2011 -0700
@@ -26,7 +26,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-Z",&Z,PETSC_NULL);CHKERRQ(ierr);
/* Create distributed array and get vectors */
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,
X,Y,Z,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMGetMatrix(da,MATMPIAIJ,&A);CHKERRQ(ierr);
ierr = MatShift(A,X);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex36.c
--- a/src/dm/examples/tests/ex36.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex36.c Fri Mar 11 16:29:15 2011 -0700
@@ -85,7 +85,7 @@
ierr = VecGetArray(Gcoords,&XX);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&sx,&sy,&sz,&nx,&ny,&nz);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da, &dim, 0,0,0, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, &dim, 0,0,0, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = VecGetLocalSize(Gcoords,&n);CHKERRQ(ierr);
n = n / dim;
@@ -345,7 +345,7 @@
PetscBool output = PETSC_FALSE;
PetscFunctionBegin;
- ierr = DMDACreate1d( PETSC_COMM_WORLD, DMDA_NONPERIODIC,
+ ierr = DMDACreate1d( PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE,
mx+1,
1, /* 1 dof */
1, /* stencil = 1 */
@@ -354,7 +354,7 @@
ierr = DMSetFromOptions(dac);CHKERRQ(ierr);
ierr = DMRefine(dac,PETSC_NULL,&daf);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&Mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&Mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Mx--;
ierr = DMDASetUniformCoordinates(dac, -1.0,1.0, PETSC_DECIDE,PETSC_DECIDE, PETSC_DECIDE,PETSC_DECIDE );CHKERRQ(ierr);
@@ -440,7 +440,7 @@
PetscBool output = PETSC_FALSE;
PetscFunctionBegin;
- ierr = DMDACreate2d( PETSC_COMM_WORLD, DMDA_NONPERIODIC, DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE, DMDA_STENCIL_BOX,
mx+1, my+1,
PETSC_DECIDE, PETSC_DECIDE,
1, /* 1 dof */
@@ -450,7 +450,7 @@
ierr = DMSetFromOptions(dac);CHKERRQ(ierr);
ierr = DMRefine(dac,PETSC_NULL,&daf);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&Mx,&My,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&Mx,&My,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Mx--; My--;
ierr = DMDASetUniformCoordinates(dac, -1.0,1.0, -1.0,1.0, PETSC_DECIDE,PETSC_DECIDE );CHKERRQ(ierr);
@@ -544,7 +544,7 @@
PetscBool output = PETSC_FALSE;
PetscFunctionBegin;
- ierr = DMDACreate3d( PETSC_COMM_WORLD, DMDA_NONPERIODIC, DMDA_STENCIL_BOX,
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
mx+1, my+1,mz+1,
PETSC_DECIDE, PETSC_DECIDE,PETSC_DECIDE,
1, /* 1 dof */
@@ -554,7 +554,7 @@
ierr = DMSetFromOptions(dac);CHKERRQ(ierr);
ierr = DMRefine(dac,PETSC_NULL,&daf);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&Mx,&My,&Mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&Mx,&My,&Mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Mx--; My--; Mz--;
ierr = DMDASetUniformCoordinates(dac, -1.0,1.0, -1.0,1.0, -1.0,1.0 );CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex4.c
--- a/src/dm/examples/tests/ex4.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex4.c Fri Mar 11 16:29:15 2011 -0700
@@ -14,7 +14,7 @@
PetscInt Xs,Xm,Ys,Ym,iloc,*iglobal,*ltog;
PetscInt *lx = PETSC_NULL,*ly = PETSC_NULL;
PetscBool testorder = PETSC_FALSE,flg;
- DMDABoundaryType wrap = DMDA_NONPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by= DMDA_BOUNDARY_NONE;
DM da;
PetscViewer viewer;
Vec local,global;
@@ -32,15 +32,15 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-s",&s,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-w",&w,PETSC_NULL);CHKERRQ(ierr);
- wrap = 0x0;
+
flg = PETSC_FALSE;
- ierr = PetscOptionsGetBool(PETSC_NULL,"-xperiodic",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) wrap = wrap | DMDA_XPERIODIC;
+ ierr = PetscOptionsGetBool(PETSC_NULL,"-xperiodic",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) bx = DMDA_BOUNDARY_PERIODIC;
flg = PETSC_FALSE;
- ierr = PetscOptionsGetBool(PETSC_NULL,"-yperiodic",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) wrap = wrap | DMDA_YPERIODIC;
+ ierr = PetscOptionsGetBool(PETSC_NULL,"-yperiodic",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) by = DMDA_BOUNDARY_PERIODIC;
flg = PETSC_FALSE;
- ierr = PetscOptionsGetBool(PETSC_NULL,"-xghosted",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) wrap = wrap | DMDA_XGHOSTED;
+ ierr = PetscOptionsGetBool(PETSC_NULL,"-xghosted",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) bx = DMDA_BOUNDARY_GHOSTED;
flg = PETSC_FALSE;
- ierr = PetscOptionsGetBool(PETSC_NULL,"-yghosted",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) wrap = wrap | DMDA_YGHOSTED;
+ ierr = PetscOptionsGetBool(PETSC_NULL,"-yghosted",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) by = DMDA_BOUNDARY_GHOSTED;
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-star",&flg,PETSC_NULL);CHKERRQ(ierr); if (flg) st = DMDA_STENCIL_STAR;
flg = PETSC_FALSE;
@@ -66,7 +66,7 @@
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,wrap,st,M,N,m,n,w,s,lx,ly,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,st,M,N,m,n,w,s,lx,ly,&da);CHKERRQ(ierr);
ierr = PetscFree(lx);CHKERRQ(ierr);
ierr = PetscFree(ly);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex5.c
--- a/src/dm/examples/tests/ex5.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex5.c Fri Mar 11 16:29:15 2011 -0700
@@ -25,7 +25,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-time",&time_steps,PETSC_NULL);CHKERRQ(ierr);
/* Set up the array */
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,M,w,s,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,M,w,s,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex6.c
--- a/src/dm/examples/tests/ex6.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex6.c Fri Mar 11 16:29:15 2011 -0700
@@ -17,7 +17,7 @@
PetscViewer viewer;
Vec local,global;
PetscScalar value;
- DMDABoundaryType wrap = DMDA_NONPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by = DMDA_BOUNDARY_NONE,bz = DMDA_BOUNDARY_NONE;
DMDAStencilType stencil_type = DMDA_STENCIL_BOX;
AO ao;
PetscBool flg = PETSC_FALSE;
@@ -43,28 +43,28 @@
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-xperiodic",&flg,PETSC_NULL);CHKERRQ(ierr);
- if (flg) wrap = wrap | DMDA_XPERIODIC;
+ if (flg) bx = DMDA_BOUNDARY_PERIODIC;
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-xghosted",&flg,PETSC_NULL);CHKERRQ(ierr);
- if (flg) wrap = wrap | DMDA_XPERIODIC;
+ if (flg) bx = DMDA_BOUNDARY_GHOSTED;
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-xnonghosted",&flg,PETSC_NULL);CHKERRQ(ierr);
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-yperiodic",&flg,PETSC_NULL);CHKERRQ(ierr);
- if (flg) wrap = wrap | DMDA_YPERIODIC;
+ if (flg) by = DMDA_BOUNDARY_PERIODIC;
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-yghosted",&flg,PETSC_NULL);CHKERRQ(ierr);
- if (flg) wrap = wrap | DMDA_YPERIODIC;
+ if (flg) by = DMDA_BOUNDARY_GHOSTED;
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-ynonghosted",&flg,PETSC_NULL);CHKERRQ(ierr);
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-zperiodic",&flg,PETSC_NULL);CHKERRQ(ierr);
- if (flg) wrap = wrap | DMDA_ZPERIODIC;
+ if (flg) bz = DMDA_BOUNDARY_PERIODIC;
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-zghosted",&flg,PETSC_NULL);CHKERRQ(ierr);
- if (flg) wrap = wrap | DMDA_ZPERIODIC;
+ if (flg) bz = DMDA_BOUNDARY_GHOSTED;
flg = PETSC_FALSE;
ierr = PetscOptionsGetBool(PETSC_NULL,"-znonghosted",&flg,PETSC_NULL);CHKERRQ(ierr);
@@ -88,7 +88,7 @@
}
/* Create distributed array and get vectors */
- ierr = DMDACreate3d(PETSC_COMM_WORLD,wrap,stencil_type,M,N,P,m,n,p,w,s,lx,ly,lz,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,bx,by,bz,stencil_type,M,N,P,m,n,p,w,s,lx,ly,lz,&da);CHKERRQ(ierr);
ierr = PetscFree(lx);CHKERRQ(ierr);
ierr = PetscFree(ly);CHKERRQ(ierr);
ierr = PetscFree(lz);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tests/ex8.c
--- a/src/dm/examples/tests/ex8.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex8.c Fri Mar 11 16:29:15 2011 -0700
@@ -29,7 +29,7 @@
ierr = MPI_Comm_rank(comm,&rank);CHKERRQ(ierr);
ierr = DMDAGetAO(da,&ao);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&M,&N,&P,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,&P,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
/*
nslice is number of degrees of freedom in this processors slice
diff -r 23e7928e179a src/dm/examples/tests/ex9.c
--- a/src/dm/examples/tests/ex9.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tests/ex9.c Fri Mar 11 16:29:15 2011 -0700
@@ -51,7 +51,7 @@
}
/* Create distributed array and get vectors */
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,stencil_type,M,N,P,m,n,p,w,s,lx,ly,lz,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,stencil_type,M,N,P,m,n,p,w,s,lx,ly,lz,&da);CHKERRQ(ierr);
ierr = PetscFree(lx);CHKERRQ(ierr);
ierr = PetscFree(ly);CHKERRQ(ierr);
ierr = PetscFree(lz);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tutorials/ex1.c
--- a/src/dm/examples/tutorials/ex1.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex1.c Fri Mar 11 16:29:15 2011 -0700
@@ -44,7 +44,7 @@
PetscViewer viewer;
Vec local,global;
PetscScalar value;
- DMDABoundaryType ptype = DMDA_NONPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by = DMDA_BOUNDARY_NONE;
DMDAStencilType stype = DMDA_STENCIL_BOX;
#if defined(PETSC_HAVE_MATLAB_ENGINE)
PetscViewer mviewer;
@@ -60,7 +60,7 @@
if (flg) stype = DMDA_STENCIL_STAR;
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,ptype,stype,M,N,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,stype,M,N,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tutorials/ex10.c
--- a/src/dm/examples/tutorials/ex10.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex10.c Fri Mar 11 16:29:15 2011 -0700
@@ -35,7 +35,7 @@
ierr = PetscInitialize(&argc,&argv,(char*)0,help);CHKERRQ(ierr);
// Build of the DMDA
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,Nx,Ny,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da2D);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,Nx,Ny,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da2D);CHKERRQ(ierr);
// Set the coordinates
DMDASetUniformCoordinates(da2D, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0);
diff -r 23e7928e179a src/dm/examples/tutorials/ex11f90.F
--- a/src/dm/examples/tutorials/ex11f90.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex11f90.F Fri Mar 11 16:29:15 2011 -0700
@@ -41,7 +41,7 @@
s = 1
dof = 1
CALL PetscInitialize(PETSC_NULL_CHARACTER,ierr)
- call DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,m,dof,1, &
+ call DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,m,dof,1, &
& PETSC_NULL_INTEGER,ada,ierr)
call DMGetGlobalVector(ada,g,ierr)
call DMDAGetCorners(ada,xs,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
@@ -57,7 +57,8 @@
call DMRestoreGlobalVector(ada,g,ierr)
call DMDestroy(ada,ierr)
- call DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC, &
+ call DMDACreate2d(PETSC_COMM_WORLD, &
+ & DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE, &
& DMDA_STENCIL_BOX,m,n,PETSC_DECIDE,PETSC_DECIDE,dof,s, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ada,ierr)
call DMGetGlobalVector(ada,g,ierr)
@@ -76,7 +77,8 @@
call DMRestoreGlobalVector(ada,g,ierr)
call DMDestroy(ada,ierr)
- call DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC, &
+ call DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE, &
+ & DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE, &
& DMDA_STENCIL_BOX, m,n,p,PETSC_DECIDE,PETSC_DECIDE, &
& PETSC_DECIDE,dof,s, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
@@ -104,7 +106,7 @@
!
dof = 2
CALL PetscInitialize(PETSC_NULL_CHARACTER,ierr)
- call DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,m,dof,1, &
+ call DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,m,dof,1, &
& PETSC_NULL_INTEGER,ada,ierr)
call DMGetGlobalVector(ada,g,ierr)
call DMDAGetCorners(ada,xs,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
@@ -122,7 +124,8 @@
call DMDestroy(ada,ierr)
dof = 2
- call DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC, &
+ call DMDACreate2d(PETSC_COMM_WORLD, &
+ & DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE, &
& DMDA_STENCIL_BOX,m,n,PETSC_DECIDE,PETSC_DECIDE,dof,s, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ada,ierr)
call DMGetGlobalVector(ada,g,ierr)
@@ -143,7 +146,8 @@
call DMDestroy(ada,ierr)
dof = 3
- call DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC, &
+ call DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,
+ & DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE, &
& DMDA_STENCIL_BOX,m,n,p,PETSC_DECIDE,PETSC_DECIDE, &
& PETSC_DECIDE,dof,s, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
diff -r 23e7928e179a src/dm/examples/tutorials/ex12.c
--- a/src/dm/examples/tutorials/ex12.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex12.c Fri Mar 11 16:29:15 2011 -0700
@@ -20,7 +20,7 @@
PetscBool flg = PETSC_FALSE;
DM da;
Vec global1,global2,global3;
- DMDABoundaryType ptype = DMDA_NONPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by = DMDA_BOUNDARY_NONE;
DMDAStencilType stype = DMDA_STENCIL_BOX;
ierr = PetscInitialize(&argc,&argv,(char*)0,help);CHKERRQ(ierr);
@@ -28,7 +28,7 @@
if (flg) stype = DMDA_STENCIL_STAR;
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,ptype,stype,M,N,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,stype,M,N,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMGetGlobalVector(da,&global1);CHKERRQ(ierr);
ierr = DMGetGlobalVector(da,&global2);CHKERRQ(ierr);
ierr = DMRestoreGlobalVector(da,&global1);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tutorials/ex2.c
--- a/src/dm/examples/tutorials/ex2.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex2.c Fri Mar 11 16:29:15 2011 -0700
@@ -15,7 +15,7 @@
PetscViewer viewer;
Vec localall,global;
PetscScalar value,*vlocal;
- DMDABoundaryType ptype = DMDA_NONPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by = DMDA_BOUNDARY_NONE;
DMDAStencilType stype = DMDA_STENCIL_BOX;
VecScatter tolocalall,fromlocalall;
PetscInt start,end;
@@ -33,7 +33,7 @@
if (flg) stype = DMDA_STENCIL_STAR;
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,ptype,stype,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,stype,
M,N,m,n,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = VecCreateSeq(PETSC_COMM_SELF,M*N,&localall);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tutorials/ex3.c
--- a/src/dm/examples/tutorials/ex3.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex3.c Fri Mar 11 16:29:15 2011 -0700
@@ -109,7 +109,7 @@
PetscInt M = 5,N = 4,P = 3, m = PETSC_DECIDE,n = PETSC_DECIDE,p = PETSC_DECIDE,dim = 1;
PetscErrorCode ierr;
DM dac,daf;
- DMDABoundaryType ptype = DMDA_NONPERIODIC;
+ DMDABoundaryType bx=DMDA_BOUNDARY_NONE,by=DMDA_BOUNDARY_NONE,bz=DMDA_BOUNDARY_NONE;
DMDAStencilType stype = DMDA_STENCIL_BOX;
Mat A;
@@ -126,11 +126,11 @@
/* Create distributed array and get vectors */
if (dim == 1) {
- ierr = DMDACreate1d(PETSC_COMM_WORLD,ptype,M,1,1,PETSC_NULL,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,bx,M,1,1,PETSC_NULL,&dac);CHKERRQ(ierr);
} else if (dim == 2) {
- ierr = DMDACreate2d(PETSC_COMM_WORLD,ptype,stype,M,N,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,stype,M,N,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&dac);CHKERRQ(ierr);
} else if (dim == 3) {
- ierr = DMDACreate3d(PETSC_COMM_WORLD,ptype,stype,M,N,P,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,bx,by,bz,stype,M,N,P,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&dac);CHKERRQ(ierr);
}
ierr = DMRefine(dac,PETSC_COMM_WORLD,&daf);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tutorials/ex4.c
--- a/src/dm/examples/tutorials/ex4.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex4.c Fri Mar 11 16:29:15 2011 -0700
@@ -42,7 +42,7 @@
ierr = PetscInitialize(&argc,&argv,(char*)0,help);CHKERRQ(ierr);
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,m,n,PETSC_DECIDE,PETSC_DECIDE,dof,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,m,n,PETSC_DECIDE,PETSC_DECIDE,dof,1,0,0,&da);CHKERRQ(ierr);
ierr = DMDASetUniformCoordinates(da,0.0,1.0,0.0,1.0,0.0,1.0);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&u);CHKERRQ(ierr);
ierr = DMDAGetCoordinates(da,&xy);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tutorials/ex5.c
--- a/src/dm/examples/tutorials/ex5.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex5.c Fri Mar 11 16:29:15 2011 -0700
@@ -15,7 +15,7 @@
PetscViewer viewer;
Vec local,global;
PetscScalar value;
- DMDABoundaryType ptype = DMDA_NONPERIODIC;
+ DMDABoundaryType bx = DMDA_BOUNDARY_NONE,by = DMDA_BOUNDARY_NONE;
DMDAStencilType stype = DMDA_STENCIL_BOX;
PetscScalar *lv;
@@ -31,7 +31,7 @@
if (flg) stype = DMDA_STENCIL_STAR;
/* Create distributed array and get vectors */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,ptype,stype,M,N,m,n,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,bx,by,stype,M,N,m,n,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tutorials/ex6.c
--- a/src/dm/examples/tutorials/ex6.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex6.c Fri Mar 11 16:29:15 2011 -0700
@@ -227,17 +227,17 @@
if (!((fa->p2 - fa->p1) % 2)) SETERRQ(PETSC_COMM_SELF,1,"width of region 3 must NOT be divisible by 2");
if (fa->comm[1]) {
- ierr = DMDACreate2d(fa->comm[1],DMDA_XPERIODIC,DMDA_STENCIL_BOX,fa->p2,fa->r2g,PETSC_DECIDE,PETSC_DECIDE,1,fa->sw,PETSC_NULL,PETSC_NULL,&da2);CHKERRQ(ierr);
+ ierr = DMDACreate2d(fa->comm[1],DMDA_BOUNDARY_PERIODIC,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,fa->p2,fa->r2g,PETSC_DECIDE,PETSC_DECIDE,1,fa->sw,PETSC_NULL,PETSC_NULL,&da2);CHKERRQ(ierr);
ierr = DMGetLocalVector(da2,&vl2);CHKERRQ(ierr);
ierr = DMGetGlobalVector(da2,&vg2);CHKERRQ(ierr);
}
if (fa->comm[2]) {
- ierr = DMDACreate2d(fa->comm[2],DMDA_NONPERIODIC,DMDA_STENCIL_BOX,fa->p1-fa->p2,fa->r2g,PETSC_DECIDE,PETSC_DECIDE,1,fa->sw,PETSC_NULL,PETSC_NULL,&da3);CHKERRQ(ierr);
+ ierr = DMDACreate2d(fa->comm[2],DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,fa->p1-fa->p2,fa->r2g,PETSC_DECIDE,PETSC_DECIDE,1,fa->sw,PETSC_NULL,PETSC_NULL,&da3);CHKERRQ(ierr);
ierr = DMGetLocalVector(da3,&vl3);CHKERRQ(ierr);
ierr = DMGetGlobalVector(da3,&vg3);CHKERRQ(ierr);
}
if (fa->comm[0]) {
- ierr = DMDACreate2d(fa->comm[0],DMDA_NONPERIODIC,DMDA_STENCIL_BOX,fa->p1,fa->r1g,PETSC_DECIDE,PETSC_DECIDE,1,fa->sw,PETSC_NULL,PETSC_NULL,&da1);CHKERRQ(ierr);
+ ierr = DMDACreate2d(fa->comm[0],DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,fa->p1,fa->r1g,PETSC_DECIDE,PETSC_DECIDE,1,fa->sw,PETSC_NULL,PETSC_NULL,&da1);CHKERRQ(ierr);
ierr = DMGetLocalVector(da1,&vl1);CHKERRQ(ierr);
ierr = DMGetGlobalVector(da1,&vg1);CHKERRQ(ierr);
}
diff -r 23e7928e179a src/dm/examples/tutorials/ex6f90.F
--- a/src/dm/examples/tutorials/ex6f90.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex6f90.F Fri Mar 11 16:29:15 2011 -0700
@@ -219,21 +219,24 @@
! set up distributed arrays.
!-----------------------------------------------------------------------
IF(fa%comm(1) /= 0)THEN
- CALL DMDACreate2d(fa%comm(1),DMDA_XPERIODIC,DMDA_STENCIL_BOX, &
+ CALL DMDACreate2d(fa%comm(1),DMDA_BOUNDARY_PERIODIC, &
+ & DMDA_BOUNDARY_NONE, DMDA_STENCIL_BOX, &
& fa%p2,fa%r2g,PETSC_DECIDE,PETSC_DECIDE,1,fa%sw, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da2,ierr)
CALL DMGetLocalVector(da2,vl2,ierr)
CALL DMGetGlobalVector(da2,vg2,ierr)
ENDIF
IF(fa%comm(2) /= 0)THEN
- CALL DMDACreate2d(fa%comm(2),DMDA_NONPERIODIC,DMDA_STENCIL_BOX, &
+ CALL DMDACreate2d(fa%comm(2),DMDA_BOUNDARY_NONE, &
+ & DMDA_BOUNDARY_NONE, DMDA_STENCIL_BOX, &
& fa%p1-fa%p2,fa%r2g,PETSC_DECIDE,PETSC_DECIDE,1,fa%sw, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da3,ierr)
CALL DMGetLocalVector(da3,vl3,ierr)
CALL DMGetGlobalVector(da3,vg3,ierr)
ENDIF
IF(fa%comm(0) /= 0)THEN
- CALL DMDACreate2d(fa%comm(0),DMDA_NONPERIODIC,DMDA_STENCIL_BOX, &
+ CALL DMDACreate2d(fa%comm(0),DMDA_BOUNDARY_NONE, &
+ & DMDA_BOUNDARY_NONE, DMDA_STENCIL_BOX, &
& fa%p1,fa%r1g,PETSC_DECIDE,PETSC_DECIDE,1,fa%sw, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da1,ierr)
CALL DMGetLocalVector(da1,vl1,ierr)
diff -r 23e7928e179a src/dm/examples/tutorials/ex7.c
--- a/src/dm/examples/tutorials/ex7.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex7.c Fri Mar 11 16:29:15 2011 -0700
@@ -39,7 +39,7 @@
ierr = PetscInitialize(&argc,&argv,(char *)0,help);CHKERRQ(ierr);
/* Create a DMDA and an associated vector */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,10,10,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,10,10,
PETSC_DECIDE,PETSC_DECIDE,2,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/examples/tutorials/ex8.c
--- a/src/dm/examples/tutorials/ex8.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex8.c Fri Mar 11 16:29:15 2011 -0700
@@ -13,8 +13,8 @@
PetscErrorCode ierr;
ierr = PetscNew(Load,&load);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_SELF,DMDA_NONPERIODIC,n1,1,1,PETSC_NULL,(DM*)&load->L1);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_SELF,DMDA_NONPERIODIC,n1,1,1,PETSC_NULL,(DM*)&load->L2);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_SELF,DMDA_BOUNDARY_NONE,n1,1,1,PETSC_NULL,(DM*)&load->L1);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_SELF,DMDA_BOUNDARY_NONE,n1,1,1,PETSC_NULL,(DM*)&load->L2);CHKERRQ(ierr);
ierr = DMCompositeCreate(PETSC_COMM_SELF,(DMComposite*)&load->load);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
diff -r 23e7928e179a src/dm/examples/tutorials/ex9.c
--- a/src/dm/examples/tutorials/ex9.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/examples/tutorials/ex9.c Fri Mar 11 16:29:15 2011 -0700
@@ -31,7 +31,7 @@
ierr = PetscInitialize(&argc,&argv,(char *)0,help);CHKERRQ(ierr);
/* Create a DMDA and an associated vector */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,100,90,PETSC_DECIDE,PETSC_DECIDE,2,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,100,90,PETSC_DECIDE,PETSC_DECIDE,2,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&global);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da,&local);CHKERRQ(ierr);
ierr = VecSet(global,-1.0);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/impls/da/da.c
--- a/src/dm/impls/da/da.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/da.c Fri Mar 11 16:29:15 2011 -0700
@@ -96,26 +96,31 @@
#undef __FUNCT__
#define __FUNCT__ "DMDASetBoundaryType"
/*@
- DMDASetBoundaryType - Sets the type of periodicity
+ DMDASetBoundaryType - Sets the type of ghost nodes on domain boundaries.
Not collective
Input Parameter:
+ da - The DMDA
-- ptype - One of DMDA_NONPERIODIC, DMDA_XPERIODIC, DMDA_YPERIODIC, DMDA_ZPERIODIC, DMDA_XYPERIODIC, DMDA_XZPERIODIC, DMDA_YZPERIODIC, or DMDA_XYZPERIODIC
+- bx,by,bz - One of DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED, DMDA_BOUNDARY_PERIODIC
Level: intermediate
.keywords: distributed array, periodicity
.seealso: DMDACreate(), DMDestroy(), DMDA, DMDABoundaryType
@*/
-PetscErrorCode DMDASetBoundaryType(DM da, DMDABoundaryType ptype)
+PetscErrorCode DMDASetBoundaryType(DM da,DMDABoundaryType bx,DMDABoundaryType by,DMDABoundaryType bz)
{
DM_DA *dd = (DM_DA*)da->data;
PetscFunctionBegin;
PetscValidHeaderSpecific(da,DM_CLASSID,1);
- dd->wrap = ptype;
+ PetscValidLogicalCollectiveInt(da,bx,2);
+ PetscValidLogicalCollectiveInt(da,by,3);
+ PetscValidLogicalCollectiveInt(da,bz,4);
+ dd->bx = bx;
+ dd->by = by;
+ dd->bz = bz;
PetscFunctionReturn(0);
}
@@ -733,17 +738,17 @@
PetscValidHeaderSpecific(da,DM_CLASSID,1);
PetscValidPointer(daref,3);
- if (DMDAXPeriodic(dd->wrap) || dd->interptype == DMDA_Q0){
+ if (dd->bx == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0){
M = dd->refine_x*dd->M;
} else {
M = 1 + dd->refine_x*(dd->M - 1);
}
- if (DMDAYPeriodic(dd->wrap) || dd->interptype == DMDA_Q0){
+ if (dd->by == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0){
N = dd->refine_y*dd->N;
} else {
N = 1 + dd->refine_y*(dd->N - 1);
}
- if (DMDAZPeriodic(dd->wrap) || dd->interptype == DMDA_Q0){
+ if (dd->bz == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0){
P = dd->refine_z*dd->P;
} else {
P = 1 + dd->refine_z*(dd->P - 1);
@@ -752,23 +757,23 @@
if (dd->dim == 3) {
PetscInt *lx,*ly,*lz;
ierr = PetscMalloc3(dd->m,PetscInt,&lx,dd->n,PetscInt,&ly,dd->p,PetscInt,&lz);CHKERRQ(ierr);
- ierr = DMDARefineOwnershipRanges(da,(PetscBool)(DMDAXPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
- ierr = DMDARefineOwnershipRanges(da,(PetscBool)(DMDAYPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_y,dd->n,dd->ly,ly);CHKERRQ(ierr);
- ierr = DMDARefineOwnershipRanges(da,(PetscBool)(DMDAZPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_z,dd->p,dd->lz,lz);CHKERRQ(ierr);
- ierr = DMDACreate3d(((PetscObject)da)->comm,dd->wrap,dd->stencil_type,M,N,P,dd->m,dd->n,dd->p,dd->w,dd->s,lx,ly,lz,&da2);CHKERRQ(ierr);
+ ierr = DMDARefineOwnershipRanges(da,(PetscBool)(dd->bx == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
+ ierr = DMDARefineOwnershipRanges(da,(PetscBool)(dd->by == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_y,dd->n,dd->ly,ly);CHKERRQ(ierr);
+ ierr = DMDARefineOwnershipRanges(da,(PetscBool)(dd->bz == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_z,dd->p,dd->lz,lz);CHKERRQ(ierr);
+ ierr = DMDACreate3d(((PetscObject)da)->comm,dd->bx,dd->by,dd->bz,dd->stencil_type,M,N,P,dd->m,dd->n,dd->p,dd->w,dd->s,lx,ly,lz,&da2);CHKERRQ(ierr);
ierr = PetscFree3(lx,ly,lz);CHKERRQ(ierr);
} else if (dd->dim == 2) {
PetscInt *lx,*ly;
ierr = PetscMalloc2(dd->m,PetscInt,&lx,dd->n,PetscInt,&ly);CHKERRQ(ierr);
- ierr = DMDARefineOwnershipRanges(da,(PetscBool)(DMDAXPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
- ierr = DMDARefineOwnershipRanges(da,(PetscBool)(DMDAYPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_y,dd->n,dd->ly,ly);CHKERRQ(ierr);
- ierr = DMDACreate2d(((PetscObject)da)->comm,dd->wrap,dd->stencil_type,M,N,dd->m,dd->n,dd->w,dd->s,lx,ly,&da2);CHKERRQ(ierr);
+ ierr = DMDARefineOwnershipRanges(da,(PetscBool)(dd->bx == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
+ ierr = DMDARefineOwnershipRanges(da,(PetscBool)(dd->by == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_y,dd->n,dd->ly,ly);CHKERRQ(ierr);
+ ierr = DMDACreate2d(((PetscObject)da)->comm,dd->bx,dd->by,dd->stencil_type,M,N,dd->m,dd->n,dd->w,dd->s,lx,ly,&da2);CHKERRQ(ierr);
ierr = PetscFree2(lx,ly);CHKERRQ(ierr);
} else if (dd->dim == 1) {
PetscInt *lx;
ierr = PetscMalloc(dd->m*sizeof(PetscInt),&lx);CHKERRQ(ierr);
- ierr = DMDARefineOwnershipRanges(da,(PetscBool)(DMDAXPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
- ierr = DMDACreate1d(((PetscObject)da)->comm,dd->wrap,M,dd->w,dd->s,lx,&da2);CHKERRQ(ierr);
+ ierr = DMDARefineOwnershipRanges(da,(PetscBool)(dd->bx == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
+ ierr = DMDACreate1d(((PetscObject)da)->comm,dd->bx,M,dd->w,dd->s,lx,&da2);CHKERRQ(ierr);
ierr = PetscFree(lx);CHKERRQ(ierr);
}
dd2 = (DM_DA*)da2->data;
@@ -830,17 +835,17 @@
PetscValidHeaderSpecific(da,DM_CLASSID,1);
PetscValidPointer(daref,3);
- if (DMDAXPeriodic(dd->wrap) || dd->interptype == DMDA_Q0){
+ if (dd->bx == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0){
M = dd->M / dd->refine_x;
} else {
M = 1 + (dd->M - 1) / dd->refine_x;
}
- if (DMDAYPeriodic(dd->wrap) || dd->interptype == DMDA_Q0){
+ if (dd->by == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0){
N = dd->N / dd->refine_y;
} else {
N = 1 + (dd->N - 1) / dd->refine_y;
}
- if (DMDAZPeriodic(dd->wrap) || dd->interptype == DMDA_Q0){
+ if (dd->bz == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0){
P = dd->P / dd->refine_z;
} else {
P = 1 + (dd->P - 1) / dd->refine_z;
@@ -849,23 +854,23 @@
if (dd->dim == 3) {
PetscInt *lx,*ly,*lz;
ierr = PetscMalloc3(dd->m,PetscInt,&lx,dd->n,PetscInt,&ly,dd->p,PetscInt,&lz);CHKERRQ(ierr);
- ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(DMDAXPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
- ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(DMDAYPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_y,dd->n,dd->ly,ly);CHKERRQ(ierr);
- ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(DMDAZPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_z,dd->p,dd->lz,lz);CHKERRQ(ierr);
- ierr = DMDACreate3d(((PetscObject)da)->comm,dd->wrap,dd->stencil_type,M,N,P,dd->m,dd->n,dd->p,dd->w,dd->s,lx,ly,lz,&da2);CHKERRQ(ierr);
+ ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(dd->bx == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
+ ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(dd->by == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_y,dd->n,dd->ly,ly);CHKERRQ(ierr);
+ ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(dd->bz == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_z,dd->p,dd->lz,lz);CHKERRQ(ierr);
+ ierr = DMDACreate3d(((PetscObject)da)->comm,dd->bx,dd->by,dd->bz,dd->stencil_type,M,N,P,dd->m,dd->n,dd->p,dd->w,dd->s,lx,ly,lz,&da2);CHKERRQ(ierr);
ierr = PetscFree3(lx,ly,lz);CHKERRQ(ierr);
} else if (dd->dim == 2) {
PetscInt *lx,*ly;
ierr = PetscMalloc2(dd->m,PetscInt,&lx,dd->n,PetscInt,&ly);CHKERRQ(ierr);
- ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(DMDAXPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
- ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(DMDAYPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_y,dd->n,dd->ly,ly);CHKERRQ(ierr);
- ierr = DMDACreate2d(((PetscObject)da)->comm,dd->wrap,dd->stencil_type,M,N,dd->m,dd->n,dd->w,dd->s,lx,ly,&da2);CHKERRQ(ierr);
+ ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(dd->bx == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
+ ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(dd->by == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_y,dd->n,dd->ly,ly);CHKERRQ(ierr);
+ ierr = DMDACreate2d(((PetscObject)da)->comm,dd->bx,dd->by,dd->stencil_type,M,N,dd->m,dd->n,dd->w,dd->s,lx,ly,&da2);CHKERRQ(ierr);
ierr = PetscFree2(lx,ly);CHKERRQ(ierr);
} else if (dd->dim == 1) {
PetscInt *lx;
ierr = PetscMalloc(dd->m*sizeof(PetscInt),&lx);CHKERRQ(ierr);
- ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(DMDAXPeriodic(dd->wrap) || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
- ierr = DMDACreate1d(((PetscObject)da)->comm,dd->wrap,M,dd->w,dd->s,lx,&da2);CHKERRQ(ierr);
+ ierr = DMDACoarsenOwnershipRanges(da,(PetscBool)(dd->bx == DMDA_BOUNDARY_PERIODIC || dd->interptype == DMDA_Q0),dd->s,dd->refine_x,dd->m,dd->lx,lx);CHKERRQ(ierr);
+ ierr = DMDACreate1d(((PetscObject)da)->comm,dd->bx,M,dd->w,dd->s,lx,&da2);CHKERRQ(ierr);
ierr = PetscFree(lx);CHKERRQ(ierr);
}
dd2 = (DM_DA*)da2->data;
diff -r 23e7928e179a src/dm/impls/da/da1.c
--- a/src/dm/impls/da/da1.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/da1.c Fri Mar 11 16:29:15 2011 -0700
@@ -6,9 +6,7 @@
#include "private/daimpl.h" /*I "petscdm.h" I*/
-const char *DMDABoundaryTypes[] = {"NONPERIODIC","XPERIODIC","YPERIODIC","XYPERIODIC",
- "XYZPERIODIC","XZPERIODIC","YZPERIODIC","ZPERIODIC",
- "XYZGHOSTED","DMDABoundaryType","DMDA_",0};
+const char *DMDABoundaryTypes[] = {"BOUNDARY_NONE","BOUNDARY_GHOSTED","BOUNDARY_PERIODIC","DMDA_",0};
#undef __FUNCT__
#define __FUNCT__ "DMView_DA_1d"
@@ -137,7 +135,7 @@
const PetscInt s = dd->s;
const PetscInt sDist = s*dof; /* absolute stencil distance */
const PetscInt *lx = dd->lx;
- const DMDABoundaryType wrap = dd->wrap;
+ const DMDABoundaryType bx = dd->bx;
MPI_Comm comm;
Vec local, global;
VecScatter ltog, gtol;
@@ -207,7 +205,7 @@
xe = xs + x;
/* determine ghost region */
- if (DMDAXGhosted(wrap)) {
+ if (bx) {
Xs = xs - sDist;
Xe = xe + sDist;
} else {
@@ -215,7 +213,7 @@
if ((xe+sDist) <= M*dof) Xe = xe+sDist; else Xe = M*dof;
}
- if (DMDAXPeriodic(wrap)) {
+ if (bx == DMDA_BOUNDARY_PERIODIC) {
IXs = xs - sDist;
IXe = xe + sDist;
} else {
@@ -251,7 +249,7 @@
for (i=0; i<IXs-Xs; i++) {idx[i] = -1; } /* prepend with -1s if needed for ghosted case*/
nn = IXs-Xs;
- if DMDAXPeriodic(wrap) { /* Handle all cases with wrap first */
+ if (bx == DMDA_BOUNDARY_PERIODIC) { /* Handle all cases with wrap first */
for (i=0; i<sDist; i++) { /* Left ghost points */
if ((xs-sDist+i)>=0) { idx[nn++] = xs-sDist+i;}
else { idx[nn++] = M*dof+(xs-sDist+i);}
@@ -318,8 +316,8 @@
Input Parameters:
+ comm - MPI communicator
-. wrap - type of ghost cells at the boundary the array should have, if any. Use
- DMDA_NONGHOSTED, DMDA_XGHOSTED, or DMDA_XPERIODIC.
+. bx - type of ghost cells at the boundary the array should have, if any. Use
+ DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED, or DMDA_BOUNDARY_PERIODIC.
. M - global dimension of the array (use -M to indicate that it may be set to a different value
from the command line with -da_grid_x <M>)
. dof - number of degrees of freedom per node
@@ -350,7 +348,7 @@
DMDAGetInfo(), DMCreateGlobalVector(), DMCreateLocalVector(), DMDACreateNaturalVector(), DMDALoad(), DMDAGetOwnershipRanges()
@*/
-PetscErrorCode DMDACreate1d(MPI_Comm comm, DMDABoundaryType wrap, PetscInt M, PetscInt dof, PetscInt s, const PetscInt lx[], DM *da)
+PetscErrorCode DMDACreate1d(MPI_Comm comm, DMDABoundaryType bx, PetscInt M, PetscInt dof, PetscInt s, const PetscInt lx[], DM *da)
{
PetscErrorCode ierr;
PetscMPIInt size;
@@ -361,7 +359,7 @@
ierr = DMDASetSizes(*da, M, 1, 1);CHKERRQ(ierr);
ierr = MPI_Comm_size(comm, &size);CHKERRQ(ierr);
ierr = DMDASetNumProcs(*da, size, PETSC_DECIDE, PETSC_DECIDE);CHKERRQ(ierr);
- ierr = DMDASetBoundaryType(*da, wrap);CHKERRQ(ierr);
+ ierr = DMDASetBoundaryType(*da, bx, PETSC_NULL, PETSC_NULL);CHKERRQ(ierr);
ierr = DMDASetDof(*da, dof);CHKERRQ(ierr);
ierr = DMDASetStencilWidth(*da, s);CHKERRQ(ierr);
ierr = DMDASetOwnershipRanges(*da, lx, PETSC_NULL, PETSC_NULL);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/impls/da/da2.c
--- a/src/dm/impls/da/da2.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/da2.c Fri Mar 11 16:29:15 2011 -0700
@@ -1236,7 +1236,8 @@
PetscInt n = dd->n;
const PetscInt dof = dd->w;
const PetscInt s = dd->s;
- const DMDABoundaryType wrap = dd->wrap;
+ const DMDABoundaryType bx = dd->bx;
+ const DMDABoundaryType by = dd->by;
const DMDAStencilType stencil_type = dd->stencil_type;
PetscInt *lx = dd->lx;
PetscInt *ly = dd->ly;
@@ -1358,10 +1359,10 @@
if (ye+s <= N) { Ye = ye + s; IYe = ye + s; } else { Ye = N; IYe = N; }
/* fix for periodicity/ghosted */
- if (DMDAXGhosted(wrap)) { Xs = xs - s; Xe = xe + s; }
- if (DMDAXPeriodic(wrap)) { IXs = xs - s; IXe = xe + s; }
- if (DMDAYGhosted(wrap)) { Ys = ys - s; Ye = ye + s; }
- if (DMDAYPeriodic(wrap)) { IYs = ys - s; IYe = ye + s; }
+ if (bx) { Xs = xs - s; Xe = xe + s; }
+ if (bx == DMDA_BOUNDARY_PERIODIC) { IXs = xs - s; IXe = xe + s; }
+ if (by) { Ys = ys - s; Ye = ye + s; }
+ if (by == DMDA_BOUNDARY_PERIODIC) { IYs = ys - s; IYe = ye + s; }
/* Resize all X parameters to reflect w */
s_x = s;
@@ -1492,7 +1493,7 @@
}
n7 = rank + m; if (n7 >= m*n) n7 = -1;
- if (DMDAXPeriodic(wrap) && DMDAYPeriodic(wrap)) {
+ if (bx == DMDA_BOUNDARY_PERIODIC && by == DMDA_BOUNDARY_PERIODIC) {
/* Modify for Periodic Cases */
/* Handle all four corners */
if ((n6 < 0) && (n7 < 0) && (n3 < 0)) n6 = m-1;
@@ -1515,14 +1516,14 @@
if ((n1 >= 0) && (n2 < 0)) n2 = rank-2*m+1;
if ((n7 >= 0) && (n6 < 0)) n6 = rank+2*m-1;
if ((n7 >= 0) && (n8 < 0)) n8 = rank+1;
- } else if (DMDAYPeriodic(wrap)) { /* Handle Top and Bottom Sides */
+ } else if (by == DMDA_BOUNDARY_PERIODIC) { /* Handle Top and Bottom Sides */
if (n1 < 0) n1 = rank + m * (n-1);
if (n7 < 0) n7 = rank - m * (n-1);
if ((n3 >= 0) && (n0 < 0)) n0 = size - m + rank - 1;
if ((n3 >= 0) && (n6 < 0)) n6 = (rank%m)-1;
if ((n5 >= 0) && (n2 < 0)) n2 = size - m + rank + 1;
if ((n5 >= 0) && (n8 < 0)) n8 = (rank%m)+1;
- } else if (DMDAXPeriodic(wrap)) { /* Handle Left and Right Sides */
+ } else if (bx == DMDA_BOUNDARY_PERIODIC) { /* Handle Left and Right Sides */
if (n3 < 0) n3 = rank + (m-1);
if (n5 < 0) n5 = rank - (m-1);
if ((n1 >= 0) && (n0 < 0)) n0 = rank-1;
@@ -1624,8 +1625,8 @@
}
if ((stencil_type == DMDA_STENCIL_STAR) ||
- (!DMDAXPeriodic(wrap) && DMDAXGhosted(wrap)) ||
- (!DMDAYPeriodic(wrap) && DMDAYGhosted(wrap))) {
+ (bx && bx != DMDA_BOUNDARY_PERIODIC) ||
+ (by && by != DMDA_BOUNDARY_PERIODIC)) {
/*
Recompute the local to global mappings, this time keeping the
information about the cross corner processor numbers and any ghosted
@@ -1756,8 +1757,8 @@
Input Parameters:
+ comm - MPI communicator
-. wrap - type of periodicity should the array have.
- Use one of DMDA_NONPERIODIC, DMDA_XPERIODIC, DMDA_YPERIODIC, or DMDA_XYPERIODIC.
+. bx,by - type of ghost nodes the array have.
+ Use one of DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED, DMDA_BOUNDARY_PERIODIC.
. stencil_type - stencil type. Use either DMDA_STENCIL_BOX or DMDA_STENCIL_STAR.
. M,N - global dimension in each direction of the array (use -M and or -N to indicate that it may be set to a different value
from the command line with -da_grid_x <M> -da_grid_y <N>)
@@ -1801,7 +1802,7 @@
DMDAGetInfo(), DMCreateGlobalVector(), DMCreateLocalVector(), DMDACreateNaturalVector(), DMDALoad(), DMDAGetOwnershipRanges()
@*/
-PetscErrorCode DMDACreate2d(MPI_Comm comm,DMDABoundaryType wrap,DMDAStencilType stencil_type,
+PetscErrorCode DMDACreate2d(MPI_Comm comm,DMDABoundaryType bx,DMDABoundaryType by,DMDAStencilType stencil_type,
PetscInt M,PetscInt N,PetscInt m,PetscInt n,PetscInt dof,PetscInt s,const PetscInt lx[],const PetscInt ly[],DM *da)
{
PetscErrorCode ierr;
@@ -1811,7 +1812,7 @@
ierr = DMDASetDim(*da, 2);CHKERRQ(ierr);
ierr = DMDASetSizes(*da, M, N, 1);CHKERRQ(ierr);
ierr = DMDASetNumProcs(*da, m, n, PETSC_DECIDE);CHKERRQ(ierr);
- ierr = DMDASetBoundaryType(*da, wrap);CHKERRQ(ierr);
+ ierr = DMDASetBoundaryType(*da, bx, by, PETSC_NULL);CHKERRQ(ierr);
ierr = DMDASetDof(*da, dof);CHKERRQ(ierr);
ierr = DMDASetStencilType(*da, stencil_type);CHKERRQ(ierr);
ierr = DMDASetStencilWidth(*da, s);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/impls/da/da3.c
--- a/src/dm/impls/da/da3.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/da3.c Fri Mar 11 16:29:15 2011 -0700
@@ -173,7 +173,9 @@
PetscInt p = dd->p;
const PetscInt dof = dd->w;
const PetscInt s = dd->s;
- const DMDABoundaryType wrap = dd->wrap;
+ const DMDABoundaryType bx = dd->bx;
+ const DMDABoundaryType by = dd->by;
+ const DMDABoundaryType bz = dd->bz;
const DMDAStencilType stencil_type = dd->stencil_type;
PetscInt *lx = dd->lx;
PetscInt *ly = dd->ly;
@@ -339,12 +341,12 @@
if (ze+s <= P) { Ze = ze + s; IZe = ze + s; } else { Ze = P; IZe = P; }
/* fix for periodicity/ghosted */
- if (DMDAXGhosted(wrap)) { Xs = xs - s; Xe = xe + s; }
- if (DMDAXPeriodic(wrap)) { IXs = xs - s; IXe = xe + s; }
- if (DMDAYGhosted(wrap)) { Ys = ys - s; Ye = ye + s; }
- if (DMDAYPeriodic(wrap)) { IYs = ys - s; IYe = ye + s; }
- if (DMDAZGhosted(wrap)) { Zs = zs - s; Ze = ze + s; }
- if (DMDAZPeriodic(wrap)) { IZs = zs - s; IZe = ze + s; }
+ if (bx) { Xs = xs - s; Xe = xe + s; }
+ if (bx == DMDA_BOUNDARY_PERIODIC) { IXs = xs - s; IXe = xe + s; }
+ if (by) { Ys = ys - s; Ye = ye + s; }
+ if (by == DMDA_BOUNDARY_PERIODIC) { IYs = ys - s; IYe = ye + s; }
+ if (bz) { Zs = zs - s; Ze = ze + s; }
+ if (bz == DMDA_BOUNDARY_PERIODIC) { IZs = zs - s; IZe = ze + s; }
/* Resize all X parameters to reflect w */
s_x = s;
@@ -658,19 +660,19 @@
/* Check for when not X,Y, and Z Periodic */
/* If not X periodic */
- if (!DMDAXPeriodic(wrap)) {
+ if (bx != DMDA_BOUNDARY_PERIODIC) {
if (xs==0) {n0 = n3 = n6 = n9 = n12 = n15 = n18 = n21 = n24 = -2;}
if (xe==M) {n2 = n5 = n8 = n11 = n14 = n17 = n20 = n23 = n26 = -2;}
}
/* If not Y periodic */
- if (!DMDAYPeriodic(wrap)) {
+ if (by != DMDA_BOUNDARY_PERIODIC) {
if (ys==0) {n0 = n1 = n2 = n9 = n10 = n11 = n18 = n19 = n20 = -2;}
if (ye==N) {n6 = n7 = n8 = n15 = n16 = n17 = n24 = n25 = n26 = -2;}
}
/* If not Z periodic */
- if (!DMDAZPeriodic(wrap)) {
+ if (bz != DMDA_BOUNDARY_PERIODIC) {
if (zs==0) {n0 = n1 = n2 = n3 = n4 = n5 = n6 = n7 = n8 = -2;}
if (ze==P) {n18 = n19 = n20 = n21 = n22 = n23 = n24 = n25 = n26 = -2;}
}
@@ -961,9 +963,9 @@
}
if ((stencil_type == DMDA_STENCIL_STAR) ||
- (!DMDAXPeriodic(wrap) && DMDAXGhosted(wrap)) ||
- (!DMDAYPeriodic(wrap) && DMDAYGhosted(wrap)) ||
- (!DMDAZPeriodic(wrap) && DMDAZGhosted(wrap))) {
+ (bx != DMDA_BOUNDARY_PERIODIC && bx) ||
+ (by != DMDA_BOUNDARY_PERIODIC && by) ||
+ (bz != DMDA_BOUNDARY_PERIODIC && bz)) {
/*
Recompute the local to global mappings, this time keeping the
information about the cross corner processor numbers.
@@ -1296,8 +1298,8 @@
Input Parameters:
+ comm - MPI communicator
-. wrap - type of periodicity the array should have, if any. Use one
- of DMDA_NONPERIODIC, DMDA_XPERIODIC, DMDA_YPERIODIC, DMDA_ZPERIODIC, DMDA_XYPERIODIC, DMDA_XZPERIODIC, DMDA_YZPERIODIC, DMDA_XYZPERIODIC, or DMDA_XYZGHOSTED.
+. bx,by,bz - type of ghost nodes the array have.
+ Use one of DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED, DMDA_BOUNDARY_PERIODIC.
. stencil_type - Type of stencil (DMDA_STENCIL_STAR or DMDA_STENCIL_BOX)
. M,N,P - global dimension in each direction of the array (use -M, -N, and or -P to indicate that it may be set to a different value
from the command line with -da_grid_x <M> -da_grid_y <N> -da_grid_z <P>)
@@ -1344,7 +1346,7 @@
DMDAGetInfo(), DMCreateGlobalVector(), DMCreateLocalVector(), DMDACreateNaturalVector(), DMDALoad(), DMDAGetOwnershipRanges()
@*/
-PetscErrorCode DMDACreate3d(MPI_Comm comm,DMDABoundaryType wrap,DMDAStencilType stencil_type,PetscInt M,
+PetscErrorCode DMDACreate3d(MPI_Comm comm,DMDABoundaryType bx,DMDABoundaryType by,DMDABoundaryType bz,DMDAStencilType stencil_type,PetscInt M,
PetscInt N,PetscInt P,PetscInt m,PetscInt n,PetscInt p,PetscInt dof,PetscInt s,const PetscInt lx[],const PetscInt ly[],const PetscInt lz[],DM *da)
{
PetscErrorCode ierr;
@@ -1354,7 +1356,7 @@
ierr = DMDASetDim(*da, 3);CHKERRQ(ierr);
ierr = DMDASetSizes(*da, M, N, P);CHKERRQ(ierr);
ierr = DMDASetNumProcs(*da, m, n, p);CHKERRQ(ierr);
- ierr = DMDASetBoundaryType(*da, wrap);CHKERRQ(ierr);
+ ierr = DMDASetBoundaryType(*da, bx, by, bz);CHKERRQ(ierr);
ierr = DMDASetDof(*da, dof);CHKERRQ(ierr);
ierr = DMDASetStencilType(*da, stencil_type);CHKERRQ(ierr);
ierr = DMDASetStencilWidth(*da, s);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/impls/da/dacorn.c
--- a/src/dm/impls/da/dacorn.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/dacorn.c Fri Mar 11 16:29:15 2011 -0700
@@ -152,17 +152,17 @@
ierr = MPI_Comm_size(((PetscObject)da)->comm,&size);CHKERRQ(ierr);
if (dd->dim == 1) {
PetscInt s,m,*lc,l;
- DMDABoundaryType pt;
- ierr = DMDAGetInfo(da,0,&m,0,0,0,0,0,0,&s,&pt,0);CHKERRQ(ierr);
+ DMDABoundaryType bx;
+ ierr = DMDAGetInfo(da,0,&m,0,0,0,0,0,0,&s,&bx,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,0,0,0,&l,0,0);CHKERRQ(ierr);
ierr = PetscMalloc(size*sizeof(PetscInt),&lc);CHKERRQ(ierr);
ierr = MPI_Allgather(&l,1,MPIU_INT,lc,1,MPIU_INT,((PetscObject)da)->comm);CHKERRQ(ierr);
- ierr = DMDACreate1d(((PetscObject)da)->comm,pt,m,1,s,lc,&dd->da_coordinates);CHKERRQ(ierr);
+ ierr = DMDACreate1d(((PetscObject)da)->comm,bx,m,1,s,lc,&dd->da_coordinates);CHKERRQ(ierr);
ierr = PetscFree(lc);CHKERRQ(ierr);
} else if (dd->dim == 2) {
PetscInt i,s,m,*lc,*ld,l,k,n,M,N;
- DMDABoundaryType pt;
- ierr = DMDAGetInfo(da,0,&m,&n,0,&M,&N,0,0,&s,&pt,0);CHKERRQ(ierr);
+ DMDABoundaryType bx,by;
+ ierr = DMDAGetInfo(da,0,&m,&n,0,&M,&N,0,0,&s,&bx,&by,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,0,0,0,&l,&k,0);CHKERRQ(ierr);
ierr = PetscMalloc2(size,PetscInt,&lc,size,PetscInt,&ld);CHKERRQ(ierr);
/* only first M values in lc matter */
@@ -172,12 +172,12 @@
for ( i=0; i<N; i++) {
ld[i] = ld[M*i];
}
- ierr = DMDACreate2d(((PetscObject)da)->comm,pt,DMDA_STENCIL_BOX,m,n,M,N,2,s,lc,ld,&dd->da_coordinates);CHKERRQ(ierr);
+ ierr = DMDACreate2d(((PetscObject)da)->comm,bx,by,DMDA_STENCIL_BOX,m,n,M,N,2,s,lc,ld,&dd->da_coordinates);CHKERRQ(ierr);
ierr = PetscFree2(lc,ld);CHKERRQ(ierr);
} else if (dd->dim == 3) {
PetscInt i,s,m,*lc,*ld,*le,l,k,q,n,M,N,P,p;
- DMDABoundaryType pt;
- ierr = DMDAGetInfo(da,0,&m,&n,&p,&M,&N,&P,0,&s,&pt,0);CHKERRQ(ierr);
+ DMDABoundaryType bx,by,bz;
+ ierr = DMDAGetInfo(da,0,&m,&n,&p,&M,&N,&P,0,&s,&bx,&by,&bz,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,0,0,0,&l,&k,&q);CHKERRQ(ierr);
ierr = PetscMalloc3(size,PetscInt,&lc,size,PetscInt,&ld,size,PetscInt,&le);CHKERRQ(ierr);
/* only first M values in lc matter */
@@ -191,7 +191,7 @@
for ( i=0; i<P; i++) {
le[i] = le[M*N*i];
}
- ierr = DMDACreate3d(((PetscObject)da)->comm,pt,DMDA_STENCIL_BOX,m,n,p,M,N,P,3,s,lc,ld,le,&dd->da_coordinates);CHKERRQ(ierr);
+ ierr = DMDACreate3d(((PetscObject)da)->comm,bx,by,bz,DMDA_STENCIL_BOX,m,n,p,M,N,P,3,s,lc,ld,le,&dd->da_coordinates);CHKERRQ(ierr);
ierr = PetscFree3(lc,ld,le);CHKERRQ(ierr);
}
}
diff -r 23e7928e179a src/dm/impls/da/dacreate.c
--- a/src/dm/impls/da/dacreate.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/dacreate.c Fri Mar 11 16:29:15 2011 -0700
@@ -109,7 +109,9 @@
dd->ltol = PETSC_NULL;
dd->ao = PETSC_NULL;
dd->base = -1;
- dd->wrap = DMDA_NONPERIODIC;
+ dd->bx = DMDA_BOUNDARY_NONE;
+ dd->by = DMDA_BOUNDARY_NONE;
+ dd->bz = DMDA_BOUNDARY_NONE;
dd->stencil_type = DMDA_STENCIL_BOX;
dd->interptype = DMDA_Q1;
dd->idx = PETSC_NULL;
diff -r 23e7928e179a src/dm/impls/da/dagetarray.c
--- a/src/dm/impls/da/dagetarray.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/dagetarray.c Fri Mar 11 16:29:15 2011 -0700
@@ -51,7 +51,7 @@
PetscFunctionBegin;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&xm,&ym,&zm);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(da,&gxs,&gys,&gzs,&gxm,&gym,&gzm);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
/* Handle case where user passes in global vector as opposed to local */
ierr = VecGetLocalSize(vec,&N);CHKERRQ(ierr);
@@ -108,7 +108,7 @@
PetscFunctionBegin;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&xm,&ym,&zm);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(da,&gxs,&gys,&gzs,&gxm,&gym,&gzm);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
/* Handle case where user passes in global vector as opposed to local */
ierr = VecGetLocalSize(vec,&N);CHKERRQ(ierr);
@@ -170,7 +170,7 @@
PetscFunctionBegin;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&xm,&ym,&zm);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(da,&gxs,&gys,&gzs,&gxm,&gym,&gzm);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
/* Handle case where user passes in global vector as opposed to local */
ierr = VecGetLocalSize(vec,&N);CHKERRQ(ierr);
@@ -224,7 +224,7 @@
PetscFunctionBegin;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&xm,&ym,&zm);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(da,&gxs,&gys,&gzs,&gxm,&gym,&gzm);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
/* Handle case where user passes in global vector as opposed to local */
ierr = VecGetLocalSize(vec,&N);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/impls/da/dainterp.c
--- a/src/dm/impls/da/dainterp.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/dainterp.c Fri Mar 11 16:29:15 2011 -0700
@@ -53,14 +53,14 @@
PetscInt i_c,i_start_c,i_start_ghost_c,cols[2],dof;
PetscScalar v[2],x,*coors = 0,*ccoors;
Mat mat;
- DMDABoundaryType pt;
+ DMDABoundaryType bx;
Vec vcoors,cvcoors;
DM_DA *ddc = (DM_DA*)dac->data, *ddf = (DM_DA*)daf->data;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dac,0,&Mx,0,0,0,0,0,0,0,&pt,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&mx,0,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
- if DMDAXPeriodic(pt) {
+ ierr = DMDAGetInfo(dac,0,&Mx,0,0,0,0,0,0,0,&bx,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&mx,0,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
+ if (bx == DMDA_BOUNDARY_PERIODIC){
ratio = mx/Mx;
if (ratio*Mx != mx) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: mx/Mx must be integer: mx %D Mx %D",mx,Mx);
} else {
@@ -191,12 +191,12 @@
PetscInt i_c,i_start_c,i_start_ghost_c,cols[2],dof;
PetscScalar v[2],x;
Mat mat;
- DMDABoundaryType pt;
+ DMDABoundaryType bx;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dac,0,&Mx,0,0,0,0,0,0,0,&pt,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&mx,0,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
- if DMDAXPeriodic(pt) {
+ ierr = DMDAGetInfo(dac,0,&Mx,0,0,0,0,0,0,0,&bx,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&mx,0,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
+ if (bx == DMDA_BOUNDARY_PERIODIC){
ratio = mx/Mx;
if (ratio*Mx != mx) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: mx/Mx must be integer: mx %D Mx %D",mx,Mx);
} else {
@@ -264,22 +264,22 @@
PetscMPIInt size_c,size_f,rank_f;
PetscScalar v[4],x,y;
Mat mat;
- DMDABoundaryType pt;
+ DMDABoundaryType bx,by;
DMDACoor2d **coors = 0,**ccoors;
Vec vcoors,cvcoors;
DM_DA *ddc = (DM_DA*)dac->data, *ddf = (DM_DA*)daf->data;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dac,0,&Mx,&My,0,0,0,0,0,0,&pt,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&mx,&my,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
- if (DMDAXPeriodic(pt)){
+ ierr = DMDAGetInfo(dac,0,&Mx,&My,0,0,0,0,0,0,&bx,&by,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&mx,&my,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
+ if (bx == DMDA_BOUNDARY_PERIODIC){
ratioi = mx/Mx;
if (ratioi*Mx != mx) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: mx/Mx must be integer: mx %D Mx %D",mx,Mx);
} else {
ratioi = (mx-1)/(Mx-1);
if (ratioi*(Mx-1) != mx-1) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: (mx - 1)/(Mx - 1) must be integer: mx %D Mx %D",mx,Mx);
}
- if (DMDAYPeriodic(pt)){
+ if (by == DMDA_BOUNDARY_PERIODIC){
ratioj = my/My;
if (ratioj*My != my) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: my/My must be integer: my %D My %D",my,My);
} else {
@@ -504,13 +504,13 @@
PetscMPIInt size_c,size_f,rank_f;
PetscScalar v[4];
Mat mat;
- DMDABoundaryType pt;
+ DMDABoundaryType bx,by;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dac,0,&Mx,&My,0,0,0,0,0,0,&pt,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&mx,&my,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
- if (DMDAXPeriodic(pt)) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in x");
- if (DMDAYPeriodic(pt)) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in y");
+ ierr = DMDAGetInfo(dac,0,&Mx,&My,0,0,0,0,0,0,&bx,&by,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&mx,&my,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
+ if (bx == DMDA_BOUNDARY_PERIODIC) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in x");
+ if (by == DMDA_BOUNDARY_PERIODIC) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in y");
ratioi = mx/Mx;
ratioj = my/My;
if (ratioi*Mx != mx) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Fine grid points must be multiple of coarse grid points in x");
@@ -615,14 +615,14 @@
PetscMPIInt size_c,size_f,rank_f;
PetscScalar v[8];
Mat mat;
- DMDABoundaryType pt;
+ DMDABoundaryType bx,by,bz;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dac,0,&Mx,&My,&Mz,0,0,0,0,0,&pt,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&mx,&my,&mz,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
- if (DMDAXPeriodic(pt)) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in x");
- if (DMDAYPeriodic(pt)) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in y");
- if (DMDAZPeriodic(pt)) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in z");
+ ierr = DMDAGetInfo(dac,0,&Mx,&My,&Mz,0,0,0,0,0,&bx,&by,&bz,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&mx,&my,&mz,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
+ if (bx == DMDA_BOUNDARY_PERIODIC) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in x");
+ if (by == DMDA_BOUNDARY_PERIODIC) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in y");
+ if (bz == DMDA_BOUNDARY_PERIODIC) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_WRONG,"Cannot handle periodic grid in z");
ratioi = mx/Mx;
ratioj = my/My;
ratiol = mz/Mz;
@@ -735,17 +735,17 @@
PetscInt l_start_ghost_c,p_ghost_c,l_c,*dnz,*onz;
PetscScalar v[8],x,y,z;
Mat mat;
- DMDABoundaryType pt;
+ DMDABoundaryType bx,by,bz;
DMDACoor3d ***coors = 0,***ccoors;
Vec vcoors,cvcoors;
DM_DA *ddc = (DM_DA*)dac->data, *ddf = (DM_DA*)daf->data;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dac,0,&Mx,&My,&Mz,0,0,0,0,0,&pt,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&mx,&my,&mz,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dac,0,&Mx,&My,&Mz,0,0,0,0,0,&bx,&by,&bz,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&mx,&my,&mz,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
if (mx == Mx) {
ratioi = 1;
- } else if (DMDAXPeriodic(pt)){
+ } else if (bx == DMDA_BOUNDARY_PERIODIC) {
ratioi = mx/Mx;
if (ratioi*Mx != mx) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: mx/Mx must be integer: mx %D Mx %D",mx,Mx);
} else {
@@ -754,7 +754,7 @@
}
if (my == My) {
ratioj = 1;
- } else if (DMDAYPeriodic(pt)){
+ } else if (by == DMDA_BOUNDARY_PERIODIC) {
ratioj = my/My;
if (ratioj*My != my) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: my/My must be integer: my %D My %D",my,My);
} else {
@@ -763,7 +763,7 @@
}
if (mz == Mz) {
ratiok = 1;
- } else if (DMDAZPeriodic(pt)){
+ } else if (bz == DMDA_BOUNDARY_PERIODIC) {
ratiok = mz/Mz;
if (ratiok*Mz != mz) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: mz/Mz must be integer: mz %D Mz %D",mz,Mz);
} else {
@@ -1023,7 +1023,7 @@
{
PetscErrorCode ierr;
PetscInt dimc,Mc,Nc,Pc,mc,nc,pc,dofc,sc,dimf,Mf,Nf,Pf,mf,nf,pf,doff,sf;
- DMDABoundaryType wrapc,wrapf;
+ DMDABoundaryType bxc,byc,bzc,bxf,byf,bzf;
DMDAStencilType stc,stf;
DM_DA *ddc = (DM_DA*)dac->data;
@@ -1033,12 +1033,12 @@
PetscValidPointer(A,3);
if (scale) PetscValidPointer(scale,4);
- ierr = DMDAGetInfo(dac,&dimc,&Mc,&Nc,&Pc,&mc,&nc,&pc,&dofc,&sc,&wrapc,&stc);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,&dimf,&Mf,&Nf,&Pf,&mf,&nf,&pf,&doff,&sf,&wrapf,&stf);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dac,&dimc,&Mc,&Nc,&Pc,&mc,&nc,&pc,&dofc,&sc,&bxc,&byc,&bzc,&stc);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,&dimf,&Mf,&Nf,&Pf,&mf,&nf,&pf,&doff,&sf,&bxf,&byf,&bzf,&stf);CHKERRQ(ierr);
if (dimc != dimf) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Dimensions of DMDA do not match %D %D",dimc,dimf);CHKERRQ(ierr);
if (dofc != doff) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"DOF of DMDA do not match %D %D",dofc,doff);CHKERRQ(ierr);
if (sc != sf) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Stencil width of DMDA do not match %D %D",sc,sf);CHKERRQ(ierr);
- if (wrapc != wrapf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Periodic type different in two DMDAs");CHKERRQ(ierr);
+ if (bxc != bxf || byc != byf || bzc != bzf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Boundary type different in two DMDAs");CHKERRQ(ierr);
if (stc != stf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Stencil type different in two DMDAs");CHKERRQ(ierr);
if (Mc < 2 && Mf > 1) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Coarse grid requires at least 2 points in x direction");
if (dimc > 1 && Nc < 2 && Nf > 1) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Coarse grid requires at least 2 points in y direction");
@@ -1081,21 +1081,21 @@
PetscInt row,i_start_ghost,j_start_ghost,mx,m_c,my,nc,ratioi,ratioj;
PetscInt i_start_c,j_start_c,n_c,i_start_ghost_c,j_start_ghost_c;
PetscInt *cols;
- DMDABoundaryType pt;
+ DMDABoundaryType bx,by;
Vec vecf,vecc;
IS isf;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dac,0,&Mx,&My,0,0,0,0,0,0,&pt,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&mx,&my,0,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
- if (DMDAXPeriodic(pt)){
+ ierr = DMDAGetInfo(dac,0,&Mx,&My,0,0,0,0,0,0,&bx,&by,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&mx,&my,0,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
+ if (bx == DMDA_BOUNDARY_PERIODIC) {
ratioi = mx/Mx;
if (ratioi*Mx != mx) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: mx/Mx must be integer: mx %D Mx %D",mx,Mx);
} else {
ratioi = (mx-1)/(Mx-1);
if (ratioi*(Mx-1) != mx-1) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: (mx - 1)/(Mx - 1) must be integer: mx %D Mx %D",mx,Mx);
}
- if (DMDAYPeriodic(pt)){
+ if (by == DMDA_BOUNDARY_PERIODIC) {
ratioj = my/My;
if (ratioj*My != my) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: my/My must be integer: my %D My %D",my,My);
} else {
@@ -1152,29 +1152,29 @@
PetscInt row,nc,dof;
PetscInt *idx_c,*idx_f;
PetscInt *cols;
- DMDABoundaryType pt;
+ DMDABoundaryType bx,by,bz;
Vec vecf,vecc;
IS isf;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dac,0,&Mx,&My,&Mz,0,0,0,0,0,&pt,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,0,&mx,&my,&mz,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dac,0,&Mx,&My,&Mz,0,0,0,0,0,&bx,&by,&bz,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0,&mx,&my,&mz,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
- if (DMDAXPeriodic(pt)){
+ if (bx == DMDA_BOUNDARY_PERIODIC){
ratioi = mx/Mx;
if (ratioi*Mx != mx) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: mx/Mx must be integer: mx %D Mx %D",mx,Mx);
} else {
ratioi = (mx-1)/(Mx-1);
if (ratioi*(Mx-1) != mx-1) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: (mx - 1)/(Mx - 1) must be integer: mx %D Mx %D",mx,Mx);
}
- if (DMDAYPeriodic(pt)){
+ if (by == DMDA_BOUNDARY_PERIODIC){
ratioj = my/My;
if (ratioj*My != my) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: my/My must be integer: my %D My %D",my,My);
} else {
ratioj = (my-1)/(My-1);
if (ratioj*(My-1) != my-1) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: (my - 1)/(My - 1) must be integer: my %D My %D",my,My);
}
- if (DMDAZPeriodic(pt)){
+ if (bz == DMDA_BOUNDARY_PERIODIC){
ratiok = mz/Mz;
if (ratiok*Mz != mz) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Ratio between levels: mz/Mz must be integer: mz %D My %D",mz,Mz);
} else {
@@ -1226,7 +1226,7 @@
{
PetscErrorCode ierr;
PetscInt dimc,Mc,Nc,Pc,mc,nc,pc,dofc,sc,dimf,Mf,Nf,Pf,mf,nf,pf,doff,sf;
- DMDABoundaryType wrapc,wrapf;
+ DMDABoundaryType bxc,byc,bzc,bxf,byf,bzf;
DMDAStencilType stc,stf;
PetscFunctionBegin;
@@ -1234,12 +1234,12 @@
PetscValidHeaderSpecific(daf,DM_CLASSID,2);
PetscValidPointer(inject,3);
- ierr = DMDAGetInfo(dac,&dimc,&Mc,&Nc,&Pc,&mc,&nc,&pc,&dofc,&sc,&wrapc,&stc);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,&dimf,&Mf,&Nf,&Pf,&mf,&nf,&pf,&doff,&sf,&wrapf,&stf);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dac,&dimc,&Mc,&Nc,&Pc,&mc,&nc,&pc,&dofc,&sc,&bxc,&byc,&bzc,&stc);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,&dimf,&Mf,&Nf,&Pf,&mf,&nf,&pf,&doff,&sf,&bxf,&byf,&bzf,&stf);CHKERRQ(ierr);
if (dimc != dimf) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Dimensions of DMDA do not match %D %D",dimc,dimf);CHKERRQ(ierr);
if (dofc != doff) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"DOF of DMDA do not match %D %D",dofc,doff);CHKERRQ(ierr);
if (sc != sf) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Stencil width of DMDA do not match %D %D",sc,sf);CHKERRQ(ierr);
- if (wrapc != wrapf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Periodic type different in two DMDAs");CHKERRQ(ierr);
+ if (bxc != bxf || byc != byf || bzc != bzf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Boundary type different in two DMDAs");CHKERRQ(ierr);
if (stc != stf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Stencil type different in two DMDAs");CHKERRQ(ierr);
if (Mc < 2) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Coarse grid requires at least 2 points in x direction");
if (dimc > 1 && Nc < 2) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Coarse grid requires at least 2 points in y direction");
@@ -1262,7 +1262,7 @@
PetscErrorCode ierr;
PetscInt dimc,Mc,Nc,Pc,mc,nc,pc,dofc,sc;
PetscInt dimf,Mf,Nf,Pf,mf,nf,pf,doff,sf;
- DMDABoundaryType wrapc,wrapf;
+ DMDABoundaryType bxc,byc,bzc,bxf,byf,bzf;
DMDAStencilType stc,stf;
PetscInt i,j,l;
PetscInt i_start,j_start,l_start, m_f,n_f,p_f;
@@ -1284,12 +1284,12 @@
PetscValidHeaderSpecific(daf,DM_CLASSID,2);
PetscValidPointer(rest,3);
- ierr = DMDAGetInfo(dac,&dimc,&Mc,&Nc,&Pc,&mc,&nc,&pc,&dofc,&sc,&wrapc,&stc);CHKERRQ(ierr);
- ierr = DMDAGetInfo(daf,&dimf,&Mf,&Nf,&Pf,&mf,&nf,&pf,&doff,&sf,&wrapf,&stf);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dac,&dimc,&Mc,&Nc,&Pc,&mc,&nc,&pc,&dofc,&sc,&bxc,&byc,&bzc,&stc);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,&dimf,&Mf,&Nf,&Pf,&mf,&nf,&pf,&doff,&sf,&bxf,&byf,&bzf,&stf);CHKERRQ(ierr);
if (dimc != dimf) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Dimensions of DMDA do not match %D %D",dimc,dimf);CHKERRQ(ierr);
if (dofc != doff) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"DOF of DMDA do not match %D %D",dofc,doff);CHKERRQ(ierr);
if (sc != sf) SETERRQ2(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Stencil width of DMDA do not match %D %D",sc,sf);CHKERRQ(ierr);
- if (wrapc != wrapf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Periodic type different in two DMDAs");CHKERRQ(ierr);
+ if (bxc != bxf || byc != byf || bzc != bzf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Boundary type different in two DMDAs");CHKERRQ(ierr);
if (stc != stf) SETERRQ(((PetscObject)daf)->comm,PETSC_ERR_ARG_INCOMP,"Stencil type different in two DMDAs");CHKERRQ(ierr);
if( Mf < Mc ) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_ARG_INCOMP,"Coarse grid has more points than fine grid, Mc %D, Mf %D", Mc, Mf);
diff -r 23e7928e179a src/dm/impls/da/daload.c
--- a/src/dm/impls/da/daload.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/daload.c Fri Mar 11 16:29:15 2011 -0700
@@ -27,7 +27,7 @@
PetscErrorCode DMDALoad(PetscViewer viewer,PetscInt M,PetscInt N,PetscInt P,DM *da)
{
PetscErrorCode ierr;
- PetscInt info[8],nmax = 8,i;
+ PetscInt info[10],nmax = 10,i;
MPI_Comm comm;
char fieldnametag[32],fieldname[64];
PetscBool isbinary,flag;
@@ -42,14 +42,14 @@
ierr = PetscOptionsGetIntArray(PETSC_NULL,"-daload_info",info,&nmax,&flag);CHKERRQ(ierr);
if (!flag) SETERRQ(((PetscObject)viewer)->comm,PETSC_ERR_FILE_UNEXPECTED,"No DMDA information in file");
- if (nmax != 8) SETERRQ1(((PetscObject)viewer)->comm,PETSC_ERR_FILE_UNEXPECTED,"Wrong number of items in DMDA information in file: %D",nmax);
+ if (nmax != 10) SETERRQ1(((PetscObject)viewer)->comm,PETSC_ERR_FILE_UNEXPECTED,"Wrong number of items in DMDA information in file: %D",nmax);
if (info[0] == 1) {
ierr = DMDACreate1d(comm,(DMDABoundaryType) info[7],info[1],info[4],info[5],0,da);CHKERRQ(ierr);
} else if (info[0] == 2) {
- ierr = DMDACreate2d(comm,(DMDABoundaryType) info[7],(DMDAStencilType) info[6],info[1],info[2],M,N,info[4],info[5],0,0,da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,(DMDABoundaryType) info[7],(DMDABoundaryType) info[8],(DMDAStencilType) info[6],info[1],info[2],M,N,info[4],info[5],0,0,da);CHKERRQ(ierr);
} else if (info[0] == 3) {
- ierr = DMDACreate3d(comm,(DMDABoundaryType) info[7],(DMDAStencilType) info[6],info[1],info[2],info[3],M,N,P,info[4],info[5],0,0,0,da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(comm,(DMDABoundaryType) info[7],(DMDABoundaryType) info[8],(DMDABoundaryType) info[9],(DMDAStencilType) info[6],info[1],info[2],info[3],M,N,P,info[4],info[5],0,0,0,da);CHKERRQ(ierr);
} else SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_FILE_UNEXPECTED,"Dimension in info file is not 1, 2, or 3 it is %D",info[0]);
for (i=0; i<info[4]; i++) {
@@ -71,11 +71,11 @@
PetscInt mlocal;
if (info[0] == 1) {
- ierr = DMDACreate1d(comm,DMDA_NONPERIODIC,info[1],1,0,0,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate1d(comm,DMDA_BOUNDARY_NONE,info[1],1,0,0,&dac);CHKERRQ(ierr);
} else if (info[0] == 2) {
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,info[1],info[2],M,N,2,0,0,0,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,info[1],info[2],M,N,2,0,0,0,&dac);CHKERRQ(ierr);
} else if (info[0] == 3) {
- ierr = DMDACreate3d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,info[1],info[2],info[3],M,N,P,3,0,0,0,0,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate3d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,info[1],info[2],info[3],M,N,P,3,0,0,0,0,&dac);CHKERRQ(ierr);
}
/* this nonsense is so that the vector set to DMDASetCoordinates() does NOT have a DMDA */
diff -r 23e7928e179a src/dm/impls/da/daview.c
--- a/src/dm/impls/da/daview.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/daview.c Fri Mar 11 16:29:15 2011 -0700
@@ -17,14 +17,14 @@
PetscMPIInt rank;
PetscInt dim,m,n,p,dof,swidth;
DMDAStencilType stencil;
- DMDABoundaryType periodic;
+ DMDABoundaryType bx,by,bz;
mxArray *mx;
- const char *fnames[] = {"dimension","m","n","p","dof","stencil_width","periodicity","stencil_type"};
+ const char *fnames[] = {"dimension","m","n","p","dof","stencil_width","bx","by","bz","stencil_type"};
PetscFunctionBegin;
ierr = MPI_Comm_rank(((PetscObject)da)->comm,&rank);CHKERRQ(ierr);
if (!rank) {
- ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&dof,&swidth,&periodic,&stencil);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&dof,&swidth,&bx,&by,&bz,&stencil);CHKERRQ(ierr);
mx = mxCreateStructMatrix(1,1,8,(const char **)fnames);
if (!mx) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_LIB,"Unable to generate MATLAB struct array to hold DMDA informations");
mxSetFieldByNumber(mx,0,0,mxCreateDoubleScalar((double)dim));
@@ -33,8 +33,10 @@
mxSetFieldByNumber(mx,0,3,mxCreateDoubleScalar((double)p));
mxSetFieldByNumber(mx,0,4,mxCreateDoubleScalar((double)dof));
mxSetFieldByNumber(mx,0,5,mxCreateDoubleScalar((double)swidth));
- mxSetFieldByNumber(mx,0,6,mxCreateDoubleScalar((double)periodic));
- mxSetFieldByNumber(mx,0,7,mxCreateDoubleScalar((double)stencil));
+ mxSetFieldByNumber(mx,0,6,mxCreateDoubleScalar((double)bx));
+ mxSetFieldByNumber(mx,0,7,mxCreateDoubleScalar((double)by));
+ mxSetFieldByNumber(mx,0,8,mxCreateDoubleScalar((double)bz));
+ mxSetFieldByNumber(mx,0,9,mxCreateDoubleScalar((double)stencil));
ierr = PetscObjectName((PetscObject)da);CHKERRQ(ierr);
ierr = PetscViewerMatlabPutVariable(viewer,((PetscObject)da)->name,mx);CHKERRQ(ierr);
}
@@ -51,14 +53,14 @@
PetscInt i,dim,m,n,p,dof,swidth,M,N,P;
size_t j,len;
DMDAStencilType stencil;
- DMDABoundaryType periodic;
+ DMDABoundaryType bx,by,bz;
MPI_Comm comm;
DM_DA *dd = (DM_DA*)da->data;
PetscFunctionBegin;
ierr = PetscObjectGetComm((PetscObject)da,&comm);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,&dim,&m,&n,&p,&M,&N,&P,&dof,&swidth,&periodic,&stencil);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,&p,&M,&N,&P,&dof,&swidth,&bx,&by,&bz,&stencil);CHKERRQ(ierr);
ierr = MPI_Comm_rank(comm,&rank);CHKERRQ(ierr);
if (!rank) {
FILE *file;
@@ -67,7 +69,7 @@
if (file) {
char fieldname[PETSC_MAX_PATH_LEN];
- ierr = PetscFPrintf(PETSC_COMM_SELF,file,"-daload_info %D,%D,%D,%D,%D,%D,%D,%D\n",dim,m,n,p,dof,swidth,stencil,periodic);CHKERRQ(ierr);
+ ierr = PetscFPrintf(PETSC_COMM_SELF,file,"-daload_info %D,%D,%D,%D,%D,%D,%D,%D,%D,%D\n",dim,m,n,p,dof,swidth,stencil,bx,by,bz);CHKERRQ(ierr);
for (i=0; i<dof; i++) {
if (dd->fieldname[i]) {
ierr = PetscStrncpy(fieldname,dd->fieldname[i],PETSC_MAX_PATH_LEN);CHKERRQ(ierr);
@@ -94,11 +96,11 @@
/* create the appropriate DMDA to map to natural ordering */
ierr = DMDAGetOwnershipRanges(da,&lx,&ly,&lz);CHKERRQ(ierr);
if (dim == 1) {
- ierr = DMDACreate1d(comm,DMDA_NONPERIODIC,m,dim,0,lx,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate1d(comm,DMDA_BOUNDARY_NONE,m,dim,0,lx,&dac);CHKERRQ(ierr);
} else if (dim == 2) {
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,m,n,M,N,dim,0,lx,ly,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,m,n,M,N,dim,0,lx,ly,&dac);CHKERRQ(ierr);
} else if (dim == 3) {
- ierr = DMDACreate3d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,m,n,p,M,N,P,dim,0,lx,ly,lz,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate3d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,m,n,p,M,N,P,dim,0,lx,ly,lz,&dac);CHKERRQ(ierr);
} else SETERRQ1(comm,PETSC_ERR_ARG_CORRUPT,"Dimension is not 1 2 or 3: %D\n",dim);
ierr = DMDACreateNaturalVector(dac,&natural);CHKERRQ(ierr);
ierr = PetscObjectSetOptionsPrefix((PetscObject)natural,"coor_");CHKERRQ(ierr);
@@ -120,7 +122,7 @@
DM_DA *dd = (DM_DA*)da->data;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, &dim, &M, &N, &P, PETSC_NULL, PETSC_NULL, PETSC_NULL, &dof, PETSC_NULL, PETSC_NULL, PETSC_NULL);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, &dim, &M, &N, &P, PETSC_NULL, PETSC_NULL, PETSC_NULL, &dof, PETSC_NULL, PETSC_NULL, PETSC_NULL, PETSC_NULL, PETSC_NULL);CHKERRQ(ierr);
/* if (dim != 3) {SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP, "VTK output only works for three dimensional DMDAs.");} */
if (!dd->coordinates) SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP, "VTK output requires DMDA coordinates.");
/* Write Header */
@@ -158,14 +160,14 @@
. da - the distributed array
Output Parameters:
-+ dim - dimension of the distributed array (1, 2, or 3)
-. M, N, P - global dimension in each direction of the array
-. m, n, p - corresponding number of procs in each dimension
-. dof - number of degrees of freedom per node
-. s - stencil width
-. wrap - type of periodicity, one of DMDA_NONPERIODIC, DMDA_XPERIODIC, DMDA_YPERIODIC,
- DMDA_XYPERIODIC, DMDA_XYZPERIODIC, DMDA_XZPERIODIC, DMDA_YZPERIODIC,DMDA_ZPERIODIC
-- st - stencil type, either DMDA_STENCIL_STAR or DMDA_STENCIL_BOX
++ dim - dimension of the distributed array (1, 2, or 3)
+. M, N, P - global dimension in each direction of the array
+. m, n, p - corresponding number of procs in each dimension
+. dof - number of degrees of freedom per node
+. s - stencil width
+. bx,by,bz - type of ghost nodes at boundary, one of DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED,
+ DMDA_BOUNDARY_MIRROR, DMDA_BOUNDARY_PERIODIC
+- st - stencil type, either DMDA_STENCIL_STAR or DMDA_STENCIL_BOX
Level: beginner
@@ -176,7 +178,7 @@
.seealso: DMView(), DMDAGetCorners(), DMDAGetLocalInfo()
@*/
-PetscErrorCode DMDAGetInfo(DM da,PetscInt *dim,PetscInt *M,PetscInt *N,PetscInt *P,PetscInt *m,PetscInt *n,PetscInt *p,PetscInt *dof,PetscInt *s,DMDABoundaryType *wrap,DMDAStencilType *st)
+PetscErrorCode DMDAGetInfo(DM da,PetscInt *dim,PetscInt *M,PetscInt *N,PetscInt *P,PetscInt *m,PetscInt *n,PetscInt *p,PetscInt *dof,PetscInt *s,DMDABoundaryType *bx,DMDABoundaryType *by,DMDABoundaryType *bz,DMDAStencilType *st)
{
DM_DA *dd = (DM_DA*)da->data;
@@ -191,7 +193,9 @@
if (p) *p = dd->p;
if (dof) *dof = dd->w;
if (s) *s = dd->s;
- if (wrap) *wrap = dd->wrap;
+ if (bx) *bx = dd->bx;
+ if (by) *by = dd->by;
+ if (bz) *bz = dd->bz;
if (st) *st = dd->stencil_type;
PetscFunctionReturn(0);
}
@@ -230,7 +234,9 @@
info->mz = dd->P;
info->dof = dd->w;
info->sw = dd->s;
- info->pt = dd->wrap;
+ info->bx = dd->bx;
+ info->by = dd->by;
+ info->bz = dd->bz;
info->st = dd->stencil_type;
/* since the xs, xe ... have all been multiplied by the number of degrees
diff -r 23e7928e179a src/dm/impls/da/f90-custom/zda1f90.c
--- a/src/dm/impls/da/f90-custom/zda1f90.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/f90-custom/zda1f90.c Fri Mar 11 16:29:15 2011 -0700
@@ -34,7 +34,7 @@
*ierr = DMDAGetCorners(*da,&xs,&ys,&zs,&xm,&ym,&zm);if (*ierr) return;
*ierr = DMDAGetGhostCorners(*da,&gxs,&gys,&gzs,&gxm,&gym,&gzm);if (*ierr) return;
- *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,&dof,0,0,0);if (*ierr) return;
+ *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,&dof,0,0,0,0,0);if (*ierr) return;
/* Handle case where user passes in global vector as opposed to local */
*ierr = VecGetLocalSize(*v,&N);if (*ierr) return;
@@ -65,7 +65,7 @@
*ierr = DMDAGetCorners(*da,&xs,&ys,&zs,&xm,&ym,&zm);if (*ierr) return;
*ierr = DMDAGetGhostCorners(*da,&gxs,&gys,&gzs,&gxm,&gym,&gzm);if (*ierr) return;
- *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,&dof,0,0,0);if (*ierr) return;
+ *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,&dof,0,0,0,0,0);if (*ierr) return;
/* Handle case where user passes in global vector as opposed to local */
*ierr = VecGetLocalSize(*v,&N);if (*ierr) return;
@@ -102,7 +102,7 @@
*ierr = DMDAGetCorners(*da,&xs,&ys,&zs,&xm,&ym,&zm);if (*ierr) return;
*ierr = DMDAGetGhostCorners(*da,&gxs,&gys,&gzs,&gxm,&gym,&gzm);if (*ierr) return;
- *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,&dof,0,0,0);if (*ierr) return;
+ *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,&dof,0,0,0,0,0);if (*ierr) return;
/* Handle case where user passes in global vector as opposed to local */
*ierr = VecGetLocalSize(*v,&N);if (*ierr) return;
@@ -141,7 +141,7 @@
*ierr = DMDAGetCorners(*da,&xs,&ys,&zs,&xm,&ym,&zm);if (*ierr) return;
*ierr = DMDAGetGhostCorners(*da,&gxs,&gys,&gzs,&gxm,&gym,&gzm);if (*ierr) return;
- *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,&dof,0,0,0);if (*ierr) return;
+ *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,&dof,0,0,0,0,0);if (*ierr) return;
/* Handle case where user passes in global vector as opposed to local */
*ierr = VecGetLocalSize(*v,&N);if (*ierr) return;
diff -r 23e7928e179a src/dm/impls/da/fdda.c
--- a/src/dm/impls/da/fdda.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/fdda.c Fri Mar 11 16:29:15 2011 -0700
@@ -131,7 +131,7 @@
{
PetscErrorCode ierr;
PetscInt dim,m,n,p,nc;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by,bz;
MPI_Comm comm;
PetscMPIInt size;
PetscBool isBAIJ;
@@ -160,7 +160,7 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,0,0,0,&m,&n,&p,&nc,0,&wrap,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,0,0,0,&m,&n,&p,&nc,0,&bx,&by,&bz,0);CHKERRQ(ierr);
ierr = PetscObjectGetComm((PetscObject)da,&comm);CHKERRQ(ierr);
ierr = MPI_Comm_size(comm,&size);CHKERRQ(ierr);
@@ -168,7 +168,7 @@
if (size == 1) {
ctype = IS_COLORING_GLOBAL;
} else if (dim > 1){
- if ((m==1 && DMDAXPeriodic(wrap)) || (n==1 && DMDAYPeriodic(wrap)) || (p==1 && DMDAZPeriodic(wrap))){
+ if ((m==1 && bx == DMDA_BOUNDARY_PERIODIC) || (n==1 && by == DMDA_BOUNDARY_PERIODIC) || (p==1 && bz == DMDA_BOUNDARY_PERIODIC)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"IS_COLORING_GHOSTED cannot be used for periodic boundary condition having both ends of the domain on the same process");
}
}
@@ -221,7 +221,7 @@
PetscInt xs,ys,nx,ny,i,j,ii,gxs,gys,gnx,gny,m,n,M,N,dim,s,k,nc,col;
PetscInt ncolors;
MPI_Comm comm;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by;
DMDAStencilType st;
ISColoringValue *colors;
DM_DA *dd = (DM_DA*)da->data;
@@ -232,7 +232,7 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,0,&M,&N,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,0,&M,&N,0,&nc,&s,&bx,&by,0,&st);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,&ys,0,&nx,&ny,0);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(da,&gxs,&gys,0,&gnx,&gny,0);CHKERRQ(ierr);
@@ -243,11 +243,11 @@
ierr = DMGetColoring_DA_2d_5pt_MPIAIJ(da,ctype,coloring);CHKERRQ(ierr);
} else {
- if (DMDAXPeriodic(wrap) && (m % col)){
+ if (bx == DMDA_BOUNDARY_PERIODIC && (m % col)){
SETERRQ2(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in X (%d) is divisible\n\
by 2*stencil_width + 1 (%d)\n", m, col);
}
- if (DMDAYPeriodic(wrap) && (n % col)){
+ if (by == DMDA_BOUNDARY_PERIODIC && (n % col)){
SETERRQ2(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in Y (%d) is divisible\n\
by 2*stencil_width + 1 (%d)\n", n, col);
}
@@ -301,7 +301,7 @@
PetscInt xs,ys,nx,ny,i,j,gxs,gys,gnx,gny,m,n,p,dim,s,k,nc,col,zs,gzs,ii,l,nz,gnz,M,N,P;
PetscInt ncolors;
MPI_Comm comm;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by,bz;
DMDAStencilType st;
ISColoringValue *colors;
DM_DA *dd = (DM_DA*)da->data;
@@ -312,17 +312,17 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,&p,&M,&N,&P,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,&p,&M,&N,&P,&nc,&s,&bx,&by,&bz,&st);CHKERRQ(ierr);
col = 2*s + 1;
- if (DMDAXPeriodic(wrap) && (m % col)){
+ if (bx == DMDA_BOUNDARY_PERIODIC && (m % col)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in X is divisible\n\
by 2*stencil_width + 1\n");
}
- if (DMDAYPeriodic(wrap) && (n % col)){
+ if (by == DMDA_BOUNDARY_PERIODIC && (n % col)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in Y is divisible\n\
by 2*stencil_width + 1\n");
}
- if (DMDAZPeriodic(wrap) && (p % col)){
+ if (bz == DMDA_BOUNDARY_PERIODIC && (p % col)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in Z is divisible\n\
by 2*stencil_width + 1\n");
}
@@ -383,7 +383,7 @@
PetscInt xs,nx,i,i1,gxs,gnx,l,m,M,dim,s,nc,col;
PetscInt ncolors;
MPI_Comm comm;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx;
ISColoringValue *colors;
DM_DA *dd = (DM_DA*)da->data;
@@ -393,10 +393,10 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,0,0,&M,0,0,&nc,&s,&wrap,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,0,0,&M,0,0,&nc,&s,&bx,0,0,0);CHKERRQ(ierr);
col = 2*s + 1;
- if (DMDAXPeriodic(wrap) && (m % col)) {
+ if (bx == DMDA_BOUNDARY_PERIODIC && (m % col)) {
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points is divisible\n\
by 2*stencil_width + 1\n");
}
@@ -447,7 +447,7 @@
PetscInt xs,ys,nx,ny,i,j,ii,gxs,gys,gnx,gny,m,n,dim,s,k,nc;
PetscInt ncolors;
MPI_Comm comm;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by;
ISColoringValue *colors;
DM_DA *dd = (DM_DA*)da->data;
@@ -457,16 +457,16 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&wrap,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&bx,&by,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,&ys,0,&nx,&ny,0);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(da,&gxs,&gys,0,&gnx,&gny,0);CHKERRQ(ierr);
ierr = PetscObjectGetComm((PetscObject)da,&comm);CHKERRQ(ierr);
- if (DMDAXPeriodic(wrap) && (m % 5)){
+ if (bx == DMDA_BOUNDARY_PERIODIC && (m % 5)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in X is divisible\n\
by 5\n");
}
- if (DMDAYPeriodic(wrap) && (n % 5)){
+ if (by == DMDA_BOUNDARY_PERIODIC && (n % 5)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in Y is divisible\n\
by 5\n");
}
@@ -669,7 +669,7 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&M,&N,&P,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&M,&N,&P,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,0,0,0,&nx,&ny,&nz);CHKERRQ(ierr);
ierr = PetscObjectGetComm((PetscObject)da,&comm);CHKERRQ(ierr);
ierr = MatCreate(comm,&A);CHKERRQ(ierr);
@@ -762,7 +762,7 @@
PetscInt lstart,lend,pstart,pend,*dnz,*onz;
MPI_Comm comm;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by;
ISLocalToGlobalMapping ltog,ltogb;
DMDAStencilType st;
DM_DA *dd = (DM_DA*)da->data;
@@ -773,7 +773,7 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&bx,&by,0,&st);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,&ys,0,&nx,&ny,0);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(da,&gxs,&gys,0,&gnx,&gny,0);CHKERRQ(ierr);
@@ -787,14 +787,14 @@
ierr = MatPreallocateInitialize(comm,nc*nx*ny,nc*nx*ny,dnz,onz);CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- pstart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- pend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ pstart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ pend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
slot = i - gxs + gnx*(j - gys);
- lstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- lend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ lstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ lend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
cnt = 0;
for (k=0; k<nc; k++) {
@@ -828,14 +828,14 @@
ierr = PetscMemzero(values,col*col*nc*nc*sizeof(PetscScalar));CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- pstart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- pend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ pstart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ pend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
slot = i - gxs + gnx*(j - gys);
- lstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- lend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ lstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ lend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
cnt = 0;
for (k=0; k<nc; k++) {
@@ -871,7 +871,7 @@
PetscInt ifill_col,*ofill = dd->ofill, *dfill = dd->dfill;
MPI_Comm comm;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by;
ISLocalToGlobalMapping ltog,ltogb;
DMDAStencilType st;
@@ -881,7 +881,7 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&bx,&by,0,&st);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,&ys,0,&nx,&ny,0);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(da,&gxs,&gys,0,&gnx,&gny,0);CHKERRQ(ierr);
@@ -895,14 +895,14 @@
ierr = MatPreallocateInitialize(comm,nc*nx*ny,nc*nx*ny,dnz,onz);CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- pstart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- pend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ pstart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ pend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
slot = i - gxs + gnx*(j - gys);
- lstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- lend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ lstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ lend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=0; k<nc; k++) {
cnt = 0;
@@ -945,14 +945,14 @@
ierr = PetscMemzero(values,col*col*nc*nc*sizeof(PetscScalar));CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- pstart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- pend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ pstart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ pend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
slot = i - gxs + gnx*(j - gys);
- lstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- lend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ lstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ lend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=0; k<nc; k++) {
cnt = 0;
@@ -999,7 +999,7 @@
PetscInt istart,iend,jstart,jend,kstart,kend,zs,nz,gzs,gnz,ii,jj,kk;
MPI_Comm comm;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by,bz;
ISLocalToGlobalMapping ltog,ltogb;
DMDAStencilType st;
DM_DA *dd = (DM_DA*)da->data;
@@ -1010,7 +1010,7 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&nc,&s,&bx,&by,&bz,&st);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&nx,&ny,&nz);CHKERRQ(ierr);
@@ -1024,14 +1024,14 @@
/* determine the matrix preallocation information */
ierr = MatPreallocateInitialize(comm,nc*nx*ny*nz,nc*nx*ny*nz,dnz,onz);CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=zs; k<zs+nz; k++) {
- kstart = DMDAZPeriodic(wrap) ? -s : (PetscMax(-s,-k));
- kend = DMDAZPeriodic(wrap) ? s : (PetscMin(s,p-k-1));
+ kstart = (bz == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-k));
+ kend = (bz == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,p-k-1));
slot = i - gxs + gnx*(j - gys) + gnx*gny*(k - gzs);
@@ -1068,14 +1068,14 @@
ierr = PetscMalloc(col*col*col*nc*nc*nc*sizeof(PetscScalar),&values);CHKERRQ(ierr);
ierr = PetscMemzero(values,col*col*col*nc*nc*nc*sizeof(PetscScalar));CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=zs; k<zs+nz; k++) {
- kstart = DMDAZPeriodic(wrap) ? -s : (PetscMax(-s,-k));
- kend = DMDAZPeriodic(wrap) ? s : (PetscMin(s,p-k-1));
+ kstart = (bz == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-k));
+ kend = (bz == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,p-k-1));
slot = i - gxs + gnx*(j - gys) + gnx*gny*(k - gzs);
@@ -1115,7 +1115,7 @@
PetscInt m,dim,s,*cols = PETSC_NULL,nc,*rows = PETSC_NULL,col,cnt,l;
PetscInt istart,iend;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx;
ISLocalToGlobalMapping ltog,ltogb;
DM_DA *dd = (DM_DA*)da->data;
@@ -1125,7 +1125,7 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,0,0,0,0,0,&nc,&s,&wrap,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,0,0,0,0,0,&nc,&s,&bx,0,0,0);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,0,0,&nx,0,0);CHKERRQ(ierr);
@@ -1181,7 +1181,7 @@
PetscInt istart,iend,jstart,jend,ii,jj;
MPI_Comm comm;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by;
DMDAStencilType st;
ISLocalToGlobalMapping ltog,ltogb;
DM_DA *dd = (DM_DA*)da->data;
@@ -1191,7 +1191,7 @@
nc - number of components per grid point
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&bx,&by,0,&st);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,&ys,0,&nx,&ny,0);CHKERRQ(ierr);
@@ -1206,11 +1206,11 @@
/* determine the matrix preallocation information */
ierr = MatPreallocateInitialize(comm,nx*ny,nx*ny,dnz,onz);CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
slot = i - gxs + gnx*(j - gys);
/* Find block columns in block row */
@@ -1241,11 +1241,11 @@
ierr = PetscMalloc(col*col*nc*nc*sizeof(PetscScalar),&values);CHKERRQ(ierr);
ierr = PetscMemzero(values,col*col*nc*nc*sizeof(PetscScalar));CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
slot = i - gxs + gnx*(j - gys);
cnt = 0;
for (ii=istart; ii<iend+1; ii++) {
@@ -1276,7 +1276,7 @@
PetscInt istart,iend,jstart,jend,kstart,kend,zs,nz,gzs,gnz,ii,jj,kk;
MPI_Comm comm;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by,bz;
DMDAStencilType st;
ISLocalToGlobalMapping ltog,ltogb;
DM_DA *dd = (DM_DA*)da->data;
@@ -1287,7 +1287,7 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&nc,&s,&bx,&by,&bz,&st);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&nx,&ny,&nz);CHKERRQ(ierr);
@@ -1302,14 +1302,14 @@
/* determine the matrix preallocation information */
ierr = MatPreallocateInitialize(comm,nx*ny*nz,nx*ny*nz,dnz,onz);CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=zs; k<zs+nz; k++) {
- kstart = DMDAZPeriodic(wrap) ? -s : (PetscMax(-s,-k));
- kend = DMDAZPeriodic(wrap) ? s : (PetscMin(s,p-k-1));
+ kstart = (bz == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-k));
+ kend = (bz == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,p-k-1));
slot = i - gxs + gnx*(j - gys) + gnx*gny*(k - gzs);
@@ -1344,14 +1344,14 @@
ierr = PetscMalloc(col*col*col*nc*nc*sizeof(PetscScalar),&values);CHKERRQ(ierr);
ierr = PetscMemzero(values,col*col*col*nc*nc*sizeof(PetscScalar));CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=zs; k<zs+nz; k++) {
- kstart = DMDAZPeriodic(wrap) ? -s : (PetscMax(-s,-k));
- kend = DMDAZPeriodic(wrap) ? s : (PetscMin(s,p-k-1));
+ kstart = (bz == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-k));
+ kend = (bz == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,p-k-1));
slot = i - gxs + gnx*(j - gys) + gnx*gny*(k - gzs);
@@ -1408,7 +1408,7 @@
PetscInt istart,iend,jstart,jend,ii,jj;
MPI_Comm comm;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by;
DMDAStencilType st;
ISLocalToGlobalMapping ltog,ltogb;
DM_DA *dd = (DM_DA*)da->data;
@@ -1418,7 +1418,7 @@
nc - number of components per grid point
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,0,0,0,0,&nc,&s,&bx,&by,0,&st);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,&ys,0,&nx,&ny,0);CHKERRQ(ierr);
@@ -1433,11 +1433,11 @@
/* determine the matrix preallocation information */
ierr = MatPreallocateSymmetricInitialize(comm,nx*ny,nx*ny,dnz,onz);CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
slot = i - gxs + gnx*(j - gys);
/* Find block columns in block row */
@@ -1469,11 +1469,11 @@
ierr = PetscMalloc(col*col*nc*nc*sizeof(PetscScalar),&values);CHKERRQ(ierr);
ierr = PetscMemzero(values,col*col*nc*nc*sizeof(PetscScalar));CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
slot = i - gxs + gnx*(j - gys);
/* Find block columns in block row */
@@ -1507,7 +1507,7 @@
PetscInt istart,iend,jstart,jend,kstart,kend,zs,nz,gzs,gnz,ii,jj,kk;
MPI_Comm comm;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by,bz;
DMDAStencilType st;
ISLocalToGlobalMapping ltog,ltogb;
DM_DA *dd = (DM_DA*)da->data;
@@ -1517,7 +1517,7 @@
nc - number of components per grid point
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&nc,&s,&bx,&by,&bz,&st);CHKERRQ(ierr);
col = 2*s + 1;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&nx,&ny,&nz);CHKERRQ(ierr);
@@ -1533,14 +1533,14 @@
/* determine the matrix preallocation information */
ierr = MatPreallocateSymmetricInitialize(comm,nx*ny*nz,nx*ny*nz,dnz,onz);CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=zs; k<zs+nz; k++) {
- kstart = DMDAZPeriodic(wrap) ? -s : (PetscMax(-s,-k));
- kend = DMDAZPeriodic(wrap) ? s : (PetscMin(s,p-k-1));
+ kstart = (bz == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-k));
+ kend = (bz == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,p-k-1));
slot = i - gxs + gnx*(j - gys) + gnx*gny*(k - gzs);
@@ -1576,14 +1576,14 @@
ierr = PetscMalloc(col*col*col*nc*nc*sizeof(PetscScalar),&values);CHKERRQ(ierr);
ierr = PetscMemzero(values,col*col*col*nc*nc*sizeof(PetscScalar));CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=zs; k<zs+nz; k++) {
- kstart = DMDAZPeriodic(wrap) ? -s : (PetscMax(-s,-k));
- kend = DMDAZPeriodic(wrap) ? s : (PetscMin(s,p-k-1));
+ kstart = (bz == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-k));
+ kend = (bz == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,p-k-1));
slot = i - gxs + gnx*(j - gys) + gnx*gny*(k - gzs);
@@ -1624,7 +1624,7 @@
PetscInt ifill_col,*dfill = dd->dfill,*ofill = dd->ofill;
MPI_Comm comm;
PetscScalar *values;
- DMDABoundaryType wrap;
+ DMDABoundaryType bx,by,bz;
ISLocalToGlobalMapping ltog,ltogb;
DMDAStencilType st;
@@ -1634,17 +1634,17 @@
col - number of colors needed in one direction for single component problem
*/
- ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&nc,&s,&wrap,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&m,&n,&p,0,0,0,&nc,&s,&bx,&by,&bz,&st);CHKERRQ(ierr);
col = 2*s + 1;
- if (DMDAXPeriodic(wrap) && (m % col)){
+ if (bx == DMDA_BOUNDARY_PERIODIC && (m % col)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in X is divisible\n\
by 2*stencil_width + 1\n");
}
- if (DMDAYPeriodic(wrap) && (n % col)){
+ if (by == DMDA_BOUNDARY_PERIODIC && (n % col)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in Y is divisible\n\
by 2*stencil_width + 1\n");
}
- if (DMDAZPeriodic(wrap) && (p % col)){
+ if (bz == DMDA_BOUNDARY_PERIODIC && (p % col)){
SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"For coloring efficiency ensure number of grid points in Z is divisible\n\
by 2*stencil_width + 1\n");
}
@@ -1662,14 +1662,14 @@
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=zs; k<zs+nz; k++) {
- kstart = DMDAZPeriodic(wrap) ? -s : (PetscMax(-s,-k));
- kend = DMDAZPeriodic(wrap) ? s : (PetscMin(s,p-k-1));
+ kstart = (bz == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-k));
+ kend = (bz == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,p-k-1));
slot = i - gxs + gnx*(j - gys) + gnx*gny*(k - gzs);
@@ -1716,14 +1716,14 @@
ierr = PetscMalloc(col*col*col*nc*nc*nc*sizeof(PetscScalar),&values);CHKERRQ(ierr);
ierr = PetscMemzero(values,col*col*col*nc*nc*nc*sizeof(PetscScalar));CHKERRQ(ierr);
for (i=xs; i<xs+nx; i++) {
- istart = DMDAXPeriodic(wrap) ? -s : (PetscMax(-s,-i));
- iend = DMDAXPeriodic(wrap) ? s : (PetscMin(s,m-i-1));
+ istart = (bx == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-i));
+ iend = (bx == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,m-i-1));
for (j=ys; j<ys+ny; j++) {
- jstart = DMDAYPeriodic(wrap) ? -s : (PetscMax(-s,-j));
- jend = DMDAYPeriodic(wrap) ? s : (PetscMin(s,n-j-1));
+ jstart = (by == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-j));
+ jend = (by == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,n-j-1));
for (k=zs; k<zs+nz; k++) {
- kstart = DMDAZPeriodic(wrap) ? -s : (PetscMax(-s,-k));
- kend = DMDAZPeriodic(wrap) ? s : (PetscMin(s,p-k-1));
+ kstart = (bz == DMDA_BOUNDARY_PERIODIC) ? -s : (PetscMax(-s,-k));
+ kend = (bz == DMDA_BOUNDARY_PERIODIC) ? s : (PetscMin(s,p-k-1));
slot = i - gxs + gnx*(j - gys) + gnx*gny*(k - gzs);
diff -r 23e7928e179a src/dm/impls/da/ftn-custom/zda1f.c
--- a/src/dm/impls/da/ftn-custom/zda1f.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/ftn-custom/zda1f.c Fri Mar 11 16:29:15 2011 -0700
@@ -10,11 +10,11 @@
EXTERN_C_BEGIN
-void PETSC_STDCALL dmdacreate1d_(MPI_Comm *comm,DMDABoundaryType *wrap,PetscInt *M,PetscInt *w,PetscInt *s,
+void PETSC_STDCALL dmdacreate1d_(MPI_Comm *comm,DMDABoundaryType *bx,PetscInt *M,PetscInt *w,PetscInt *s,
PetscInt *lc,DM *inra,PetscErrorCode *ierr)
{
CHKFORTRANNULLINTEGER(lc);
- *ierr = DMDACreate1d(MPI_Comm_f2c(*(MPI_Fint *)&*comm),*wrap,*M,*w,*s,lc,inra);
+ *ierr = DMDACreate1d(MPI_Comm_f2c(*(MPI_Fint *)&*comm),*bx,*M,*w,*s,lc,inra);
}
EXTERN_C_END
diff -r 23e7928e179a src/dm/impls/da/ftn-custom/zda2f.c
--- a/src/dm/impls/da/ftn-custom/zda2f.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/ftn-custom/zda2f.c Fri Mar 11 16:29:15 2011 -0700
@@ -56,7 +56,7 @@
PetscInt dim;
PetscObjectAllocateFortranPointers(*da,6);
- *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,0,0,0,0); if (*ierr) return;
+ *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,0,0,0,0,0,0); if (*ierr) return;
if (dim == 2) {
((PetscObject)*da)->fortran_func_pointers[1] = (PetscVoidFunction)jac;
*ierr = DMDASetLocalJacobian(*da,(DMDALocalFunction1)ourlj2d);
@@ -97,7 +97,7 @@
PetscInt dim;
PetscObjectAllocateFortranPointers(*da,6);
- *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,0,0,0,0); if (*ierr) return;
+ *ierr = DMDAGetInfo(*da,&dim,0,0,0,0,0,0,0,0,0,0,0,0); if (*ierr) return;
if (dim == 2) {
((PetscObject)*da)->fortran_func_pointers[4] = (PetscVoidFunction)func;
*ierr = DMDASetLocalFunction(*da,(DMDALocalFunction1)ourlf2d);
@@ -112,13 +112,13 @@
/************************************************/
-void PETSC_STDCALL dmdacreate2d_(MPI_Comm *comm,DMDABoundaryType *wrap,DMDAStencilType
+void PETSC_STDCALL dmdacreate2d_(MPI_Comm *comm,DMDABoundaryType *bx,DMDABoundaryType *by,DMDAStencilType
*stencil_type,PetscInt *M,PetscInt *N,PetscInt *m,PetscInt *n,PetscInt *w,
PetscInt *s,PetscInt *lx,PetscInt *ly,DM *inra,PetscErrorCode *ierr)
{
CHKFORTRANNULLINTEGER(lx);
CHKFORTRANNULLINTEGER(ly);
- *ierr = DMDACreate2d(MPI_Comm_f2c(*(MPI_Fint *)&*comm),*wrap,*stencil_type,*M,*N,*m,*n,*w,*s,lx,ly,inra);
+ *ierr = DMDACreate2d(MPI_Comm_f2c(*(MPI_Fint *)&*comm),*bx,*by,*stencil_type,*M,*N,*m,*n,*w,*s,lx,ly,inra);
}
void PETSC_STDCALL dmdagetownershipranges_(DM *da,PetscInt lx[],PetscInt ly[],PetscInt lz[],PetscErrorCode *ierr)
@@ -129,7 +129,7 @@
CHKFORTRANNULLINTEGER(lx);
CHKFORTRANNULLINTEGER(ly);
CHKFORTRANNULLINTEGER(lz);
- *ierr = DMDAGetInfo(*da,0,0,0,0,&M,&N,&P,0,0,0,0);if (*ierr) return;
+ *ierr = DMDAGetInfo(*da,0,0,0,0,&M,&N,&P,0,0,0,0,0,0);if (*ierr) return;
*ierr = DMDAGetOwnershipRanges(*da,&gx,&gy,&gz);if (*ierr) return;
if (lx) {for (i=0; i<M; i++) {lx[i] = gx[i];}}
if (ly) {for (i=0; i<N; i++) {ly[i] = gy[i];}}
diff -r 23e7928e179a src/dm/impls/da/ftn-custom/zda3f.c
--- a/src/dm/impls/da/ftn-custom/zda3f.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/ftn-custom/zda3f.c Fri Mar 11 16:29:15 2011 -0700
@@ -10,14 +10,14 @@
EXTERN_C_BEGIN
-void PETSC_STDCALL dmdacreate3d_(MPI_Comm *comm,DMDABoundaryType *wrap,DMDAStencilType
+void PETSC_STDCALL dmdacreate3d_(MPI_Comm *comm,DMDABoundaryType *bx,DMDABoundaryType *by,DMDABoundaryType *bz,DMDAStencilType
*stencil_type,PetscInt *M,PetscInt *N,PetscInt *P,PetscInt *m,PetscInt *n,PetscInt *p,
PetscInt *w,PetscInt *s,PetscInt *lx,PetscInt *ly,PetscInt *lz,DM *inra,PetscErrorCode *ierr)
{
CHKFORTRANNULLINTEGER(lx);
CHKFORTRANNULLINTEGER(ly);
CHKFORTRANNULLINTEGER(lz);
- *ierr = DMDACreate3d(MPI_Comm_f2c(*(MPI_Fint *)&*comm),*wrap,*stencil_type,
+ *ierr = DMDACreate3d(MPI_Comm_f2c(*(MPI_Fint *)&*comm),*bx,*by,*bz,*stencil_type,
*M,*N,*P,*m,*n,*p,*w,*s,lx,ly,lz,inra);
}
diff -r 23e7928e179a src/dm/impls/da/gr1.c
--- a/src/dm/impls/da/gr1.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/gr1.c Fri Mar 11 16:29:15 2011 -0700
@@ -28,7 +28,7 @@
{
MPI_Comm comm;
DM cda;
- DMDABoundaryType periodic;
+ DMDABoundaryType bx,by,bz;
Vec xcoor;
PetscScalar *coors;
PetscReal hx,hy,hz_;
@@ -39,12 +39,12 @@
if (xmax <= xmin) SETERRQ2(((PetscObject)da)->comm,PETSC_ERR_ARG_INCOMP,"xmax must be larger than xmin %G %G",xmin,xmax);
ierr = PetscObjectGetComm((PetscObject)da,&comm);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,&dim,&M,&N,&P,0,0,0,0,0,&periodic,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,&M,&N,&P,0,0,0,0,0,&bx,&by,&bz,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&istart,&jstart,&kstart,&isize,&jsize,&ksize);CHKERRQ(ierr);
ierr = DMDAGetCoordinateDA(da, &cda);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(cda, &xcoor);CHKERRQ(ierr);
if (dim == 1) {
- if (DMDAXPeriodic(periodic)) hx = (xmax-xmin)/M;
+ if (bx == DMDA_BOUNDARY_PERIODIC) hx = (xmax-xmin)/M;
else hx = (xmax-xmin)/(M-1);
ierr = VecGetArray(xcoor,&coors);CHKERRQ(ierr);
for (i=0; i<isize; i++) {
@@ -53,9 +53,9 @@
ierr = VecRestoreArray(xcoor,&coors);CHKERRQ(ierr);
} else if (dim == 2) {
if (ymax <= ymin) SETERRQ2(((PetscObject)da)->comm,PETSC_ERR_ARG_INCOMP,"ymax must be larger than ymin %G %G",ymin,ymax);
- if (DMDAXPeriodic(periodic)) hx = (xmax-xmin)/(M);
+ if (bx == DMDA_BOUNDARY_PERIODIC) hx = (xmax-xmin)/(M);
else hx = (xmax-xmin)/(M-1);
- if (DMDAYPeriodic(periodic)) hy = (ymax-ymin)/(N);
+ if (by == DMDA_BOUNDARY_PERIODIC) hy = (ymax-ymin)/(N);
else hy = (ymax-ymin)/(N-1);
ierr = VecGetArray(xcoor,&coors);CHKERRQ(ierr);
cnt = 0;
@@ -69,11 +69,11 @@
} else if (dim == 3) {
if (ymax <= ymin) SETERRQ2(((PetscObject)da)->comm,PETSC_ERR_ARG_INCOMP,"ymax must be larger than ymin %G %G",ymin,ymax);
if (zmax <= zmin) SETERRQ2(((PetscObject)da)->comm,PETSC_ERR_ARG_INCOMP,"zmax must be larger than zmin %G %G",zmin,zmax);
- if (DMDAXPeriodic(periodic)) hx = (xmax-xmin)/(M);
+ if (bx == DMDA_BOUNDARY_PERIODIC) hx = (xmax-xmin)/(M);
else hx = (xmax-xmin)/(M-1);
- if (DMDAYPeriodic(periodic)) hy = (ymax-ymin)/(N);
+ if (by == DMDA_BOUNDARY_PERIODIC) hy = (ymax-ymin)/(N);
else hy = (ymax-ymin)/(N-1);
- if (DMDAZPeriodic(periodic)) hz_ = (zmax-zmin)/(P);
+ if (bz == DMDA_BOUNDARY_PERIODIC) hz_ = (zmax-zmin)/(P);
else hz_ = (zmax-zmin)/(P-1);
ierr = VecGetArray(xcoor,&coors);CHKERRQ(ierr);
cnt = 0;
@@ -112,7 +112,7 @@
MPI_Comm comm;
PetscDrawAxis axis;
Vec xcoor;
- DMDABoundaryType periodic;
+ DMDABoundaryType bx;
PetscFunctionBegin;
ierr = PetscViewerDrawGetDraw(v,0,&draw);CHKERRQ(ierr);
@@ -123,7 +123,7 @@
ierr = PetscOptionsGetBool(PETSC_NULL,"-draw_vec_mark_points",&showpoints,PETSC_NULL);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,&step,0,&periodic,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,&step,0,&bx,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&istart,0,0,&isize,0,0);CHKERRQ(ierr);
ierr = VecGetArrayRead(xin,&array);CHKERRQ(ierr);
ierr = VecGetLocalSize(xin,&n);CHKERRQ(ierr);
@@ -201,7 +201,7 @@
ierr = MPI_Send((void*)&array[j+(n-1)*step],1,MPIU_REAL,rank+1,tag1,comm);CHKERRQ(ierr);
ierr = MPI_Send((void*)&xg[n-1],1,MPIU_REAL,rank+1,tag1,comm);CHKERRQ(ierr);
}
- if (!rank && DMDAXPeriodic(periodic) && size > 1) { /* first processor sends first value to last */
+ if (!rank && bx == DMDA_BOUNDARY_PERIODIC && size > 1) { /* first processor sends first value to last */
ierr = MPI_Send((void*)&array[j],1,MPIU_REAL,size-1,tag2,comm);CHKERRQ(ierr);
}
@@ -227,7 +227,7 @@
ierr = PetscDrawPoint(draw,xgtmp,tmp,PETSC_DRAW_BLACK);CHKERRQ(ierr);
}
}
- if (rank == size-1 && DMDAXPeriodic(periodic) && size > 1) {
+ if (rank == size-1 && bx == DMDA_BOUNDARY_PERIODIC && size > 1) {
ierr = MPI_Recv(&tmp,1,MPIU_REAL,0,tag2,comm,&status);CHKERRQ(ierr);
#if !defined(PETSC_USE_COMPLEX)
ierr = PetscDrawLine(draw,xg[n-2],array[j+step*(n-1)],xg[n-1],tmp,PETSC_DRAW_RED);CHKERRQ(ierr);
diff -r 23e7928e179a src/dm/impls/da/gr2.c
--- a/src/dm/impls/da/gr2.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/dm/impls/da/gr2.c Fri Mar 11 16:29:15 2011 -0700
@@ -83,7 +83,7 @@
PetscBool isnull,useports = PETSC_FALSE;
MPI_Comm comm;
Vec xlocal,xcoor,xcoorl;
- DMDABoundaryType periodic;
+ DMDABoundaryType bx,by;
DMDAStencilType st;
ZoomCtx zctx;
PetscDrawViewPorts *ports;
@@ -100,7 +100,7 @@
ierr = PetscObjectGetComm((PetscObject)xin,&comm);CHKERRQ(ierr);
ierr = MPI_Comm_rank(comm,&rank);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&M,&N,0,&zctx.m,&zctx.n,0,&w,&s,&periodic,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,&zctx.m,&zctx.n,0,&w,&s,&bx,&by,0,&st);CHKERRQ(ierr);
ierr = DMDAGetOwnershipRanges(da,&lx,&ly,PETSC_NULL);CHKERRQ(ierr);
/*
@@ -110,12 +110,12 @@
*/
ierr = PetscObjectQuery((PetscObject)da,"GraphicsGhosted",(PetscObject*)&xlocal);CHKERRQ(ierr);
if (!xlocal) {
- if (!periodic || s != 1 || st != DMDA_STENCIL_BOX) {
+ if (!bx || !by || s != 1 || st != DMDA_STENCIL_BOX) {
/*
if original da is not of stencil width one, or periodic or not a box stencil then
create a special DMDA to handle one level of ghost points for graphics
*/
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,M,N,zctx.m,zctx.n,w,1,lx,ly,&dac);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,M,N,zctx.m,zctx.n,w,1,lx,ly,&dac);CHKERRQ(ierr);
ierr = PetscInfo(da,"Creating auxilary DMDA for managing graphics ghost points\n");CHKERRQ(ierr);
} else {
/* otherwise we can use the da we already have */
@@ -135,7 +135,7 @@
ierr = PetscObjectCompose((PetscObject)da,"GraphicsGhosted",(PetscObject)xlocal);CHKERRQ(ierr);
ierr = PetscObjectDereference((PetscObject)xlocal);CHKERRQ(ierr);
} else {
- if (!periodic && s == 1 && st == DMDA_STENCIL_BOX) {
+ if (!bx && !by && s == 1 && st == DMDA_STENCIL_BOX) {
dac = da;
} else {
ierr = PetscObjectQuery((PetscObject)xlocal,"DMDA",(PetscObject*)&dac);CHKERRQ(ierr);
@@ -173,7 +173,7 @@
ierr = PetscObjectQuery((PetscObject)da,"GraphicsCoordinateGhosted",(PetscObject*)&xcoorl);CHKERRQ(ierr);
if (!xcoorl) {
/* create DMDA to get local version of graphics */
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,M,N,zctx.m,zctx.n,2,1,lx,ly,&dag);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,M,N,zctx.m,zctx.n,2,1,lx,ly,&dag);CHKERRQ(ierr);
ierr = PetscInfo(dag,"Creating auxilary DMDA for managing graphics coordinates ghost points\n");CHKERRQ(ierr);
ierr = DMCreateLocalVector(dag,&xcoorl);CHKERRQ(ierr);
ierr = PetscObjectCompose((PetscObject)da,"GraphicsCoordinateGhosted",(PetscObject)xcoorl);CHKERRQ(ierr);
@@ -189,7 +189,7 @@
/*
Get information about size of area each processor must do graphics for
*/
- ierr = DMDAGetInfo(dac,0,&M,&N,0,0,0,0,&zctx.step,0,&periodic,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dac,0,&M,&N,0,0,0,0,&zctx.step,0,&bx,&by,0,0);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(dac,&igstart,&jgstart,0,&zctx.m,&zctx.n,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(dac,&istart,0,0,&isize,0,0);CHKERRQ(ierr);
@@ -428,7 +428,7 @@
ierr = PetscTypeCompare((PetscObject)viewer,PETSCVIEWERHDF5,&ishdf5);CHKERRQ(ierr);
#endif
if (isdraw) {
- ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,0,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
if (dim == 1) {
ierr = VecView_MPI_Draw_DA1d(xin,viewer);CHKERRQ(ierr);
} else if (dim == 2) {
diff -r 23e7928e179a src/docs/website/documentation/changes/dev.html
--- a/src/docs/website/documentation/changes/dev.html Thu Mar 10 22:14:51 2011 -0600
+++ b/src/docs/website/documentation/changes/dev.html Fri Mar 11 16:29:15 2011 -0700
@@ -299,13 +299,16 @@
and DMGetLocalToGlobalMappingBlock() and are collective since they may
be constructed lazily.</li>
<li>DMGetBlockSize() is added.</li>
- <li>Changed DMDAPeriodicType to DMDABoundaryType, and enabled
-ghost cells to be included in DM_DAs on domain boundaries even for
-non-periodic dimensions through the use of DMDA_{XYZ}GHOSTED.
-DMDABoundaryType is assigned through bitwise-or composition,
-i.e. DMDA_XPERIODIC | DMDA_YGHOSTED.</li>
- <li>DMDASetPeriodicity() is now DMDASetBoundaryType()</li>
- <li>DMDASetGhostedCoordinates() is added.</li>
+ <li>Changed DMDAPeriodicType to DMDABoundaryType, and changed
+this enum to only specify one boundary (one for each dimension). This
+enum is now one of DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED, or
+DMDA_BOUNDARY_PERIODIC. See DMDABoundaryType man page for more.</li>
+ <li>DMDASetPeriodicity() is now DMDASetBoundaryType(), and API
+is changed to take three DMDABoundaryType arguments.</li>
+ <li>Changed API for DMDACreate*D(), DMDAGetInfo() to take the
+correct number of DMDABoundaryType enums for the dimension.</li>
+ <li>DMDASetGhostedCoordinates() is added to set coordinates of
+non-periodic ghost cells.</li>
</ul>
<p><u><b>DMMG:</b></u></p>
<ul>
diff -r 23e7928e179a src/ksp/ksp/examples/tests/ex14.c
--- a/src/ksp/ksp/examples/tests/ex14.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tests/ex14.c Fri Mar 11 16:29:15 2011 -0700
@@ -143,7 +143,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-Ny",&Ny,PETSC_NULL);CHKERRQ(ierr);
if (Nx*Ny != size && (Nx != PETSC_DECIDE || Ny != PETSC_DECIDE))
SETERRQ(PETSC_COMM_WORLD,1,"Incompatible number of processors: Nx * Ny != size");
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.mx,
user.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(ierr);
/*
diff -r 23e7928e179a src/ksp/ksp/examples/tests/ex19.c
--- a/src/ksp/ksp/examples/tests/ex19.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tests/ex19.c Fri Mar 11 16:29:15 2011 -0700
@@ -81,7 +81,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-Ny",&Ny,PETSC_NULL);CHKERRQ(ierr);
/* Set up distributed array for fine grid */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.fine.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.fine.mx,
user.fine.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&user.fine.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(user.fine.da,&user.fine.x);CHKERRQ(ierr);
ierr = VecDuplicate(user.fine.x,&user.fine.r);CHKERRQ(ierr);
@@ -92,7 +92,7 @@
ierr = MatCreateMPIAIJ(PETSC_COMM_WORLD,nlocal,nlocal,n,n,5,PETSC_NULL,3,PETSC_NULL,&user.fine.J);CHKERRQ(ierr);
/* Set up distributed array for coarse grid */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.coarse.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.coarse.mx,
user.coarse.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&user.coarse.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(user.coarse.da,&user.coarse.x);CHKERRQ(ierr);
ierr = VecDuplicate(user.coarse.x,&user.coarse.b);CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/ksp/examples/tests/ex26.c
--- a/src/ksp/ksp/examples/tests/ex26.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tests/ex26.c Fri Mar 11 16:29:15 2011 -0700
@@ -69,7 +69,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-Ny",&Ny,PETSC_NULL);CHKERRQ(ierr);
/* Set up distributed array for fine grid */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,fine_ctx.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,fine_ctx.mx,
fine_ctx.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&fine_ctx.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(fine_ctx.da,&fine_ctx.x);CHKERRQ(ierr);
ierr = VecDuplicate(fine_ctx.x,&fine_ctx.b);CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/ksp/examples/tests/ex29.c
--- a/src/ksp/ksp/examples/tests/ex29.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tests/ex29.c Fri Mar 11 16:29:15 2011 -0700
@@ -69,7 +69,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-Nx",&Nx,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-Ny",&Ny,PETSC_NULL);CHKERRQ(ierr);
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,fine_ctx.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,fine_ctx.mx,
fine_ctx.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&fine_ctx.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(fine_ctx.da,&fine_ctx.x);CHKERRQ(ierr);
ierr = VecDuplicate(fine_ctx.x,&fine_ctx.b);CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/ksp/examples/tests/ex32.c
--- a/src/ksp/ksp/examples/tests/ex32.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tests/ex32.c Fri Mar 11 16:29:15 2011 -0700
@@ -37,7 +37,7 @@
ierr = DMDACreate(PETSC_COMM_WORLD,&da);CHKERRQ(ierr);
ierr = DMDASetDim(da,3);CHKERRQ(ierr);
- ierr = DMDASetBoundaryType(da,DMDA_NONPERIODIC);CHKERRQ(ierr);
+ ierr = DMDASetBoundaryType(da,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE);CHKERRQ(ierr);
ierr = DMDASetStencilType(da,DMDA_STENCIL_STAR);CHKERRQ(ierr);
ierr = DMDASetSizes(da,M,M,M);CHKERRQ(ierr);
ierr = DMDASetNumProcs(da,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE);CHKERRQ(ierr);
@@ -115,7 +115,7 @@
PetscScalar h;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
h = 1.0/((mx-1)*(my-1)*(mz-1));
ierr = VecSet(b,h);CHKERRQ(ierr);
PetscFunctionReturn(0);
@@ -131,7 +131,7 @@
MatStencil row,col;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
/* For simplicity, this example only works on mx=my=mz */
if ( mx != my || mx != mz) SETERRQ3(PETSC_COMM_SELF,1,"This example only works with mx %d = my %d = mz %d\n",mx,my,mz);
diff -r 23e7928e179a src/ksp/ksp/examples/tests/ex35.c
--- a/src/ksp/ksp/examples/tests/ex35.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tests/ex35.c Fri Mar 11 16:29:15 2011 -0700
@@ -31,7 +31,7 @@
ierr = DMDACreate(PETSC_COMM_WORLD,&da);CHKERRQ(ierr);
ierr = DMDASetDim(da,3);CHKERRQ(ierr);
- ierr = DMDASetBoundaryType(da,DMDA_NONPERIODIC);CHKERRQ(ierr);
+ ierr = DMDASetBoundaryType(da,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE);CHKERRQ(ierr);
ierr = DMDASetStencilType(da,DMDA_STENCIL_STAR);CHKERRQ(ierr);
ierr = DMDASetSizes(da,3,3,3);CHKERRQ(ierr);
ierr = DMDASetNumProcs(da,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE);CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex14f.F
--- a/src/ksp/ksp/examples/tutorials/ex14f.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex14f.F Fri Mar 11 16:29:15 2011 -0700
@@ -129,9 +129,9 @@
Ny = PETSC_DECIDE
call PetscOptionsGetInt(PETSC_NULL_CHARACTER,'-Nx',Nx,flg,ierr)
call PetscOptionsGetInt(PETSC_NULL_CHARACTER,'-Ny',Ny,flg,ierr)
- call DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,mx, &
- & my,Nx,Ny,one,one,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
- & da,ierr)
+ call DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE, &
+ & DMDA_STENCIL_STAR,mx,my,Nx,Ny,one,one, &
+ & PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da,ierr)
!
! Extract global and local vectors from DMDA then duplicate for remaining
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex22.c
--- a/src/ksp/ksp/examples/tutorials/ex22.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex22.c Fri Mar 11 16:29:15 2011 -0700
@@ -34,7 +34,7 @@
PetscInitialize(&argc,&argv,(char *)0,help);
ierr = PetscOptionsGetInt(PETSC_NULL,"-nlevels",&nlevels,PETSC_NULL);CHKERRQ(ierr);
ierr = DMMGCreate(PETSC_COMM_WORLD,nlevels,PETSC_NULL,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-3,-3,-3,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-3,-3,-3,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -62,7 +62,7 @@
PetscScalar h;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dmmg->dm,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dmmg->dm,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
h = 1.0/((mx-1)*(my-1)*(mz-1));
ierr = VecSet(b,h);CHKERRQ(ierr);
PetscFunctionReturn(0);
@@ -78,7 +78,7 @@
PetscScalar v[7],Hx,Hy,Hz,HxHydHz,HyHzdHx,HxHzdHy;
MatStencil row,col[7];
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx-1); Hy = 1.0 / (PetscReal)(my-1); Hz = 1.0 / (PetscReal)(mz-1);
HxHydHz = Hx*Hy/Hz; HxHzdHy = Hx*Hz/Hy; HyHzdHx = Hy*Hz/Hx;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&xm,&ym,&zm);CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex22f.F
--- a/src/ksp/ksp/examples/tutorials/ex22f.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex22f.F Fri Mar 11 16:29:15 2011 -0700
@@ -38,7 +38,8 @@
i3 = 3
i1 = 1
call DMMGCreate(PETSC_COMM_WORLD,i3,PETSC_NULL_INTEGER,dmmg,ierr)
- call DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC, &
+ call DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE, &
+ & DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE, &
& DMDA_STENCIL_STAR,i3,i3,i3,PETSC_DECIDE,PETSC_DECIDE, &
& PETSC_DECIDE,i1,i1,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
& PETSC_NULL_INTEGER,da,ierr)
@@ -77,6 +78,7 @@
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
+ & PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
& PETSC_NULL_INTEGER,ierr)
h = 1.d0/((mx-1)*(my-1)*(mz-1))
@@ -112,6 +114,7 @@
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
+ & PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &
& PETSC_NULL_INTEGER,ierr)
Hx = 1.d0 / (mx-1)
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex25.c
--- a/src/ksp/ksp/examples/tutorials/ex25.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex25.c Fri Mar 11 16:29:15 2011 -0700
@@ -45,7 +45,7 @@
ierr = PetscOptionsGetScalar(0,"-e",&user.e,0);CHKERRQ(ierr);
ierr = DMMGCreate(PETSC_COMM_WORLD,3,&user,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,-3,1,1,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,-3,1,1,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -73,7 +73,7 @@
PetscScalar h,v[2];
PetscFunctionBegin;
- ierr = DMDAGetInfo(dmmg->dm,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dmmg->dm,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
h = 1.0/((mx-1));
ierr = VecSet(b,h);CHKERRQ(ierr);
idx[0] = 0; idx[1] = mx -1;
@@ -95,7 +95,7 @@
MatStencil row,col[3];
AppCtx *user = (AppCtx*)dmmg->user;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,0,0,&xm,0,0);CHKERRQ(ierr);
h = 1.0/(mx-1);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex28.c
--- a/src/ksp/ksp/examples/tutorials/ex28.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex28.c Fri Mar 11 16:29:15 2011 -0700
@@ -23,7 +23,7 @@
PetscInitialize(&argc,&argv,(char *)0,help);
ierr = DMMGCreate(PETSC_COMM_WORLD,3,PETSC_NULL,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_XPERIODIC,-3,2,1,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_PERIODIC,-3,2,1,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -57,7 +57,7 @@
Vec x = DMMGGetx(dmmg);
PetscFunctionBegin;
- ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 2.0*PETSC_PI / (PetscReal)(mx);
ierr = DMDAGetCorners(DMMGGetDM(dmmg),&xs,0,0,&xm,0,0);CHKERRQ(ierr);
@@ -80,7 +80,7 @@
PetscScalar h;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dmmg->dm,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dmmg->dm,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
h = 2.0*PETSC_PI/((mx));
ierr = VecCopy(dmmg->x,b);CHKERRQ(ierr);
ierr = VecScale(b,h);CHKERRQ(ierr);
@@ -99,7 +99,7 @@
PetscScalar lambda;
ierr = PetscMemzero(col,7*sizeof(MatStencil));CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 2.0*PETSC_PI / (PetscReal)(mx);
ierr = DMDAGetCorners(da,&xs,0,0,&xm,0,0);CHKERRQ(ierr);
lambda = 2.0*Hx;
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex29.c
--- a/src/ksp/ksp/examples/tutorials/ex29.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex29.c Fri Mar 11 16:29:15 2011 -0700
@@ -58,7 +58,7 @@
PetscInitialize(&argc,&argv,(char *)0,help);
ierr = DMMGCreate(PETSC_COMM_WORLD,3,PETSC_NULL,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-3,-3,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-3,-3,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
for (l = 0; l < DMMGGetLevels(dmmg); l++) {
@@ -109,7 +109,7 @@
PetscScalar **array;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx-1);
Hy = 1.0 / (PetscReal)(my-1);
ierr = DMDAGetCorners(da,&xs,&ys,0,&xm,&ym,0);CHKERRQ(ierr);
@@ -161,7 +161,7 @@
MatStencil row, col[5];
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx-1);
Hy = 1.0 / (PetscReal)(my-1);
HxdHy = Hx/Hy;
@@ -236,7 +236,7 @@
ierr = PetscObjectQuery((PetscObject) x, "DMDA", (PetscObject *) &da);CHKERRQ(ierr);
if (!da) SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_ARG_WRONG,"Vector not generated from a DMDA");
- ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0, &dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0, &dof,0,0,0,0,0);CHKERRQ(ierr);
ierr = PetscViewerASCIIPrintf(viewer, "# vtk DataFile Version 2.0\n");CHKERRQ(ierr);
ierr = PetscViewerASCIIPrintf(viewer, "Inhomogeneous Poisson Equation with %s boundary conditions\n", bcName);CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex31.c
--- a/src/ksp/ksp/examples/tutorials/ex31.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex31.c Fri Mar 11 16:29:15 2011 -0700
@@ -81,7 +81,7 @@
PetscInitialize(&argc,&argv,(char *)0,help);
ierr = DMMGCreate(PETSC_COMM_WORLD,3,PETSC_NULL,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,3,3,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,3,3,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
for (l = 0; l < DMMGGetLevels(dmmg); l++) {
@@ -256,7 +256,7 @@
PetscErrorCode ierr;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
hx = 1.0 / (PetscReal)(mx-1);
hy = 1.0 / (PetscReal)(my-1);
ierr = VecSet(user->sol_phi.rho,0.0);CHKERRQ(ierr);
@@ -364,7 +364,7 @@
ierr = KSPCreate(comm, &ksp);CHKERRQ(ierr);
ierr = KSPSetFromOptions(ksp);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
hx = 1.0 / (PetscReal)(mx-1);
hy = 1.0 / (PetscReal)(my-1);
area = 0.5*hx*hy;
@@ -493,7 +493,7 @@
ierr = KSPCreate(comm, &ksp);CHKERRQ(ierr);
ierr = KSPSetFromOptions(ksp);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
hx = 1.0 / (PetscReal)(mx-1);
hy = 1.0 / (PetscReal)(my-1);
area = 0.5*hx*hy;
@@ -743,7 +743,7 @@
PetscErrorCode ierr;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,&ys,0,&xm,&ym,0);CHKERRQ(ierr);
hx = 1.0 / (mx-1);
hy = 1.0 / (my-1);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex32.c
--- a/src/ksp/ksp/examples/tutorials/ex32.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex32.c Fri Mar 11 16:29:15 2011 -0700
@@ -62,7 +62,7 @@
PetscInitialize(&argc,&argv,(char *)0,help);
ierr = DMMGCreate(PETSC_COMM_WORLD,3,PETSC_NULL,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,3,3,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,3,3,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
ierr = DMDASetInterpolationType(da, DMDA_Q0);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
@@ -108,7 +108,7 @@
PetscScalar **array;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &mx, &my, 0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx);
Hy = 1.0 / (PetscReal)(my);
ierr = DMDAGetCorners(da,&xs,&ys,0,&xm,&ym,0);CHKERRQ(ierr);
@@ -147,7 +147,7 @@
MatStencil row, col[5];
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx);
Hy = 1.0 / (PetscReal)(my);
HxdHy = Hx/Hy;
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex34.c
--- a/src/ksp/ksp/examples/tutorials/ex34.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex34.c Fri Mar 11 16:29:15 2011 -0700
@@ -56,7 +56,7 @@
PetscInitialize(&argc,&argv,(char *)0,help);
ierr = DMMGCreate(PETSC_COMM_WORLD,3,PETSC_NULL,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-3,-3,-3,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-3,-3,-3,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
ierr = DMDASetInterpolationType(da, DMDA_Q0);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
@@ -83,7 +83,7 @@
ierr = VecNorm(DMMGGetr(dmmg),NORM_2,&norm);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD,"Residual norm %G\n",norm);CHKERRQ(ierr);
- ierr = DMDAGetInfo(DMMGGetDM(dmmg), 0, &mx, &my, &mz, 0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(DMMGGetDM(dmmg), 0, &mx, &my, &mz, 0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx);
Hy = 1.0 / (PetscReal)(my);
Hz = 1.0 / (PetscReal)(mz);
@@ -128,7 +128,7 @@
PetscScalar ***array;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, 0, &mx, &my, &mz, 0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &mx, &my, &mz, 0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx);
Hy = 1.0 / (PetscReal)(my);
Hz = 1.0 / (PetscReal)(mz);
@@ -175,7 +175,7 @@
MatStencil row, col[7];
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx);
Hy = 1.0 / (PetscReal)(my);
Hz = 1.0 / (PetscReal)(mz);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex38.c
--- a/src/ksp/ksp/examples/tutorials/ex38.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex38.c Fri Mar 11 16:29:15 2011 -0700
@@ -42,7 +42,7 @@
ierr = KSPSetOperators(kspmg,cmat,cmat,DIFFERENT_NONZERO_PATTERN);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD, DMDA_NONPERIODIC, n, 1, 1, 0, &da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, n, 1, 1, 0, &da);CHKERRQ(ierr);
ierr = DMDASetRefinementFactor(da, 3, 3, 3);CHKERRQ(ierr);
ierr = PCASASetDM(pcmg, (DM) da);CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex43.c
--- a/src/ksp/ksp/examples/tutorials/ex43.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex43.c Fri Mar 11 16:29:15 2011 -0700
@@ -169,7 +169,7 @@
PetscInt ml,nl,pl;
PetscFunctionBegin;
- DMDAGetInfo(da,0,&M,&N,&P,0,0,0,0,0,0,0);
+ DMDAGetInfo(da,0,&M,&N,&P,0,0,0,0,0,0,0,0,0);
DMDAGetCorners(da,&sx,&sy,&sz,&m,&n,&p);
ml = nl = pl = 0;
@@ -288,7 +288,7 @@
PetscFunctionBegin;
MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
- DMDAGetInfo(da,0,0,0,0,&cpu_x,&cpu_y,0,0,0,0,0);
+ DMDAGetInfo(da,0,0,0,0,&cpu_x,&cpu_y,0,0,0,0,0,0,0);
proc_J = rank/cpu_x;
proc_I = rank-cpu_x*proc_J;
@@ -407,7 +407,7 @@
if (!fp) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_USER,"Cannot open file");
ierr = PetscFPrintf(PETSC_COMM_SELF,fp,"### %s (processor %1.4d) ### \n",comment,rank);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,0,0,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,0,0,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
ierr = PetscFPrintf(PETSC_COMM_SELF,fp,"### x y ");CHKERRQ(ierr);
for (d = 0; d < n_dofs; d++) {
const char *field_name;
@@ -474,7 +474,7 @@
if (!fp) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_USER,"Cannot open file");
ierr = PetscFPrintf(PETSC_COMM_SELF,fp,"### %s (processor %1.4d) ### \n",comment,rank);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,0,0,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,0,0,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
ierr = PetscFPrintf(PETSC_COMM_SELF,fp,"### x y ");CHKERRQ(ierr);
for (d = 0; d < n_dofs; d++) {
const char *field_name;
@@ -1015,7 +1015,7 @@
PetscErrorCode ierr;
PetscFunctionBegin;
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
mx+1,my+1,PETSC_DECIDE,PETSC_DECIDE,3,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da,0,"anlytic_Vx");CHKERRQ(ierr);
ierr = DMDASetFieldName(da,1,"anlytic_Vy");CHKERRQ(ierr);
@@ -1121,7 +1121,7 @@
ierr = DMGlobalToLocalEnd(stokes_da,X,INSERT_VALUES,X_local);CHKERRQ(ierr);
ierr = DMDAVecGetArray(stokes_da,X_local,&stokes);CHKERRQ(ierr);
- ierr = DMDAGetInfo(stokes_da,0,&M,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(stokes_da,0,&M,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetBoundingBox(stokes_da,xymin,xymax);CHKERRQ(ierr);
h = (xymax[0]-xymin[0])/((double)M);
@@ -1222,7 +1222,7 @@
p_dof = P_DOFS; /* p - pressure */
dof = u_dof+p_dof;
stencil_width = 1;
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
mx+1,my+1,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,PETSC_NULL,PETSC_NULL,&da_Stokes);CHKERRQ(ierr);
ierr = DMDASetFieldName(da_Stokes,0,"Vx");CHKERRQ(ierr);
ierr = DMDASetFieldName(da_Stokes,1,"Vy");CHKERRQ(ierr);
@@ -1237,18 +1237,18 @@
ierr = DMDAGetLocalElementSize(da_Stokes,&mxl,&myl,PETSC_NULL);CHKERRQ(ierr);
/* !!! IN PARALLEL WE MUST MAKE SURE THE TWO DMDA's ALIGN !!! // */
- ierr = DMDAGetInfo(da_Stokes,0,0,0,0,&cpu_x,&cpu_y,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da_Stokes,0,0,0,0,&cpu_x,&cpu_y,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetElementOwnershipRanges2d(da_Stokes,&lx,&ly);CHKERRQ(ierr);
prop_dof = (int)(sizeof(GaussPointCoefficients)/sizeof(PetscScalar)); /* gauss point setup */
prop_stencil_width = 0;
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
mx,my,cpu_x,cpu_y,prop_dof,prop_stencil_width,lx,ly,&da_prop);CHKERRQ(ierr);
ierr = PetscFree(lx);CHKERRQ(ierr);
ierr = PetscFree(ly);CHKERRQ(ierr);
/* define centroid positions */
- ierr = DMDAGetInfo(da_prop,0,&M,&N,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da_prop,0,&M,&N,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/((PetscReal)(M));
dy = 1.0/((PetscReal)(N));
@@ -1589,7 +1589,7 @@
ierr = DMDAGetGhostedCoordinates(da,&coords);CHKERRQ(ierr);
ierr = DMDAVecGetArray(cda,coords,&_coords);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(cda,&si,&sj,0,&nx,&ny,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
/* /// */
@@ -1661,7 +1661,7 @@
ierr = DMDAGetGhostedCoordinates(da,&coords);CHKERRQ(ierr);
ierr = DMDAVecGetArray(cda,coords,&_coords);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(cda,&si,&sj,0,&nx,&ny,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
/* /// */
@@ -1733,7 +1733,7 @@
ierr = DMDAGetGhostedCoordinates(da,&coords);CHKERRQ(ierr);
ierr = DMDAVecGetArray(cda,coords,&_coords);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(cda,&si,&sj,0,&nx,&ny,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
/* /// */
@@ -1805,7 +1805,7 @@
ierr = DMDAGetGhostedCoordinates(da,&coords);CHKERRQ(ierr);
ierr = DMDAVecGetArray(cda,coords,&_coords);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(cda,&si,&sj,0,&nx,&ny,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
/* /// */
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex44f.F90
--- a/src/ksp/ksp/examples/tutorials/ex44f.F90 Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex44f.F90 Fri Mar 11 16:29:15 2011 -0700
@@ -4,7 +4,7 @@
Vec x,f; Mat J; DM da; KSP ksp; PetscErrorCode ierr
call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
- call DMDACreate1d(MPI_COMM_WORLD,DMDA_NONPERIODIC,8,1,1,PETSC_NULL_INTEGER,da,ierr)
+ call DMDACreate1d(MPI_COMM_WORLD,DMDA_BOUNDARY_NONE,8,1,1,PETSC_NULL_INTEGER,da,ierr)
call DMCreateGlobalVector(da,x,ierr); call VecDuplicate(x,f,ierr)
call DMGetMatrix(da,MATAIJ,J,ierr)
@@ -24,7 +24,7 @@
#include "finclude/petscdef.h"
use petscdm
DM da; Vec x; PetscErrorCode ierr; PetscInt xs,xm,i,mx; PetscScalar hx; PetscScalar, pointer :: xx(:)
- call DMDAGetInfo(da,PETSC_NULL_INTEGER,mx,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr)
+ call DMDAGetInfo(da,PETSC_NULL_INTEGER,mx,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr)
call DMDAGetCorners(da,xs,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,xm,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr)
hx = 1.d0/(mx-1)
call VecGetArrayF90(x,xx,ierr)
@@ -38,7 +38,7 @@
#include "finclude/petscdef.h"
use petscdm
Mat J; DM da; PetscErrorCode ierr; PetscInt xs,xm,i,mx; PetscScalar hx
- call DMDAGetInfo(da,PETSC_NULL_INTEGER,mx,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr)
+ call DMDAGetInfo(da,PETSC_NULL_INTEGER,mx,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr)
call DMDAGetCorners(da,xs,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,xm,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr)
hx = 1.d0/(mx-1)
do i=xs,xs+xm-1
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex45.c
--- a/src/ksp/ksp/examples/tutorials/ex45.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex45.c Fri Mar 11 16:29:15 2011 -0700
@@ -41,7 +41,7 @@
PetscInitialize(&argc,&argv,(char *)0,help);
ierr = KSPCreate(PETSC_COMM_WORLD,&ksp);CHKERRQ(ierr);
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-7,-7,-7,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-7,-7,-7,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
ierr = DMSetInitialGuess((DM)da,ComputeInitialGuess);CHKERRQ(ierr);
ierr = DMSetFunction((DM)da,ComputeRHS);CHKERRQ(ierr);
ierr = DMSetJacobian((DM)da,ComputeMatrix);CHKERRQ(ierr);
@@ -77,7 +77,7 @@
PetscScalar h;
PetscFunctionBegin;
- ierr = DMDAGetInfo(dm,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dm,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
h = 1.0/((mx-1)*(my-1)*(mz-1));
ierr = VecSet(b,h);CHKERRQ(ierr);
@@ -89,7 +89,7 @@
PetscInt i,j,k,mx,my,mz,xm,ym,zm,xs,ys,zs;
PetscScalar Hx,Hy,Hz,HxHydHz,HyHzdHx,HxHzdHy;
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx-1); Hy = 1.0 / (PetscReal)(my-1); Hz = 1.0 / (PetscReal)(mz-1);
HxHydHz = Hx*Hy/Hz; HxHzdHy = Hx*Hz/Hy; HyHzdHx = Hy*Hz/Hx;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&xm,&ym,&zm);CHKERRQ(ierr);
@@ -131,7 +131,7 @@
PetscScalar v[7],Hx,Hy,Hz,HxHydHz,HyHzdHx,HxHzdHy;
MatStencil row,col[7];
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx-1); Hy = 1.0 / (PetscReal)(my-1); Hz = 1.0 / (PetscReal)(mz-1);
HxHydHz = Hx*Hy/Hz; HxHzdHy = Hx*Hz/Hy; HyHzdHx = Hy*Hz/Hx;
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&xm,&ym,&zm);CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex46.c
--- a/src/ksp/ksp/examples/tutorials/ex46.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex46.c Fri Mar 11 16:29:15 2011 -0700
@@ -47,7 +47,7 @@
The problem size will default to 8 by 7, but this can be
changed using -da_grid_x M -da_grid_y N
*/
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-8,-7,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-8,-7,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Compute the matrix and right-hand-side vector that define
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex47.c
--- a/src/ksp/ksp/examples/tutorials/ex47.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex47.c Fri Mar 11 16:29:15 2011 -0700
@@ -39,7 +39,7 @@
ierr = PetscInitialize(&argc,&argv,(char *)0,help);CHKERRQ(ierr);
ierr = DMMGCreate(PETSC_COMM_WORLD,3,PETSC_NULL,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_XYZPERIODIC,DMDA_STENCIL_STAR,-3,-3,-3,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_PERIODIC,DMDA_BOUNDARY_PERIODIC,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-3,-3,-3,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -134,7 +134,7 @@
PetscErrorCode ierr;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,&ys,&zs,&xm,&ym,&zm);CHKERRQ(ierr);
sc = 1.0/((mx-1)*(my-1)*(mz-1));
//wallPos = (mz-1)/20;
@@ -171,7 +171,7 @@
PetscScalar v[7],Hx,Hy,Hz,HxHydHz,HyHzdHx,HxHzdHy;
MatStencil row,col[7];
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(mx-1); Hy = 1.0 / (PetscReal)(my-1); Hz = 1.0 / (PetscReal)(mz-1);
//Hx = L[0] / (PetscReal)(mx-1); Hy = L[1] / (PetscReal)(my-1); Hz = L[2] / (PetscReal)(mz-1);
//HxHydHz = Hx*Hy/Hz; HxHzdHy = Hx*Hz/Hy; HyHzdHx = Hy*Hz/Hx;
@@ -220,8 +220,8 @@
PetscErrorCode ierr;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, 0, &M, &N, &P, 0, 0, 0, 0, 0, 0, 0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da, 0, &dim[2], &dim[1], &dim[0], 0, 0, 0, 0, 0, 0, 0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &M, &N, &P, 0, 0, 0, 0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &dim[2], &dim[1], &dim[0], 0, 0, 0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = MatCreateSeqFFTW(PETSC_COMM_WORLD, 3, dim, &F);CHKERRQ(ierr);
ierr = DMDAGetCorners(da, &xs, &ys, &zs, &xm, &ym, &zm);CHKERRQ(ierr);
h[0] = L[0]/(M - 1);
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex49.c
--- a/src/ksp/ksp/examples/tutorials/ex49.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex49.c Fri Mar 11 16:29:15 2011 -0700
@@ -202,7 +202,7 @@
PetscInt ml,nl,pl;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&M,&N,&P,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,&P,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&sx,&sy,&sz,&m,&n,&p);CHKERRQ(ierr);
ml = nl = pl = 0;
@@ -289,7 +289,7 @@
PetscFunctionBegin;
MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
- DMDAGetInfo(da,0,0,0,0,&cpu_x,&cpu_y,0,0,0,0,0);
+ DMDAGetInfo(da,0,0,0,0,&cpu_x,&cpu_y,0,0,0,0,0,0,0);
proc_J = rank/cpu_x;
proc_I = rank-cpu_x*proc_J;
@@ -411,7 +411,7 @@
}
ierr = PetscFPrintf(PETSC_COMM_SELF,fp,"### %s (processor %1.4d) ### \n",comment,rank);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,0,0,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,0,0,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
ierr = PetscFPrintf(PETSC_COMM_SELF,fp,"### x y ");CHKERRQ(ierr);
for (d = 0; d < n_dofs; d++) {
ierr = DMDAGetFieldName(da,d,&field_name);CHKERRQ(ierr);
@@ -477,7 +477,7 @@
if (!fp) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_USER,"Cannot open file");
ierr = PetscFPrintf(PETSC_COMM_SELF,fp,"### %s (processor %1.4d) ### \n",comment,rank);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,0,0,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,0,0,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
ierr = PetscFPrintf(PETSC_COMM_SELF,fp,"### x y ");CHKERRQ(ierr);
for (d = 0; d < n_dofs; d++) {
ierr = DMDAGetFieldName(da,d,&field_name);CHKERRQ(ierr);
@@ -834,7 +834,7 @@
u_dof = U_DOFS; /* Vx, Vy - velocities */
dof = u_dof;
stencil_width = 1;
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
mx+1,my+1,PETSC_DECIDE,PETSC_DECIDE,dof,stencil_width,PETSC_NULL,PETSC_NULL,&elas_da);CHKERRQ(ierr);
ierr = DMDASetFieldName(elas_da,0,"Ux");CHKERRQ(ierr);
ierr = DMDASetFieldName(elas_da,1,"Uy");CHKERRQ(ierr);
@@ -848,18 +848,18 @@
ierr = DMDAGetLocalElementSize(elas_da,&mxl,&myl,PETSC_NULL);CHKERRQ(ierr);
/* !!! IN PARALLEL WE MUST MAKE SURE THE TWO DMDA's ALIGN !!! // */
- ierr = DMDAGetInfo(elas_da,0,0,0,0,&cpu_x,&cpu_y,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(elas_da,0,0,0,0,&cpu_x,&cpu_y,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetElementOwnershipRanges2d(elas_da,&lx,&ly);CHKERRQ(ierr);
prop_dof = (PetscInt)(sizeof(GaussPointCoefficients)/sizeof(PetscScalar)); /* gauss point setup */
prop_stencil_width = 0;
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,
mx,my,cpu_x,cpu_y,prop_dof,prop_stencil_width,lx,ly,&da_prop);CHKERRQ(ierr);
ierr = PetscFree(lx);CHKERRQ(ierr);
ierr = PetscFree(ly);CHKERRQ(ierr);
/* define centroid positions */
- ierr = DMDAGetInfo(da_prop,0,&M,&N,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da_prop,0,&M,&N,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/((PetscReal)(M));
dy = 1.0/((PetscReal)(N));
@@ -1170,7 +1170,7 @@
ierr = DMDAGetGhostedCoordinates(da,&coords);CHKERRQ(ierr);
ierr = DMDAVecGetArray(cda,coords,&_coords);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(cda,&si,&sj,0,&nx,&ny,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
/* /// */
@@ -1241,7 +1241,7 @@
ierr = DMDAGetGhostedCoordinates(da,&coords);CHKERRQ(ierr);
ierr = DMDAVecGetArray(cda,coords,&_coords);CHKERRQ(ierr);
ierr = DMDAGetGhostCorners(cda,&si,&sj,0,&nx,&ny,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,&n_dofs,0,0,0,0,0);CHKERRQ(ierr);
/* /// */
diff -r 23e7928e179a src/ksp/ksp/examples/tutorials/ex50.c
--- a/src/ksp/ksp/examples/tutorials/ex50.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/ksp/examples/tutorials/ex50.c Fri Mar 11 16:29:15 2011 -0700
@@ -69,7 +69,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-N",&N,PETSC_NULL); CHKERRQ(ierr);
ierr = DMMGCreate(PETSC_COMM_WORLD,mglevels,PETSC_NULL,&dmmg); CHKERRQ(ierr);
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,M,N,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da); CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,M,N,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da); CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);
ierr = DMDestroy(da); CHKERRQ(ierr);
@@ -127,7 +127,7 @@
PetscScalar **array;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, 0, &M, &N, 0,0,0,0,0,0,0,0); CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &M, &N, 0,0,0,0,0,0,0,0,0,0); CHKERRQ(ierr);
uu = user->uu; tt = user->tt;
pi = 4*atan(1.0);
Hx = 1.0/(PetscReal)(M);
@@ -168,7 +168,7 @@
MatStencil row, col[5];
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,0,0,0,0); CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&M,&N,0,0,0,0,0,0,0,0,0,0); CHKERRQ(ierr);
Hx = 1.0 / (PetscReal)(M);
Hy = 1.0 / (PetscReal)(N);
HxdHy = Hx/Hy;
@@ -231,7 +231,7 @@
PetscScalar *array;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da, 0, &M, &N, 0,0,0,0,0,0,0,0); CHKERRQ(ierr); /* level_0 ! */
+ ierr = DMDAGetInfo(da, 0, &M, &N, 0,0,0,0,0,0,0,0,0,0); CHKERRQ(ierr); /* level_0 ! */
//printf("ComputeTrueSolution - M N: %d %d;\n",M,N);
uu = user->uu; tt = user->tt;
@@ -277,7 +277,7 @@
ierr = PetscObjectQuery((PetscObject) x, "DMDA", (PetscObject *) &da); CHKERRQ(ierr);
if (!da) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_WRONG,"Vector not generated from a DMDA");
- ierr = DMDAGetInfo(da, 0, &M, &N, 0,0,0,0,&dof,0,0,0); CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da, 0, &M, &N, 0,0,0,0,&dof,0,0,0,0,0); CHKERRQ(ierr);
ierr = PetscViewerASCIIPrintf(viewer, "# vtk DataFile Version 2.0\n"); CHKERRQ(ierr);
ierr = PetscViewerASCIIPrintf(viewer, "Inhomogeneous Poisson Equation with %s boundary conditions\n", bcName); CHKERRQ(ierr);
diff -r 23e7928e179a src/ksp/pc/impls/wb/wb.c
--- a/src/ksp/pc/impls/wb/wb.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ksp/pc/impls/wb/wb.c Fri Mar 11 16:29:15 2011 -0700
@@ -40,7 +40,7 @@
PetscTable ht;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,&dim,0,0,0,&mp,&np,&pp,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,0,0,0,&mp,&np,&pp,&dof,0,0,0,0,0);CHKERRQ(ierr);
if (dof != 1) SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"Only for single field problems");
if (dim != 3) SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"Only coded for 3d problems");
ierr = DMDAGetCorners(da,0,0,0,&m,&n,&p);CHKERRQ(ierr);
@@ -318,7 +318,7 @@
PetscTable ht;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,&dim,0,0,0,&mp,&np,&pp,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim,0,0,0,&mp,&np,&pp,&dof,0,0,0,0,0);CHKERRQ(ierr);
if (dof != 1) SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"Only for single field problems");
if (dim != 3) SETERRQ(((PetscObject)da)->comm,PETSC_ERR_SUP,"Only coded for 3d problems");
ierr = DMDAGetCorners(da,0,0,0,&m,&n,&p);CHKERRQ(ierr);
diff -r 23e7928e179a src/mat/examples/tests/ex129.c
--- a/src/mat/examples/tests/ex129.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/mat/examples/tests/ex129.c Fri Mar 11 16:29:15 2011 -0700
@@ -43,7 +43,7 @@
ierr = DMDACreate(PETSC_COMM_WORLD,&da);CHKERRQ(ierr);
ierr = DMDASetDim(da,3);CHKERRQ(ierr);
- ierr = DMDASetBoundaryType(da,DMDA_NONPERIODIC);CHKERRQ(ierr);
+ ierr = DMDASetBoundaryType(da,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE);CHKERRQ(ierr);
ierr = DMDASetStencilType(da,DMDA_STENCIL_STAR);CHKERRQ(ierr);
ierr = DMDASetSizes(da,M,M,M);CHKERRQ(ierr);
ierr = DMDASetNumProcs(da,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE);CHKERRQ(ierr);
@@ -166,7 +166,7 @@
PetscScalar h;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
h = 1.0/((mx-1)*(my-1)*(mz-1));
ierr = VecSet(b,h);CHKERRQ(ierr);
PetscFunctionReturn(0);
@@ -227,7 +227,7 @@
ierr = PetscRandomSetInterval(rand,-.001,.001);CHKERRQ(ierr);
ierr = PetscRandomSetFromOptions(rand);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,&dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,&mz,0,0,0,&dof,0,0,0,0,0);CHKERRQ(ierr);
/* For simplicity, this example only works on mx=my=mz */
if ( mx != my || mx != mz) SETERRQ3(PETSC_COMM_SELF,1,"This example only works with mx %d = my %d = mz %d\n",mx,my,mz);
diff -r 23e7928e179a src/mat/examples/tests/ex96.c
--- a/src/mat/examples/tests/ex96.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/mat/examples/tests/ex96.c Fri Mar 11 16:29:15 2011 -0700
@@ -80,10 +80,10 @@
/* Set up distributed array for fine grid */
if (!Test_3D){
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.fine.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.fine.mx,
user.fine.my,Npx,Npy,1,1,PETSC_NULL,PETSC_NULL,&user.fine.da);CHKERRQ(ierr);
} else {
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,
user.fine.mx,user.fine.my,user.fine.mz,Npx,Npy,Npz,
1,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&user.fine.da);CHKERRQ(ierr);
}
@@ -127,10 +127,10 @@
/* Set up distributed array for coarse grid */
if (!Test_3D){
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.coarse.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.coarse.mx,
user.coarse.my,Npx,Npy,1,1,PETSC_NULL,PETSC_NULL,&user.coarse.da);CHKERRQ(ierr);
} else {
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,
user.coarse.mx,user.coarse.my,user.coarse.mz,Npx,Npy,Npz,
1,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&user.coarse.da);CHKERRQ(ierr);
}
diff -r 23e7928e179a src/mat/interface/matrix.c
--- a/src/mat/interface/matrix.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/mat/interface/matrix.c Fri Mar 11 16:29:15 2011 -0700
@@ -1283,8 +1283,8 @@
For periodic boundary conditions use negative indices for values to the left (below 0; that are to be
obtained by wrapping values from right edge). For values to the right of the last entry using that index plus one
- etc to obtain values that obtained by wrapping the values from the left edge. This does not work for the DMDA_NONPERIODIC
- wrap.
+ etc to obtain values that obtained by wrapping the values from the left edge. This does not work for anything but the
+ DMDA_BOUNDARY_PERIODIC boundary type.
For indices that don't mean anything for your case (like the k index when working in 2d) or the c index when you have
a single value per point) you can skip filling those indices.
@@ -5445,8 +5445,8 @@
For periodic boundary conditions use negative indices for values to the left (below 0; that are to be
obtained by wrapping values from right edge). For values to the right of the last entry using that index plus one
- etc to obtain values that obtained by wrapping the values from the left edge. This does not work for the DMDA_NONPERIODIC
- wrap.
+ etc to obtain values that obtained by wrapping the values from the left edge. This does not work for anything but the
+ DMDA_BOUNDARY_PERIODIC boundary type.
For indices that don't mean anything for your case (like the k index when working in 2d) or the c index when you have
a single value per point) you can skip filling those indices.
diff -r 23e7928e179a src/snes/examples/tests/ex11.c
--- a/src/snes/examples/tests/ex11.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex11.c Fri Mar 11 16:29:15 2011 -0700
@@ -117,7 +117,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-Ny",&Ny,PETSC_NULL);CHKERRQ(ierr);
/* Set up distributed array for fine grid */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.fine.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.fine.mx,
user.fine.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&user.fine.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(user.fine.da,&user.fine.x);CHKERRQ(ierr);
ierr = VecDuplicate(user.fine.x,&user.fine.r);CHKERRQ(ierr);
@@ -128,7 +128,7 @@
ierr = MatCreateMPIAIJ(PETSC_COMM_WORLD,nlocal,nlocal,n,n,5,PETSC_NULL,3,PETSC_NULL,&user.fine.J);CHKERRQ(ierr);
/* Set up distributed array for coarse grid */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.coarse.mx,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.coarse.mx,
user.coarse.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&user.coarse.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(user.coarse.da,&user.coarse.x);CHKERRQ(ierr);
ierr = VecDuplicate(user.coarse.x,&user.coarse.b);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tests/ex12f.F
--- a/src/snes/examples/tests/ex12f.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex12f.F Fri Mar 11 16:29:15 2011 -0700
@@ -59,7 +59,7 @@
ctx(5) = size
! Set up data structures
- call DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,N,i1,i1, &
+ call DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,N,i1,i1, &
& PETSC_NULL_INTEGER,ctx(1),ierr)
call DMCreateGlobalVector(ctx(1),x,ierr)
diff -r 23e7928e179a src/snes/examples/tests/ex13.c
--- a/src/snes/examples/tests/ex13.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex13.c Fri Mar 11 16:29:15 2011 -0700
@@ -81,7 +81,7 @@
if (Nx*Ny != size && (Nx != PETSC_DECIDE || Ny != PETSC_DECIDE)) SETERRQ(PETSC_COMM_SELF,1,"Incompatible number of processors: Nx * Ny != size");
/* Set up distributed array */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.mx,user.my,Nx,Ny,1,1,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.mx,user.my,Nx,Ny,1,1,
PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(user.da,&x);CHKERRQ(ierr);
ierr = VecDuplicate(x,&r);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tests/ex14f.F
--- a/src/snes/examples/tests/ex14f.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex14f.F Fri Mar 11 16:29:15 2011 -0700
@@ -125,7 +125,7 @@
ctx(5) = size
! Set up data structures
- call DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,N,i1,i1, &
+ call DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,N,i1,i1, &
& PETSC_NULL_INTEGER,ctx(1),ierr)
call DMCreateGlobalVector(ctx(1),x,ierr)
diff -r 23e7928e179a src/snes/examples/tests/ex15.c
--- a/src/snes/examples/tests/ex15.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex15.c Fri Mar 11 16:29:15 2011 -0700
@@ -62,7 +62,7 @@
which derives from an elliptic PDE on two dimensional domain. From
the distributed array, Create the vectors.
*/
- info = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-50,-50,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(info);
+ info = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-50,-50,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(info);
info = DMDAGetInfo(user.da,PETSC_IGNORE,&user.nx,&user.ny,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(info);
PetscPrintf(PETSC_COMM_WORLD,"\n---- Journal Bearing Problem -----\n");
diff -r 23e7928e179a src/snes/examples/tests/ex16.c
--- a/src/snes/examples/tests/ex16.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex16.c Fri Mar 11 16:29:15 2011 -0700
@@ -60,7 +60,7 @@
#endif
/* Create distributed array to manage the 2d grid */
- info = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,-10,-10,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(info);
+ info = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-10,-10,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(info);
info = DMDAGetInfo(user.da,PETSC_IGNORE,&user.mx,&user.my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(info);
user.bheight=0.1;
diff -r 23e7928e179a src/snes/examples/tests/ex5.c
--- a/src/snes/examples/tests/ex5.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex5.c Fri Mar 11 16:29:15 2011 -0700
@@ -122,7 +122,7 @@
ierr = PetscOptionsGetInt(PETSC_NULL,"-Nx",&Nx,PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsGetInt(PETSC_NULL,"-Ny",&Ny,PETSC_NULL);CHKERRQ(ierr);
if (Nx*Ny != size && (Nx != PETSC_DECIDE || Ny != PETSC_DECIDE)) SETERRQ(PETSC_COMM_SELF,1,"Incompatible number of processors: Nx * Ny != size");
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,user.mx,user.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,user.mx,user.my,Nx,Ny,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(ierr);
/*
Visualize the distribution of the array across the processors
diff -r 23e7928e179a src/snes/examples/tests/ex8.c
--- a/src/snes/examples/tests/ex8.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex8.c Fri Mar 11 16:29:15 2011 -0700
@@ -69,7 +69,7 @@
info = PetscOptionsGetScalar(PETSC_NULL, "-ub", &ub, &flg_u);CHKERRQ(info);
/* Create distributed array to manage the 2d grid */
- info = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,-4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(info);
+ info = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(info);
info = DMDAGetInfo(user.da,PETSC_IGNORE,&user.mx,&user.my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(info);
/* Extract global vectors from DMDA; */
info = DMCreateGlobalVector(user.da,&x);CHKERRQ(info);
diff -r 23e7928e179a src/snes/examples/tests/ex9.c
--- a/src/snes/examples/tests/ex9.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tests/ex9.c Fri Mar 11 16:29:15 2011 -0700
@@ -70,7 +70,7 @@
if (user.param >= bratu_lambda_max || user.param <= bratu_lambda_min) SETERRQ(PETSC_COMM_SELF,1,"Lambda is out of range");
/* Set up distributed array */
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,stencil,user.mx,user.my,user.mz,
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,stencil,user.mx,user.my,user.mz,
Nx,Ny,Nz,1,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(user.da,&x);CHKERRQ(ierr);
ierr = VecDuplicate(x,&r);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tutorials/ex14.c
--- a/src/snes/examples/tutorials/ex14.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex14.c Fri Mar 11 16:29:15 2011 -0700
@@ -97,7 +97,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,-4,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,-4,PETSC_DECIDE,PETSC_DECIDE,
PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -212,7 +212,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(user->da,PETSC_IGNORE,&Mx,&My,&Mz,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->param;
hx = 1.0/(PetscReal)(Mx-1);
@@ -287,7 +287,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(user->da,&localX);CHKERRQ(ierr);
ierr = DMDAGetInfo(user->da,PETSC_IGNORE,&Mx,&My,&Mz,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->param;
hx = 1.0/(PetscReal)(Mx-1);
@@ -384,7 +384,7 @@
ierr = DMGetLocalVector(user->da,&localX);CHKERRQ(ierr);
ierr = DMDAGetInfo(user->da,PETSC_IGNORE,&Mx,&My,&Mz,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->param;
hx = 1.0/(PetscReal)(Mx-1);
diff -r 23e7928e179a src/snes/examples/tutorials/ex18.c
--- a/src/snes/examples/tutorials/ex18.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex18.c Fri Mar 11 16:29:15 2011 -0700
@@ -90,7 +90,7 @@
/*
Set the DMDA (grid structure) for the grids.
*/
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,5,5,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,5,5,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -168,7 +168,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(dmmg->dm,&localX);CHKERRQ(ierr);
- ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
hx = one/(PetscReal)(mx-1); hy = one/(PetscReal)(my-1);
hxdhy = hx/hy; hydhx = hy/hx;
tleft = user->tleft; tright = user->tright;
@@ -344,7 +344,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(dmmg->dm,&localX);CHKERRQ(ierr);
*flg = SAME_NONZERO_PATTERN;
- ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
hx = one/(PetscReal)(mx-1); hy = one/(PetscReal)(my-1);
hxdhy = hx/hy; hydhx = hy/hx;
tleft = user->tleft; tright = user->tright;
diff -r 23e7928e179a src/snes/examples/tutorials/ex19.c
--- a/src/snes/examples/tutorials/ex19.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex19.c Fri Mar 11 16:29:15 2011 -0700
@@ -104,12 +104,12 @@
Create distributed array multigrid object (DMMG) to manage parallel grid and vectors
for principal unknowns (x) and governing residuals (f)
*/
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,&my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
/*
Problem parameters (velocity of lid, prandtl, and grashof numbers)
*/
@@ -207,7 +207,7 @@
grashof = user->grashof;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/(mx-1);
/*
diff -r 23e7928e179a src/snes/examples/tutorials/ex19tu.c
--- a/src/snes/examples/tutorials/ex19tu.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex19tu.c Fri Mar 11 16:29:15 2011 -0700
@@ -106,14 +106,14 @@
Create distributed array multigrid object (DMMG) to manage parallel grid and vectors
for principal unknowns (x) and governing residuals (f)
*/
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = PetscPrintf(comm,"mx = %d, my= %d\n",
mx,my);CHKERRQ(ierr);
ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,&my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
ierr = PetscPrintf(comm,"mx = %d, my= %d\n",
mx,my);CHKERRQ(ierr);
/*
@@ -212,7 +212,7 @@
grashof = user->grashof;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/(mx-1);
/*
diff -r 23e7928e179a src/snes/examples/tutorials/ex20.c
--- a/src/snes/examples/tutorials/ex20.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex20.c Fri Mar 11 16:29:15 2011 -0700
@@ -90,7 +90,7 @@
/*
Set the DMDA (grid structure) for the grids.
*/
- ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-5,-5,-5,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-5,-5,-5,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -170,7 +170,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(dmmg->dm,&localX);CHKERRQ(ierr);
- ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
hx = one/(PetscReal)(mx-1); hy = one/(PetscReal)(my-1); hz = one/(PetscReal)(mz-1);
hxhydhz = hx*hy/hz; hyhzdhx = hy*hz/hx; hzhxdhy = hz*hx/hy;
tleft = user->tleft; tright = user->tright;
@@ -488,7 +488,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(dmmg->dm,&localX);CHKERRQ(ierr);
- ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,&mz,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,&mz,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
hx = one/(PetscReal)(mx-1); hy = one/(PetscReal)(my-1); hz = one/(PetscReal)(mz-1);
hxhydhz = hx*hy/hz; hyhzdhx = hy*hz/hx; hzhxdhy = hz*hx/hy;
tleft = user->tleft; tright = user->tright;
diff -r 23e7928e179a src/snes/examples/tutorials/ex21.c
--- a/src/snes/examples/tutorials/ex21.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex21.c Fri Mar 11 16:29:15 2011 -0700
@@ -62,9 +62,9 @@
ierr = DMCompositeCreate(PETSC_COMM_WORLD,&user.packer);CHKERRQ(ierr);
user.nredundant = 1;
ierr = DMCompositeAddArray(user.packer,0,user.nredundant);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,-5,1,1,PETSC_NULL,&user.da1);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,-5,1,1,PETSC_NULL,&user.da1);CHKERRQ(ierr);
ierr = DMCompositeAddDM(user.packer,(DM)user.da1);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,-5,1,1,PETSC_NULL,&user.da2);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,-5,1,1,PETSC_NULL,&user.da2);CHKERRQ(ierr);
ierr = DMCompositeAddDM(user.packer,(DM)user.da2);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(user.packer,&U);CHKERRQ(ierr);
ierr = VecDuplicate(U,&FU);CHKERRQ(ierr);
@@ -118,7 +118,7 @@
ierr = DMCompositeScatter(user->packer,U,w,vu,vlambda);CHKERRQ(ierr);
ierr = DMDAGetCorners(user->da1,&xs,PETSC_NULL,PETSC_NULL,&xm,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
- ierr = DMDAGetInfo(user->da1,0,&N,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(user->da1,0,&N,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAVecGetArray(user->da1,vu,&u);CHKERRQ(ierr);
ierr = DMDAVecGetArray(user->da1,vfu,&fu);CHKERRQ(ierr);
ierr = DMDAVecGetArray(user->da1,vlambda,&lambda);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tutorials/ex22.c
--- a/src/snes/examples/tutorials/ex22.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex22.c Fri Mar 11 16:29:15 2011 -0700
@@ -109,7 +109,7 @@
/* Create a global vector that includes a single redundant array and two da arrays */
ierr = DMCompositeCreate(PETSC_COMM_WORLD,&packer);CHKERRQ(ierr);
ierr = DMCompositeAddArray(packer,0,1);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,-5,2,1,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,-5,2,1,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCompositeAddDM(packer,(DM)da);CHKERRQ(ierr);
@@ -174,7 +174,7 @@
ierr = DMCompositeGetAccess(packer,FU,&fw,&vfu_lambda);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,PETSC_NULL,PETSC_NULL,&xm,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da,vu_lambda,&u_lambda);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da,vfu_lambda,&fu_lambda);CHKERRQ(ierr);
d = N-1.0;
@@ -279,7 +279,7 @@
ierr = DMCompositeRestoreAccess(packer,U,&w,&u_lambda);CHKERRQ(ierr);
ierr = DMCompositeGetEntries(packer,&m,&da);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = VecDuplicate(U,&Uexact);CHKERRQ(ierr);
ierr = ExactSolution(packer,Uexact);CHKERRQ(ierr);
ierr = VecAXPY(Uexact,-1.0,U);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tutorials/ex23.c
--- a/src/snes/examples/tutorials/ex23.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex23.c Fri Mar 11 16:29:15 2011 -0700
@@ -58,7 +58,7 @@
ierr = PetscOptionsInsert(&argc,&argv,PETSC_NULL);CHKERRQ(ierr);
/* Create a global vector from a da arrays */
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,-5,1,1,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,-5,1,1,PETSC_NULL,&da);CHKERRQ(ierr);
/* create graphics windows */
ierr = PetscViewerDrawOpen(PETSC_COMM_WORLD,0,"u - state variables",-1,-1,-1,-1,&user.u_viewer);CHKERRQ(ierr);
@@ -103,7 +103,7 @@
ierr = DMGlobalToLocalEnd(da,U,INSERT_VALUES,vu);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,PETSC_NULL,PETSC_NULL,&xm,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da,vu,&u);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da,FU,&fu);CHKERRQ(ierr);
d = N-1.0;
diff -r 23e7928e179a src/snes/examples/tutorials/ex24.c
--- a/src/snes/examples/tutorials/ex24.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex24.c Fri Mar 11 16:29:15 2011 -0700
@@ -135,7 +135,7 @@
/* create DMComposite object to manage composite vector */
ierr = DMCompositeCreate(PETSC_COMM_WORLD,&packer);CHKERRQ(ierr);
ierr = DMCompositeAddArray(packer,0,1);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,-5,1,1,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,-5,1,1,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMCompositeAddDM(packer,(DM)da);CHKERRQ(ierr);
ierr = DMCompositeAddDM(packer,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -266,7 +266,7 @@
ierr = DMCompositeGetEntries(packer,&nredundant,&da,PETSC_IGNORE);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,PETSC_NULL,PETSC_NULL,&xm,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&N,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
d = (N-1.0);
h = 1.0/d;
h2 = 2.0*h;
diff -r 23e7928e179a src/snes/examples/tutorials/ex25.c
--- a/src/snes/examples/tutorials/ex25.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex25.c Fri Mar 11 16:29:15 2011 -0700
@@ -58,7 +58,7 @@
/*
Set the DMDA (grid structure) for the grids.
*/
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-5,-5,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-5,-5,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -109,7 +109,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(dmmg->dm,&localT);CHKERRQ(ierr);
- ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dmmg->dm,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
hx = 1.0/(PetscReal)(mx-1); hy = 1.0/(PetscReal)(my-1);
/* Get ghost points */
diff -r 23e7928e179a src/snes/examples/tutorials/ex26.c
--- a/src/snes/examples/tutorials/ex26.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex26.c Fri Mar 11 16:29:15 2011 -0700
@@ -100,7 +100,7 @@
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
ierr = PetscOptionsGetInt(PETSC_NULL,"-n",&grids,PETSC_NULL);CHKERRQ(ierr);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,grids,dof,stencil_width,PETSC_NULL,&user.da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,grids,dof,stencil_width,PETSC_NULL,&user.da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Extract global vectors from DMDA; then duplicate for remaining
@@ -254,7 +254,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(user->da,PETSC_IGNORE,&Mx,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
/*
Get a pointer to vector data.
@@ -408,7 +408,7 @@
ierr = DMGetLocalVector(user->da,&localX);CHKERRQ(ierr);
ierr = DMDAGetInfo(user->da,PETSC_IGNORE,&Mx,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1); dhx = 1.0/hx;
diff -r 23e7928e179a src/snes/examples/tutorials/ex27.c
--- a/src/snes/examples/tutorials/ex27.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex27.c Fri Mar 11 16:29:15 2011 -0700
@@ -163,12 +163,12 @@
Create distributed array multigrid object (DMMG) to manage parallel grid and vectors
for principal unknowns (x) and governing residuals (f)
*/
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,&my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
/*
Problem parameters (velocity of lid, prandtl, and grashof numbers)
*/
@@ -277,7 +277,7 @@
da = (dmmg[param->mglevels-1]->dm);
grashof = user->param->grashof;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/(mx-1);
/*
diff -r 23e7928e179a src/snes/examples/tutorials/ex28.c
--- a/src/snes/examples/tutorials/ex28.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex28.c Fri Mar 11 16:29:15 2011 -0700
@@ -340,14 +340,14 @@
PetscBool view_draw;
PetscInitialize(&argc,&argv,0,help);
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,-10,1,1,PETSC_NULL,&dau);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,-10,1,1,PETSC_NULL,&dau);CHKERRQ(ierr);
ierr = DMDACreateOwnershipRanges(dau);CHKERRQ(ierr); /* Ensure that the ownership ranges agree so that we can get a compatible grid for the coefficient */
ierr = DMDAGetOwnershipRanges(dau,&lxu,0,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(dau,0, &m,0,0, &nprocs,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dau,0, &m,0,0, &nprocs,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = PetscMalloc(nprocs*sizeof(*lxk),&lxk);CHKERRQ(ierr);
ierr = PetscMemcpy(lxk,lxu,nprocs*sizeof(*lxk));CHKERRQ(ierr);
lxk[0]--;
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,m-1,1,1,lxk,&dak);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,m-1,1,1,lxk,&dak);CHKERRQ(ierr);
ierr = PetscFree(lxk);CHKERRQ(ierr);
ierr = DMCompositeCreate(PETSC_COMM_WORLD,&pack);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tutorials/ex29.c
--- a/src/snes/examples/tutorials/ex29.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex29.c Fri Mar 11 16:29:15 2011 -0700
@@ -150,7 +150,7 @@
parallel grid and vectors for principal unknowns (x) and
governing residuals (f)
*/
- ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_XYPERIODIC, DMDA_STENCIL_STAR, -5, -5,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_PERIODIC, DMDA_BOUNDARY_PERIODIC, DMDA_STENCIL_STAR, -5, -5,
PETSC_DECIDE, PETSC_DECIDE, 4, 1, 0, 0, &da);CHKERRQ(ierr);
/* overwrite the default sparsity pattern toone specific for
@@ -191,7 +191,7 @@
/* Initialize stuff related to time stepping */
/*======================================================================*/
- ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
tsCtx.fnorm_ini = 0;
tsCtx.max_steps = 1000000;
@@ -265,7 +265,7 @@
ierr = PetscPrintf(PETSC_COMM_WORLD, "# viscosity = %G, resistivity = %G, "
"skin_depth # = %G, larmor_radius # = %G\n",
param.nu, param.eta, param.d_e, param.rho_s);CHKERRQ(ierr);
- ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&m,&n,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&m,&n,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD,"Problem size %D by %D\n",m,n);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_WORLD,"dx %G dy %G dt %G ratio dt/min(dx,dy) %G\n",lx/mx,ly/my,tsCtx.dt,dt_ratio);CHKERRQ(ierr);
}
@@ -376,7 +376,7 @@
de2 = sqr(param->d_e);
da = (dmmg[param->mglevels-1]->dm);
- ierr = DMDAGetInfo(da,0,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dhx = mx/lx; dhy = my/ly;
hx = one/dhx; hy = one/dhy;
@@ -471,7 +471,7 @@
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,&ys,PETSC_NULL,&xm,&ym,PETSC_NULL);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tutorials/ex3.c
--- a/src/snes/examples/tutorials/ex3.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex3.c Fri Mar 11 16:29:15 2011 -0700
@@ -110,7 +110,7 @@
/*
Create distributed array (DMDA) to manage parallel grid and vectors
*/
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,N,1,1,PETSC_NULL,&ctx.da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,N,1,1,PETSC_NULL,&ctx.da);CHKERRQ(ierr);
/*
Extract global and local vectors from DMDA; then duplicate for remaining
@@ -347,7 +347,7 @@
*/
ierr = DMDAGetCorners(da,&xs,PETSC_NULL,PETSC_NULL,&xm,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,PETSC_NULL,&M,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,
- PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
+ PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
/*
Set function values for boundary points; define local interior grid point range:
@@ -415,7 +415,7 @@
Get range of locally owned matrix
*/
ierr = DMDAGetInfo(da,PETSC_NULL,&M,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,
- PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
+ PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL,PETSC_NULL);CHKERRQ(ierr);
/*
Determine starting and ending local indices for interior grid points.
diff -r 23e7928e179a src/snes/examples/tutorials/ex30.c
--- a/src/snes/examples/tutorials/ex30.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex30.c Fri Mar 11 16:29:15 2011 -0700
@@ -90,7 +90,7 @@
} Parameter;
typedef struct { /* grid parameters */
- DMDABoundaryType periodic;
+ DMDABoundaryType bx,by;
DMDAStencilType stencil;
PetscInt corner,ni,nj,jlid,jfault,inose;
PetscInt dof,stencil_width,mglevels;
@@ -187,7 +187,7 @@
for principal unknowns (x) and governing residuals (f)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
ierr = DMMGCreate(comm,grid.mglevels,user,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate2d(comm,grid.periodic,grid.stencil,grid.ni,grid.nj,PETSC_DECIDE,PETSC_DECIDE,grid.dof,grid.stencil_width,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,grid.bx,grid.by,grid.stencil,grid.ni,grid.nj,PETSC_DECIDE,PETSC_DECIDE,grid.dof,grid.stencil_width,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = DMDASetFieldName(DMMGGetDM(dmmg),0,"x-velocity");CHKERRQ(ierr);
@@ -201,7 +201,7 @@
for principal unknowns (x) and governing residuals (f)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
ierr = DMMGCreate(comm,grid.mglevels,&user,&dmmg);CHKERRQ(ierr);
- ierr = DMDACreate2d(comm,grid.periodic,grid.stencil,grid.ni,grid.nj,PETSC_DECIDE,PETSC_DECIDE,grid.dof,grid.stencil_width,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,grid.bx,grid.by,grid.stencil,grid.ni,grid.nj,PETSC_DECIDE,PETSC_DECIDE,grid.dof,grid.stencil_width,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = DMDASetFieldName(DMMGGetDM(dmmg),0,"x-velocity");CHKERRQ(ierr);
@@ -222,7 +222,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Set up the SNES solver with callback functions.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMMGSetSNESLocal(dmmg,FormFunctionLocal,0,0,0);CHKERRQ(ierr);
+ ierr = DMMGSetSNESLocal(dmmg,FormFunctionLocal,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMMGSetFromOptions(dmmg);CHKERRQ(ierr);
ierr = DMMGSetInitialGuess(dmmg,FormInitialGuess);CHKERRQ(ierr);
ierr = SNESSetConvergenceTest(DMMGGetSNES(dmmg),SNESConverged_Interactive,(void*)user,PETSC_NULL);CHKERRQ(ierr);
@@ -927,7 +927,8 @@
param->depth = grid->dz*(grid->nj-2); /* km */
grid->inose = 0; /* gridpoints*/
ierr = PetscOptionsGetInt(PETSC_NULL,"-inose",&(grid->inose),PETSC_NULL);CHKERRQ(ierr);
- grid->periodic = DMDA_NONPERIODIC;
+ grid->bx = DMDA_BOUNDARY_NONE;
+ grid->by = DMDA_BOUNDARY_NONE;
grid->stencil = DMDA_STENCIL_BOX;
grid->dof = 4;
grid->stencil_width = 2;
diff -r 23e7928e179a src/snes/examples/tutorials/ex31.c
--- a/src/snes/examples/tutorials/ex31.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex31.c Fri Mar 11 16:29:15 2011 -0700
@@ -123,7 +123,7 @@
ierr = DMCompositeCreate(app.comm,&app.pack);CHKERRQ(ierr);
/* 6 fluid unknowns, 3 ghost points on each end for either periodicity or simply boundary conditions */
- ierr = DMDACreate1d(app.comm,DMDA_XPERIODIC,app.nxv,6,3,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(app.comm,DMDA_BOUNDARY_PERIODIC,app.nxv,6,3,0,&da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da,0,"prss");CHKERRQ(ierr);
ierr = DMDASetFieldName(da,1,"ergg");CHKERRQ(ierr);
ierr = DMDASetFieldName(da,2,"ergf");CHKERRQ(ierr);
@@ -133,12 +133,12 @@
ierr = DMCompositeAddDM(app.pack,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
- ierr = DMDACreate2d(app.comm,DMDA_YPERIODIC,DMDA_STENCIL_STAR,app.nxv,app.nyv,PETSC_DETERMINE,1,1,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(app.comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_PERIODIC,DMDA_STENCIL_STAR,app.nxv,app.nyv,PETSC_DETERMINE,1,1,1,0,0,&da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da,0,"Tempature");CHKERRQ(ierr);
ierr = DMCompositeAddDM(app.pack,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
- ierr = DMDACreate2d(app.comm,DMDA_XYPERIODIC,DMDA_STENCIL_STAR,app.nxv,app.nyvf,PETSC_DETERMINE,1,2,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(app.comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,app.nxv,app.nyvf,PETSC_DETERMINE,1,2,1,0,0,&da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da,0,"Phi");CHKERRQ(ierr);
ierr = DMDASetFieldName(da,1,"Pre");CHKERRQ(ierr);
ierr = DMCompositeAddDM(app.pack,(DM)da);CHKERRQ(ierr);
@@ -526,7 +526,7 @@
ierr = DMMGCreate(app->comm,1,0,&app->fdmmg);CHKERRQ(ierr);
ierr = DMMGSetOptionsPrefix(app->fdmmg,"phi_");CHKERRQ(ierr);
ierr = DMMGSetUser(app->fdmmg,0,app);CHKERRQ(ierr);
- ierr = DMDACreate2d(app->comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,app->nxv,app->nyvf,PETSC_DETERMINE,1,1,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(app->comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,app->nxv,app->nyvf,PETSC_DETERMINE,1,1,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(app->fdmmg,(DM)da);CHKERRQ(ierr);
ierr = DMMGSetKSP(app->fdmmg,PETSC_NULL,MyFormMatrix);CHKERRQ(ierr);
app->dx = DMMGGetRHS(app->fdmmg);
diff -r 23e7928e179a src/snes/examples/tutorials/ex32.c
--- a/src/snes/examples/tutorials/ex32.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex32.c Fri Mar 11 16:29:15 2011 -0700
@@ -115,12 +115,12 @@
for principal unknowns (x) and governing residuals (f)
*/
dof = 4;
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,dof,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,dof,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,&my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
/* Problem parameters (velocity of lid, prandtl, and grashof numbers) */
user.lidvelocity = 1.0/(mx*my);
@@ -184,7 +184,7 @@
ierr = DMMGCreate(comm,nlevels,&user,&dmmg1);CHKERRQ(ierr);
dof = 3;
user.COMPOSITE_MODEL = PETSC_FALSE;
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,dof,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,dof,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg1,(DM)da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da,0,"x-velocity");CHKERRQ(ierr);
ierr = DMDASetFieldName(da,1,"y-velocity");CHKERRQ(ierr);
@@ -215,7 +215,7 @@
ierr = DMMGCreate(comm,nlevels,&user,&dmmg2);CHKERRQ(ierr);
dof = 1;
user.COMPOSITE_MODEL = PETSC_FALSE;
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,dof,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,dof,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg2,(DM)da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da,0,"temperature");CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
@@ -308,7 +308,7 @@
Field **x;
grashof = user->grashof;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/(mx-1);
/*
@@ -356,7 +356,7 @@
PetscErrorCode ierr;
Field1 **x;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,&ys,PETSC_NULL,&xm,&ym,PETSC_NULL);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da,X,&x);CHKERRQ(ierr);
@@ -384,7 +384,7 @@
Field2 **x;
grashof = user->grashof;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/(mx-1);
ierr = DMDAGetCorners(da,&xs,&ys,PETSC_NULL,&xm,&ym,PETSC_NULL);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tutorials/ex39f90.F
--- a/src/snes/examples/tutorials/ex39f90.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex39f90.F Fri Mar 11 16:29:15 2011 -0700
@@ -215,7 +215,8 @@
! This really needs only the star-type stencil, but we use the box
! stencil temporarily.
- call DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX, &
+ call DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE, &
+ & DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX, &
& -4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,user%da,ierr)
call DMDAGetInfo(user%da,PETSC_NULL_INTEGER,user%mx,user%my, &
diff -r 23e7928e179a src/snes/examples/tutorials/ex4.c
--- a/src/snes/examples/tutorials/ex4.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex4.c Fri Mar 11 16:29:15 2011 -0700
@@ -113,7 +113,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,-3,-3,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-3,-3,PETSC_DECIDE,PETSC_DECIDE,
1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da, 0, "ooblek");CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg, (DM) da);CHKERRQ(ierr);
@@ -210,7 +210,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->lambda;
hx = 1.0/(PetscReal)(Mx-1);
diff -r 23e7928e179a src/snes/examples/tutorials/ex40f90.F
--- a/src/snes/examples/tutorials/ex40f90.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex40f90.F Fri Mar 11 16:29:15 2011 -0700
@@ -20,7 +20,8 @@
call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
- call DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC, &
+ call DMDACreate2d(PETSC_COMM_WORLD, &
+ & DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE, &
& DMDA_STENCIL_BOX, &
& -10,-10,PETSC_DECIDE,PETSC_DECIDE,2,1, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da,ierr)
diff -r 23e7928e179a src/snes/examples/tutorials/ex46.c
--- a/src/snes/examples/tutorials/ex46.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex46.c Fri Mar 11 16:29:15 2011 -0700
@@ -92,7 +92,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,
1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(ierr);
ierr = DMDASetUniformCoordinates(user.da, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0);CHKERRQ(ierr);
ierr = DMMGCreate(PETSC_COMM_WORLD, 1, &user, &dmmg);CHKERRQ(ierr);
@@ -157,7 +157,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(user->da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
D = user->D;
hx = 1.0/(PetscReal)(Mx-1);
diff -r 23e7928e179a src/snes/examples/tutorials/ex48.c
--- a/src/snes/examples/tutorials/ex48.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex48.c Fri Mar 11 16:29:15 2011 -0700
@@ -554,7 +554,7 @@
PetscFunctionBegin;
ierr = DMDAGetGhostCorners(da2prm,&ys,&xs,0,&ym,&xm,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da2prm,0, &my,&mx,0, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da2prm,0, &my,&mx,0, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da2prm,prm,&p);CHKERRQ(ierr);
for (i=xs; i<xs+xm; i++) {
for (j=ys; j<ys+ym; j++) {
@@ -580,11 +580,11 @@
DMDAStencilType st;
DM da = dmmg[i]->dm,da2prm;
Vec X;
- ierr = DMDAGetInfo(da,&dim, &Mz,&My,&Mx, 0,&my,&mx, 0,&s,0,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim, &Mz,&My,&Mx, 0,&my,&mx, 0,&s,0,0,0,&st);CHKERRQ(ierr);
if (dim == 2) {
- ierr = DMDAGetInfo(da,&dim, &My,&Mx,0, &my,&mx,0, 0,&s,0,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim, &My,&Mx,0, &my,&mx,0, 0,&s,0,0,0,&st);CHKERRQ(ierr);
}
- ierr = DMDACreate2d(((PetscObject)thi)->comm,DMDA_XYPERIODIC,st,My,Mx,my,mx,sizeof(PrmNode)/sizeof(PetscScalar),s,0,0,&da2prm);CHKERRQ(ierr);
+ ierr = DMDACreate2d(((PetscObject)thi)->comm,DMDA_BOUNDARY_PERIODIC,DMDA_BOUNDARY_PERIODIC,st,My,Mx,my,mx,sizeof(PrmNode)/sizeof(PetscScalar),s,0,0,&da2prm);CHKERRQ(ierr);
ierr = DMCreateLocalVector(da2prm,&X);CHKERRQ(ierr);
{
PetscReal Lx = thi->Lx / thi->units->meter,Ly = thi->Ly / thi->units->meter,Lz = thi->Lz / thi->units->meter;
@@ -650,7 +650,7 @@
PetscErrorCode ierr;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,0, 0,&my,&mx, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0, 0,&my,&mx, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&zs,&ys,&xs,&zm,&ym,&xm);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da,X,&x);CHKERRQ(ierr);
ierr = THIDAGetPrm(da,&prm);CHKERRQ(ierr);
@@ -855,7 +855,7 @@
PetscFunctionBegin;
*min = *max = *mean = 0;
- ierr = DMDAGetInfo(da,0, &mz,&my,&mx, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0, &mz,&my,&mx, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&zs,&ys,&xs,&zm,&ym,&xm);CHKERRQ(ierr);
if (zs != 0 || zm != mz) SETERRQ(PETSC_COMM_SELF,1,"Unexpected decomposition");
ierr = DMDAVecGetArray(da,X,&x);CHKERRQ(ierr);
@@ -1253,10 +1253,10 @@
} else {
dac = dac0;
}
- ierr = DMDAGetInfo(dac,&dim, &N,&M,0, &n,&m,0, &dof,&s,0,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(dac,&dim, &N,&M,0, &n,&m,0, &dof,&s,0,0,0,&st);CHKERRQ(ierr);
if (dim != 2) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_WRONG,"This function can only refine 2D DMDAs");
/* Creates a 3D DMDA with the same map-plane layout as the 2D one, with contiguous columns */
- ierr = DMDACreate3d(((PetscObject)dac)->comm,DMDA_YZPERIODIC,st,thi->zlevels,N,M,1,n,m,dof,s,NULL,NULL,NULL,&daf);CHKERRQ(ierr);
+ ierr = DMDACreate3d(((PetscObject)dac)->comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_PERIODIC,DMDA_BOUNDARY_PERIODIC,st,thi->zlevels,N,M,1,n,m,dof,s,PETSC_NULL,PETSC_NULL,PETSC_NULL,&daf);CHKERRQ(ierr);
daf->ops->getmatrix = dac->ops->getmatrix;
daf->ops->getinterpolation = dac->ops->getinterpolation;
daf->ops->getcoloring = dac->ops->getcoloring;
@@ -1282,7 +1282,7 @@
PetscValidHeaderSpecific(daf,DM_CLASSID,2);
PetscValidPointer(A,3);
if (scale) PetscValidPointer(scale,4);
- ierr = DMDAGetInfo(daf,&dim,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,&dim,0,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
if (dim == 2) {
/* We are in the 2D problem and use normal DMDA interpolation */
ierr = DMGetInterpolation(dac,daf,A,scale);CHKERRQ(ierr);
@@ -1290,7 +1290,7 @@
PetscInt i,j,k,xs,ys,zs,xm,ym,zm,mx,my,mz,rstart,cstart;
Mat B;
- ierr = DMDAGetInfo(daf,0, &mz,&my,&mx, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(daf,0, &mz,&my,&mx, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(daf,&zs,&ys,&xs,&zm,&ym,&xm);CHKERRQ(ierr);
if (zs != 0) SETERRQ(PETSC_COMM_SELF,1,"unexpected");
ierr = MatCreate(((PetscObject)daf)->comm,&B);CHKERRQ(ierr);
@@ -1328,7 +1328,7 @@
ISLocalToGlobalMapping ltog,ltogb;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,&dim, 0,0,0, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,&dim, 0,0,0, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
if (dim != 3) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_WRONG,"Expected DMDA to be 3D");
ierr = DMDAGetCorners(da,0,0,0,&zm,&ym,&xm);CHKERRQ(ierr);
ierr = DMGetLocalToGlobalMapping(da,<og);CHKERRQ(ierr);
@@ -1367,7 +1367,7 @@
PetscFunctionBegin;
comm = ((PetscObject)thi)->comm;
- ierr = DMDAGetInfo(da,0, &mz,&my,&mx, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0, &mz,&my,&mx, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = MPI_Comm_size(comm,&size);CHKERRQ(ierr);
ierr = MPI_Comm_rank(comm,&rank);CHKERRQ(ierr);
ierr = PetscViewerASCIIOpen(comm,filename,&viewer);CHKERRQ(ierr);
@@ -1488,12 +1488,12 @@
}
ierr = PetscOptionsEnd();CHKERRQ(ierr);
if (thi->coarse2d) {
- ierr = DMDACreate2d(comm,DMDA_XYPERIODIC,DMDA_STENCIL_BOX,N,M,PETSC_DETERMINE,PETSC_DETERMINE,sizeof(Node)/sizeof(PetscScalar),1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_PERIODIC,DMDA_BOUNDARY_PERIODIC,DMDA_STENCIL_BOX,N,M,PETSC_DETERMINE,PETSC_DETERMINE,sizeof(Node)/sizeof(PetscScalar),1,0,0,&da);CHKERRQ(ierr);
da->ops->refinehierarchy = DMRefineHierarchy_THI;
da->ops->getinterpolation = DMGetInterpolation_DA_THI;
ierr = PetscObjectCompose((PetscObject)da,"THI",(PetscObject)thi);CHKERRQ(ierr);
} else {
- ierr = DMDACreate3d(comm,DMDA_YZPERIODIC,DMDA_STENCIL_BOX,P,N,M,1,PETSC_DETERMINE,PETSC_DETERMINE,sizeof(Node)/sizeof(PetscScalar),1,0,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate3d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_PERIODIC,DMDA_BOUNDARY_PERIODIC, DMDA_STENCIL_BOX,P,N,M,1,PETSC_DETERMINE,PETSC_DETERMINE,sizeof(Node)/sizeof(PetscScalar),1,0,0,0,&da);CHKERRQ(ierr);
}
ierr = DMDASetFieldName(da,0,"x-velocity");CHKERRQ(ierr);
ierr = DMDASetFieldName(da,1,"y-velocity");CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tutorials/ex49.c
--- a/src/snes/examples/tutorials/ex49.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex49.c Fri Mar 11 16:29:15 2011 -0700
@@ -105,12 +105,12 @@
Create distributed array multigrid object (DMMG) to manage parallel grid and vectors
for principal unknowns (x) and governing residuals (f)
*/
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,&my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
/*
Problem parameters (velocity of lid, prandtl, and grashof numbers)
*/
@@ -203,7 +203,7 @@
grashof = user->grashof;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/(mx-1);
/*
diff -r 23e7928e179a src/snes/examples/tutorials/ex4tu.c
--- a/src/snes/examples/tutorials/ex4tu.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex4tu.c Fri Mar 11 16:29:15 2011 -0700
@@ -103,13 +103,13 @@
Create distributed array multigrid object (DMMG) to manage parallel grid and vectors
for principal unknowns (x) and governing residuals (f)
*/
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,-4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg,(DM)da);CHKERRQ(ierr);
ierr = DMDestroy(da);CHKERRQ(ierr);
ierr = DMDAGetInfo(DMMGGetDM(dmmg),0,&mx,&my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
ierr = PetscPrintf(comm,"mx = %d, my= %d\n",
mx,my);CHKERRQ(ierr);
@@ -187,7 +187,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->lambda;
hx = 1.0/(PetscReal)(Mx-1);
diff -r 23e7928e179a src/snes/examples/tutorials/ex5.c
--- a/src/snes/examples/tutorials/ex5.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex5.c Fri Mar 11 16:29:15 2011 -0700
@@ -104,7 +104,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,
1,1,PETSC_NULL,PETSC_NULL,&user.da);CHKERRQ(ierr);
ierr = DMDASetUniformCoordinates(user.da, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0);CHKERRQ(ierr);
@@ -279,7 +279,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(user->da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->param;
hx = 1.0/(PetscReal)(Mx-1);
@@ -455,7 +455,7 @@
ierr = PetscObjectSetName((PetscObject)localX,"localX");CHKERRQ(ierr);
ierr = PetscObjectSetName((PetscObject)localF,"localF");CHKERRQ(ierr);
ierr = DMDAGetInfo(user->da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->param;
hx = 1.0/(PetscReal)(Mx-1);
diff -r 23e7928e179a src/snes/examples/tutorials/ex50.c
--- a/src/snes/examples/tutorials/ex50.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex50.c Fri Mar 11 16:29:15 2011 -0700
@@ -106,11 +106,11 @@
Create distributed array multigrid object (DMMG) to manage parallel grid and vectors
for principal unknowns (x) and governing residuals (f)
*/
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,4,1,0,0,&da);CHKERRQ(ierr);
ierr = SNESSetDM(snes,(DM)da);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,0,&mx,&my,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);CHKERRQ(ierr);
/*
Problem parameters (velocity of lid, prandtl, and grashof numbers)
*/
@@ -190,7 +190,7 @@
grashof = user->grashof;
- ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0,&mx,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
dx = 1.0/(mx-1);
/*
diff -r 23e7928e179a src/snes/examples/tutorials/ex51.c
--- a/src/snes/examples/tutorials/ex51.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex51.c Fri Mar 11 16:29:15 2011 -0700
@@ -18,7 +18,7 @@
ierr = PetscInitialize(&argc,&argv,0,0);CHKERRQ(ierr);
ierr = MPI_Comm_rank(PETSC_COMM_WORLD, &rank);CHKERRQ(ierr);
/* Create 2D DMDA */
- ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_NONPERIODIC, DMDA_STENCIL_STAR, M, N, PETSC_DECIDE, PETSC_DECIDE, 1, 1, PETSC_NULL, PETSC_NULL, &da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE, DMDA_STENCIL_STAR, M, N, PETSC_DECIDE, PETSC_DECIDE, 1, 1, PETSC_NULL, PETSC_NULL, &da);CHKERRQ(ierr);
/* Create 1D DMDAs along two directions */
ierr = DMDAGetOwnershipRanges(da, &lx, &ly, PETSC_NULL);CHKERRQ(ierr);
ierr = DMDAGetLocalInfo(da, &info);CHKERRQ(ierr);
@@ -30,8 +30,8 @@
ierr = MPI_Comm_size(commY, &subsize);CHKERRQ(ierr);
ierr = MPI_Comm_rank(commY, &subrank);CHKERRQ(ierr);
ierr = PetscPrintf(PETSC_COMM_SELF, "[%d]Y subrank: %d subsize: %d\n", rank, subrank, subsize);
- ierr = DMDACreate1d(commX, DMDA_NONPERIODIC, M, dof, 1, lx, &daX);CHKERRQ(ierr);
- ierr = DMDACreate1d(commY, DMDA_NONPERIODIC, N, dof, 1, ly, &daY);CHKERRQ(ierr);
+ ierr = DMDACreate1d(commX, DMDA_BOUNDARY_NONE, M, dof, 1, lx, &daX);CHKERRQ(ierr);
+ ierr = DMDACreate1d(commY, DMDA_BOUNDARY_NONE, N, dof, 1, ly, &daY);CHKERRQ(ierr);
/* Create 1D vectors for basis functions */
ierr = DMGetGlobalVector(daX, &basisX);CHKERRQ(ierr);
ierr = DMGetGlobalVector(daY, &basisY);CHKERRQ(ierr);
diff -r 23e7928e179a src/snes/examples/tutorials/ex5f.F
--- a/src/snes/examples/tutorials/ex5f.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex5f.F Fri Mar 11 16:29:15 2011 -0700
@@ -110,7 +110,8 @@
! This really needs only the star-type stencil, but we use the box
! stencil temporarily.
- call DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC, &
+ call DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE, &
+ & DMDA_BOUNDARY_NONE, &
& DMDA_STENCIL_STAR,i4,i4,PETSC_DECIDE,PETSC_DECIDE,i1,i1, &
& PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da,ierr)
diff -r 23e7928e179a src/snes/examples/tutorials/ex5f90.F
--- a/src/snes/examples/tutorials/ex5f90.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex5f90.F Fri Mar 11 16:29:15 2011 -0700
@@ -229,7 +229,8 @@
! This really needs only the star-type stencil, but we use the box
! stencil temporarily.
- call DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC, &
+ call DMDACreate2d(PETSC_COMM_WORLD, &
+ & DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE, &
& DMDA_STENCIL_BOX,nfour,nfour,PETSC_DECIDE,PETSC_DECIDE, &
& ione,ione,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,user%da,ierr)
call DMDAGetInfo(user%da,PETSC_NULL_INTEGER,user%mx,user%my, &
diff -r 23e7928e179a src/snes/examples/tutorials/ex7.c
--- a/src/snes/examples/tutorials/ex7.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex7.c Fri Mar 11 16:29:15 2011 -0700
@@ -145,7 +145,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,-3,-3,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-3,-3,PETSC_DECIDE,PETSC_DECIDE,
3,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da, 0, "ooblek");CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg, (DM) da);CHKERRQ(ierr);
@@ -276,7 +276,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->lambda;
hx = 1.0/(PetscReal)(Mx-1);
diff -r 23e7928e179a src/snes/examples/tutorials/ex8.c
--- a/src/snes/examples/tutorials/ex8.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/snes/examples/tutorials/ex8.c Fri Mar 11 16:29:15 2011 -0700
@@ -118,7 +118,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,-3,-3,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-3,-3,PETSC_DECIDE,PETSC_DECIDE,
1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da, 0, "ooblek");CHKERRQ(ierr);
ierr = DMMGSetDM(dmmg, (DM) da);CHKERRQ(ierr);
@@ -217,7 +217,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
lambda = user->lambda;
hx = 1.0/(PetscReal)(Mx-1);
diff -r 23e7928e179a src/ts/examples/tests/ex1.c
--- a/src/ts/examples/tests/ex1.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tests/ex1.c Fri Mar 11 16:29:15 2011 -0700
@@ -73,7 +73,7 @@
appctx.norm_2 = 0.0; appctx.norm_max = 0.0;
/* Set up the ghost point communication pattern */
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,appctx.M,1,1,PETSC_NULL,&appctx.da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,appctx.M,1,1,PETSC_NULL,&appctx.da);CHKERRQ(ierr);
ierr = DMCreateGlobalVector(appctx.da,&appctx.global);CHKERRQ(ierr);
ierr = VecGetLocalSize(appctx.global,&m);CHKERRQ(ierr);
ierr = DMCreateLocalVector(appctx.da,&appctx.local);CHKERRQ(ierr);
diff -r 23e7928e179a src/ts/examples/tests/ex1f.F
--- a/src/ts/examples/tests/ex1f.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tests/ex1f.F Fri Mar 11 16:29:15 2011 -0700
@@ -75,7 +75,7 @@
! Set up the ghost point communication pattern
- call DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,M,i1,i1, &
+ call DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,M,i1,i1, &
& PETSC_NULL_INTEGER,da,ierr)
call DMCreateGlobalVector(da,global,ierr)
call VecGetLocalSize(global,m,ierr)
diff -r 23e7928e179a src/ts/examples/tutorials/ex10.c
--- a/src/ts/examples/tutorials/ex10.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex10.c Fri Mar 11 16:29:15 2011 -0700
@@ -801,9 +801,9 @@
(radiation temperature). It is not necessary to create a DMDA for this, but this way
output and visualization will have meaningful variable names and correct scales.
*/
- ierr = DMDAGetInfo(rd->da,0, &M,0,0, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(rd->da,0, &M,0,0, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetOwnershipRanges(rd->da,&lx,0,0);CHKERRQ(ierr);
- ierr = DMDACreate1d(((PetscObject)rd->da)->comm,DMDA_NONPERIODIC,M,1,0,lx,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(((PetscObject)rd->da)->comm,DMDA_BOUNDARY_NONE,M,1,0,lx,&da);CHKERRQ(ierr);
ierr = DMDASetUniformCoordinates(da,0.,rd->L,0.,0.,0.,0.);CHKERRQ(ierr);
ierr = DMDASetFieldName(da,0,"T_rad");CHKERRQ(ierr);
ierr = DMCreateGlobalVector(da,&Y);CHKERRQ(ierr);
@@ -1015,7 +1015,7 @@
break;
}
- ierr = DMDACreate1d(comm,DMDA_NONPERIODIC,-20,sizeof(RDNode)/sizeof(PetscScalar),1,PETSC_NULL,&rd->da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(comm,DMDA_BOUNDARY_NONE,-20,sizeof(RDNode)/sizeof(PetscScalar),1,PETSC_NULL,&rd->da);CHKERRQ(ierr);
ierr = DMDASetFieldName(rd->da,0,"E");CHKERRQ(ierr);
ierr = DMDASetFieldName(rd->da,1,"T");CHKERRQ(ierr);
ierr = DMDASetUniformCoordinates(rd->da,0.,1.,0.,0.,0.,0.);CHKERRQ(ierr);
diff -r 23e7928e179a src/ts/examples/tutorials/ex11.c
--- a/src/ts/examples/tutorials/ex11.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex11.c Fri Mar 11 16:29:15 2011 -0700
@@ -50,7 +50,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-8,-8,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-8,-8,PETSC_DECIDE,PETSC_DECIDE,
1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -153,7 +153,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(da,&localX);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1); sx = 1.0/(hx*hx);
hy = 1.0/(PetscReal)(My-1); sy = 1.0/(hy*hy);
@@ -220,7 +220,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1);
hy = 1.0/(PetscReal)(My-1);
diff -r 23e7928e179a src/ts/examples/tutorials/ex12.c
--- a/src/ts/examples/tutorials/ex12.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex12.c Fri Mar 11 16:29:15 2011 -0700
@@ -57,7 +57,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-8,-8,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-8,-8,PETSC_DECIDE,PETSC_DECIDE,
2,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -161,7 +161,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(da,&localX);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1); sx = 1.0/(hx*hx);
hy = 1.0/(PetscReal)(My-1); sy = 1.0/(hy*hy);
@@ -229,7 +229,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1);
hy = 1.0/(PetscReal)(My-1);
diff -r 23e7928e179a src/ts/examples/tutorials/ex13.c
--- a/src/ts/examples/tutorials/ex13.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex13.c Fri Mar 11 16:29:15 2011 -0700
@@ -54,7 +54,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-8,-8,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-8,-8,PETSC_DECIDE,PETSC_DECIDE,
1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -156,7 +156,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(da,&localU);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1); sx = 1.0/(hx*hx);
hy = 1.0/(PetscReal)(My-1); sy = 1.0/(hy*hy);
@@ -249,7 +249,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1);
hy = 1.0/(PetscReal)(My-1);
diff -r 23e7928e179a src/ts/examples/tutorials/ex14.c
--- a/src/ts/examples/tutorials/ex14.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex14.c Fri Mar 11 16:29:15 2011 -0700
@@ -679,7 +679,7 @@
PetscFunctionBegin;
ierr = DMDAGetGhostCorners(da2prm,&ys,&xs,0,&ym,&xm,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da2prm,0, &my,&mx,0, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da2prm,0, &my,&mx,0, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
for (i=xs; i<xs+xm; i++) {
for (j=ys; j<ys+ym; j++) {
PetscReal xx = thi->Lx*i/mx,yy = thi->Ly*j/my;
@@ -706,7 +706,7 @@
ierr = DMCompositeGetAccess(pack,X,&X3g,&X2g);CHKERRQ(ierr);
ierr = DMGetLocalVector(da2,&X2);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da3,0, 0,&my,&mx, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da3,0, 0,&my,&mx, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da3,&zs,&ys,&xs,&zm,&ym,&xm);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da3,X3g,&x);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da2,X2,&prm);CHKERRQ(ierr);
@@ -1046,7 +1046,7 @@
ierr = DMCompositeGetEntries(pack,&da3,&da2);CHKERRQ(ierr);
ierr = DMCompositeGetAccess(pack,X,&X3,&X2);CHKERRQ(ierr);
*min = *max = *mean = 0;
- ierr = DMDAGetInfo(da3,0, &mz,&my,&mx, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da3,0, &mz,&my,&mx, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da3,&zs,&ys,&xs,&zm,&ym,&xm);CHKERRQ(ierr);
if (zs != 0 || zm != mz) SETERRQ(PETSC_COMM_SELF,1,"Unexpected decomposition");
ierr = DMDAVecGetArray(da3,X3,&x);CHKERRQ(ierr);
@@ -1448,7 +1448,7 @@
comm = ((PetscObject)thi)->comm;
ierr = DMCompositeGetEntries(pack,&da3,&da2);CHKERRQ(ierr);
ierr = DMCompositeGetAccess(pack,X,&X3,&X2);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da3,0, &mz,&my,&mx, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da3,0, &mz,&my,&mx, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = MPI_Comm_size(comm,&size);CHKERRQ(ierr);
ierr = MPI_Comm_rank(comm,&rank);CHKERRQ(ierr);
ierr = PetscViewerASCIIOpen(comm,filename,&viewer3);CHKERRQ(ierr);
@@ -1663,7 +1663,7 @@
{
PetscInt Mx,My,mx,my,s;
DMDAStencilType st;
- ierr = DMDAGetInfo(da3,0, 0,&My,&Mx, 0,&my,&mx, 0,&s,0,&st);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da3,0, 0,&My,&Mx, 0,&my,&mx, 0,&s,0,0,0,&st);CHKERRQ(ierr);
ierr = DMDACreate2d(((PetscObject)thi)->comm,DMDA_XYPERIODIC,st,My,Mx,my,mx,sizeof(PrmNode)/sizeof(PetscScalar),s,0,0,&da2);CHKERRQ(ierr);
}
@@ -1692,7 +1692,7 @@
PetscReal Lx = thi->Lx / thi->units->meter,Ly = thi->Ly / thi->units->meter,Lz = thi->Lz / thi->units->meter;
PetscInt Mx,My,Mz;
ierr = DMCompositeGetEntries(pack,&da3,&da2);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da3,0, &Mz,&My,&Mx, 0,0,0, 0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da3,0, &Mz,&My,&Mx, 0,0,0, 0,0,0,0,0,0);CHKERRQ(ierr);
ierr = PetscPrintf(((PetscObject)thi)->comm,"Level %d domain size (m) %8.2g x %8.2g x %8.2g, num elements %3d x %3d x %3d (%8d), size (m) %g x %g x %g\n",i,Lx,Ly,Lz,Mx,My,Mz,Mx*My*Mz,Lx/Mx,Ly/My,1000./(Mz-1));CHKERRQ(ierr);
}
ierr = DMMGSetInitialGuess(dmmg,THIInitialDMMG);CHKERRQ(ierr);
diff -r 23e7928e179a src/ts/examples/tutorials/ex15.c
--- a/src/ts/examples/tutorials/ex15.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex15.c Fri Mar 11 16:29:15 2011 -0700
@@ -86,9 +86,9 @@
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
if (user.nstencilpts == 5){
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-11,-11,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-11,-11,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
} else if (user.nstencilpts == 9){
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_BOX,-11,-11,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-11,-11,PETSC_DECIDE,PETSC_DECIDE,1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
} else {
SETERRQ1(PETSC_COMM_WORLD,PETSC_ERR_SUP,"nstencilpts %d is not supported",user.nstencilpts);
}
@@ -184,7 +184,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(da,&localU);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1); sx = 1.0/(hx*hx);
hy = 1.0/(PetscReal)(My-1); sy = 1.0/(hy*hy);
@@ -276,7 +276,7 @@
PetscScalar vals[5],hx,hy,sx,sy;
PetscFunctionBegin;
- ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
ierr = DMDAGetCorners(da,&xs,&ys,PETSC_NULL,&xm,&ym,PETSC_NULL);CHKERRQ(ierr);
hx = 1.0/(PetscReal)(Mx-1); sx = 1.0/(hx*hx);
@@ -340,7 +340,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1);
hy = 1.0/(PetscReal)(My-1);
diff -r 23e7928e179a src/ts/examples/tutorials/ex17.c
--- a/src/ts/examples/tutorials/ex17.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex17.c Fri Mar 11 16:29:15 2011 -0700
@@ -67,7 +67,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,-11,1,1,PETSC_NULL,&da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,-11,1,1,PETSC_NULL,&da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Extract global vectors from DMDA;
@@ -169,7 +169,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(da,&localU);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1); sx = 1.0/(hx*hx);
@@ -237,7 +237,7 @@
PetscFunctionBegin;
ierr = MatGetOwnershipRange(*Jpre,&rstart,&rend);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1); sx = 1.0/(hx*hx);
for (i=rstart; i<rend; i++) {
nc = 0;
@@ -286,7 +286,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1);
diff -r 23e7928e179a src/ts/examples/tutorials/ex2.c
--- a/src/ts/examples/tutorials/ex2.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex2.c Fri Mar 11 16:29:15 2011 -0700
@@ -110,7 +110,7 @@
and to set up the ghost point communication pattern. There are M
total grid values spread equally among all the processors.
*/
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,appctx.m,1,1,PETSC_NULL,
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,appctx.m,1,1,PETSC_NULL,
&appctx.da);CHKERRQ(ierr);
/*
diff -r 23e7928e179a src/ts/examples/tutorials/ex2f.F
--- a/src/ts/examples/tutorials/ex2f.F Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex2f.F Fri Mar 11 16:29:15 2011 -0700
@@ -118,7 +118,7 @@
! Set up the ghost point communication pattern. There are m total
! grid values spread equally among all the processors.
i1 = 1
- call DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,m,i1,i1, &
+ call DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,m,i1,i1, &
& PETSC_NULL_INTEGER,da,ierr)
! Extract global and local vectors from DMDA; then duplicate for remaining
diff -r 23e7928e179a src/ts/examples/tutorials/ex4.c
--- a/src/ts/examples/tutorials/ex4.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex4.c Fri Mar 11 16:29:15 2011 -0700
@@ -131,7 +131,7 @@
total grid values spread equally among all the processors.
*/
- ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,m,1,1,PETSC_NULL,&appctx.da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,m,1,1,PETSC_NULL,&appctx.da);CHKERRQ(ierr);
/*
Extract global and local vectors from DMDA; we use these to store the
diff -r 23e7928e179a src/ts/examples/tutorials/ex7.c
--- a/src/ts/examples/tutorials/ex7.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex7.c Fri Mar 11 16:29:15 2011 -0700
@@ -49,7 +49,7 @@
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create distributed array (DMDA) to manage parallel grid and vectors
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(PETSC_COMM_WORLD,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-8,-8,PETSC_DECIDE,PETSC_DECIDE,
+ ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-8,-8,PETSC_DECIDE,PETSC_DECIDE,
1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -153,7 +153,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(da,&localX);CHKERRQ(ierr);
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1); sx = 1.0/(hx*hx);
hy = 1.0/(PetscReal)(My-1); sy = 1.0/(hy*hy);
@@ -220,7 +220,7 @@
PetscFunctionBegin;
ierr = DMDAGetInfo(da,PETSC_IGNORE,&Mx,&My,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,
- PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
+ PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE,PETSC_IGNORE);
hx = 1.0/(PetscReal)(Mx-1);
hy = 1.0/(PetscReal)(My-1);
diff -r 23e7928e179a src/ts/examples/tutorials/ex9.c
--- a/src/ts/examples/tutorials/ex9.c Thu Mar 10 22:14:51 2011 -0600
+++ b/src/ts/examples/tutorials/ex9.c Fri Mar 11 16:29:15 2011 -0700
@@ -1061,7 +1061,7 @@
PetscFunctionBegin;
ierr = DMGetLocalVector(ctx->da,&Xloc);CHKERRQ(ierr);
- ierr = DMDAGetInfo(ctx->da,0, &Mx,0,0, 0,0,0, &dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(ctx->da,0, &Mx,0,0, 0,0,0, &dof,0,0,0,0,0);CHKERRQ(ierr);
hx = (ctx->xmax - ctx->xmin)/Mx;
ierr = DMGlobalToLocalBegin(ctx->da,X,INSERT_VALUES,Xloc);CHKERRQ(ierr);
ierr = DMGlobalToLocalEnd (ctx->da,X,INSERT_VALUES,Xloc);CHKERRQ(ierr);
@@ -1164,7 +1164,7 @@
PetscFunctionBegin;
if (!ctx->physics.sample) SETERRQ(PETSC_COMM_SELF,1,"Physics has not provided a sampling function");
- ierr = DMDAGetInfo(ctx->da,0, &Mx,0,0, 0,0,0, &dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(ctx->da,0, &Mx,0,0, 0,0,0, &dof,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(ctx->da,&xs,0,0,&xm,0,0);CHKERRQ(ierr);
ierr = DMDAVecGetArray(ctx->da,U,&u);CHKERRQ(ierr);
ierr = PetscMalloc(dof*sizeof uj[0],&uj);CHKERRQ(ierr);
@@ -1204,7 +1204,7 @@
ierr = DMGlobalToLocalEnd (da,X,INSERT_VALUES,Xloc);CHKERRQ(ierr);
ierr = DMDAVecGetArray(da,Xloc,&x);CHKERRQ(ierr);
ierr = DMDAGetCorners(da,&xs,0,0,&xm,0,0);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da,0, &Mx,0,0, 0,0,0, &dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da,0, &Mx,0,0, 0,0,0, &dof,0,0,0,0,0);CHKERRQ(ierr);
tvsum = 0;
for (i=xs; i<xs+xm; i++) {
for (j=0; j<dof; j++) tvsum += PetscAbsScalar(x[i*dof+j] - x[(i-1)*dof+j]);
@@ -1321,7 +1321,7 @@
}
/* Create a DMDA to manage the parallel grid */
- ierr = DMDACreate1d(comm,DMDA_XPERIODIC,-50,ctx.physics.dof,2,PETSC_NULL,&ctx.da);CHKERRQ(ierr);
+ ierr = DMDACreate1d(comm,DMDA_BOUNDARY_PERIODIC,-50,ctx.physics.dof,2,PETSC_NULL,&ctx.da);CHKERRQ(ierr);
/* Inform the DMDA of the field names provided by the physics. */
/* The names will be shown in the title bars when run with -ts_monitor_solution */
for (i=0; i<ctx.physics.dof; i++) {
@@ -1330,7 +1330,7 @@
/* Allow customization of the DMDA at runtime, mostly to change problem size with -da_grid_x M */
ierr = DMSetFromOptions(ctx.da);CHKERRQ(ierr);
ierr = DMSetUp(ctx.da);CHKERRQ(ierr);
- ierr = DMDAGetInfo(ctx.da,0, &Mx,0,0, 0,0,0, &dof,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(ctx.da,0, &Mx,0,0, 0,0,0, &dof,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(ctx.da,&xs,0,0,&xm,0,0);CHKERRQ(ierr);
/* Set coordinates of cell centers */
diff -r 23e7928e179a tutorials/multiphysics/mp.c
--- a/tutorials/multiphysics/mp.c Thu Mar 10 22:14:51 2011 -0600
+++ b/tutorials/multiphysics/mp.c Fri Mar 11 16:29:15 2011 -0700
@@ -47,7 +47,7 @@
- Lap(Omega) + Div([U*Omega,V*Omega]) - GR*Grad_x(T) = 0
where T is given by the given x.temp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,3,1,0,0,&da1);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,3,1,0,0,&da1);CHKERRQ(ierr);
ierr = DMDASetFieldName(da1,0,"x-velocity");CHKERRQ(ierr);
ierr = DMDASetFieldName(da1,1,"y-velocity");CHKERRQ(ierr);
ierr = DMDASetFieldName(da1,2,"Omega");CHKERRQ(ierr);
@@ -57,7 +57,7 @@
- Lap(T) + PR*Div([U*T,V*T]) = 0
where U and V are given by the given x.u and x.v
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da2);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da2);CHKERRQ(ierr);
ierr = DMDASetFieldName(da2,0,"temperature");CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -83,7 +83,7 @@
ierr = DMMGSetUp(dmmg_comp);CHKERRQ(ierr);
/* Problem parameters (velocity of lid, prandtl, and grashof numbers) */
- ierr = DMDAGetInfo(da1,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da1,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
user.lidvelocity = 1.0/(mx*my);
user.prandtl = 1.0;
user.grashof = 1000.0;
@@ -224,7 +224,7 @@
ierr = MPI_Comm_rank(((PetscObject)dmcomposite)->comm,&rank);CHKERRQ(ierr);
/* printf("[%d] __rstart %d, __nrows %d, __start %d, __end %d,\n",rank,__rstart,__nrows,__start,__end);*/
ierr = DMCompositeGetEntries(dmcomposite,&da1,&da2);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da1,0,&M,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da1,0,&M,0,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
ierr = DMDAGetCorners(da1,&istart,&jstart,PETSC_NULL,&in,&jn,PETSC_NULL);CHKERRQ(ierr);
/* coupling from physics 1 to physics 2 */
diff -r 23e7928e179a tutorials/multiphysics/p1.c
--- a/tutorials/multiphysics/p1.c Thu Mar 10 22:14:51 2011 -0600
+++ b/tutorials/multiphysics/p1.c Fri Mar 11 16:29:15 2011 -0700
@@ -45,7 +45,7 @@
- Lap(Omega) + Div([U*Omega,V*Omega]) - GR*Grad_x(T) = 0
where T is given by the given x.temp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,3,1,0,0,&da1);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,3,1,0,0,&da1);CHKERRQ(ierr);
ierr = DMDASetFieldName(da1,0,"x-velocity");CHKERRQ(ierr);
ierr = DMDASetFieldName(da1,1,"y-velocity");CHKERRQ(ierr);
ierr = DMDASetFieldName(da1,2,"Omega");CHKERRQ(ierr);
@@ -59,7 +59,7 @@
ierr = DMMGSetSNES(dmmg,FormFunction,0);CHKERRQ(ierr);
ierr = DMMGSetFromOptions(dmmg);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da1,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da1,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
user.lidvelocity = 1.0/(mx*my);
user.prandtl = 1.0;
user.grashof = 1.0;
diff -r 23e7928e179a tutorials/multiphysics/p2.c
--- a/tutorials/multiphysics/p2.c Thu Mar 10 22:14:51 2011 -0600
+++ b/tutorials/multiphysics/p2.c Fri Mar 11 16:29:15 2011 -0700
@@ -43,7 +43,7 @@
- Lap(T) + PR*Div([U*T,V*T]) = 0
where U and V are given by the given x.u and x.v
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDACreate2d(comm,DMDA_NONPERIODIC,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da2);CHKERRQ(ierr);
+ ierr = DMDACreate2d(comm,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,-4,-4,PETSC_DECIDE,PETSC_DECIDE,1,1,0,0,&da2);CHKERRQ(ierr);
ierr = DMDASetFieldName(da2,0,"temperature");CHKERRQ(ierr);
/* Create the solver object and attach the grid/physics info */
@@ -55,7 +55,7 @@
ierr = DMMGSetSNES(dmmg,FormFunction,0);CHKERRQ(ierr);
ierr = DMMGSetFromOptions(dmmg);CHKERRQ(ierr);
- ierr = DMDAGetInfo(da2,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
+ ierr = DMDAGetInfo(da2,PETSC_NULL,&mx,&my,0,0,0,0,0,0,0,0,0,0);CHKERRQ(ierr);
user.lidvelocity = 1.0/(mx*my);
user.prandtl = 1.0;
user.grashof = 1.0;
More information about the petsc-dev
mailing list