Source code for imposed_conditions

from base_types import *


[docs] class periodic_box: """Defines 3D-periodic space and its deformation rate""" shape: Matrix3 = Matrix3.identity """**[mandatory]** defines the shape of the periodic pattern, :math:`H`, [:math:`L`]""" velocity_gradient: Matrix3 = Matrix3.zero """**[mandatory]** velocity gradient, :math:`D`, [:math:`L`]""" implementations: list = ['YADE','LAMMPS']
[docs] class periodic_walls: """Defines two parrallel planes enclosing a periodic space""" normal: Vector3 = None """**[mandatory]** the direction normal to the planes""" distance_left: float = 0 """**[mandatory]** the distance of the wall from the origin against the direction of the normal""" distance_right: float = 0 """**[mandatory]** the distance of the wall from the origin in the direction of the normal""" implementations: list = ['MercuryDPM']
[docs] class insertion: """Defines the general variables needed for all insertion boundaries""" position: Vector3 """**[mandatory]** the position of the insertion region""" orientation: Quaternion """**[mandatory]** the orientation of the insertion region""" initial_volume: float """**[mandatory]** volume of particles that get's inserted initially, :math:`V`, [:math:`L^3`]""" volume_flow_rate: float """**[mandatory]** volume of particles that get's inserted per time unit, :math:`q`, [:math:`L^3/T`]""" velocity_min: Vector3 """**[mandatory]** particles get a random initial velocity, uniformly distributed between velocity_min and velocity_max, :math:`v_\\mathrm{min}`, [:math:`L/T`]""" velocity_max: Vector3 """**[mandatory]** particles get a random initial velocity, uniformly distributed between velocity_min and velocity_max, :math:`v_\\mathrm{min}`, [:math:`L/T`]""" particle_size_distribution: Vector3 """**[mandatory]** particle size is distributed according to a certain volumetric particle size distribution, [:math:`-`]""" material: int """**[mandatory]** index indicating which material properties are given to the inserted particles, [:math:`-`]"""
[docs] class cube_insertion(insertion): """Defines a cuboid shaped insertion region""" extent: Vector3 """**[mandatory]** the dimension of the box in the unrotated frame. The box spans from position-extent/2 to position+extent/2, [:math:`L,\\,L,\\,L`]"""
[docs] class cube_deletion: """Defines a cuboid shaped deletion region. All particles entering this region will be deleted""" position: Vector3 """**[mandatory]** the position of the deletion region""" orientation: Quaternion """**[mandatory]** the orientation of the deletion region""" extent: Vector3 """**[mandatory]** the dimension of the box in the unrotated frame. The box spans from position-extent/2 to position+extent/2, [:math:`L,\\,L,\\,L`]"""
[docs] class stress_control_boundary: """Defines a boundary or set of boundaries that may include stress/strain servo-control algorithms""" boundary_id: int = None """**[mandatory]** identifies the boundary to be controlled, :math:`b_{id}`, [:math:`-`]""" boundary_activate: bool = None """**[mandatory]** if True, this boundary moves according to the target value (stress or strain rate), :math:`A` [:math:`-`]""" goal: float = None """**[mandatory]** defines the desired/required stress, :math:`\sigma_{req}`, [:math:`FL^{-2}`]""" current_stress: float = None """**[mandatory]** defines the current/measured stress, :math:`\sigma_{curr}`, [:math:`FL^{-2}`]""" max_strain_rate: float = None """**[mandatory]** defines the maximum strain rate allowed for stress/strain control, :math:`\dot{\epsilon}`, [:math:`T^{-1}`]""" strain_rate: float = None """**[mandatory]** defines the current strain rate allowed for stress/strain control, :math:`\dot{\epsilon}_{curr}`. This required for re-start files, [:math:`T^{-1}`]""" bit_mask: int = None """**[mandatory]** determines whether the imposed goal values are stresses (0) or strains (1). Different values for boundary pairs (or sets), :math:`b`, [:math:`-`]""" tolerance: float = None """**[optional]** if servo-control is used for stress, a tolerance for comparison may be provided, :math:`\sigma_{tol}`, [:math:`-`]""" gain: float = None """**[optional]** if servo-control is used for stress, a gain parameter (or more) may be provide to modify strain rates, :math:`g`, [:math:`-`]""" interval: int = None """**[optional]** if servo-control is used for stress, an iteration interval may be used to verify stress and/or strain rates, :math:`\Delta_{check}`, [:math:`-`]""" implementations: list = ['YADE','LAMMPS']