1 2 /* 3 Code for manipulating distributed regular arrays in parallel. 4 */ 5 6 #include <petsc/private/dmdaimpl.h> /*I "petscdmda.h" I*/ 7 extern PetscErrorCode DMLocalToLocalCreate_DA(DM); 8 9 /*@C 10 DMDAGetScatter - Gets the global-to-local, and 11 local-to-local vector scatter contexts for a distributed array. 12 13 Collective on da 14 15 Input Parameter: 16 . da - the distributed array 17 18 Output Parameters: 19 + gtol - global-to-local scatter context (may be NULL) 20 - ltol - local-to-local scatter context (may be NULL) 21 22 Level: developer 23 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. 27 28 .seealso: DMGlobalToLocalBegin(), DMGlobalToLocalEnd(), DMLocalToGlobalBegin() 29 @*/ 30 PetscErrorCode DMDAGetScatter(DM da,VecScatter *gtol,VecScatter *ltol) 31 { 32 PetscErrorCode ierr; 33 DM_DA *dd = (DM_DA*)da->data; 34 35 PetscFunctionBegin; 36 PetscValidHeaderSpecificType(da,DM_CLASSID,1,DMDA); 37 if (gtol) *gtol = dd->gtol; 38 if (ltol) { 39 if (!dd->ltol) { 40 ierr = DMLocalToLocalCreate_DA(da);CHKERRQ(ierr); 41 } 42 *ltol = dd->ltol; 43 } 44 PetscFunctionReturn(0); 45 } 46 47