kib-lap 0.5__cp313-cp313-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. Examples/Cross_Section_Thin.py +61 -0
  2. Examples/__init__.py +0 -0
  3. KIB_LAP/Betonbau/Bemessung_Polygon.py +667 -0
  4. KIB_LAP/Betonbau/Bemessung_Zust_II.py +648 -0
  5. KIB_LAP/Betonbau/Cross_Section_Kappa.py +925 -0
  6. KIB_LAP/Betonbau/Druckglied_KGV.py +179 -0
  7. KIB_LAP/Betonbau/Iterative_Design.py +723 -0
  8. KIB_LAP/Betonbau/Materialkennwerte_Beton.py +196 -0
  9. KIB_LAP/Betonbau/Querschnittsbreite.py +194 -0
  10. KIB_LAP/Betonbau/Querschnittsbreite_Kreis.py +63 -0
  11. KIB_LAP/Betonbau/__init__.py +2 -0
  12. KIB_LAP/Betonbau/beam_plate_T.py +921 -0
  13. KIB_LAP/Betonbau/beam_plate_T_reverse.py +915 -0
  14. KIB_LAP/Betonbau/beam_rectangular.py +635 -0
  15. KIB_LAP/Betonbau/beam_sub_section.py +9 -0
  16. KIB_LAP/Dynamik/Cross_Section_Properties.py +155 -0
  17. KIB_LAP/Dynamik/Deformation_Method.py +587 -0
  18. KIB_LAP/Dynamik/Duhamel_SDOF.py +221 -0
  19. KIB_LAP/Dynamik/FFT.py +87 -0
  20. KIB_LAP/Dynamik/Kontinuum_Eigenmodes.py +418 -0
  21. KIB_LAP/Dynamik/Kontinuum_Schwingung.py +757 -0
  22. KIB_LAP/Dynamik/Pendulum_Spring_Linearized.py +91 -0
  23. KIB_LAP/Dynamik/Pendulum_Spring_Problem.py +94 -0
  24. KIB_LAP/Dynamik/__init__.py +0 -0
  25. KIB_LAP/Examples/Cross_Section_Thin.py +61 -0
  26. KIB_LAP/Examples/Cross_Section_Thin_2.py +14 -0
  27. KIB_LAP/Examples/Plattentragwerke.py +39 -0
  28. KIB_LAP/Examples/Plattentragwerke_2.py +60 -0
  29. KIB_LAP/Examples/ShearDesign.py +28 -0
  30. KIB_LAP/Examples/__init__.py +0 -0
  31. KIB_LAP/Plattenbeulen/Plate_Design.py +276 -0
  32. KIB_LAP/Plattenbeulen/Ritz_Optimiert.py +658 -0
  33. KIB_LAP/Plattenbeulen/__init__.py +2 -0
  34. KIB_LAP/Plattenbeulen/dist/__init__.py +0 -0
  35. KIB_LAP/Plattenbeulen/plate_buckling.cpp +561 -0
  36. KIB_LAP/Plattenbeulen/plate_buckling_cpp.cp313-win_amd64.pyd +0 -0
  37. KIB_LAP/Plattenbeulen/plate_buckling_cpp.cpp +561 -0
  38. KIB_LAP/Plattenbeulen/setup.py +35 -0
  39. KIB_LAP/Plattentragwerke/Functions.cpp +326 -0
  40. KIB_LAP/Plattentragwerke/Functions.h +41 -0
  41. KIB_LAP/Plattentragwerke/NumInte.cpp +23 -0
  42. KIB_LAP/Plattentragwerke/NumericalIntegration.cpp +23 -0
  43. KIB_LAP/Plattentragwerke/PlateBendingKirchhoff.py +843 -0
  44. KIB_LAP/Plattentragwerke/__init__.py +1 -0
  45. KIB_LAP/Plattentragwerke/plate_bending.cpp +341 -0
  46. KIB_LAP/Plattentragwerke/plate_bending_cpp.cp313-win_amd64.pyd +0 -0
  47. KIB_LAP/Plattentragwerke/setup.py +39 -0
  48. KIB_LAP/Querschnittswerte/Querschnitt_Duenn.py +526 -0
  49. KIB_LAP/Querschnittswerte/__init__.py +1 -0
  50. KIB_LAP/STABRAUM/InputData.py +92 -0
  51. KIB_LAP/STABRAUM/Programm.py +1403 -0
  52. KIB_LAP/STABRAUM/Steifigkeitsmatrix.py +275 -0
  53. KIB_LAP/STABRAUM/__init__.py +3 -0
  54. KIB_LAP/Stahlbau/__init__.py +0 -0
  55. KIB_LAP/Verbundbau/Verbundtraeger_Bemessung.py +766 -0
  56. KIB_LAP/Verbundbau/__init__.py +0 -0
  57. KIB_LAP/__init__.py +4 -0
  58. KIB_LAP/main.py +2 -0
  59. KIB_LAP/plate_bending_cpp.cp313-win_amd64.pyd +0 -0
  60. KIB_LAP/plate_buckling_cpp.cp313-win_amd64.pyd +0 -0
  61. kib_lap-0.5.dist-info/METADATA +25 -0
  62. kib_lap-0.5.dist-info/RECORD +64 -0
  63. kib_lap-0.5.dist-info/WHEEL +5 -0
  64. kib_lap-0.5.dist-info/top_level.txt +1 -0
@@ -0,0 +1,275 @@
1
+ import sympy as sp
2
+ import numpy as np
3
+ import math
4
+
5
+ class ElemStema:
6
+ def __init__(self):
7
+
8
+ # Initialisierung der Steifigkeitsmatrix
9
+ self.Ke = np.zeros((14, 14))
10
+
11
+ def TransformationMatrix(self, posI, posJ):
12
+ ix, iy, iz = posI
13
+ jx, jy, jz = posJ
14
+
15
+ dx = jx - ix
16
+ dy = jy - iy
17
+ dz = jz - iz
18
+ length = math.sqrt(dx**2 + dy**2 + dz**2)
19
+
20
+ T = np.zeros((14, 14))
21
+ T_i = np.zeros((6, 6))
22
+
23
+ # Falls die Knoten identisch sind
24
+ if length < 1e-12:
25
+ np.fill_diagonal(T, 1.0)
26
+ return T
27
+
28
+ # 1. Spezialfall: Balken nur in z-Richtung
29
+ # (dx, dy ~ 0, dz != 0)
30
+ tol = 1e-12
31
+ if abs(dx) < tol and abs(dy) < tol:
32
+ # -> lokales x' = globales z
33
+ # Rotationsmatrix R:
34
+ # x' -> z
35
+ # y' -> y
36
+ # z' -> -x (z.B. so gewählt,
37
+ # aber man kann auch x'->z, y'->x etc. nehmen)
38
+ if dz > 0:
39
+ # x' -> +z
40
+ R = np.array([
41
+ [0, 0, 1], # x'
42
+ [0, 1, 0], # y'
43
+ [-1, 0, 0], # z'
44
+ ], dtype=float)
45
+ else:
46
+ # x' -> -z
47
+ R = np.array([
48
+ [0, 0, -1], # x'
49
+ [0, 1, 0], # y'
50
+ [1, 0, 0], # z'
51
+ ], dtype=float)
52
+
53
+ else:
54
+ # 2. Allgemeiner Fall: Kreuzprodukt-Logik
55
+ ex_approx = np.array([dx, dy, dz]) / length
56
+
57
+ # Hilfsvektor für y'-Achse (wenn ex_approx zu parallel zu e_z, dann e_y)
58
+ ez_approx = np.array([0, 0, 1], dtype=float)
59
+ if abs(np.dot(ex_approx, ez_approx)) > 0.9999:
60
+ ez_approx = np.array([0, 1, 0], dtype=float)
61
+
62
+ ey = np.cross(ex_approx, ez_approx)
63
+ ey /= np.linalg.norm(ey)
64
+ ez = np.cross(ex_approx, ey)
65
+
66
+ R = np.column_stack((ex_approx, ey, ez))
67
+
68
+ cos_xX = R[0][0]
69
+ cos_xY = R[0][1]
70
+ cos_xZ = R[0][2]
71
+
72
+ cos_yX = R[1][0]
73
+ cos_yY = R[1][1]
74
+ cos_yZ = R[1][2]
75
+
76
+ cos_zX = R[2][0]
77
+ cos_zY = R[2][1]
78
+ cos_zZ = R[2][2]
79
+
80
+ # T_i: 6x6-Block
81
+
82
+ T_i[0,0] = cos_xX
83
+ T_i[0,1] = cos_xY
84
+ T_i[0,3] = cos_xZ
85
+
86
+ T_i[1,0] = cos_yX
87
+ T_i[1,1] = cos_yY
88
+ T_i[1,3] = cos_yZ
89
+
90
+ T_i[2,2] = cos_zZ
91
+ T_i[2,4] = cos_zY
92
+ T_i[2,5] = cos_zX
93
+
94
+ T_i[3,0] = cos_zX
95
+ T_i[3,1] = cos_zY
96
+ T_i[3,3] = cos_zZ
97
+
98
+ T_i[4,2] = cos_yZ
99
+ T_i[4,4] = cos_yY
100
+ T_i[4,5] = cos_yX
101
+
102
+ T_i[5,2] = cos_xZ
103
+ T_i[5,4] = cos_xY
104
+ T_i[5,5] = cos_xX
105
+
106
+
107
+
108
+ T[0:6,0:6] = T_i
109
+ T[7:13,7:13] = T_i
110
+
111
+ # Warping
112
+
113
+ T[6, 6] = 1.0
114
+ T[13, 13] = 1.0
115
+
116
+ return T
117
+
118
+ def insert_elements(self, S, E, G, A, I_y, I_z, I_omega, I_T, cv, z1, cw, z2, c_thet, l):
119
+ """
120
+ Element-Stiffness-Matrix:
121
+ Na
122
+ Vya
123
+ Mza
124
+ Vza
125
+ Mya
126
+ Mxa
127
+ Mwa
128
+ Nb
129
+ Vyb
130
+ Mzb
131
+ Vzb
132
+ Myb
133
+ Mxb
134
+ Mwb
135
+ """
136
+ self.S = S # Stiffness of shear field
137
+
138
+ self.E = E # Material stiffness of the beam
139
+ self.G = G
140
+
141
+ self.A = A
142
+ self.I_y = I_y
143
+ self.I_z = I_z
144
+
145
+ self.I_omega = I_omega
146
+ self.I_T = I_T
147
+
148
+ self.cv = cv
149
+ self.z1 = z1
150
+ self.cw = cw
151
+ self.z2 = z2
152
+
153
+ self.c_thet = c_thet
154
+
155
+ self.l = l
156
+ # Matrixeinträge gemäß Tabelle definieren
157
+ self.Ke[0, 0] = self.Ke[7, 7] = self.E * self.A / self.l
158
+ self.Ke[0, 7] = self.Ke[7, 0] = -self.E * self.A / self.l
159
+
160
+ self.Ke[1, 1] = self.Ke[8, 8] = (
161
+ 12 * self.E * self.I_z / self.l**3 + 13 / 35 * self.cv * self.l + 1.2 * self.S / self.l
162
+ )
163
+ self.Ke[1, 2] = 6 * self.E * self.I_z / self.l**2 + 11 / 210 * self.cv * self.l**2 + 0.1 * self.S
164
+
165
+ self.Ke[1, 5] = 13 / 35 * self.cv * self.l * self.z1 - 1.2 * self.S / self.l * self.z2
166
+ self.Ke[1, 6] = -11 / 210 * self.cv * self.l**2 * self.z1 + 0.1 * self.S * self.z2
167
+
168
+ self.Ke[1, 8] = -12 * self.E * self.I_z / self.l**3 + 9 / 70 * self.cv * self.l - 1.2 * self.S / self.l
169
+ self.Ke[1, 9] = 6 * self.E * self.I_z / self.l**2 - 13 / 420 * self.cv * self.l**2 + 0.1 * self.S
170
+
171
+ self.Ke[1, 12] = 9 / 70 * self.cv * self.l * self.z1 + 1.2 * self.S / self.l * self.z2
172
+ self.Ke[1, 13] = 13 / 420 * self.cv * self.l**2 * z1 + 0.1 * self.S * self.z2
173
+
174
+ self.Ke[2, 2] = 4 * self.E * self.I_z / self.l + 1 / 105 * self.cv * self.l**3 + 2 / 15 * self.S * self.l
175
+ self.Ke[9, 9] = self.Ke[2, 2]
176
+
177
+ self.Ke[2, 5] = 11 / 210 * self.cv * l**2 * self.z1 - 0.1 * self.S * self.z2
178
+ self.Ke[2, 6] = -1 / 105 * self.cv * self.l**3 * self.z1 + 2 / 15 * self.S * self.l * self.z2
179
+ self.Ke[2, 8] = -6 * self.E * self.I_z / self.l**2 + 13 / 420 * self.cv * l**2 - 0.1 * self.S
180
+
181
+ self.Ke[2, 9] = 2 * self.E * self.I_z / self.l - 1 / 140 * self.cv * self.l**3 - 1 / 30 * self.S * self.l
182
+ self.Ke[2, 12] = 13 / 420 * self.cv * self.l**2 * self.z1 + 0.1 * self.S * self.z2
183
+ self.Ke[2, 13] = 1 / 140 * self.cv * self.l**3 * self.z1 - 1 / 30 * self.S * self.l * self.z2
184
+
185
+ self.Ke[3, 3] = 12 * self.E * self.I_y / self.l**3 + 13 / 35 * self.cw * self.l
186
+ self.Ke[10, 10] = self.Ke[3, 3]
187
+
188
+ self.Ke[3, 4] = -6 * self.E * self.I_y / self.l**2 - 11 / 210 * self.cw * self.l**2
189
+ self.Ke[3, 10] = -12 * self.E * self.I_y / self.l**3 + 9 / 70 * self.cw * self.l
190
+ self.Ke[3, 11] = -6 * self.E * self.I_y / self.l**2 + 13 / 420 * self.cw * self.l**2
191
+
192
+ self.Ke[4, 4] = 4 * self.E * self.I_y / self.l + 1 / 105 * self.cw * self.l**3
193
+ self.Ke[11, 11] = self.Ke[4, 4]
194
+
195
+ self.Ke[4, 10] = 6 * self.E * self.I_y / self.l**2 - 13 / 420 * self.cw * self.l**2
196
+ self.Ke[4, 11] = 2 * self.E * self.I_y / self.l - 1 / 140 * self.cw * self.l**3
197
+
198
+ self.Ke[5, 5] = self.Ke[12, 12] = (
199
+ 12 * self.E * self.I_omega / self.l**3
200
+ + 1.2 * self.G * self.I_T / self.l
201
+ + 13 / 35 * self.c_thet * self.l
202
+ + 13 / 35 * self.cv * self.l * self.z1**2
203
+ + 1.2 * self.S / self.l * self.z2**2
204
+ )
205
+ self.Ke[5, 6] = (
206
+ -6 * self.E * self.I_omega / self.l**2
207
+ - 0.1 * self.G * self.I_T
208
+ - 11 / 210 * self.c_thet * self.l**2
209
+ - 11 / 210 * self.cv * self.l**2 * self.z1**2
210
+ - 0.1 * self.S * self.z2**2
211
+ )
212
+ self.Ke[5, 8] = 9 / 70 * self.cv * l * self.z1 + 1.2 * self.S / self.l * self.z2
213
+ self.Ke[5, 9] = -13 / 420 * self.cv * self.l * self.z1 - 0.1 * self.S * self.z2
214
+ self.Ke[5, 12] = (
215
+ -12 * self.E * self.I_omega / self.l**3
216
+ - 1.2 * self.G * self.I_T / self.l
217
+ + 9 / 70 * self.c_thet * self.l
218
+ + 9 / 70 * self.cv * self.l * self.z1**2
219
+ - 1.2 * self.S / self.l * self.z2**2
220
+ )
221
+ self.Ke[5, 13] = (
222
+ -6 * self.E * self.I_omega / self.l**2
223
+ - 0.1 * self.G * self.I_T
224
+ + 13 / 420 * self.c_thet * self.l**2
225
+ + 13 / 420 * self.cv * self.l**2 * self.z1**2
226
+ - 0.1 * self.S * self.z2**2
227
+ )
228
+ self.Ke[6, 6] = self.Ke[13, 13] = (
229
+ 4 * self.E * self.I_omega / self.l
230
+ + 2 / 15 * self.G * self.I_T * self.l
231
+ + 1 / 105 * self.c_thet * self.l**3
232
+ + 1 / 105 * self.cv * self.l**3 * self.z1
233
+ + 2 / 15 * self.S * self.l * self.z2**2
234
+ )
235
+
236
+ self.Ke[6, 8] = -13 / 420 * self.cv * self.l**2 * self.z1 - 0.1 * self.S * self.z2
237
+ self.Ke[6, 9] = 1 / 140 * self.cv * self.l**3 * self.z1 - 1 / 30 * self.S * self.l * self.z2
238
+ self.Ke[6, 12] = (
239
+ 6 * self.E * self.I_omega / self.l**2
240
+ + 0.1 * self.G * self.I_T
241
+ - 13 / 420 * self.c_thet * self.l**2
242
+ - 13 / 420 * self.cv * self.l**2 * self.z1**2
243
+ + 0.1 * self.S * self.z2**2
244
+ )
245
+ self.Ke[6, 13] = (
246
+ 2 * self.E * self.I_omega / self.l
247
+ - 1 / 30 * self.G * self.I_T * self.l
248
+ - 1 / 140 * self.c_thet * self.l**3
249
+ - 1 / 140 * self.cv * l**3 * self.z1**2
250
+ - 1 / 30 * self.S * self.l * self.z2**2
251
+ )
252
+ self.Ke[8, 9] = -6 * self.E * self.I_z / self.l**2 - 11 / 210 * self.cv * self.l**2 - 0.1 * self.S
253
+ self.Ke[8, 12] = 13 / 35 * self.cv * self.l * self.z1 - 1.2 * self.S / self.l * self.z2
254
+ self.Ke[8, 13] = 11 / 210 * self.cv * self.l**2 * self.z1 - 0.1 * self.S * self.z2
255
+ self.Ke[9, 12] = -11 / 210 * self.cv * self.l**2 * self.z1 + 0.1 * self.S * self.z2
256
+ self.Ke[9, 13] = -1 / 105 * self.cv * self.l**3 * z1 + 2 / 15 * self.S * self.l * self.z2
257
+ self.Ke[10, 11] = 6 * E * I_y / l**2 + 11 / 210 * cw * l**2
258
+ self.Ke[12, 13] = (
259
+ 6 * E * I_omega / l**2
260
+ + 0.1 * G * I_T
261
+ + 11 / 210 * c_thet * l**2
262
+ + 11 / 210 * cv * l**2 * z1**2
263
+ + 0.1 * S * z2**2
264
+ )
265
+
266
+ # Elem Matrix is symmetrical
267
+
268
+ for i in range(14):
269
+ for j in range(i):
270
+ self.Ke[i, j] = self.Ke[j, i]
271
+
272
+ return self.Ke
273
+
274
+ def print_elem_matrix(self):
275
+ sp.pprint(self.Ke)
@@ -0,0 +1,3 @@
1
+ from .Programm import *
2
+ from .InputData import Input
3
+ from .Steifigkeitsmatrix import ElemStema
File without changes