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,766 @@
1
+ import matplotlib.pyplot as plt
2
+ import numpy as np
3
+ import pandas as pd
4
+
5
+
6
+
7
+ class Verbundtraeger:
8
+ def __init__(self,hc, b_c, t_a_flu, b_a_flu,t_a_flo, b_a_flo, t_a_w, h_aw, l ,fck,_fy ,
9
+ _traeger = "FT", zement = "I42.5N", _LF = 80, t0 = 3, _t_ausbau = 30):
10
+ """_summary_
11
+
12
+ Args:
13
+ hc (_type_, optional): _description_. Defaults to _h_c.
14
+ b_c (_type_, optional): _description_. Defaults to _b_c.
15
+ t_a_flu (_type_, optional): _description_. Defaults to _t_fl_o.
16
+ b_a_flu (_type_, optional): _description_. Defaults to _b_fl_o.
17
+ t_a_w (_type_, optional): _description_. Defaults to _t_aw.
18
+ h_aw (_type_, optional): _description_. Defaults to _h_aw.
19
+ l (_type_, optional): _description_. Defaults to _l.
20
+ _traeger (str, optional): _description_. Defaults to "FT". \n
21
+ "Normal"
22
+ """
23
+ # Betonquerschnitt
24
+ self.hc, self.b_c = hc,b_c
25
+ # Stahlquerschnitt
26
+ self.t_a_flu,self.b_a_flu = t_a_flu,b_a_flu
27
+ self.t_a_flo, self.b_a_flo = t_a_flo,b_a_flo
28
+
29
+ self.t_a_w, self.h_aw = t_a_w,h_aw
30
+ # Systemparameter
31
+ self.length = l
32
+ self.e_qt = 4.00
33
+ self.traeger = _traeger
34
+ self.Zement = zement
35
+ self.LF = _LF
36
+
37
+ self.t0 = t0
38
+
39
+
40
+ self.fck = fck
41
+ self.fy = _fy
42
+
43
+ self.t_ausbau = _t_ausbau
44
+
45
+ # self.Spannungen_Eigengewicht()
46
+ # self.Spannungen_Ausbaulasten()
47
+ # self.Spannungen_Verkehr()
48
+ # self.Spannungen_Schwinden()
49
+ # self.Spannungsplot_Ausbaulasten()
50
+ # self.Spannungsplot_Verkehr()
51
+ # self.Spannungsplot_Schwinden()
52
+ # self.Spannungen_GZT()
53
+
54
+ def AllgemeinerBlock(self):
55
+ self.Baustoffe()
56
+ self.Berechnung_Plattenbreite_MW()
57
+ self.Querschnittswerte()
58
+
59
+ self.Einstufung_Querschnittsklasse()
60
+ self.Berechnung_Kriechzahlen_Schwinden()
61
+ self.Berechnung_Kriechzahlen_Ausbau()
62
+
63
+ self.Berechnung_Schwinddehnung()
64
+ self.Reduktionszahlen()
65
+ self.Ideel_Verkehr()
66
+ self.Ideel_Ausbaulasten()
67
+ self.Ideel_Schwinden()
68
+ self.Einwirkungen_Schwinden()
69
+
70
+ def Baustoffe(self):
71
+
72
+ self.fcm = self.fck + 8
73
+ self.fctm = 0.30*self.fck**0.666667
74
+ self.Ecm = 22000 * (self.fcm * 0.10)**0.30
75
+ self.fyk = 500
76
+ self.E_s = 200000
77
+
78
+
79
+ self.fy_druck = self.fy/1.1
80
+ self.fy_tau = self.fy / np.sqrt(3)
81
+ self.E_a= 210000
82
+
83
+ self.fcd = self.fck*0.85 / 1.5
84
+ self.fyd = self.fyk / 1.15
85
+
86
+ def Berechnung_Plattenbreite_MW(self):
87
+ self.le = self.length
88
+ self.b_e = self.le/8
89
+
90
+ self.b_eff = min(2 * self.b_e + self.b_a_flo, self.b_c)
91
+
92
+ def Querschnittswerte(self):
93
+ # Querschnittswerte für Kriechen / Schwinden
94
+ self.A = self.b_c * self.hc
95
+ if (self.traeger == "FT"):
96
+ self.u = self.b_c
97
+ elif (self.traeger == "Normal"):
98
+ self.u = self.b_c * 2 # Zur Trocknung freigesetzter Umfang
99
+ else:
100
+ self.u = self.b_c * 2
101
+
102
+ self.h_0 = 2 * self.A / self.u
103
+
104
+ # Querschnittswerte für E-E-Nachweise (Schwerpunkte in den Mitten)
105
+ self.I_c = self.b_eff * self.hc**3 / 12
106
+ self.A_c = self.b_eff * self.hc
107
+ self.A_a = self.b_a_flo*self.t_a_flo + self.b_a_flu * self.t_a_flu + self.h_aw * self.t_a_w
108
+
109
+ self.A_aflo = self.b_a_flo*self.t_a_flo
110
+ self.delta_zflo = self.t_a_flo / 2
111
+ self.A_aflu = self.b_a_flu * self.t_a_flu
112
+ self.delta_zflu = self.h_aw + self.t_a_flo + self.t_a_flu/2
113
+ self.A_w = self.h_aw * self.t_a_w
114
+ self.delta_zw = self.t_a_flo + self.h_aw/2
115
+
116
+ print(self.A_aflo)
117
+ print(self.delta_zflo)
118
+ print(self.A_aflu)
119
+ print(self.delta_zflu)
120
+
121
+ print(self.A_a)
122
+
123
+
124
+ self.z_aso = (self.A_aflo * self.delta_zflo + self.A_aflu * self.delta_zflu + self.A_w * self.delta_zw) * self.A_a**(-1)
125
+ self.z_asu = self.t_a_flo+self.t_a_flu+self.h_aw - self.z_aso
126
+
127
+
128
+
129
+ print(self.z_aso)
130
+ print(self.z_asu)
131
+
132
+ self.I_a = (self.b_a_flu * self.t_a_flu**3 /12) \
133
+ + (self.b_a_flo * self.t_a_flo**3 /12) \
134
+ + self.h_aw**3 * self.t_a_w / 12 \
135
+ + self.A_w * (self.z_aso - self.t_a_flo - self.h_aw/2)**2 \
136
+ + self.A_aflo * (self.z_aso - self.t_a_flo/2)**2 \
137
+ + self.A_aflu * (self.z_asu - self.t_a_flu/2)**2
138
+
139
+ self.W_au = self.I_a / (self.z_asu)
140
+ self.W_ao = self.I_a / (self.z_aso)
141
+
142
+ # Berechnung des statischen Moments des Stahlquerschnitts
143
+
144
+ self.delta_hawsy = (self.h_aw + self.t_a_flu - self.z_asu)
145
+ self.S_ymax = self.A_aflo * (self.z_aso-self.t_a_flo/2) + self.delta_hawsy * self.t_a_w * self.delta_hawsy/2
146
+
147
+
148
+ def Plotting_Cross_Section():
149
+ # Concrete Coordinates
150
+ y_Beton = [0,self.b_eff/2 , self.b_eff/2 , 0,-self.b_eff/2,-self.b_eff/2,0]
151
+ z_Beton = [0,0,self.hc,self.hc,self.hc,0,0]
152
+ # Steel coordinates
153
+ self.y_1a = 0
154
+ self.y_2a = self.b_a_flo/2
155
+ self.y_3a = self.t_a_w/2
156
+ self.y_4a = self.b_a_flu/2
157
+
158
+ y_steel = [self.y_1a,self.y_2a,self.y_2a,self.y_3a,self.y_3a,self.y_4a,self.y_4a,-self.y_4a,-self.y_4a,-self.y_3a,-self.y_3a,-self.y_2a,-self.y_2a,self.y_1a]
159
+
160
+ self.z_1a = self.hc
161
+ self.z_2a = self.hc+self.t_a_flo
162
+ self.z_3a = self.hc + self.t_a_flo + self.h_aw
163
+ self.z_4a = self.hc + self.t_a_flo + self.t_a_flu+ self.h_aw
164
+
165
+
166
+ z_steel = [self.z_1a,self.z_1a,self.z_2a,self.z_2a,self.z_3a,self.z_3a,self.z_4a,self.z_4a,self.z_3a,self.z_3a,self.z_2a,self.z_2a,self.z_1a,self.z_1a]
167
+
168
+ # Plotting
169
+ fig = plt.figure(figsize = (8,5))
170
+
171
+ plt.plot(y_Beton,z_Beton,color = "black")
172
+ plt.plot(y_steel,z_steel,color = "black")
173
+ plt.xlim(-self.b_eff/2-1, self.b_eff+2)
174
+ plt.ylim(-1, 2.3)
175
+
176
+ # Parameters
177
+ plt.text(self.b_eff/2 + 0.5, -1.00, r'$\bf{Betonparameter:}$', fontsize=10)
178
+ plt.text(self.b_eff/2 + 0.5, -0.50, r"$h_{\mathrm{c,eff}} $" + f"= {self.hc:.3f} [m]", fontsize=8)
179
+ plt.text(self.b_eff/2 + 0.5, -0.50, r"$b_{\mathrm{eff}} $" + f"= {self.b_eff:.3f} [m]", fontsize=8)
180
+ plt.text(self.b_eff/2 + 0.5, -0.25, r"$A_{\mathrm{c,eff}} $" + f"= {self.A_c:.3f} [m²]", fontsize=8)
181
+
182
+ plt.text(self.b_eff/2 + 0.5, 0.25, r'$\bf{Stahlparameter:}$', fontsize=10)
183
+ plt.text(self.b_eff/2 + 0.5, 0.50, r"$b_{\mathrm{a,fl,o}} $" + f"= {self.b_a_flo:.3f} [m]", fontsize=8)
184
+ plt.text(self.b_eff/2 + 0.5, 0.75, r"$t_{\mathrm{a,fl,o}} $" + f"= {self.t_a_flo:.3f} [m]", fontsize=8)
185
+ plt.text(self.b_eff/2 + 0.5, 1.00, r"$b_{\mathrm{a,fl,u}} $" + f"= {self.b_a_flu:.3f} [m]", fontsize=8)
186
+ plt.text(self.b_eff/2 + 0.5, 1.25, r"$t_{\mathrm{a,fl,u}} $" + f"= {self.t_a_flu:.3f} [m]", fontsize=8)
187
+ plt.text(self.b_eff/2 + 0.5, 1.50, r"$h_{\mathrm{a,w}} $" + f"= {self.h_aw:.3f} [m]", fontsize=8)
188
+ plt.text(self.b_eff/2 + 0.5, 1.75, r"$t_{\mathrm{a,w}} $" + f"= {self.t_a_w:.3f} [m]", fontsize=8)
189
+ plt.text(self.b_eff/2 + 0.5, 2.00, r"$A_{\mathrm{a}} $" + f"= {self.A_a:.3f} [m]", fontsize=8)
190
+
191
+
192
+ ax = plt.gca()
193
+ ax.set_aspect('equal')
194
+ ax.invert_yaxis()
195
+
196
+ try:
197
+ plt.savefig("Querschnittsbilder/Querschnitt_Effektiv.eps" ,bbox_inches='tight')
198
+ except:
199
+ pass
200
+
201
+ plt.show(block=False) # Zeigt das Fenster ohne Blockierung des Codes
202
+ plt.pause(1) # Pausiert für 3 Sekunden
203
+ plt.close() # Schließt das Plot-Fenster nach 3 Sekunden
204
+
205
+ Plotting_Cross_Section()
206
+
207
+ def Plotting_Cross_Section_Brutto():
208
+ # Concrete Coordinates
209
+ y_Beton = [0,self.b_c/2 , self.b_c/2 , 0,-self.b_c/2,-self.b_c/2,0]
210
+ z_Beton = [0,0,self.hc,self.hc,self.hc,0,0]
211
+ # Steel coordinates
212
+ self.y_1a = 0
213
+ self.y_2a = self.b_a_flo/2
214
+ self.y_3a = self.t_a_w/2
215
+ self.y_4a = self.b_a_flu/2
216
+
217
+ y_steel = [self.y_1a,self.y_2a,self.y_2a,self.y_3a,self.y_3a,self.y_4a,self.y_4a,-self.y_4a,-self.y_4a,-self.y_3a,-self.y_3a,-self.y_2a,-self.y_2a,self.y_1a]
218
+
219
+ self.z_1a = self.hc
220
+ self.z_2a = self.hc+self.t_a_flo
221
+ self.z_3a = self.hc + self.t_a_flo + self.h_aw
222
+ self.z_4a = self.hc + self.t_a_flo + self.t_a_flu+ self.h_aw
223
+
224
+ z_steel = [self.z_1a,self.z_1a,self.z_2a,self.z_2a,self.z_3a,self.z_3a,self.z_4a,self.z_4a,self.z_3a,self.z_3a,self.z_2a,self.z_2a,self.z_1a,self.z_1a]
225
+
226
+ # Plotting
227
+ plt.plot(y_Beton,z_Beton,color = "black")
228
+ plt.plot(y_steel,z_steel,color = "black")
229
+ plt.xlim(-self.b_eff/2-1, self.b_eff+2)
230
+ plt.ylim(-1, 2.3)
231
+
232
+ # Parameters
233
+ plt.text(self.b_c/2 + 0.5, -0.75, r'$\bf{Betonparameter:}$', fontsize=10)
234
+ plt.text(self.b_c/2 + 0.5, -0.50, r"$b_{\mathrm{c}} $" + f"= {self.b_c:.3f} [m]", fontsize=8)
235
+ plt.text(self.b_c/2 + 0.5, -0.25, r"$A_{\mathrm{c,ges}} $" + f"= {self.A_c:.3f} [m²]", fontsize=8)
236
+
237
+ plt.text(self.b_c/2 + 0.5, 0.25, r'$\bf{Stahlparameter:}$', fontsize=10)
238
+ plt.text(self.b_c/2 + 0.5, 0.50, r"$b_{\mathrm{a,fl,o}} $" + f"= {self.b_a_flo:.3f} [m²]", fontsize=8)
239
+ plt.text(self.b_c/2 + 0.5, 0.75, r"$t_{\mathrm{a,fl,o}} $" + f"= {self.t_a_flo:.3f} [m²]", fontsize=8)
240
+ plt.text(self.b_c/2 + 0.5, 1.00, r"$b_{\mathrm{a,fl,u}} $" + f"= {self.b_a_flu:.3f} [m²]", fontsize=8)
241
+ plt.text(self.b_c/2 + 0.5, 1.25, r"$t_{\mathrm{a,fl,u}} $" + f"= {self.t_a_flu:.3f} [m²]", fontsize=8)
242
+ plt.text(self.b_c/2 + 0.5, 1.50, r"$h_{\mathrm{a,w}} $" + f"= {self.h_aw:.3f} [m²]", fontsize=8)
243
+ plt.text(self.b_c/2 + 0.5, 1.75, r"$t_{\mathrm{a,w}} $" + f"= {self.t_a_w:.3f} [m²]", fontsize=8)
244
+ plt.text(self.b_c/2 + 0.5, 2.00, r"$A_{\mathrm{a}} $" + f"= {self.A_a:.3f} [m²]", fontsize=8)
245
+
246
+
247
+
248
+ ax = plt.gca()
249
+ ax.set_aspect('equal')
250
+ ax.invert_yaxis()
251
+
252
+ try:
253
+ plt.savefig("Querschnittsbilder/Querschnitt_Brutto.eps" ,bbox_inches='tight')
254
+ except:
255
+ pass
256
+
257
+ plt.show(block=False) # Zeigt das Fenster ohne Blockierung des Codes
258
+ plt.pause(1) # Pausiert für 3 Sekunden
259
+ plt.close() # Schließt das Plot-Fenster nach 3 Sekunden
260
+
261
+
262
+ Plotting_Cross_Section_Brutto()
263
+
264
+ def Einstufung_Querschnittsklasse(self):
265
+ self.c_t_flansch = (self.b_a_flo/2 - self.t_a_w/2) / self.t_a_flo
266
+ self.c_t_web = self.h_aw / self.t_a_w
267
+
268
+ if (self.c_t_web <= 72 * 0.814):
269
+ self.QK = 1
270
+
271
+ if (self.c_t_flansch <= 10 * 0.814):
272
+ self.QK = 2
273
+
274
+ def Berechnung_Kriechzahlen_Schwinden(self):
275
+ # Kriechzahl für Schwinden
276
+ if (self.Zement == "I42.5N" or self.Zement == "I32.5R"):
277
+ self.alpha = 0
278
+ elif(self.Zement == "I42.5R" or self.Zement == "I52.5N" or self.Zement == "I52.5R" ):
279
+ self.alpha = 1
280
+ else:
281
+ self.alpha = -1
282
+
283
+ self.t_0 = self.t0
284
+
285
+ self.t_0_eff = max(self.t_0 * (1 + 9 / (2 +self.t_0**(1.2) ))**self.alpha ,0.5)
286
+
287
+ self.t_infty = 70 * 365
288
+
289
+ self.RH = self.LF # Außenliegendes Bauteil
290
+
291
+ # Fallunterscheidung für Druckfestigkeit
292
+ self.alpha_1 = min((35 / self.fcm)**0.7,1)
293
+ self.alpha_2 = min((35 / self.fcm)**0.2,1)
294
+ self.alpha_3 = min((35 / self.fcm)**0.5,1)
295
+
296
+ # Einfluss der Luftfeuchte und wirksamer Bauteildicke
297
+ if (self.fcm <= 35):
298
+ self.phi_rh = 1+ (1-self.RH/100) / (0.1 * (self.h_0*1000)**(0.3333333))
299
+ else:
300
+ self.phi_rh = (1+ (1-self.RH/100) / (0.1 * (self.h_0*1000)**(0.3333333)) * self.alpha_1 ) * self.alpha_2
301
+
302
+ # Einfluss der Betondruckfestigkeit
303
+ self.beta_fcm = 16.8 / np.sqrt(self.fcm)
304
+ # Einfluss des Belastungsbeginns
305
+ self.beta_t0 = 1 / (0.1 + self.t_0_eff**0.2)
306
+ # Einfluss der Luftfeuchte - Beta-Beiwert
307
+ if (self.fcm <= 35):
308
+ self.beta_h = min(1.5 * (1 + (0.012 * self.RH)**18) * self.h_0*1000 + 250 , 1500)
309
+ else:
310
+ self.beta_h = min(1.5 * (1 + (0.012 * self.RH)**18) * self.h_0 * 1000 + 250 * self.alpha_3 , 1500 *self.alpha_3)
311
+ # Einfluss der Belastungsdauer und Belastungsbeginn
312
+ self.beta_c_t_t0 = ((self.t_infty - self.t_0) / (self.beta_h + self.t_infty-self.t_0))**0.30
313
+
314
+ self.phi_infty = self.phi_rh * self.beta_fcm * self.beta_t0 * self.beta_c_t_t0
315
+
316
+ def Berechnung_Kriechzahlen_Ausbau(self):
317
+ # Kriechzahl für Ausbaulasten
318
+
319
+ if (self.Zement == "I42.5N" or self.Zement == "I32.5R"):
320
+ self.alpha = 0
321
+ elif(self.Zement == "I42.5R" or self.Zement == "I52.5N" or self.Zement == "I52.5R" ):
322
+ self.alpha = 1
323
+ else:
324
+ self.alpha = -1
325
+
326
+ self.t_0ab = self.t_ausbau
327
+
328
+ self.t_0_effab = max(self.t_0ab* (1 + 9 / (2 +self.t_0ab**(1.2) ))**self.alpha ,0.5)
329
+
330
+ self.t_infty = 70 * 365
331
+
332
+ self.RH = self.LF # Außenliegendes Bauteil
333
+
334
+ # Fallunterscheidung für Druckfestigkeit
335
+ self.alpha_1 = min((35 / self.fcm)**0.7,1)
336
+ self.alpha_2 = min((35 / self.fcm)**0.2,1)
337
+ self.alpha_3 = min((35 / self.fcm)**0.5,1)
338
+
339
+ # Einfluss der Luftfeuchte und wirksamer Bauteildicke
340
+ if (self.fcm <= 35):
341
+ self.phi_rh = 1+ (1-self.RH/100) / (0.1 * (self.h_0*1000)**(0.3333333))
342
+ else:
343
+ self.phi_rh = (1+ (1-self.RH/100) / (0.1 * (self.h_0*1000)**(0.3333333)) * self.alpha_1 ) * self.alpha_2
344
+
345
+ # Einfluss der Betondruckfestigkeit
346
+ self.beta_fcm = 16.8 / np.sqrt(self.fcm)
347
+ # Einfluss des Belastungsbeginns
348
+ self.beta_t0ab = 1 / (0.1 + self.t_0_effab**0.2)
349
+ # Einfluss der Luftfeuchte - Beta-Beiwert
350
+ if (self.fcm <= 35):
351
+ self.beta_h = min(1.5 * (1 + (0.012 * self.RH)**18) * self.h_0*1000 + 250 , 1500)
352
+ else:
353
+ self.beta_h = min(1.5 * (1 + (0.012 * self.RH)**18) * self.h_0 * 1000 + 250 * self.alpha_3 , 1500 *self.alpha_3)
354
+ # Einfluss der Belastungsdauer und Belastungsbeginn
355
+ self.beta_c_t_t0ab = ((self.t_infty - self.t_0ab) / (self.beta_h + self.t_infty-self.t_0ab))**0.30
356
+
357
+ self.phi_infty_ab = self.phi_rh * self.beta_fcm * self.beta_t0ab * self.beta_c_t_t0ab
358
+
359
+ def Berechnung_Schwinddehnung(self):
360
+
361
+
362
+ # Trocknungsschwinden
363
+
364
+ self.beta_rh = 1.55 * (1-(self.RH/100)**3)
365
+
366
+ if (self.Zement == "I42.5N" or self.Zement == "I32.5R"):
367
+ self.alpha_as = 700
368
+ self.alpha_ds1 = 4
369
+ self.alpha_ds2 = 0.12
370
+ elif(self.Zement == "I42.5R" or self.Zement == "I52.5N" or self.Zement == "I52.5R" ):
371
+ self.alpha_as = 600
372
+ self.alpha_ds1 = 6
373
+ self.alpha_ds2 = 0.12
374
+ else:
375
+ self.alpha_as = 800
376
+ self.alpha_ds1 = 3
377
+ self.alpha_ds2 = 0.12
378
+
379
+ self.epsilon_cd_0 = 0.85 * ((220+110*self.alpha_ds1) * np.exp(-self.alpha_ds2 * self.fcm/10)) * 1e-6 * self.beta_rh
380
+
381
+ ts = 3 # Nachbehandlung des Betons
382
+ self.t_s = ts
383
+
384
+ t = self.t_infty
385
+ self.t_infty_s = t
386
+
387
+ self.beta_ds = np.sqrt((t-ts) / ((t-ts) +0.04 * np.sqrt(self.h_0**3)))
388
+
389
+ if (self.h_0 * 1000 <=100):
390
+ self.k_h = 1.00
391
+ elif(self.h_0*1000 > 100 and self.h_0*1000 <= 200):
392
+ self.k_h = 1.00 - 0.15 / 100 * (self.h_0*1000-100)
393
+ elif(self.h_0*1000 > 200 and self.h_0*1000 <= 300):
394
+ self.k_h = 0.85 - 0.10 / 100 * (self.h_0*1000-200)
395
+ elif(self.h_0*1000 > 300 and self.h_0*1000 <= 500):
396
+ self.k_h = 0.75 - 0.05 / 100 * (self.h_0*1000-300)
397
+ elif(self.h_0*1000 > 500 ):
398
+ self.k_h = 0.70
399
+
400
+
401
+ self.epsilon_cd = self.beta_ds * self.epsilon_cd_0 * self.k_h
402
+
403
+ # Autogenes Schwinden
404
+ self.epsilon_ca_infty = 2.5 * (self.fck - 10 ) * 1e-6
405
+ self.beta_as = 1 - np.exp(-0.2 * np.sqrt(t))
406
+
407
+ self.epsilon_ca = self.beta_as * self.epsilon_ca_infty
408
+
409
+ # Gesamtschwinden
410
+ self.epsilon_cs = self.epsilon_cd+ self.epsilon_ca
411
+
412
+ def Reduktionszahlen(self):
413
+ self.n_0 = self.E_a / self.Ecm
414
+ self.n_P = self.n_0 * (1+1.1*self.phi_infty_ab) # Ausbaulasten
415
+ self.n_s = self.n_0 * (1+self.phi_infty *0.55) # Kriechen
416
+
417
+ def Ideel_Verkehr(self):
418
+ self.elast_zentrum_0 = False
419
+ self.A_c0_lm = self.A_c / self.n_0
420
+ self.I_c0_lm = self.I_c / self.n_0
421
+ self.a_lm = self.z_aso + self.hc*0.5
422
+ self.A_i_0_lm = self.A_a + self.A_c0_lm
423
+ self.a_c0_lm = self.a_lm * self.A_a / self.A_i_0_lm
424
+ if (self.a_c0_lm + self.hc*0.5 < self.hc and (self.hc-self.a_c0_lm-self.hc*0.5 >0.01)):
425
+ print("Elastisches Zentrum im Betongurt - Abminderung Betonfläche (Zugzone)")
426
+ self.elast_zentrum_0 = True
427
+ self.diff_hc0 = self.hc - (self.a_c0_lm + self.hc*0.5)
428
+ self.h_c_red_0 = self.hc - self.diff_hc0
429
+ self.A_c0_lm = self.A_c0_lm / self.hc * self.h_c_red_0
430
+ self.I_c0_lm = self.I_c0_lm / self.hc**3 * self.h_c_red_0**3
431
+ self.a_lm = self.z_aso + self.diff_hc0 + self.h_c_red_0/2
432
+ self.A_i_0_lm = self.A_a + self.A_c0_lm
433
+ self.a_c0_lm = self.a_lm * self.A_a/self.A_i_0_lm
434
+
435
+ self.a_a0_lm = self.a_lm - self.a_c0_lm
436
+ self.I_i0_lm = self.I_c0_lm + self.I_a + self.A_a * self.a_a0_lm**2+self.A_c0_lm * self.a_c0_lm**2
437
+
438
+ # Berechnung der Widerstandsmomente
439
+ self.z_A0 = self.a_a0_lm + self.z_asu
440
+ self.z_B0 = (-self.a_c0_lm + self.hc / 2)
441
+ self.z_C0 = (-self.a_c0_lm - self.hc / 2)
442
+
443
+ self.W_A0 = self.I_i0_lm / self.z_A0
444
+ self.W_B0 = self.I_i0_lm / self.z_B0
445
+ self.W_C0 = self.I_i0_lm / self.z_C0
446
+
447
+ def Ideel_Ausbaulasten(self):
448
+ self.elast_zentrum_al = False
449
+ self.A_cp_al = self.A_c / self.n_P
450
+ self.I_cp_al = self.I_c / self.n_P
451
+ self.a_al = self.z_aso+ self.hc * 0.5
452
+ self.A_i_p_al = self.A_a + self.A_cp_al
453
+ self.a_cp_al = self.a_al * self.A_a / self.A_i_p_al
454
+ self.a_ap_al = self.a_al - self.a_cp_al
455
+ self.I_ip_al = self.I_cp_al + self.I_a + self.A_a * self.a_ap_al**2 + self.A_cp_al * self.a_cp_al**2
456
+
457
+ if (self.a_cp_al + self.hc*0.5 < self.hc and (self.hc-self.a_cp_al-self.hc*0.5 >0.01)):
458
+ print("Elastisches Zentrum für Ausbaulasten im Betongurt - Abminderung Betonfläche (Zugzone)")
459
+ self.elast_zentrum_al = True
460
+ self.diff_hcal = self.hc - (self.a_cp_al + self.hc*0.5)
461
+ self.h_c_red_al = self.hc - self.diff_hcal
462
+ self.A_cp_al = self.A_cp_al / self.hc * self.h_c_red_al
463
+ self.I_cp_al = self.I_cp_al / self.hc**3 * self.h_c_red_al**3
464
+ self.a_al = self.z_aso + self.diff_hcal + self.h_c_red_al/2
465
+ self.A_i_p_al = self.A_a + self.A_cp_al
466
+ self.a_cp_al = self.a_al * self.A_a/self.A_i_p_al
467
+
468
+
469
+ # Berechnung der Widerstandsmomente
470
+ self.z_A_al = self.a_ap_al + self.z_asu
471
+ self.z_B_al = (-self.a_cp_al + self.hc / 2)
472
+ self.z_C_al = (-self.a_cp_al - self.hc / 2)
473
+
474
+ self.W_A_al = self.I_ip_al / self.z_A_al
475
+ self.W_B_al = self.I_ip_al / self.z_B_al
476
+ self.W_C_al = self.I_ip_al / self.z_C_al
477
+
478
+ def Ideel_Schwinden(self):
479
+ self.A_cs_s = self.A_c / self.n_s
480
+ self.I_cs_s = self.I_c / self.n_s
481
+ self.a_s = self.z_aso+ self.hc * 0.5
482
+ self.A_i_cs_s = self.A_a + self.A_cs_s
483
+ self.a_cs_s = self.a_s * self.A_a / self.A_i_cs_s
484
+ self.a_as_s = self.a_s - self.a_cp_al
485
+ self.I_ip_s = self.I_cs_s + self.I_a + self.A_a * self.a_as_s**2 + self.A_cp_al * self.a_cs_s**2
486
+
487
+ # Berechnung der Widerstandsmomente
488
+ self.z_A_s = self.a_as_s + self.z_asu
489
+ self.z_B_s = (-self.a_cs_s + self.hc / 2)
490
+ self.z_C_s = (-self.a_cs_s -self.hc / 2)
491
+
492
+ self.W_A_s = self.I_ip_s / self.z_A_s
493
+ self.W_B_s = self.I_ip_s / self.z_B_s
494
+ self.W_C_s = self.I_ip_s / self.z_C_s
495
+
496
+ def Einwirkungen_Schwinden(self):
497
+ # Zwangsschnittgrößen / Primär
498
+ self.N_sch = - self.epsilon_cs * self.Ecm / (1+ self.phi_infty * 0.55) * self.A
499
+ self.N_sch_cal = - self.epsilon_cs * self.Ecm / (1+ self.phi_infty * 0.55) * self.A
500
+ self.M_sch = abs(self.N_sch * self.a_cs_s )
501
+
502
+ def Spannungen_Eigengewicht(self):
503
+ self.sigma_A_a_g1k = self.M_gk1 / self.W_au
504
+ self.sigma_B_a_g1k = -self.M_gk1 / self.W_ao
505
+ self.sigma_B_c_g1k = 0
506
+ self.sigma_C_c_g1k = 0
507
+
508
+ self.list_sigma_g1k = [self.sigma_A_a_g1k, self.sigma_B_a_g1k,self.sigma_B_c_g1k, self.sigma_C_c_g1k]
509
+
510
+ def Spannungen_Ausbaulasten(self, Mgk2):
511
+ self.M_gk2 = Mgk2
512
+ self.sigma_A_a_g2k = self.M_gk2 / self.W_A_al
513
+ self.sigma_B_a_g2k = self.M_gk2 / self.W_B_al
514
+ self.sigma_B_c_g2k = self.sigma_B_a_g2k * 1 / self.n_P
515
+ self.sigma_C_c_g2k = self.M_gk2 / self.W_C_al * 1 / self.n_P
516
+
517
+ self.list_sigma_g2k = [self.sigma_A_a_g2k, self.sigma_B_a_g2k,self.sigma_B_c_g2k, self.sigma_C_c_g2k]
518
+
519
+ def Spannungen_Verkehr(self, M_Verkehr):
520
+ self.M_Verkehr = M_Verkehr
521
+ self.sigma_A_a_lm = self.M_Verkehr / self.W_A0
522
+ self.sigma_B_a_lm = self.M_Verkehr / self.W_B0
523
+ self.sigma_B_c_lm = self.M_Verkehr / self.W_B0 * 1/self.n_0
524
+ self.sigma_C_c_lm = self.M_Verkehr / self.W_C0 * 1/self.n_0
525
+
526
+ self.list_sigma_lm = [self.sigma_A_a_lm, self.sigma_B_a_lm,self.sigma_B_c_lm, self.sigma_C_c_lm]
527
+
528
+ def Spannungen_Schwinden(self):
529
+ self.sigma_A_a_s = self.N_sch /self.A_i_cs_s + self.M_sch / self.W_A_s
530
+ self.sigma_B_a_s = self.N_sch /self.A_i_cs_s + self.M_sch / self.W_B_s
531
+ self.sigma_B_c_s = self.N_sch /self.A_i_cs_s * (1/self.n_s) + abs(self.N_sch) / self.A_c + self.M_sch / self.W_B_s * (1/self.n_s)
532
+ self.sigma_C_c_s = self.N_sch /self.A_i_cs_s * (1/self.n_s) + abs(self.N_sch) / self.A_c + self.M_sch / self.W_C_s * (1/self.n_s)
533
+
534
+ self.list_sigma_s = [self.sigma_A_a_s, self.sigma_B_a_s,self.sigma_B_c_s, self.sigma_C_c_s]
535
+
536
+ def Spannungen_GZT(self):
537
+ # Spannungen am Punkt A: Alle Einwirkungen erzeugen Zugspannungen
538
+ self.sigma_A_a_ges = 1.35 * self.sigma_A_a_g1k + 1.35 * self.sigma_A_a_g2k + 1.45 * self.sigma_A_a_lm + 1.50 * self.sigma_A_a_s
539
+ # Spannungen am Punkt B
540
+ if (self.sigma_B_a_g2k <= 0 and self.sigma_B_a_g1k <= 0):
541
+ if ( self.sigma_B_a_lm <= 0 and self.sigma_B_a_s <= 0): # Eigengewicht und Ausbaulasten erzeugen am Punkt B maximale Druckspannungen
542
+ self.sigma_B_a_ges = 1.35 * self.sigma_B_a_g1k + 1.35 * self.sigma_B_a_g2k + 1.45 * self.sigma_B_a_lm + 1.50 * self.sigma_B_a_s
543
+ elif (self.sigma_B_a_lm <= 0 ):
544
+ self.sigma_B_a_ges = 1.35 * self.sigma_B_a_g1k + 1.35 * self.sigma_B_a_g2k + 1.45 * self.sigma_B_a_lm + 0 * self.sigma_B_a_s
545
+
546
+ elif (self.sigma_B_a_s <= 0 ):
547
+ self.sigma_B_a_ges = 1.35 * self.sigma_B_a_g1k + 1.35 * self.sigma_B_a_g2k + 0 * self.sigma_B_a_lm + 1.50 * self.sigma_B_a_s
548
+
549
+ # Betonspannungen: Maximaler Druck
550
+
551
+ if (self.sigma_B_c_lm <= 0 and self.sigma_B_c_s <= 0):
552
+ self.sigma_B_c_ges = 1.35 * self.sigma_B_c_g1k + 1.35 * self.sigma_B_c_g2k + 1.45 * self.sigma_B_c_lm + 1.50 * self.sigma_B_c_s
553
+ elif (self.sigma_B_c_lm <= 0):
554
+ self.sigma_B_c_ges = 1.35 * self.sigma_B_c_g1k + 1.35 * self.sigma_B_c_g2k + 1.45 * self.sigma_B_c_lm + 0 * self.sigma_B_c_s
555
+ elif (self.sigma_B_c_s <= 0):
556
+ self.sigma_B_c_ges = 1.35 * self.sigma_B_c_g1k + 1.35 * self.sigma_B_c_g2k + 0 * self.sigma_B_c_lm + 1.50 * self.sigma_B_c_s
557
+ else:
558
+ self.sigma_B_c_ges = 1.35 * self.sigma_B_c_g1k + 1.35 * self.sigma_B_c_g2k
559
+
560
+ elif ( self.sigma_B_a_g1k <= 0):
561
+ if ( self.sigma_B_a_lm <= 0 and self.sigma_B_a_s <= 0): # Eigengewicht und Ausbaulasten erzeugen am Punkt B maximale Druckspannungen
562
+ self.sigma_B_a_ges = 1.35 * self.sigma_B_a_g1k + 0.90 * self.sigma_B_a_g2k + 1.45 * self.sigma_B_a_lm + 1.50 * self.sigma_B_a_s
563
+
564
+ elif (self.sigma_B_a_lm <= 0 ):
565
+ self.sigma_B_a_ges = 1.35 * self.sigma_B_a_g1k + 0.90 * self.sigma_B_a_g2k + 1.45 * self.sigma_B_a_lm + 0 * self.sigma_B_a_s
566
+
567
+ elif (self.sigma_B_a_s <= 0 ):
568
+ self.sigma_B_a_ges = 1.35 * self.sigma_B_a_g1k + 0.90 * self.sigma_B_a_g2k + 0 * self.sigma_B_a_lm + 1.50 * self.sigma_B_a_s
569
+
570
+ # Betonspannungen: Maximaler Druck
571
+ if (self.sigma_B_c_lm <= 0 and self.sigma_B_c_s<= 0):
572
+ self.sigma_B_c_ges = 1.35 * self.sigma_B_c_g1k + 0.90 * self.sigma_B_c_g2k + 1.45 * self.sigma_B_c_lm + 1.50 * self.sigma_B_c_s
573
+ elif (self.sigma_B_c_lm <= 0):
574
+ self.sigma_B_c_ges = 1.35 * self.sigma_B_c_g1k + 0.90 * self.sigma_B_c_g2k + 1.45 * self.sigma_B_c_lm + 0 * self.sigma_B_c_s
575
+ elif (self.sigma_B_c_s <= 0):
576
+ self.sigma_B_c_ges = 1.35 * self.sigma_B_c_g1k + 0.90 * self.sigma_B_c_g2k + 0 * self.sigma_B_c_lm + 1.50 * self.sigma_B_c_s
577
+
578
+ # Spannungen am Punkt C: Einwirkungen erzeugen alle Druckspannungen
579
+
580
+ self.sigma_C_c_ges = 1.35 * self.sigma_C_c_g1k + 1.35 * self.sigma_C_c_g2k + 1.45 * self.sigma_C_c_lm + 1.50 * self.sigma_C_c_s
581
+
582
+ def Spannungsplot_Ausbaulasten(self):
583
+ # Concrete Coordinates
584
+ y_Beton = [0,self.b_eff/2 , self.b_eff/2 , 0,-self.b_eff/2,-self.b_eff/2,0]
585
+ z_Beton = [0,0,self.hc,self.hc,self.hc,0,0]
586
+ # Steel coordinates
587
+ self.y_1a = 0
588
+ self.y_2a = self.b_a_flo/2
589
+ self.y_3a = self.t_a_w/2
590
+
591
+ y_steel = [self.y_1a,self.y_2a,self.y_2a,self.y_3a,self.y_3a,self.y_2a,self.y_2a,-self.y_2a,-self.y_2a,-self.y_3a,-self.y_3a,-self.y_2a,-self.y_2a,self.y_1a]
592
+
593
+ self.z_1a = self.hc
594
+ self.z_2a = self.hc+self.t_a_flo
595
+ self.z_3a = self.hc + self.t_a_flo + self.h_aw
596
+ self.z_4a = self.hc + 2 * self.t_a_flo + self.h_aw
597
+
598
+ z_steel = [self.z_1a,self.z_1a,self.z_2a,self.z_2a,self.z_3a,self.z_3a,self.z_4a,self.z_4a,self.z_3a,self.z_3a,self.z_2a,self.z_2a,self.z_1a,self.z_1a]
599
+
600
+ # Plotting the stresses
601
+
602
+ list_sigma_g2k = [self.list_sigma_g2k[i] / 25 + self.b_eff for i in range(0,len(self.list_sigma_g2k),1)]
603
+ list_sigma_g2k.insert(0,self.b_eff)
604
+ list_sigma_g2k.append(self.b_eff)
605
+ list_sigma_boundary = [self.b_eff,self.b_eff,self.b_eff,self.b_eff,self.b_eff,self.b_eff]
606
+ list_sigma_height = [self.z_4a,self.z_4a,self.z_1a,self.z_1a,0,0]
607
+
608
+ # Plotting circles
609
+ draw_circle_1 = plt.Circle(( self.b_eff , self.z_4a), 0.05 , label = "Punkt A", color = "blue")
610
+ draw_circle_2 = plt.Circle(( self.b_eff , self.z_1a ), 0.05 , label = "Punkt B", color = "black")
611
+ draw_circle_3 = plt.Circle(( self.b_eff , 0 ), 0.05 , label = "Punkt C", color = "green")
612
+ plt.gcf().gca().add_artist(draw_circle_1)
613
+ plt.gcf().gca().add_artist(draw_circle_2)
614
+ plt.gcf().gca().add_artist(draw_circle_3)
615
+
616
+
617
+
618
+ # Plotting
619
+ plt.plot(y_Beton,z_Beton,color = "black")
620
+ plt.plot(y_steel,z_steel,color = "black")
621
+ plt.plot(list_sigma_g2k,list_sigma_height,color = "red")
622
+ plt.plot(list_sigma_boundary,list_sigma_height ,color = "black")
623
+ plt.xlim(-self.b_eff/2-1, self.b_eff+2)
624
+
625
+ plt.ylim(-1, 2)
626
+
627
+ plt.legend()
628
+
629
+ # Parameters
630
+
631
+ ax = plt.gca()
632
+ ax.set_aspect('equal')
633
+ ax.invert_yaxis()
634
+
635
+ try:
636
+ plt.savefig("Latex/Bilder/Verbundquerschnitt/Spannungen_Ausbaulasten.png", dpi = 250 ,bbox_inches='tight')
637
+ except:
638
+ plt.savefig("../Latex/Bilder/Verbundquerschnitt/Spannungen_Ausbaulasten.png", dpi = 250 ,bbox_inches='tight')
639
+
640
+ #plt.show()
641
+ plt.close()
642
+
643
+ def Spannungsplot_Verkehr(self):
644
+ # Concrete Coordinates
645
+ y_Beton = [0,self.b_eff/2 , self.b_eff/2 , 0,-self.b_eff/2,-self.b_eff/2,0]
646
+ z_Beton = [0,0,self.hc,self.hc,self.hc,0,0]
647
+ # Steel coordinates
648
+ self.y_1a = 0
649
+ self.y_2a = self.b_a_flo/2
650
+ self.y_3a = self.t_a_w/2
651
+
652
+ y_steel = [self.y_1a,self.y_2a,self.y_2a,self.y_3a,self.y_3a,self.y_2a,self.y_2a,-self.y_2a,-self.y_2a,-self.y_3a,-self.y_3a,-self.y_2a,-self.y_2a,self.y_1a]
653
+
654
+ self.z_1a = self.hc
655
+ self.z_2a = self.hc+self.t_a_flo
656
+ self.z_3a = self.hc + self.t_a_flo + self.h_aw
657
+ self.z_4a = self.hc + 2 * self.t_a_flo + self.h_aw
658
+
659
+ z_steel = [self.z_1a,self.z_1a,self.z_2a,self.z_2a,self.z_3a,self.z_3a,self.z_4a,self.z_4a,self.z_3a,self.z_3a,self.z_2a,self.z_2a,self.z_1a,self.z_1a]
660
+
661
+ # Plotting the stresses
662
+
663
+ list_sigma_g2k = [self.list_sigma_lm[i] / 125 + self.b_eff for i in range(0,len(self.list_sigma_g2k),1)]
664
+ list_sigma_g2k.insert(0,self.b_eff)
665
+ list_sigma_g2k.append(self.b_eff)
666
+ list_sigma_boundary = [self.b_eff,self.b_eff,self.b_eff,self.b_eff,self.b_eff,self.b_eff]
667
+ list_sigma_height = [self.z_4a,self.z_4a,self.z_1a,self.z_1a,0,0]
668
+
669
+ # Plotting circles
670
+ draw_circle_1 = plt.Circle(( self.b_eff , self.z_4a), 0.05 , label = "Punkt A", color = "blue")
671
+ draw_circle_2 = plt.Circle(( self.b_eff , self.z_1a ), 0.05 , label = "Punkt B", color = "black")
672
+ draw_circle_3 = plt.Circle(( self.b_eff , 0 ), 0.05 , label = "Punkt C", color = "green")
673
+ plt.gcf().gca().add_artist(draw_circle_1)
674
+ plt.gcf().gca().add_artist(draw_circle_2)
675
+ plt.gcf().gca().add_artist(draw_circle_3)
676
+
677
+
678
+
679
+ # Plotting
680
+ plt.plot(y_Beton,z_Beton,color = "black")
681
+ plt.plot(y_steel,z_steel,color = "black")
682
+ plt.plot(list_sigma_g2k,list_sigma_height,color = "red")
683
+ plt.plot(list_sigma_boundary,list_sigma_height ,color = "black")
684
+ plt.xlim(-self.b_eff/2-1, self.b_eff+2)
685
+
686
+ plt.ylim(-1, 2)
687
+
688
+ plt.legend()
689
+
690
+ # Parameters
691
+
692
+ ax = plt.gca()
693
+ ax.set_aspect('equal')
694
+ ax.invert_yaxis()
695
+
696
+ try:
697
+ plt.savefig("Latex/Bilder/Verbundquerschnitt/Spannungen_Verkehr.png", dpi = 250 ,bbox_inches='tight')
698
+ except:
699
+ plt.savefig("../Latex/Bilder/Verbundquerschnitt/Spannungen_Verkehr.png", dpi = 250 ,bbox_inches='tight')
700
+
701
+ #plt.show()
702
+ plt.close()
703
+
704
+ def Spannungsplot_Schwinden(self):
705
+ # Concrete Coordinates
706
+ y_Beton = [0,self.b_eff/2 , self.b_eff/2 , 0,-self.b_eff/2,-self.b_eff/2,0]
707
+ z_Beton = [0,0,self.hc,self.hc,self.hc,0,0]
708
+ # Steel coordinates
709
+ self.y_1a = 0
710
+ self.y_2a = self.b_a_flo/2
711
+ self.y_3a = self.t_a_w/2
712
+
713
+ y_steel = [self.y_1a,self.y_2a,self.y_2a,self.y_3a,self.y_3a,self.y_2a,self.y_2a,-self.y_2a,-self.y_2a,-self.y_3a,-self.y_3a,-self.y_2a,-self.y_2a,self.y_1a]
714
+
715
+ self.z_1a = self.hc
716
+ self.z_2a = self.hc+self.t_a_flo
717
+ self.z_3a = self.hc + self.t_a_flo + self.h_aw
718
+ self.z_4a = self.hc + 2 * self.t_a_flo + self.h_aw
719
+
720
+ z_steel = [self.z_1a,self.z_1a,self.z_2a,self.z_2a,self.z_3a,self.z_3a,self.z_4a,self.z_4a,self.z_3a,self.z_3a,self.z_2a,self.z_2a,self.z_1a,self.z_1a]
721
+
722
+ # Plotting the stresses
723
+
724
+ list_sigma_g2k = [self.list_sigma_s[i] / 125 + self.b_eff for i in range(0,len(self.list_sigma_g2k),1)]
725
+ list_sigma_g2k.insert(0,self.b_eff)
726
+ list_sigma_g2k.append(self.b_eff)
727
+ list_sigma_boundary = [self.b_eff,self.b_eff,self.b_eff,self.b_eff,self.b_eff,self.b_eff]
728
+ list_sigma_height = [self.z_4a,self.z_4a,self.z_1a,self.z_1a,0,0]
729
+
730
+ # Plotting circles
731
+ draw_circle_1 = plt.Circle(( self.b_eff , self.z_4a), 0.05 , label = "Punkt A", color = "blue")
732
+ draw_circle_2 = plt.Circle(( self.b_eff , self.z_1a ), 0.05 , label = "Punkt B", color = "black")
733
+ draw_circle_3 = plt.Circle(( self.b_eff , 0 ), 0.05 , label = "Punkt C", color = "green")
734
+ plt.gcf().gca().add_artist(draw_circle_1)
735
+ plt.gcf().gca().add_artist(draw_circle_2)
736
+ plt.gcf().gca().add_artist(draw_circle_3)
737
+
738
+
739
+
740
+ # Plotting
741
+ plt.plot(y_Beton,z_Beton,color = "black")
742
+ plt.plot(y_steel,z_steel,color = "black")
743
+ plt.plot(list_sigma_g2k,list_sigma_height,color = "red")
744
+ plt.plot(list_sigma_boundary,list_sigma_height ,color = "black")
745
+ plt.xlim(-self.b_eff/2-1, self.b_eff+2)
746
+
747
+ plt.ylim(-1, 2)
748
+
749
+ plt.legend()
750
+
751
+ # Parameters
752
+
753
+ ax = plt.gca()
754
+ ax.set_aspect('equal')
755
+ ax.invert_yaxis()
756
+
757
+ try:
758
+ plt.savefig("Latex/Bilder/Verbundquerschnitt/Spannungen_Schwinden.png", dpi = 250 ,bbox_inches='tight')
759
+ except:
760
+ plt.savefig("../Latex/Bilder/Verbundquerschnitt/Spannungen_Schwinden.png", dpi = 250 ,bbox_inches='tight')
761
+
762
+ #plt.show()
763
+ plt.close()
764
+
765
+
766
+