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