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