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*/ 7*d78e899eSRichard Tran Mills extern PetscErrorCode DMLocalToLocalCreate_DA(DM); 847c6ae99SBarry Smith 947c6ae99SBarry Smith #undef __FUNCT__ 10aa219208SBarry Smith #define __FUNCT__ "DMDAGetScatter" 1147c6ae99SBarry Smith /*@C 12aa219208SBarry Smith DMDAGetScatter - Gets the local-to-global, local-to-global, 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: 210298fd71SBarry Smith + ltog - local-to-global scatter context (may be NULL) 220298fd71SBarry Smith . gtol - global-to-local scatter context (may be NULL) 230298fd71SBarry Smith - ltol - local-to-local scatter context (may be NULL) 2447c6ae99SBarry Smith 2547c6ae99SBarry Smith Level: developer 2647c6ae99SBarry Smith 2747c6ae99SBarry Smith Notes: 2847c6ae99SBarry Smith The output contexts are valid only as long as the input da is valid. 2947c6ae99SBarry Smith If you delete the da, the scatter contexts will become invalid. 3047c6ae99SBarry Smith 3147c6ae99SBarry Smith .keywords: distributed array, get, scatter, context, global-to-local, 3247c6ae99SBarry Smith local-to-global, local-to-local 3347c6ae99SBarry Smith 349a42bb27SBarry Smith .seealso: DMGlobalToLocalBegin(), DMGlobalToLocalEnd(), DMLocalToGlobalBegin() 3547c6ae99SBarry Smith @*/ 367087cfbeSBarry Smith PetscErrorCode DMDAGetScatter(DM da,VecScatter *ltog,VecScatter *gtol,VecScatter *ltol) 3747c6ae99SBarry Smith { 3847c6ae99SBarry Smith PetscErrorCode ierr; 3947c6ae99SBarry Smith DM_DA *dd = (DM_DA*)da->data; 4047c6ae99SBarry Smith 4147c6ae99SBarry Smith PetscFunctionBegin; 4247c6ae99SBarry Smith PetscValidHeaderSpecific(da,DM_CLASSID,1); 4347c6ae99SBarry Smith if (ltog) *ltog = dd->ltog; 4447c6ae99SBarry Smith if (gtol) *gtol = dd->gtol; 4547c6ae99SBarry Smith if (ltol) { 4647c6ae99SBarry Smith if (!dd->ltol) { 47*d78e899eSRichard Tran Mills ierr = DMLocalToLocalCreate_DA(da);CHKERRQ(ierr); 4847c6ae99SBarry Smith } 4947c6ae99SBarry Smith *ltol = dd->ltol; 5047c6ae99SBarry Smith } 5147c6ae99SBarry Smith PetscFunctionReturn(0); 5247c6ae99SBarry Smith } 5347c6ae99SBarry Smith 54