147c6ae99SBarry Smith 247c6ae99SBarry Smith /* 347c6ae99SBarry Smith Code for manipulating distributed regular arrays in parallel. 447c6ae99SBarry Smith */ 547c6ae99SBarry Smith 64035e84dSBarry Smith #include <petsc-private/dmdaimpl.h> /*I "petscdmda.h" I*/ 7d78e899eSRichard Tran Mills extern PetscErrorCode DMLocalToLocalCreate_DA(DM); 847c6ae99SBarry Smith 947c6ae99SBarry Smith #undef __FUNCT__ 10aa219208SBarry Smith #define __FUNCT__ "DMDAGetScatter" 1147c6ae99SBarry Smith /*@C 12*bd1fc5aeSBarry Smith DMDAGetScatter - Gets the global-to-local, and 1347c6ae99SBarry Smith local-to-local vector scatter contexts for a distributed array. 1447c6ae99SBarry Smith 15aa219208SBarry Smith Collective on DMDA 1647c6ae99SBarry Smith 1747c6ae99SBarry Smith Input Parameter: 1847c6ae99SBarry Smith . da - the distributed array 1947c6ae99SBarry Smith 2047c6ae99SBarry Smith Output Parameters: 21*bd1fc5aeSBarry Smith + gtol - global-to-local scatter context (may be NULL) 220298fd71SBarry Smith - ltol - local-to-local scatter context (may be NULL) 2347c6ae99SBarry Smith 2447c6ae99SBarry Smith Level: developer 2547c6ae99SBarry Smith 2647c6ae99SBarry Smith Notes: 2747c6ae99SBarry Smith The output contexts are valid only as long as the input da is valid. 2847c6ae99SBarry Smith If you delete the da, the scatter contexts will become invalid. 2947c6ae99SBarry Smith 3047c6ae99SBarry Smith .keywords: distributed array, get, scatter, context, global-to-local, 3147c6ae99SBarry Smith local-to-global, local-to-local 3247c6ae99SBarry Smith 339a42bb27SBarry Smith .seealso: DMGlobalToLocalBegin(), DMGlobalToLocalEnd(), DMLocalToGlobalBegin() 3447c6ae99SBarry Smith @*/ 35*bd1fc5aeSBarry Smith PetscErrorCode DMDAGetScatter(DM da,VecScatter *gtol,VecScatter *ltol) 3647c6ae99SBarry Smith { 3747c6ae99SBarry Smith PetscErrorCode ierr; 3847c6ae99SBarry Smith DM_DA *dd = (DM_DA*)da->data; 3947c6ae99SBarry Smith 4047c6ae99SBarry Smith PetscFunctionBegin; 4147c6ae99SBarry Smith PetscValidHeaderSpecific(da,DM_CLASSID,1); 4247c6ae99SBarry Smith if (gtol) *gtol = dd->gtol; 4347c6ae99SBarry Smith if (ltol) { 4447c6ae99SBarry Smith if (!dd->ltol) { 45d78e899eSRichard Tran Mills ierr = DMLocalToLocalCreate_DA(da);CHKERRQ(ierr); 4647c6ae99SBarry Smith } 4747c6ae99SBarry Smith *ltol = dd->ltol; 4847c6ae99SBarry Smith } 4947c6ae99SBarry Smith PetscFunctionReturn(0); 5047c6ae99SBarry Smith } 5147c6ae99SBarry Smith 52