[petsc-users] FD Dirichlet boundary conditions with ghosted DMDA
Adrian Croucher
a.croucher at auckland.ac.nz
Wed Mar 18 21:06:12 CDT 2015
hi,
I'm setting up a simple 1-D finite difference test problem with
Dirichlet boundary conditions at each end, using DMDA.
I used DMDACreate1d() with the DM_BOUNDARY_GHOSTED option, and set the
global array dimension to be the total number of nodes (including
boundary nodes) minus 2- so the boundary nodes aren't included in the mesh.
When I'm evaluating the differential equation on this mesh, I use
DMGetLocalVector() and DMGlobalToLocalBegin/End() to scatter to my
ghosted vector, then DMDAVecGetArray() to get an array on the local vector.
When I want to apply the BCs at each end, I call DMDAGetGhostCorners()
to find the indices of the ghost points. I can now plug the required
boundary values into my array.
At present, if I'm running on multiple processors, I'm just checking if
rank=0 or rank=size-1 to make sure the BCs only get applied at the
actual ends of the mesh, and not at the ends of the internal partitions
as well.
This works, but is there a better way to do it? It seems potentially
unreliable- as it assumes rank 0 is always the left hand end and rank
size-1 always the right-hand end. Also it won't really work in 2D or 3D.
Thanks!
- Adrian
--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: a.croucher at auckland.ac.nz
tel: +64 (0)9 923 84611
More information about the petsc-users
mailing list