xref: /petsc/include/petscdmpatch.h (revision ac09b9214d23ea9ad238aa607de9fa447fd4e91b)
13a19ef87SMatthew G Knepley /*
23a19ef87SMatthew G Knepley   DMPatch, for domains covered by sets of patches.
33a19ef87SMatthew G Knepley */
426bd1501SBarry Smith #if !defined(PETSCDMPATCH_H)
526bd1501SBarry Smith #define PETSCDMPATCH_H
6*ac09b921SBarry Smith 
73a19ef87SMatthew G Knepley #include <petscdm.h>
83a19ef87SMatthew G Knepley 
9*ac09b921SBarry Smith /* SUBMANSEC = DMPatch */
10*ac09b921SBarry Smith 
113a19ef87SMatthew G Knepley /*S
123a19ef87SMatthew G Knepley   DMPATCH - DM object that encapsulates a domain divided into many patches
133a19ef87SMatthew G Knepley 
143a19ef87SMatthew G Knepley   Level: intermediate
153a19ef87SMatthew G Knepley 
16db781477SPatrick Sanan .seealso: `DM`, `DMPatchCreate()`
173a19ef87SMatthew G Knepley S*/
183a19ef87SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchCreate(MPI_Comm, DM*);
193a19ef87SMatthew G Knepley 
2060c22052SBarry Smith PETSC_EXTERN PetscErrorCode DMPatchZoom(DM,MatStencil,MatStencil,MPI_Comm,DM*,PetscSF*,PetscSF*);
216fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchSolve(DM);
226fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchGetPatchSize(DM,MatStencil*);
236fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchSetPatchSize(DM,MatStencil);
24bb71ef15SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchGetCommSize(DM,MatStencil*);
25bb71ef15SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchSetCommSize(DM,MatStencil);
266fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchGetCoarse(DM,DM*);
27bb71ef15SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchCreateGrid(MPI_Comm,PetscInt,MatStencil,MatStencil,MatStencil,DM*);
286fbb21edSJed Brown 
293a19ef87SMatthew G Knepley /*
303a19ef87SMatthew G Knepley  * We want each patch to consist of an entire DM, DMDA at first
313a19ef87SMatthew G Knepley  - We cannot afford to store much more than the data from a single patch in memory
323a19ef87SMatthew G Knepley    - No global PetscSection, only PetscLayout
333a19ef87SMatthew G Knepley    - Optional scatters
343a19ef87SMatthew G Knepley    * There is a storable coarse level, which will also be a traditional DM (DMDA here)
353a19ef87SMatthew G Knepley    * The local and global vectors correspond to a ghosted patch
363a19ef87SMatthew G Knepley  * Need a way to activate a patch
373a19ef87SMatthew G Knepley    * Jack in sizes for l/g vectors
383a19ef87SMatthew G Knepley  - Need routine for viewing a full global vector
393a19ef87SMatthew G Knepley  - Jed handles solver
403a19ef87SMatthew G Knepley */
413a19ef87SMatthew G Knepley 
423a19ef87SMatthew G Knepley #endif
43