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.
- Examples/Cross_Section_Thin.py +61 -0
- Examples/__init__.py +0 -0
- KIB_LAP/Betonbau/Bemessung_Polygon.py +667 -0
- KIB_LAP/Betonbau/Bemessung_Zust_II.py +648 -0
- KIB_LAP/Betonbau/Cross_Section_Kappa.py +925 -0
- KIB_LAP/Betonbau/Druckglied_KGV.py +179 -0
- KIB_LAP/Betonbau/Iterative_Design.py +723 -0
- KIB_LAP/Betonbau/Materialkennwerte_Beton.py +196 -0
- KIB_LAP/Betonbau/Querschnittsbreite.py +194 -0
- KIB_LAP/Betonbau/Querschnittsbreite_Kreis.py +63 -0
- KIB_LAP/Betonbau/__init__.py +2 -0
- KIB_LAP/Betonbau/beam_plate_T.py +921 -0
- KIB_LAP/Betonbau/beam_plate_T_reverse.py +915 -0
- KIB_LAP/Betonbau/beam_rectangular.py +635 -0
- KIB_LAP/Betonbau/beam_sub_section.py +9 -0
- KIB_LAP/Dynamik/Cross_Section_Properties.py +155 -0
- KIB_LAP/Dynamik/Deformation_Method.py +587 -0
- KIB_LAP/Dynamik/Duhamel_SDOF.py +221 -0
- KIB_LAP/Dynamik/FFT.py +87 -0
- KIB_LAP/Dynamik/Kontinuum_Eigenmodes.py +418 -0
- KIB_LAP/Dynamik/Kontinuum_Schwingung.py +757 -0
- KIB_LAP/Dynamik/Pendulum_Spring_Linearized.py +91 -0
- KIB_LAP/Dynamik/Pendulum_Spring_Problem.py +94 -0
- KIB_LAP/Dynamik/__init__.py +0 -0
- KIB_LAP/Examples/Cross_Section_Thin.py +61 -0
- KIB_LAP/Examples/Cross_Section_Thin_2.py +14 -0
- KIB_LAP/Examples/Plattentragwerke.py +39 -0
- KIB_LAP/Examples/Plattentragwerke_2.py +60 -0
- KIB_LAP/Examples/ShearDesign.py +28 -0
- KIB_LAP/Examples/__init__.py +0 -0
- KIB_LAP/Plattenbeulen/Plate_Design.py +276 -0
- KIB_LAP/Plattenbeulen/Ritz_Optimiert.py +658 -0
- KIB_LAP/Plattenbeulen/__init__.py +2 -0
- KIB_LAP/Plattenbeulen/dist/__init__.py +0 -0
- KIB_LAP/Plattenbeulen/plate_buckling.cpp +561 -0
- KIB_LAP/Plattenbeulen/plate_buckling_cpp.cp313-win_amd64.pyd +0 -0
- KIB_LAP/Plattenbeulen/plate_buckling_cpp.cpp +561 -0
- KIB_LAP/Plattenbeulen/setup.py +35 -0
- KIB_LAP/Plattentragwerke/Functions.cpp +326 -0
- KIB_LAP/Plattentragwerke/Functions.h +41 -0
- KIB_LAP/Plattentragwerke/NumInte.cpp +23 -0
- KIB_LAP/Plattentragwerke/NumericalIntegration.cpp +23 -0
- KIB_LAP/Plattentragwerke/PlateBendingKirchhoff.py +843 -0
- KIB_LAP/Plattentragwerke/__init__.py +1 -0
- KIB_LAP/Plattentragwerke/plate_bending.cpp +341 -0
- KIB_LAP/Plattentragwerke/plate_bending_cpp.cp313-win_amd64.pyd +0 -0
- KIB_LAP/Plattentragwerke/setup.py +39 -0
- KIB_LAP/Querschnittswerte/Querschnitt_Duenn.py +526 -0
- KIB_LAP/Querschnittswerte/__init__.py +1 -0
- KIB_LAP/STABRAUM/InputData.py +92 -0
- KIB_LAP/STABRAUM/Programm.py +1403 -0
- KIB_LAP/STABRAUM/Steifigkeitsmatrix.py +275 -0
- KIB_LAP/STABRAUM/__init__.py +3 -0
- KIB_LAP/Stahlbau/__init__.py +0 -0
- KIB_LAP/Verbundbau/Verbundtraeger_Bemessung.py +766 -0
- KIB_LAP/Verbundbau/__init__.py +0 -0
- KIB_LAP/__init__.py +4 -0
- KIB_LAP/main.py +2 -0
- KIB_LAP/plate_bending_cpp.cp313-win_amd64.pyd +0 -0
- KIB_LAP/plate_buckling_cpp.cp313-win_amd64.pyd +0 -0
- kib_lap-0.5.dist-info/METADATA +25 -0
- kib_lap-0.5.dist-info/RECORD +64 -0
- kib_lap-0.5.dist-info/WHEEL +5 -0
- 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)
|