Hello,

I am using petsc DMSwarm library for some Lagrangian particle tracking. Until 
now, I was working in a closed box and was therefore initializing my swarm 
object as:


// Create a DMDA staggered and without ghost cells (for DMSwarm to work)

DMDACreate3d(PETSC_COMM_WORLD,DM_BOUNDARY_NONE, DM_BOUNDARY_NONE, 
DM_BOUNDARY_NONE,DMDA_STENCIL_BOX,M,N,P,m,n,p,1,1,lx,ly,lz,da_swarm);



DMSetFromOptions(*da_swarm);

DMSetUp(*da_swarm);

PetscScalar xmin, xmax, ymin, ymax, zmin, zmax;

xmin = ymin = zmin = 0.;

xmax = ymax = zmax = 1.;

DMDASetUniformCoordinates(*da_swarm,xmin, xmax, ymin, ymax, zmin, zmax);

//SetNonUniform3DCoordinates(*da_swarm, cornp, gridp, rank);



/* Create a DMShell for point location purposes */

DMShellCreate(PETSC_COMM_WORLD,dmcell);

DMSetApplicationContext(*dmcell,*da_swarm);

(*dmcell)->ops->locatepoints = DMLocatePoints_DMDARegular;

(*dmcell)->ops->getneighbors = DMGetNeighbors_DMDARegular;



// Create a Swarm DMDA

DMCreate(PETSC_COMM_WORLD,swarm);

DMSetType(*swarm,DMSWARM);

DMSetDimension(*swarm,3);

DMSwarmSetType(*swarm,DMSWARM_PIC);

DMSwarmSetCellDM(*swarm,*dmcell);

I am now trying to work with periodic boundary conditions. I tried replacing 
DM_BOUNDARY_NONE by DM_BOUNDARY_PERIODIC but it does not work… I checked for 
examples using periodic B.C. but have not found any. Is it possible? And if 
yes, how can I make it work?

Thanks a lot for your answer.
Best regards,

Joauma

Reply via email to