1 /* "Unintrusive" multi-physics DM */ 2 #if !defined(PETSCDMCOMPOSITE_H) 3 #define PETSCDMCOMPOSITE_H 4 5 #include <petscdm.h> 6 7 PETSC_EXTERN PetscErrorCode DMCompositeCreate(MPI_Comm, DM *); 8 PETSC_EXTERN PetscErrorCode DMCompositeAddDM(DM, DM); 9 PETSC_EXTERN PetscErrorCode DMCompositeSetCoupling(DM, PetscErrorCode (*)(DM, Mat, PetscInt *, PetscInt *, PetscInt, PetscInt, PetscInt, PetscInt)); 10 PETSC_EXTERN PetscErrorCode DMCompositeAddVecScatter(DM, VecScatter); 11 PETSC_EXTERN PetscErrorCode DMCompositeScatter(DM, Vec, ...); 12 PETSC_EXTERN PetscErrorCode DMCompositeScatterArray(DM, Vec, Vec *); 13 PETSC_EXTERN PetscErrorCode DMCompositeGather(DM, InsertMode, Vec, ...); 14 PETSC_EXTERN PetscErrorCode DMCompositeGatherArray(DM, InsertMode, Vec, Vec *); 15 PETSC_EXTERN PetscErrorCode DMCompositeGetNumberDM(DM, PetscInt *); 16 PETSC_EXTERN PetscErrorCode DMCompositeGetAccess(DM, Vec, ...); 17 PETSC_EXTERN PetscErrorCode DMCompositeRestoreAccess(DM, Vec, ...); 18 PETSC_EXTERN PetscErrorCode DMCompositeGetAccessArray(DM, Vec, PetscInt, const PetscInt *, Vec *); 19 PETSC_EXTERN PetscErrorCode DMCompositeRestoreAccessArray(DM, Vec, PetscInt, const PetscInt *, Vec *); 20 PETSC_EXTERN PetscErrorCode DMCompositeGetLocalAccessArray(DM, Vec, PetscInt, const PetscInt *, Vec *); 21 PETSC_EXTERN PetscErrorCode DMCompositeRestoreLocalAccessArray(DM, Vec, PetscInt, const PetscInt *, Vec *); 22 PETSC_EXTERN PetscErrorCode DMCompositeGetLocalVectors(DM, ...); 23 PETSC_EXTERN PetscErrorCode DMCompositeGetEntries(DM, ...); 24 PETSC_EXTERN PetscErrorCode DMCompositeGetEntriesArray(DM, DM[]); 25 PETSC_EXTERN PetscErrorCode DMCompositeRestoreLocalVectors(DM, ...); 26 PETSC_EXTERN PetscErrorCode DMCompositeGetGlobalISs(DM, IS *[]); 27 PETSC_EXTERN PetscErrorCode DMCompositeGetLocalISs(DM, IS **); 28 PETSC_EXTERN PetscErrorCode DMCompositeGetISLocalToGlobalMappings(DM, ISLocalToGlobalMapping **); 29 30 #endif 31