# Delaunay¶

class openpnm.network.Delaunay(*args, **kwargs)[source]

Random network formed by Delaunay tessellation of arbitrary base points

Parameters
• points (array_like or int) – Can either be an N-by-3 array of point coordinates which will be used, or a scalar value indicating the number of points to generate

• shape (array_like) –

The size of the domain. It’s possible to create cubic as well as 2D square domains by changing the `shape` as follows:

[x, y, z]

will produce a normal cubic domain of dimension x, and and z

[x, y, 0]

will produce a 2D square domain of size x by y

• name (str) – An optional name for the object to help identify it. If not given, one will be generated.

Notes

This class always performs the tessellation on the full set of points, then trims any points that lie outside the given domain `shape`.

Examples

```import numpy as np
import openpnm as op
import matplotlib.pyplot as plt

# Supplying custom specified points
pts = np.random.rand(200, 3)
gn = op.network.Delaunay(points=pts, shape=[1, 1, 1])

# Check the number of pores in 'gn'
print(gn.Np)

# Which can be quickly visualized using
fig, ax = plt.subplots(figsize=(5, 5))
op.topotools.plot_connections(network=gn, ax=ax)

plt.show()
```

Upon visualization it can be seen that this network is not very cubic. There are a few ways to combat this, but none will make a truly square domain. Points can be generated that lie outside the domain `shape` and they will be automatically trimmed.

```import numpy as np
import openpnm as op
import matplotlib.pyplot as plt

# Must have more points for same density
pts = np.random.rand(300, 3)*1.2 - 0.1
gn = op.network.Delaunay(points=pts, shape=[1, 1, 1])

# Confirm base points have been trimmed
print(gn.Np < 300)

# And visualizing
fig, ax = plt.subplots(figsize=(5, 5))
op.topotools.plot_connections(network=gn, ax=ax)

plt.show()
```

If a domain with random base points but flat faces is needed use `Voronoi`.

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.

`tri`

A shortcut to get a handle to the Delanuay subnetwork

`vor`

A shortcut to get a handle to the Voronoi subnetwork

Methods

 `add_boundary_pores`([labels, offset]) Add boundary pores to the specified faces of the network. `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) `find_pore_hulls`([pores]) Finds the indices of the Voronoi nodes that define the convex hull around the given Delaunay nodes. `find_throat_facets`([throats]) Finds the indicies of the Voronoi nodes that define the facet or ridge between the Delaunay nodes connected by the given throat. 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. Incidence matrix in the specified sparse format, with pore IDs indicating the non-zero values. 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 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.