Actual source code: dascatter.c

petsc-3.14.6 2021-03-30
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 da

 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: .seealso: DMGlobalToLocalBegin(), DMGlobalToLocalEnd(), DMLocalToGlobalBegin()
 29: @*/
 30: PetscErrorCode  DMDAGetScatter(DM da,VecScatter *gtol,VecScatter *ltol)
 31: {
 33:   DM_DA          *dd = (DM_DA*)da->data;

 37:   if (gtol) *gtol = dd->gtol;
 38:   if (ltol) {
 39:     if (!dd->ltol) {
 40:       DMLocalToLocalCreate_DA(da);
 41:     }
 42:     *ltol = dd->ltol;
 43:   }
 44:   return(0);
 45: }