-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathForcesProcessing.py
102 lines (81 loc) · 1.97 KB
/
ForcesProcessing.py
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
101
102
# -*- coding: utf-8 -*-
"""
Forces Processing based a lot on static forces.py from Kuba
Created on Wed Feb 22 09:31:12 2017
@author: Roeland
"""
import inputs
Inputs = inputs.Inputs()
g = 9.81
m = 64000.0
L1 = 5.0
L2 = 14.6
L3 = 34 - 19.6
L = L1+L2+L3
dz = 3.1
dy = 6.4
dx = 7.6
Sx = 1.6*10**5
q = 3*g*m/L
#F - front, R - rear, R = R1+R2
#forces in x
Fx = Sx*(1-((L-L1+dz)/L2))
Rx = Sx*((L-L1+dz)/L2)
#forces in y
Fy = q*((L1+L2)**2/(2*L2)) - (q*L3**2)/(2*L2)
Ry = q*L - Fy
def Vx(z):
if z <= L1:
Vx = 0
elif L1 < z <= L2+L1:
z = z - L1
Vx = Fx
elif L1+L2 < z <= L:
z = z - (L2+L1)
Vx = Sx
return Vx
def Vy(z):
if z <= L1:
Vy = -q*z
elif L1 < z <= L1+L2:
z = z - L1
Vy = (-q*L1 + Fy) - q*z
elif L1+L2 < z <= L:
z = z - (L2+L1)
Vy = (-q*(L1 + L2) + Fy + Ry) - q*z
return Vy
def Mx(z):
if z <= L1:
Mx = -0.5*q*z**2
elif L1 < z <= L1+L2:
z = z - L1
Mx = -0.5*q*L1**2 + (-q*L1 + Fy)*z - 0.5*q*z**2
elif L1+L2 < z <= L:
z = z - (L2+L1)
Mx = (-0.5*q*L1**2 + (-q*L1 + Fy)*L2 - 0.5*q*L2**2)+(-q*(L1 + L2) + Fy + Ry)*z - 0.5*q*z**2
return Mx
def My(z):
if z <= L1:
My = 0.
elif L1 < z <= L2+L1:
z = z - L1
My = -((Sx - Fx)/L2)*z
elif L1+L2 < z <= L:
z = z - (L2+L1)
My = -(Sx - Fx)+((Sx-Fx)/L3)*z
return My
#FP.Mz(Slices[i].z,Slices[i].yBar)
def Mz(z, ybar): #ybar needed for every slice?
#ybar = 395.52*10**-3
Mz=0.
if z <= L1:
Mz = 0.
elif L1 < z <= L2+L1:
z = z - L1
Mz = Sx*(Inputs.dtaily-Inputs.R+ybar)-(Rx*(Inputs.dtgy+Inputs.R-ybar)) #ybar or not
elif L1+L2 < z <= L:
z = z - (L2+L1)
Mz = Sx*(Inputs.dtaily-Inputs.R+ybar)
return Mz
def ForcesAt(z):
return Vx(z),Vy(z),Mx(z),My(z)