2: /* 3: Code for manipulating distributed regular arrays in parallel. 4: */ 6: #include <petsc/private/dmdaimpl.h> 7: extern PetscErrorCode DMLocalToLocalCreate_DA(DM); 9: /*@C 10: DMDAGetScatter - Gets the global-to-local, and 11: local-to-local vector scatter contexts for a distributed array. 13: Collective on da 15: Input Parameter: 16: . da - the distributed array 18: Output Parameters: 19: + gtol - global-to-local scatter context (may be NULL) 20: - ltol - local-to-local scatter context (may be NULL) 22: Level: developer 24: Note: 25: The output contexts are valid only as long as the input da is valid. 26: If you delete the da, the scatter contexts will become invalid. 28: .seealso: `DM`, `DMDA`, `DMGlobalToLocalBegin()`, `DMGlobalToLocalEnd()`, `DMLocalToGlobalBegin()` 29: @*/ 30: PetscErrorCode DMDAGetScatter(DM da, VecScatter *gtol, VecScatter *ltol) 31: { 32: DM_DA *dd = (DM_DA *)da->data; 35: if (gtol) *gtol = dd->gtol; 36: if (ltol) { 37: if (!dd->ltol) DMLocalToLocalCreate_DA(da); 38: *ltol = dd->ltol; 39: } 40: return 0; 41: }