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#

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#

src/dm/impls/da/dagetarray.c

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


Edit on GitLab

Index of all DMDA routines
Table of Contents for all manual pages
Index of all manual pages