DMDAVecGetArray#
Returns a multiple dimension array that shares data with the underlying vector and is indexed using the global dimensions.
Synopsis#
#include "petscdmda.h"
PetscErrorCode DMDAVecGetArray(DM da, Vec vec, void *array)
Logically Collective
Input Parameters#
da - the distributed array
vec - a vector the same size as one obtained with
DMCreateGlobalVector()
orDMCreateLocalVector()
Output Parameter#
array - the array
Notes#
Call DMDAVecRestoreArray()
once you have finished accessing the vector entries.
In C, the indexing is “backwards” from what expects: array[k][j][i] NOT array[i][j][k]!
If vec
is a local vector (obtained with DMCreateLocalVector() etc) then the ghost point locations are accessible. If it is
a global vector then the ghost points are not accessible. Of course, with a local vector you will have had to do the
appropriate DMGlobalToLocalBegin()
and DMGlobalToLocalEnd()
to have correct values in the ghost locations.
The accessible indices are array[zs:zs+zm-1][ys:ys+ym-1][xs:xs+xm-1]
where the values are obtained from
DMDAGetCorners()
for a global vector or DMDAGetGhostCorners()
for a local vector.
Fortran Notes#
Use DMDAVecGetArrayF90()
and pass for the array type PetscScalar
,pointer :: array(:,…,:) of the appropriate
dimension. For a DMDA
created with a dof of 1 use the dimension of the DMDA
, for a DMDA
created with a dof greater than 1 use one more than the
dimension of the DMDA
.
The order of the indices is array(xs:xs+xm-1,ys:ys+ym-1,zs:zs+zm-1)
(when dof is 1) otherwise
array(0:dof-1,xs:xs+xm-1,ys:ys+ym-1,zs:zs+zm-1)
where the values are obtained from
DMDAGetCorners()
for a global vector or DMDAGetGhostCorners()
for a local vector.
See Also#
DM
, DMDA
, DMDAGetGhostCorners()
, DMDAGetCorners()
, VecGetArray()
, VecRestoreArray()
, DMDAVecRestoreArray()
, DMDAVecRestoreArrayDOF()
DMDAVecGetArrayDOF()
, DMDAVecGetArrayWrite()
, DMDAVecRestoreArrayWrite()
, DMDAVecGetArrayRead()
, DMDAVecRestoreArrayRead()
,
DMStagVecGetArray()
Level#
intermediate
Location#
Examples#
src/dm/tutorials/ex10.c
src/dm/tutorials/ex14.c
src/dm/tutorials/ex2.c
src/dm/tutorials/ex22.c
src/dm/tutorials/ex25.c
src/dm/tutorials/ex3.c
src/dm/tutorials/swarm_ex1.c
src/ksp/ksp/tutorials/ex29.c
src/ksp/ksp/tutorials/ex32.c
src/ksp/ksp/tutorials/ex42.c
src/ksp/ksp/tutorials/ex43.c
Index of all DMDA routines
Table of Contents for all manual pages
Index of all manual pages