GenericNetwork¶
- class openpnm.network.GenericNetwork(*args, **kwargs)[source]¶
This generic class contains the main functionality used by all networks.
- Parameters
settings (dataclass-like or dict, optional) – User defined settings for the object to override defaults. Can be a dataclass-type object with settings stored as attributes or a python dicionary of key-value pairs. Settings are stored in the
settings
attribute of the object.name (string, optional) – A unique name to assign to the object for easier identification. If not given one will be generated.
coords (array_like (optional)) – An Np-by-3 array of [x, y, z] coordinates for each pore.
conns (array_like (optional)) – An Nt-by-2 array of [head, tail] connections between pores.
Examples
>>> import openpnm as op
Create some pore coordinates and connections manually and assign to a GenericNetwork instance. Consider a linear network of 4 pores and 3 throats:
0 ―― 1 ―― 3 ―― 2
>>> coords = [[0, 0, 0], [1, 0, 0], [2, 0, 0], [3, 0, 0]] >>> conns = [[0, 1], [1, 3], [2, 3]] >>> pn = op.network.GenericNetwork(conns=conns, coords=coords)
Networks have two required properties: ‘pore.coords’ and ‘throat.conns’. These arrays indicate the spatial location of each pore, and which pores are connected to which. Without these the network object cannot function.
>>> print(pn.props()) ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― 1 : pore.coords 2 : throat.conns ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
The
GenericNetwork
class has several methods for querying the topology.>>> Ps = pn.find_neighbor_pores(pores=1) >>> print(Ps) [0 3] >>> Ts = pn.find_neighbor_throats(pores=[0, 1]) >>> print(Ts) [0 1] >>> print(pn.num_neighbors(2)) [1]
All of the topological queries are accomplished by inspecting the adjacency and incidence matrices. They are created on demand, and are stored for future use to save construction time.
- Attributes
Np
A shortcut to query the total number of pores on the object
Nt
A shortcut to query the total number of throats on the object
Ps
A shortcut to get a list of all pores on the object
Ts
A shortcut to get a list of all throats on the object
am
Adjacency matrix in the specified sparse format, with throat IDs indicating the non-zero values.
conns
Returns the connectivity matrix of the network.
coords
Returns the list of pore coordinates of the network.
im
Incidence matrix in the specified sparse format, with pore IDs indicating the non-zero values.
models
List of available models on the objects
name
String representing the name of the object
network
A shortcut to get a handle to the associated network.
project
A shortcut to get a handle to the associated project.
settings
Dictionary containing object settings.
Methods
add_model
(propname, model[, regen_mode])Adds a new model to the models dictionary.
This method check the network topological health.
create_adjacency_matrix
([weights, fmt, ...])Generates a weighted adjacency matrix in the desired sparse format
create_incidence_matrix
([weights, fmt, ...])Creates a weighted incidence matrix in the desired sparse format
filter_by_label
([pores, throats, labels, mode])Returns which of the supplied pores (or throats) has the specified label(s)
find_connected_pores
([throats, flatten, mode])Return a list of pores connected to the given list of throats
find_connecting_throat
(P1, P2)Return the throat index connecting pairs of pores.
find_nearby_pores
(pores, r[, flatten, ...])Find all pores within a given radial distance of the input pore(s) regardless of whether or not they are toplogically connected.
find_neighbor_pores
(pores[, mode, flatten, ...])Returns a list of pores that are direct neighbors to the given pore(s)
find_neighbor_throats
(pores[, mode, flatten])Returns a list of throats neighboring the given pore(s)
get_adjacency_matrix
([fmt])Adjacency matrix in the specified sparse format, with throat IDs indicating the non-zero values.
get_conduit_data
(poreprop[, throatprop, mode])Combines requested data into a single 3-column array.
get_incidence_matrix
([fmt])Incidence matrix in the specified sparse format, with pore IDs indicating the non-zero values.
interleave_data
(prop)Retrieves requested property from associated objects, to produce a full Np or Nt length array.
interpolate_data
(propname[, mode])Determines a pore (or throat) property as the average of it's neighboring throats (or pores)
labels
([pores, throats, element, mode])Returns a list of labels present on the object
num_neighbors
(pores[, mode, flatten])Returns the number of neigbhoring pores for each given input pore
num_pores
([labels, mode])Returns the number of pores of the specified labels
num_throats
([labels, mode])Return the number of throats of the specified labels
params
()Return parameter names and values in a dictionary
pores
([labels, mode, asmask, to_global])Returns pore indicies where given labels exist, according to the logic specified by the
mode
argument.props
([element, mode, deep])Returns a list containing the names of all defined pore or throat properties.
regenerate_models
([propnames, exclude, deep])Re-runs the specified model or models.
remove_model
([propname, mode])Removes model and data from object.
set_label
(label[, pores, throats, mode])Creates or updates a label array
show_hist
([props, bins, fontsize])Shows a quick plot of key property distributions.
throats
([labels, mode, asmask, to_global])Returns throat locations where given labels exist, according to the logic specified by the
mode
argument.to_indices
(mask)Converts a boolean mask to a list of pore or throat indices.
to_mask
([pores, throats])Convert a list of pore or throat indices into a boolean mask of the correct length.