147c6ae99SBarry Smith /*
247c6ae99SBarry Smith Code for manipulating distributed regular arrays in parallel.
347c6ae99SBarry Smith */
447c6ae99SBarry Smith
5af0996ceSBarry Smith #include <petsc/private/dmdaimpl.h> /*I "petscdmda.h" I*/
647c6ae99SBarry Smith
75d83a8b1SBarry Smith /*@
8bd1fc5aeSBarry Smith DMDAGetScatter - Gets the global-to-local, and
912b4a537SBarry Smith local-to-local vector scatter contexts for a `DMDA` distributed array.
1047c6ae99SBarry Smith
1120f4b53cSBarry Smith Collective
1247c6ae99SBarry Smith
1347c6ae99SBarry Smith Input Parameter:
1472fd0fbdSBarry Smith . da - the `DMDA`
1547c6ae99SBarry Smith
1647c6ae99SBarry Smith Output Parameters:
1720f4b53cSBarry Smith + gtol - global-to-local scatter context (may be `NULL`)
1820f4b53cSBarry Smith - ltol - local-to-local scatter context (may be `NULL`)
1947c6ae99SBarry Smith
2047c6ae99SBarry Smith Level: developer
2147c6ae99SBarry Smith
22dce8aebaSBarry Smith Note:
2320f4b53cSBarry Smith The output contexts are valid only as long as the input `da` is valid.
2420f4b53cSBarry Smith If you delete the `da`, the scatter contexts will become invalid.
2547c6ae99SBarry Smith
2612b4a537SBarry Smith .seealso: [](sec_struct), `DM`, `DMDA`, `DMGlobalToLocalBegin()`, `DMGlobalToLocalEnd()`, `DMLocalToGlobalBegin()`
2747c6ae99SBarry Smith @*/
DMDAGetScatter(DM da,PeOp VecScatter * gtol,PeOp VecScatter * ltol)28*ce78bad3SBarry Smith PetscErrorCode DMDAGetScatter(DM da, PeOp VecScatter *gtol, PeOp VecScatter *ltol)
29d71ae5a4SJacob Faibussowitsch {
3047c6ae99SBarry Smith DM_DA *dd = (DM_DA *)da->data;
3147c6ae99SBarry Smith
3247c6ae99SBarry Smith PetscFunctionBegin;
33a9a02de4SBarry Smith PetscValidHeaderSpecificType(da, DM_CLASSID, 1, DMDA);
3447c6ae99SBarry Smith if (gtol) *gtol = dd->gtol;
3547c6ae99SBarry Smith if (ltol) {
3648a46eb9SPierre Jolivet if (!dd->ltol) PetscCall(DMLocalToLocalCreate_DA(da));
3747c6ae99SBarry Smith *ltol = dd->ltol;
3847c6ae99SBarry Smith }
393ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS);
4047c6ae99SBarry Smith }
41