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: Notes: 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: DMGlobalToLocalBegin(), DMGlobalToLocalEnd(), DMLocalToGlobalBegin() 29: @*/ 30: PetscErrorCode DMDAGetScatter(DM da,VecScatter *gtol,VecScatter *ltol) 31: { 33: DM_DA *dd = (DM_DA*)da->data; 37: if (gtol) *gtol = dd->gtol; 38: if (ltol) { 39: if (!dd->ltol) { 40: DMLocalToLocalCreate_DA(da); 41: } 42: *ltol = dd->ltol; 43: } 44: return(0); 45: }