1*b2930b41SShri Abhyankar /* 2*b2930b41SShri Abhyankar DMNetwork, for parallel unstructured network problems. 3*b2930b41SShri Abhyankar */ 4*b2930b41SShri Abhyankar #if !defined(__PETSCDMNETWORK_H) 5*b2930b41SShri Abhyankar #define __PETSCDMNETWORK_H 6*b2930b41SShri Abhyankar 7*b2930b41SShri Abhyankar #include <petscdm.h> 8*b2930b41SShri Abhyankar 9*b2930b41SShri Abhyankar /* 10*b2930b41SShri Abhyankar DMNetworkComponentGenericDataType - This is the data type that PETSc uses for storing the component data. 11*b2930b41SShri Abhyankar For compatibility with PetscSF, which is used for data distribution, its declared as PetscInt. 12*b2930b41SShri Abhyankar To get the user-specific data type, one needs to cast it to the appropriate type. 13*b2930b41SShri Abhyankar */ 14*b2930b41SShri Abhyankar typedef PetscInt DMNetworkComponentGenericDataType; 15*b2930b41SShri Abhyankar 16*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkCreate(MPI_Comm, DM*); 17*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkSetSizes(DM, PetscInt, PetscInt, PetscInt, PetscInt); 18*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkSetEdgeList(DM, int[]); 19*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkLayoutSetUp(DM); 20*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkRegisterComponent(DM, const char*, PetscInt, PetscInt*); 21*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetVertexRange(DM, PetscInt*, PetscInt*); 22*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetEdgeRange(DM, PetscInt*, PetscInt*); 23*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkAddComponent(DM, PetscInt, PetscInt, void*); 24*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetNumComponents(DM, PetscInt, PetscInt*); 25*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetComponentTypeOffset(DM, PetscInt, PetscInt, PetscInt*, PetscInt*); 26*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetVariableOffset(DM, PetscInt, PetscInt*); 27*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetVariableGlobalOffset(DM, PetscInt, PetscInt*); 28*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkAddNumVariables(DM, PetscInt, PetscInt); 29*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkSetNumVariables(DM, PetscInt, PetscInt); 30*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetComponentDataArray(DM, DMNetworkComponentGenericDataType**); 31*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkDistribute(DM, const char[], PetscInt,DM*); 32*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetSupportingEdges(DM, PetscInt, PetscInt*, const PetscInt*[]); 33*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkGetConnectedNodes(DM, PetscInt, const PetscInt*[]); 34*b2930b41SShri Abhyankar PETSC_EXTERN PetscErrorCode DMNetworkIsGhostVertex(DM, PetscInt, PetscBool*); 35*b2930b41SShri Abhyankar 36*b2930b41SShri Abhyankar 37*b2930b41SShri Abhyankar #endif 38