xref: /petsc/include/petscdmpatch.h (revision a496304597bacff3545e802853d69e8765312868)
13a19ef87SMatthew G Knepley /*
23a19ef87SMatthew G Knepley   DMPatch, for domains covered by sets of patches.
33a19ef87SMatthew G Knepley */
4*a4963045SJacob Faibussowitsch #pragma once
5ac09b921SBarry Smith 
63a19ef87SMatthew G Knepley #include <petscdm.h>
73a19ef87SMatthew G Knepley 
8ac09b921SBarry Smith /* SUBMANSEC = DMPatch */
9ac09b921SBarry Smith 
103a19ef87SMatthew G Knepley /*S
1116a05f60SBarry Smith   DMPATCH - `DM` object that encapsulates a domain divided into many patches
123a19ef87SMatthew G Knepley 
133a19ef87SMatthew G Knepley   Level: intermediate
143a19ef87SMatthew G Knepley 
1587497f52SBarry Smith .seealso: `DM`, `DMPatchCreate()`, `DMPatchSolve()`, `DMPatchZoom()`, `DMPatchGetPatchSize()`, `DMPatchSetPatchSize()`,
1687497f52SBarry Smith           `DMPatchGetCommSize()`, `DMPatchSetCommSize()`, `DMPatchGetCoarse()`, `DMPatchCreateGrid()`
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 */
41