from base_types import *
[docs]
class base_material:
"""General properties shared by all materials."""
id: int = None
"""**[mandatory]** material id, :math:`id`, [:math:`-`]"""
density: float = None
"""**[mandatory]** particle density, :math:`\\rho`, [:math:`ML^{-3}`]"""
[docs]
class linear_elastic(base_material):
"""Material with linear-elastic behaviour."""
normal_stiffness: float = None
"""**[mandatory]** normal stiffness, :math:`K_n`, [:math:`FL^{-1}`]"""
shear_stiffness: float = None
"""**[mandatory]** shear stiffness, :math:`K_s`, [:math:`FL^{-1}`]"""
[docs]
class hertz_elastic(base_material):
"""Material with Hertzian-elastic behaviour."""
young_modulus: float = None
"""**[mandatory]** Young's modulus, :math:`E`, [:math:`FL^{-2}`]"""
poisson_ratio: float = None
"""**[mandatory]** Poisson's ratio, :math:`\\nu`, [:math:`-`]"""
[docs]
class linear_visco_elastic(linear_elastic):
"""Material with linear visco-elastic damping behaviour."""
normal_damping: float = None
"""**[mandatory]** normal damping coefficient, :math:`c_n`, [:math:`MT^{-1}`]"""
[docs]
class linear_visco_elastic_constant_cor(linear_elastic):
"""Material with linear visco-elastic damping behaviour and mass-independent coefficient of restitution."""
normal_damping_ratio: float = None
"""**[mandatory]** normal damping coefficient, :math:`\\beta_n` [:math:`-`]"""
[docs]
class linear_visco_elastic_variable_cor(linear_elastic):
"""Material with linear visco-elastic damping behaviour and velocity-dependent coefficient of restitution."""
relaxation_time: float = None
"""**[mandatory]** relaxation time, :math:`A`, [:math:`T`]"""
[docs]
class frictional_3D:
"""Adds sliding friction behaviour to any material."""
shear_friction: float = None
"""**[mandatory]** sliding-friction coefficient, :math:`\\mu_s`, [:math:`-`]"""
shear_damping: float = None
"""**[mandatory]** shear damping coefficient, :math:`c_s`, [:math:`MT^{-1}`]"""
[docs]
class frictional_6D(frictional_3D):
"""Adds sliding, rolling and torsional friction to any material."""
model: str = "frictional_6D"
"""Friction model."""
rolling_friction: float = None
"""**[mandatory]** rolling-friction coefficient, :math:`\\mu_r`, [:math:`-`]"""
rolling_damping: float = None
"""**[mandatory]** rolling damping coefficient, :math:`c_r`, [:math:`MT^{-1}`]"""
torsion_friction: float = None
"""**[mandatory]** torsional-friction coefficient, :math:`\\mu_t`, [:math:`-`]"""
torsion_damping: float = None
"""**[mandatory]** torsional damping coefficient, :math:`c_t`, [:math:`MT^{-1}`]"""
[docs]
class base_thermal(linear_elastic):
"""Material with linear-elastic and thermal behaviour."""
thermal_conductivity: float = None
"""**[mandatory]** thermal conductivity, :math:`k`, [:math:`E/(LT\\theta)`]"""
thermal_capacity: float = None
"""**[mandatory]** thermal capacity, :math:`c_p`, [:math:`E/\\theta`]"""
initial_temperature: float = None
"""**[mandatory]** initial temperature, :math:`T_0`, [:math:`\\theta`]"""
min_temp: float = None
"""*[optional]* minimum temperature, :math:`T_\\mathrm{min}`, [:math:`\\theta`]"""
max_temp: float = None
"""*[optional]* maximum temperature, :math:`T_\\mathrm{max}`, [:math:`\\theta`]"""
[docs]
class thermal_blaze(base_thermal):
"""Material with frictional heat generation and cohesion evolution."""
friction_source: float = None
"""**[mandatory]** friction coefficient used for heat generation, :math:`\\mu_\\theta`, [:math:`-`]"""
contact_area_effective: float = None
"""**[mandatory]** effective fraction of the contact area, :math:`A_\\mathrm{eff}`, [:math:`-`]"""
cohesion_rate: float = None
"""**[mandatory]** cohesion rate, :math:`SE_\\mathrm{rate}`, [:math:`E/(L^2T)`]"""
cohesion_limit: float = None
"""*[optional]* maximum surface energy, :math:`SE_\\mathrm{max}`, [:math:`E/L^2`]"""
thickness: float = None
"""*[optional]* artificial geometrical thickness, :math:`\\delta d`, [:math:`L`]"""
[docs]
class basic_luding(linear_elastic):
"""Material with Luding-type elasto-plastic adhesive behaviour."""
normal_stiffness_plastic: float = None
"""**[mandatory]** plastic loading stiffness, :math:`K_1`, [:math:`FL^{-1}`]"""
normal_stiffness_unloading_reloading: float = None
"""**[mandatory]** unloading and reloading stiffness, :math:`K_n^U`, [:math:`FL^{-1}`]"""
normal_stiffness_tensile: float = None
"""**[mandatory]** tensile adhesive stiffness, :math:`K_\\mathrm{adh}^U`, [:math:`FL^{-1}`]"""
[docs]
class liquid_bridge:
"""Adds a liquid-bridge model to any material."""
surface_tension: float = None
"""**[mandatory]** surface tension of the liquid, :math:`\\gamma` [:math:`F/L`]"""
contact_angle: float = None
"""**[mandatory]** contact angle between particle and liquid bridge surface, :math:`\\Theta` [:math:`-`]"""
[docs]
class liquid_bridge_migration(liquid_bridge):
"""Adds a liquid-bridge migration model to any material."""
liquid_bridge_volume_min: float = None
"""**[mandatory]** the minimum liquid volume needed to form a bridge, :math:`V_\\mathrm{min}` [:math:`L^3`]"""
liquid_bridge_volume_max: float = None
"""**[mandatory]** the maximum liquid volume, a liquid bridge gets during formation, :math:`V_\\mathrm{max}` [:math:`L^3`]"""
distribution_coefficient: float = None
"""**[mandatory]** the fraction of the liquid that is to be distributed to the neighboring contacts of the particles after a liquid bridge rupture, :math:`f` [:math:`-`]"""
[docs]
class liquid_bridge_static(liquid_bridge):
"""Adds a liquid-bridge model in which every contact has the same liquid volume."""
liquid_bridge_volume: float = None
"""**[mandatory]** the liquid volume of a bridge, :math:`V` [:math:`L^3`]"""
[docs]
class linear_elastic_frictional_3D(linear_elastic, frictional_3D):
"""Material with linear-elastic behaviour and sliding friction."""
pass
[docs]
class linear_visco_elastic_frictional_3D(linear_visco_elastic, frictional_3D):
"""Material with linear visco-elastic behaviour and sliding friction."""
pass
[docs]
class linear_elastic_frictional_6D(linear_elastic, frictional_6D):
"""Material with linear-elastic behaviour and sliding, rolling and torsional friction."""
pass
[docs]
class linear_visco_elastic_frictional_3D_liquid_bridge(
linear_visco_elastic,
frictional_3D,
liquid_bridge
):
"""Material with linear visco-elastic behaviour, sliding friction and liquid-bridge forces."""
pass