Simulation Domains¶
Overview
Class to manage the simulation domain managed by the Builder class. |
|
provides a class for building lattices of |
|
Creates an empty domain. |
Details
-
class
hoobas.SimulationDomain.Domain(units=None)[source]¶ Class to manage the simulation domain managed by the Builder class. Handles box coordinates. This should not be called directly but inherited
- Args:
units (Units.SimulationUnits): units used for dimensions
- Attributes:
table: stores a list of tuples (position, CompositeObject)
-
add_random_positions(composite, number=0, size=None)[source]¶ Adds composite objects at random positions inside the volume
- Parameters
composite (Composite.CompositeObject) – object to add inside the volume
number (int) – number of objects to add
size (float or None) – excluded volume of the appended object. None avoids calculation of excluded volumes
- Return type
None- Returns
None
-
change_units(new_units)[source]¶ changes the unit system
- Parameters
new_units (Units.SimulationUnits) – units to change this object to
- Return type
None- Returns
None
-
property
direct_lattice_vectors¶ returns crystal lattice vectors as a tuple :return: crystal vectors :rtype: tuple(np.ndarray)
-
static
parse_input_lattice(lattice)[source]¶ try to parse the supplied lattice, which can be a constant for cubic lattices, three numbers for orthorhombic or nine for other symmetries
- Parameters
lattice (np.ndarray, float, list[float] or list[list[float]]) – lattice to parse
- Returns
parsed lattice
- Return type
np.ndarray
-
class
hoobas.SimulationDomain.EmptyBox(system_size, units=None)[source]¶ Creates an empty domain. The system_size used defines symmetry. A single values defines a cube, a 1x3 iterable defines an orthorhombic box while a 3x3 iterable defines a triclinic symmetry.
- Args:
system_size (float, 1x3 iterable, 3x3 iterable): defines the box dimensions
-
class
hoobas.SimulationDomain.EmptyCube(size, units=None)[source]¶ Creates an empty cube
- Args:
size: cube side length
-
class
hoobas.SimulationDomain.EmptyHexagonalPrism(a, c, units=None)[source]¶ Creates an empty hexagonal prism, aligned along z
- Args:
a: length of the hexagon side c: height of the prism
-
class
hoobas.SimulationDomain.Lattice(lattice, units=None)[source]¶ provides a class for building lattices of
hoobas.Composite.CompositeObject. Class provides methods to add particles inside the unit cell by use of an offset, a rotation method and a cut method- Args:
lattice (float, 1 x 3 iterable, 3 x 3 iterable): crystal unit cell
-
add_layer(hkl, composite, displacement=None)[source]¶ Adds a 2D composite object laying on a crystal plane
- Parameters
hkl (list[int]) – miller indices of the plane
composite (Layers.Multilayer) – 2D object to add
displacement (float) – fractional distance between the origin and the plane
- Return type
None- Returns
None
-
add_line(hkl, composite, displacement=None)[source]¶ Adds a 1D composite object laying on a crystal direction
- Parameters
hkl (list[int]) – crystal direction
composite (Layers.LineLayer) – 1D object to add
displacement (list[float]) – displacement to apply on the line object
- Return type
None- Returns
None
-
add_particles_on_lattice(fractional_coordinates, composite, wrap=True, size=None)[source]¶ Adds particles at given lattice points. Objects will be built in every unit cell
- Parameters
fractional_coordinates (list(float)) – iterable describing the fractional crystal coordinates of the object to add
composite (Composite.CompositeObject) – object to add in every unit cell given by the coordinates
wrap (bool) – whether fractional coordinates are wrapped into the first unit cell
size (float or None) – excluded volume size if other objects are added
- Return type
None- Returns
None
-
change_units(new_units)[source]¶ changes the unit system
- Parameters
new_units (Units.SimulationUnits) – units to change this object to
- Return type
None- Returns
None
-
cut_to_dimensions(bounds)[source]¶ rotates the crystal system so that the surface plane face supplied faces the Z direction. The lattice is cut to match the integer dimensions supplied in bounds.
- Parameters
bounds (list[int]) – bounds of the cell
- Return type
None- Returns
none
-
static
d_hkl(lattice, hkl)[source]¶ Calculates the distance between planes
- Parameters
lattice (np.ndarray) – crystal lattice
hkl (list[int]) – miller indices defining the plane
- Returns
distance
- Return type
float
-
generate_crystal_slab(hkl, inplane_basis, bounds, make_at=None)[source]¶ rotates the crystal system so that the surface plane face supplied faces the Z direction. The new crystal axes are generally trigonal in nature and the crystallinity in Z is not guaranteed unless the rotated axes point along Z. Decomposition in XY plane is made along plane_vectors which are defined as integer sums of b1, b2, b3.
- Parameters
hkl (list[int]) – surface plane to expose, note that this is reduced so that hlk=[0,0,2] is equivalent to hkl=[0,0,1]
inplane_basis (list[list[int]]) – lattice vectors to use as basis in XY plane. For (111), a good choice is (101) and (110)
bounds (list[int]) – lattice size in terms of inplane_basis + dhkl
make_at (int or list[float] or None) – Specify where to cut the plane, either lattice point, arbitrary point or origin
- Return type
None- Returns
None