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 DMCompositeSetContext(DM,void*); 13 extern PetscErrorCode DMCompositeGetContext(DM,void**); 14 extern PetscErrorCode DMCompositeAddVecScatter(DM,VecScatter); 15 extern PetscErrorCode DMCompositeScatter(DM,Vec,...); 16 extern PetscErrorCode DMCompositeGather(DM,Vec,InsertMode,...); 17 extern PetscErrorCode DMCompositeGetAccess(DM,Vec,...); 18 extern PetscErrorCode DMCompositeGetNumberDM(DM,PetscInt*); 19 extern PetscErrorCode DMCompositeRestoreAccess(DM,Vec,...); 20 extern PetscErrorCode DMCompositeGetLocalVectors(DM,...); 21 extern PetscErrorCode DMCompositeGetEntries(DM,...); 22 extern PetscErrorCode DMCompositeRestoreLocalVectors(DM,...); 23 extern PetscErrorCode DMCompositeGetGlobalISs(DM,IS*[]); 24 extern PetscErrorCode DMCompositeGetLocalISs(DM,IS**); 25 extern PetscErrorCode DMCompositeGetISLocalToGlobalMappings(DM,ISLocalToGlobalMapping**); 26 27 PETSC_EXTERN_CXX_END 28 #endif 29