DMDAVecGetArrayRead#
Returns a multiple dimension array that shares data with the underlying vector and is indexed using the global or local dimensions of a DMDA
.
Synopsis#
#include "petscdmda.h"
PetscErrorCode DMDAVecGetArrayRead(DM da, Vec vec, void *array)
Not Collective
Input Parameters#
da - the
DMDA
vec - a vector the same size as one obtained with
DMCreateGlobalVector()
orDMCreateLocalVector()
Output Parameter#
array - the array
Notes#
Call DMDAVecRestoreArrayRead()
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 the 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 DMDAVecGetArrayReadF90()
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#
DMDA - Creating vectors for structured grids, DMDA - Setting vector values, DM
, DMDA
, DMDAVecGetArrayReadF90()
, DMDAGetGhostCorners()
,
DMDAGetCorners()
, VecGetArray()
, VecRestoreArray()
, DMDAVecRestoreArrayRead()
,
DMDAVecRestoreArrayDOF()
, DMDAVecGetArrayDOF()
, DMDAVecGetArray()
,
DMDAVecRestoreArray()
, DMStagVecGetArrayRead()
Level#
intermediate
Location#
Examples#
src/dm/tutorials/ex3.c
src/snes/tutorials/ex3.c
src/tao/unconstrained/tutorials/burgers_spectral.c
src/snes/tutorials/ex19.c
src/snes/tutorials/ex78.c
src/snes/tutorials/ex3k.kokkos.cxx
src/snes/tutorials/ex15.c
src/dm/tutorials/ex2.c
src/tao/unconstrained/tutorials/spectraladjointassimilation.c
src/snes/tutorials/ex14.c
Index of all DMDA routines
Table of Contents for all manual pages
Index of all manual pages