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,179 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+ import pandas as pd
4
+ from scipy.interpolate import interp1d
5
+ from Cross_Section_Kappa import M_Kappa_Cross_Section
6
+ from Querschnittsbreite import PolygonSection
7
+
8
+ class Druckgliedbemessung_KGV:
9
+ def __init__(
10
+ self,
11
+ _LoadingType="csv_druckglied",
12
+ Iter="Bruch",
13
+ Reinforcement="csv",
14
+ Querschnittsbemessung="Polygon",
15
+ ):
16
+ self.Bewehrung = Reinforcement
17
+ self.LoadingType = _LoadingType
18
+
19
+ self.Querschnittswerte(0.5)
20
+ self.Bewehrungsangaben()
21
+ self.ReadLoading()
22
+ self.Calculate_M_Kappa_Interpolation()
23
+ self.Calculate_Cross_Section_Capacity()
24
+ self.Column_Parameters()
25
+ self.Iteration_Second_Order()
26
+
27
+ def Querschnittswerte(self, _height_test=0.5):
28
+ # Example usage
29
+ df = pd.read_csv("Polygon/Polygon.csv")
30
+ self.vertices = df.values.tolist()
31
+
32
+ self.polygon = PolygonSection(self.vertices)
33
+
34
+ # Calculate the height of the polygon based on y-values
35
+
36
+ y_values = [vertex[1] for vertex in self.vertices]
37
+ self.height = abs(max(y_values) - min(y_values))
38
+ self.z_cu = self.height - self.polygon.centroid[1]
39
+ self.z_co = self.height - self.z_cu
40
+
41
+ # Define the rotation angle
42
+ self.angle_degrees = 0
43
+ self.polygon.rotate(self.angle_degrees)
44
+
45
+ height = _height_test
46
+ section_width = self.polygon.calculate_section_width_at_height(height / 2)
47
+
48
+ self.h_c = height
49
+ self.b_c = section_width
50
+
51
+ self.A = self.polygon.A
52
+
53
+ return section_width
54
+
55
+ def Bewehrungsangaben(self):
56
+ if self.Bewehrung == "csv":
57
+ df = pd.read_csv("Bewehrung/Linienbewehrung.csv")
58
+ print(df)
59
+ for i in range(0, len(df["Lage"]), 1):
60
+ Lage = df["Lage"][i]
61
+ if Lage == "Unten":
62
+ self.d_s1 = (
63
+ df["dsl [m]"][i] * 0.5 + df["cnom [m]"][i] + df["dsw [m]"][i]
64
+ )
65
+ self.A_s1 = df["As [cm**2]"][i] * 0.01**2
66
+ elif Lage == "Oben":
67
+ self.d_s2 = (
68
+ df["dsl [m]"][i] * 0.5 + df["cnom [m]"][i] + df["dsw [m]"][i]
69
+ )
70
+ self.A_s2 = df["As [cm**2]"][i] * 0.01**2
71
+
72
+ self.z_ds1 = self.z_cu - self.d_s1
73
+ self.z_ds2 = self.z_co - self.d_s2
74
+
75
+ def ReadLoading(self):
76
+ if self.LoadingType == "csv_druckglied":
77
+ df = pd.read_csv("Lasteingabe/Lasten_Druckglied.csv")
78
+ print(df)
79
+ self.Zugseite = None
80
+ for i in range(0, len(df["Grenzzustand"]), 1):
81
+ if df["Grenzzustand"][i] == "GZT":
82
+ self.NEd_GZT = df["NEd in [MN]"][i]
83
+ self.MEd1_GZT = df["MEd1 in [MNm]"][i]
84
+ self.MEd2_GZT = df["MEd2 in [MNm]"][i]
85
+ elif df["Grenzzustand"][i] == "GZG":
86
+ self.NEd_GZG = df["NEd in [MN]"][i]
87
+ self.MEd1_GZG = df["MEd1 in [MNm]"][i]
88
+ self.MEd2_GZG = df["MEd2 in [MNm]"][i]
89
+
90
+ else:
91
+ self.NEd_GZT = float(
92
+ input("Geben Sie die Normalkraft NEd im GZT in [MN] ein: \n")
93
+ )
94
+ self.MEd_GZT1 = float(
95
+ input("Geben Sie das Biegemoment an Stelle 1 im GZT in [MN] ein: \n")
96
+ )
97
+
98
+ self.MEd_GZT2 = float(
99
+ input("Geben Sie das Biegemoment an Stelle 2 im GZT in [MN] ein: \n")
100
+ )
101
+
102
+ def Calculate_M_Kappa_Interpolation(self):
103
+ self.M_Kappa = M_Kappa_Cross_Section("csv_druckglied")
104
+
105
+ def Calculate_Cross_Section_Capacity(self):
106
+ try:
107
+ self.M_Rd = self.M_Kappa.M_D
108
+ print("The maximum Moment for the cross section is: ", self.M_Rd)
109
+ except:
110
+ self.M_Rd = self.M_Kappa.M_C
111
+ print("The maximum Moment for the cross section is: ", self.M_Rd)
112
+
113
+ def Column_Parameters(self):
114
+ df = pd.read_csv("Systemgeometrie/Druckglied.csv")
115
+ self.l_col = df["lcol in [m]"].iloc[0]
116
+
117
+ def Iteration_Second_Order(self):
118
+ M_Ed1_0 = self.MEd1_GZT
119
+ M_Ed1_1 = self.MEd1_GZT
120
+ M_Ed2_0 = self.MEd2_GZT
121
+
122
+ self.M_0_List = np.linspace(M_Ed1_0, M_Ed2_0, 100)
123
+ self.M_1_List = np.linspace(self.l_col, 0, 100)
124
+
125
+ kappa_1 = float(self.M_Kappa.Interpolation_Function(M_Ed1_1)[0])
126
+ kappa_2 = float(self.M_Kappa.Interpolation_Function(M_Ed2_0)[0])
127
+
128
+ print("KAPPA 1", kappa_1)
129
+
130
+ x_list = np.linspace(0, float(self.l_col), 100)
131
+
132
+ # kappa_list = [kappa_1 - (kappa_1 - kappa_2) / 99 * i for i in range(0, 100, 1)]
133
+ kappa_list = [kappa_1 - (kappa_1 - kappa_2) / 99 * i for i in range(100)]
134
+
135
+
136
+ d_0 = np.trapz(self.M_1_List * kappa_list, x_list)
137
+
138
+ iter = 0
139
+ while iter < 100:
140
+ print(M_Ed1_1 - M_Ed1_0)
141
+ M_Ed1_0 = self.MEd1_GZT
142
+
143
+ d_1 = np.trapz(self.M_1_List * kappa_list, x_list)
144
+
145
+ M_Ed1_1 = self.MEd1_GZT + d_1 * abs(self.NEd_GZT)
146
+
147
+ print("M0", M_Ed1_0)
148
+ print("M1", M_Ed1_1)
149
+
150
+ self.M_0_List = np.linspace(M_Ed1_1, M_Ed2_0, 100)
151
+
152
+ for i in range(0, 100, 1):
153
+ kappa_i = float(self.M_Kappa.Interpolation_Function(
154
+ M_Ed1_1 - (M_Ed1_1 - M_Ed2_0) / 99 * i
155
+ )[0])
156
+ kappa_list[i] = kappa_i
157
+
158
+ if abs(M_Ed1_1 - M_Ed1_0) < 1e-3:
159
+ break
160
+
161
+ iter += 1
162
+
163
+ print("Iteration ", iter)
164
+ print("Deflection ", d_1)
165
+
166
+ print("Moment ", M_Ed1_1)
167
+
168
+ plt.plot(kappa_list)
169
+ plt.show()
170
+
171
+ kappa_value, M_value, kappa,kappa_new,M_interpolated,M =self.M_Kappa.Interpolation_Function(M_Ed1_1)
172
+ self.M_Kappa.Plot_Interpolation_M_Kappa(kappa_value, M_value, kappa,kappa_new,M_interpolated,M)
173
+
174
+
175
+
176
+ Bemess = Druckgliedbemessung_KGV()
177
+
178
+ print(Bemess.M_Kappa.Baustoff.Ecm)
179
+ print(Bemess.M_Kappa.Baustoff.fctm)