Actual source code: dascatter.c
petsc-3.10.5 2019-03-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: }