pyLBM.domain.Domain

class pyLBM.domain.Domain(dico=None, geometry=None, stencil=None, space_step=None, verif=True)

Create a domain that defines the fluid part and the solid part and computes the distances between these two states.

Parameters:

dico : a dictionary that contains the following key:value

  • box : a dictionary that defines the computational box
  • elements : the list of the elements (available elements are given in the module elements)
  • space_step : the spatial step
  • schemes : a list of dictionaries, each of them defining a elementary Scheme

Warning

the sizes of the box must be a multiple of the space step dx

Notes

The dictionary that defines the box should contains the following key:value

  • x : a list of the bounds in the first direction
  • y : a list of the bounds in the second direction (optional)
  • z : a list of the bounds in the third direction (optional)
  • label : an integer or a list of integers (length twice the number of dimensions) used to label each edge (optional)

See Geometry for more details.

If the geometry and/or the stencil were previously generated, it can be used directly as following

>>> Domain(dico, geometry = geom, stencil = sten)

where geom is an object of the class Geometry and sten an object of the class Stencil In that case, dico does not need to contain the informations for generate the geometry and/or the stencil

In 1D, distance[q, i] is the distance between the point x[i] and the border in the direction of the qth velocity.

In 2D, distance[q, j, i] is the distance between the point (x[i], y[j]) and the border in the direction of qth velocity

In 3D, distance[q, k, j, i] is the distance between the point (x[i], y[j], z[k]) and the border in the direction of qth velocity

In 1D, flag[q, i] is the flag of the border reached by the point x[i] in the direction of the qth velocity

In 2D, flag[q, j, i] is the flag of the border reached by the point (x[i], y[j]) in the direction of qth velocity

In 2D, flag[q, k, j, i] is the flag of the border reached by the point (x[i], y[j], z[k]) in the direction of qth velocity

Examples

see demo/examples/domain/

Attributes

dim (int) number of spatial dimensions (example: 1, 2, or 3)
globalbounds (numpy array) the bounds of the box in each spatial direction
bounds (numpy array) the local bounds of the process in each spatial direction
dx (double) space step (example: 0.1, 1.e-3)
type (string) type of data (example: ‘float64’)
stencil : the stencil of the velocities (object of the class Stencil)
global_size (list of int) number of points in each direction
extent (list of int) number of points to add on each side (max velocities)
coords (numpy array) coordinates of the domain
x (numpy array) first coordinate of the domain
y (numpy array) second coordinate of the domain (None if dim<2)
z (numpy array) third coordinate of the domain (None if dim<3)
in_or_out (numpy array) defines the fluid and the solid part (fluid: value=valin, solid: value=valout)
distance (numpy array) defines the distances to the borders. The distance is scaled by dx and is not equal to valin only for the points that reach the border with the specified velocity.
flag (numpy array) NumPy array that defines the flag of the border reached with the specified velocity

Methods

visualize : Visualize the domain by creating a plot