Actual source code: dascatter.c
petsc-3.11.4 2019-09-28
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 DMDA
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: .keywords: distributed array, get, scatter, context, global-to-local,
29: local-to-global, local-to-local
31: .seealso: DMGlobalToLocalBegin(), DMGlobalToLocalEnd(), DMLocalToGlobalBegin()
32: @*/
33: PetscErrorCode DMDAGetScatter(DM da,VecScatter *gtol,VecScatter *ltol)
34: {
36: DM_DA *dd = (DM_DA*)da->data;
40: if (gtol) *gtol = dd->gtol;
41: if (ltol) {
42: if (!dd->ltol) {
43: DMLocalToLocalCreate_DA(da);
44: }
45: *ltol = dd->ltol;
46: }
47: return(0);
48: }