xref: /petsc/include/petscdmpatch.h (revision 87497f523770ea28bdc907071c6e8146b51bca00)
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
6ac09b921SBarry Smith 
73a19ef87SMatthew G Knepley #include <petscdm.h>
83a19ef87SMatthew G Knepley 
9ac09b921SBarry Smith /* SUBMANSEC = DMPatch */
10ac09b921SBarry 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 
16*87497f52SBarry Smith .seealso: `DM`, `DMPatchCreate()`, `DMPatchSolve()`, `DMPatchZoom()`, `DMPatchGetPatchSize()`, `DMPatchSetPatchSize()`,
17*87497f52SBarry Smith           `DMPatchGetCommSize()`, `DMPatchSetCommSize()`, `DMPatchGetCoarse()`, `DMPatchCreateGrid()`
183a19ef87SMatthew G Knepley S*/
193a19ef87SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchCreate(MPI_Comm, DM*);
203a19ef87SMatthew G Knepley 
2160c22052SBarry Smith PETSC_EXTERN PetscErrorCode DMPatchZoom(DM,MatStencil,MatStencil,MPI_Comm,DM*,PetscSF*,PetscSF*);
226fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchSolve(DM);
236fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchGetPatchSize(DM,MatStencil*);
246fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchSetPatchSize(DM,MatStencil);
25bb71ef15SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchGetCommSize(DM,MatStencil*);
26bb71ef15SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchSetCommSize(DM,MatStencil);
276fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchGetCoarse(DM,DM*);
28bb71ef15SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchCreateGrid(MPI_Comm,PetscInt,MatStencil,MatStencil,MatStencil,DM*);
296fbb21edSJed Brown 
303a19ef87SMatthew G Knepley /*
313a19ef87SMatthew G Knepley  * We want each patch to consist of an entire DM, DMDA at first
323a19ef87SMatthew G Knepley  - We cannot afford to store much more than the data from a single patch in memory
333a19ef87SMatthew G Knepley    - No global PetscSection, only PetscLayout
343a19ef87SMatthew G Knepley    - Optional scatters
353a19ef87SMatthew G Knepley    * There is a storable coarse level, which will also be a traditional DM (DMDA here)
363a19ef87SMatthew G Knepley    * The local and global vectors correspond to a ghosted patch
373a19ef87SMatthew G Knepley  * Need a way to activate a patch
383a19ef87SMatthew G Knepley    * Jack in sizes for l/g vectors
393a19ef87SMatthew G Knepley  - Need routine for viewing a full global vector
403a19ef87SMatthew G Knepley  - Jed handles solver
413a19ef87SMatthew G Knepley */
423a19ef87SMatthew G Knepley 
433a19ef87SMatthew G Knepley #endif
44