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