xref: /petsc/src/dm/impls/da/dascatter.c (revision 6d8694c4fbab79f9439f1ad13c0386ba7ee1ca4b)
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