-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathinteraction.py
More file actions
101 lines (77 loc) · 3.42 KB
/
Copy pathinteraction.py
File metadata and controls
101 lines (77 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
from base_types import *
class base_interaction:
"""This is generic pair interaction and this is a long comment continuing here"""
model: str = None
"""**[mandatory]** which model applies to this interaction"""
id1: int = None
"""**[mandatory]** id of body 1"""
id2: int = None
"""**[mandatory]** id of body 2"""
virtual: bool = False
"""*[optional]* weither the interaction is real (else it is in a virtual state - typically without contact)"""
creation_time: float = 0
"""*[optional]* time when the interaction was created (example of optional data)"""
class normal(base_interaction):
"""interaction in the normal direction"""
normal: Vector3 = Vector3(0,0,0)
"""**[mandatory]** unit normal [$-$]"""
normal_force: float = 0
"""**[mandatory]** normal force magnitude (positive in traction) [$F$]"""
class shear(base_interaction):
"""interaction in the tangential (or shear) direction"""
shear_force: Vector3 = Vector3(0,0,0)
"""shear force [$F$]"""
class intr3D(normal, shear):
"""3 DOFs interaction combining normal and shear forces"""
class shear_linear(shear):
"""linear-elasticity"""
ks: float = None
"""**[mandatory]** shear stiffness [$F/L$]"""
class shear_linear_viscoelastic(shear_linear):
"""linear-elasticity with viscosity"""
shear_viscosity: float = None
"""**[mandatory]** shear damping ratio, $c_{s}$, [$FT/L$]"""
class normal_linear(normal):
"""linear-elasticity"""
kn: float = None
"""**[mandatory]** normal stiffness [$F/L$]"""
class normal_linear_viscoelastic(normal_linear):
"""linear-elasticity with viscosity (linear spring dashpot)"""
normal_viscosity: float = None
"""**[mandatory]** normal damping ratio, $c_{n}$, [$FT/L$]"""
class normal_hertz(normal):
"""Hertzian interaction in the normal direction"""
hertz_young: float = None
"""**[mandatory]** equivalent Young modulus [$F/L²$]"""
hertz_poisson: float = None
"""**[mandatory]** equivalent Poisson coefficient [$-$]"""
class linear_3D(intr3D, normal_linear, shear_linear):
"""linear elastic interaction"""
pass
class linear_frictional_3D(linear_3D):
"""linear frictional interaction"""
friction_coefficient: float = None
"""**[mandatory]** friction coefficient, $\mu$, [$-$]"""
pass
class base_thermal(base_interaction):
"""This material describes thermal behaviour"""
pass
class thermal_Blaze(base_thermal):
"""This material describes thermal behaviour dependent on friction and cohesion"""
pass
class liquid_bridge(base_interaction):
"""interaction to store base information needed for liquid bridges"""
is_formed: bool = None
"""**[mandatory]** whether a liquid bridge was formed previously"""
class liquid_bridge_dynamic(liquid_bridge):
"""liquid bridge interaction, where the volume can change"""
liquid_bridge_volume: float = None
"""**[mandatory]** the liquid volume stored in the bridge, $V$ [$L^3$]"""
class normal_basic_luding(normal_linear):
"""This material describes linear-elastic behaviour with spring constants"""
k1: float = None
"""**[mandatory]** normal stiffness in plastic branch, $K_{1}$, [$FL^{-1}$]"""
k2: float = None
"""**[mandatory]** normal stiffness in unloading and reloading elastic branch, $K_{n}^{U}$, [$FL^{-1}$]"""
kc: float = None
"""**[mandatory]** normal stiffness in tensile adhesive branch, $K_{adh}^{U}$, [$FL^{-1}$]"""