Actual source code: dascatter.c

petsc-3.11.4 2019-09-28
Report Typos and Errors

  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: }