pydfnworks: dfnGraph
DFN Class functions used in graph analysis and pipe-network simulations
General Graph Functions
- add_fracture_source(self, G, source)[source]
- Parameters
G (NetworkX Graph) – NetworkX Graph based on a DFN
source_list (list) – list of integers corresponding to fracture numbers
remove_old_source (bool) – remove old source from the graph
- Returns
G
- Return type
NetworkX Graph
Notes
bipartite graph not supported
- add_fracture_target(self, G, target)[source]
- Parameters
G (NetworkX Graph) – NetworkX Graph based on a DFN
target (list) – list of integers corresponding to fracture numbers
- Returns
G
- Return type
NetworkX Graph
Notes
bipartite graph not supported
- create_graph(self, graph_type, inflow, outflow)[source]
Header function to create a graph based on a DFN. Particular algorithms are in files.
- Parameters
self (object) – DFN Class object
graph_type (string) – Option for what graph representation of the DFN is requested. Currently supported are fracture, intersection, and bipartitie
inflow (string) – Name of inflow boundary (connect to source)
outflow (string) – Name of outflow boundary (connect to target)
- Returns
G – Graph based on DFN
- Return type
NetworkX Graph
Notes
- dump_fractures(self, G, filename)[source]
Write fracture numbers assocaited with the graph G out into an ASCII file inputs
- Parameters
self (object) – DFN Class
G (NetworkX graph) – NetworkX Graph based on the DFN
filename (string) – Output filename
Notes
- dump_json_graph(self, G, name)[source]
Write graph out in json format
- Parameters
self (object) – DFN Class
G (networkX graph) – NetworkX Graph based on the DFN
name (string) – Name of output file (no .json)
Notes
- load_json_graph(self, name)[source]
Read in graph from json format
- Parameters
self (object) – DFN Class
name (string) – Name of input file (no .json)
- Returns
G – NetworkX Graph based on the DFN
- Return type
networkX graph
- plot_graph(self, G, source='s', target='t', output_name='dfn_graph')[source]
Create a png of a graph with source nodes colored blue, target red, and all over nodes black
- Parameters
G (NetworkX graph) – NetworkX Graph based on the DFN
source (node) – Starting node
target (node) – Ending node
output_name (string) – Name of output file (no .png)
Notes
Image is written to output_name.png
- greedy_edge_disjoint(self, G, source='s', target='t', weight='None', k='')[source]
Greedy Algorithm to find edge disjoint subgraph from s to t. See Hyman et al. 2018 SIAM MMS
- Parameters
self (object) – DFN Class Object
G (NetworkX graph) – NetworkX Graph based on the DFN
source (node) – Starting node
target (node) – Ending node
weight (string) – Edge weight used for finding the shortest path
k (int) – Number of edge disjoint paths requested
- Returns
H – Subgraph of G made up of the k shortest of all edge-disjoint paths from source to target
- Return type
NetworkX Graph
Notes
Edge weights must be numerical and non-negative.
See Hyman et al. 2018 “Identifying Backbones in Three-Dimensional Discrete Fracture Networks: A Bipartite Graph-Based Approach” SIAM Multiscale Modeling and Simulation for more details
- k_shortest_paths_backbone(self, G, k, source='s', target='t', weight=None)[source]
Returns the subgraph made up of the k shortest paths in a graph
- Parameters
G (NetworkX Graph) – NetworkX Graph based on a DFN
k (int) – Number of requested paths
source (node) – Starting node
target (node) – Ending node
weight (string) – Edge weight used for finding the shortest path
- Returns
H – Subgraph of G made up of the k shortest paths
- Return type
NetworkX Graph
Notes
See Hyman et al. 2017 “Predictions of first passage times in sparse discrete fracture networks using graph-based reductions” Physical Review E for more details
Graph-Based Flow and Transport
- run_graph_flow(self, inflow, outflow, pressure_in, pressure_out, fluid_viscosity=0.00089, phi=1, G=None)[source]
Solve for pressure driven steady state flow on a graph representation of the DFN.
- Parameters
self (object) – DFN Class
inflow (string) – name of file containing list of DFN fractures on inflow boundary
outflow (string) – name of file containing list of DFN fractures on outflow boundary
pressure_in (double) – Value of pressure at inlet [Pa]
pressure_out (double) – Value of pressure at outlet [Pa]
fluid_viscosity (double) – optional, default is for water. [Pa*s]
phi (double) – Fracture porosity, default is 1 [-]
G (Input Graph) –
- Returns
Gtilde – Gtilde is a directed acyclic graph with vertex pressures, fluxes, velocities, volumetric flow rates, and travel times
- Return type
NetworkX graph
- run_graph_transport(self, G, nparticles, partime_file, frac_id_file=None, format='hdf5', initial_positions='uniform', dump_traj=False, tdrw_flag=False, matrix_porosity=None, matrix_diffusivity=None, fracture_spacing=None, control_planes=None, direction=None, cp_filename='control_planes')[source]
Run particle tracking on the given NetworkX graph
- Parameters
self (object) – DFN Class
G (NetworkX graph) – obtained from graph_flow
nparticles (int) – number of particles
initial_positions (str) – distribution of initial conditions. options are uniform and flux (flux-weighted)
partime_file (string) – name of file to which the total travel times and lengths will be written for each particle
frac_id_file (string) – name of file to which detailed information of each particle’s travel will be written
dump_flag (bool) – on/off to write full trajectory information to file
tdrw_flag (Bool) – if False, matrix_porosity and matrix_diffusivity are ignored
matrix_porosity (float) – Matrix Porosity used in TDRW
matrix_diffusivity (float) – Matrix Diffusivity used in TDRW (SI units m^2/s)
fracture_spaceing (float) – finite block size for limited matrix diffusion
control_planes (list of floats) – list of control plane locations to dump travel times. Only in primary direction of flow.
direction (primary) – string indicating primary direction of flow
- Returns
particles – list of particles objects
- Return type
list
Notes
Information on individual functions is found therein