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

x x component of the coordinates in the interior domain.
y y component of the coordinates in the interior domain.
z z component of the coordinates in the interior domain.
x_halo x component of the coordinates of the whole domain (halo points included).
y_halo y component of the coordinates of the whole domain (halo points included).
z_halo z component of the coordinates of the whole domain (halo points included).
shape_halo shape of the whole domain with the halo points.
shape_in shape of the interior domain.
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
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
valin (int) value in the fluid domain
valout (int) value in the fluid domain

Methods

check_dictionary(dico) Check the validity of the dictionnary which define the domain.
construct_mpi_topology(dico) Create the mpi topology
create_coords() Create the coordinates of the interior domain and the whole domain with halo points.
get_bounds() Return the coordinates of the bottom right and upper left corner of the interior domain.
get_bounds_halo() Return the coordinates of the bottom right and upper left corner of the whole domain with halo points.
list_of_labels() Get the list of all the labels used in the geometry.
visualize([viewer_app, view_distance, ...]) Visualize the domain by creating a plot.