Actual source code: network.h
slepc-3.22.1 2024-10-28
1: /*
2: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3: SLEPc - Scalable Library for Eigenvalue Problem Computations
4: Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain
6: This file is part of SLEPc.
7: SLEPc is distributed under a 2-clause BSD license (see LICENSE).
8: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9: */
10: /*
11: Utilities for loading a complex network file and represent it as a graph
12: */
14: #pragma once
16: #include <slepcsys.h>
18: typedef enum { GRAPH_UNDIRECTED,
19: GRAPH_DIRECTED,
20: GRAPH_BIPARTITE } GraphType;
21: SLEPC_EXTERN const char *GraphTypes[];
23: typedef enum { GRAPH_WEIGHT_UNWEIGHTED,
24: GRAPH_WEIGHT_POSITIVE,
25: GRAPH_WEIGHT_POSWEIGHTED,
26: GRAPH_WEIGHT_SIGNED,
27: GRAPH_WEIGHT_MULTISIGNED,
28: GRAPH_WEIGHT_WEIGHTED,
29: GRAPH_WEIGHT_MULTIWEIGHTED,
30: GRAPH_WEIGHT_DYNAMIC,
31: GRAPH_WEIGHT_MULTIPOSWEIGHTED } GraphWeight;
32: SLEPC_EXTERN const char *GraphWeights[];
34: struct _n_Graph {
35: MPI_Comm comm;
36: GraphType type;
37: GraphWeight weight;
38: PetscInt nvertices;
39: PetscInt nedges;
40: Mat adjacency;
41: };
42: typedef struct _n_Graph* Graph;
44: SLEPC_EXTERN PetscErrorCode GraphCreate(MPI_Comm,Graph*);
45: SLEPC_EXTERN PetscErrorCode GraphDestroy(Graph*);
46: SLEPC_EXTERN PetscErrorCode GraphPreload(Graph,char*);
47: SLEPC_EXTERN PetscErrorCode GraphPreallocate(Graph,char*);
48: SLEPC_EXTERN PetscErrorCode GraphLoadUnweighted(Graph,char*);