xref: /petsc/include/petscdmpatch.h (revision 6fbb21edb1ba065553b2c88d6e17c8763aba8c5e)
13a19ef87SMatthew G Knepley /*
23a19ef87SMatthew G Knepley   DMPatch, for domains covered by sets of patches.
33a19ef87SMatthew G Knepley */
43a19ef87SMatthew G Knepley #if !defined(__PETSCDMPATCH_H)
53a19ef87SMatthew G Knepley #define __PETSCDMPATCH_H
63a19ef87SMatthew G Knepley #include <petscdm.h>
73a19ef87SMatthew G Knepley 
83a19ef87SMatthew G Knepley /*S
93a19ef87SMatthew G Knepley   DMPATCH - DM object that encapsulates a domain divided into many patches
103a19ef87SMatthew G Knepley 
113a19ef87SMatthew G Knepley   Level: intermediate
123a19ef87SMatthew G Knepley 
133a19ef87SMatthew G Knepley   Concepts: grids, grid refinement
143a19ef87SMatthew G Knepley 
153a19ef87SMatthew G Knepley .seealso:  DM, DMPatchCreate()
163a19ef87SMatthew G Knepley S*/
173a19ef87SMatthew G Knepley PETSC_EXTERN PetscErrorCode DMPatchCreate(MPI_Comm, DM*);
183a19ef87SMatthew G Knepley 
19*6fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchZoom(DM,MatStencil,MatStencil,MPI_Comm,DM*,PetscSF*,PetscSF*);
20*6fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchSolve(DM);
21*6fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchGetPatchSize(DM,MatStencil*);
22*6fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchSetPatchSize(DM,MatStencil);
23*6fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchGetCoarse(DM,DM*);
24*6fbb21edSJed Brown PETSC_EXTERN PetscErrorCode DMPatchCreateGrid(MPI_Comm,PetscInt,MatStencil,MatStencil,DM*);
25*6fbb21edSJed Brown 
263a19ef87SMatthew G Knepley /*
273a19ef87SMatthew G Knepley  * We want each patch to consist of an entire DM, DMDA at first
283a19ef87SMatthew G Knepley  - We cannot afford to store much more than the data from a single patch in memory
293a19ef87SMatthew G Knepley    - No global PetscSection, only PetscLayout
303a19ef87SMatthew G Knepley    - Optional scatters
313a19ef87SMatthew G Knepley    * There is a storable coarse level, which will also be a traditional DM (DMDA here)
323a19ef87SMatthew G Knepley    * The local and global vectors correspond to a ghosted patch
333a19ef87SMatthew G Knepley  * Need a way to activate a patch
343a19ef87SMatthew G Knepley    * Jack in sizes for l/g vectors
353a19ef87SMatthew G Knepley  - Need routine for viewing a full global vector
363a19ef87SMatthew G Knepley  - Jed handles solver
373a19ef87SMatthew G Knepley */
383a19ef87SMatthew G Knepley 
393a19ef87SMatthew G Knepley #endif
40