Actual source code: dascatter.c

      1: #define PETSCDM_DLL

      3: /*
      4:   Code for manipulating distributed regular arrays in parallel.
      5: */

     7:  #include src/dm/da/daimpl.h
      8: EXTERN PetscErrorCode DALocalToLocalCreate(DA);

     12: /*@C
     13:    DAGetScatter - Gets the local-to-global, local-to-global, and
     14:    local-to-local vector scatter contexts for a distributed array.

     16:    Collective on DA

     18:    Input Parameter:
     19: .  da - the distributed array

     21:    Output Parameters:
     22: +  ltog - local-to-global scatter context (may be PETSC_NULL)
     23: .  gtol - global-to-local scatter context (may be PETSC_NULL)
     24: -  ltol - local-to-local scatter context (may be PETSC_NULL)

     26:    Level: developer

     28:    Notes:
     29:    The output contexts are valid only as long as the input da is valid.
     30:    If you delete the da, the scatter contexts will become invalid.

     32: .keywords: distributed array, get, scatter, context, global-to-local,
     33:            local-to-global, local-to-local

     35: .seealso: DAGlobalToLocalBegin(), DAGlobalToLocalEnd(), DALocalToGlobal()
     36: @*/
     37: PetscErrorCode PETSCDM_DLLEXPORT DAGetScatter(DA da,VecScatter *ltog,VecScatter *gtol,VecScatter *ltol)
     38: {

     43:   if (ltog) *ltog = da->ltog;
     44:   if (gtol) *gtol = da->gtol;
     45:   if (ltol) {
     46:     if (!da->ltol) {
     47:       DALocalToLocalCreate(da);
     48:     }
     49:     *ltol = da->ltol;
     50:   }
     51:   return(0);
     52: }
     53: