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 DMCompositeAddArray(DM,PetscMPIInt,PetscInt); 10 extern PetscErrorCode DMCompositeAddDM(DM,DM); 11 extern PetscErrorCode DMCompositeSetCoupling(DM,PetscErrorCode (*)(DM,Mat,PetscInt*,PetscInt*,PetscInt,PetscInt,PetscInt,PetscInt)); 12 extern PetscErrorCode DMCompositeAddVecScatter(DM,VecScatter); 13 extern PetscErrorCode DMCompositeScatter(DM,Vec,...); 14 extern PetscErrorCode DMCompositeGather(DM,Vec,InsertMode,...); 15 extern PetscErrorCode DMCompositeGetAccess(DM,Vec,...); 16 extern PetscErrorCode DMCompositeGetNumberDM(DM,PetscInt*); 17 extern PetscErrorCode DMCompositeRestoreAccess(DM,Vec,...); 18 extern PetscErrorCode DMCompositeGetLocalVectors(DM,...); 19 extern PetscErrorCode DMCompositeGetEntries(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