Source code for materials

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