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