kib-lap 0.5__cp313-cp313-win_amd64.whl → 0.7.7__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.
- KIB_LAP/Betonbau/TEST_Rectangular.py +21 -0
- KIB_LAP/Betonbau/beam_rectangular.py +4 -0
- KIB_LAP/FACHWERKEBEN/Elements.py +209 -0
- KIB_LAP/FACHWERKEBEN/InputData.py +118 -0
- KIB_LAP/FACHWERKEBEN/Iteration.py +967 -0
- KIB_LAP/FACHWERKEBEN/Materials.py +30 -0
- KIB_LAP/FACHWERKEBEN/Plotting.py +681 -0
- KIB_LAP/FACHWERKEBEN/__init__.py +4 -0
- KIB_LAP/FACHWERKEBEN/main.py +27 -0
- KIB_LAP/Plattentragwerke/PlateBendingKirchhoff.py +36 -29
- KIB_LAP/STABRAUM/InputData.py +13 -2
- KIB_LAP/STABRAUM/Output_Data.py +61 -0
- KIB_LAP/STABRAUM/Plotting.py +1453 -0
- KIB_LAP/STABRAUM/Programm.py +518 -1026
- KIB_LAP/STABRAUM/Steifigkeitsmatrix.py +338 -117
- KIB_LAP/STABRAUM/main.py +58 -0
- KIB_LAP/STABRAUM/results.py +37 -0
- KIB_LAP/Scheibe/Assemble_Stiffness.py +246 -0
- KIB_LAP/Scheibe/Element_Stiffness.py +362 -0
- KIB_LAP/Scheibe/Meshing.py +365 -0
- KIB_LAP/Scheibe/Output.py +34 -0
- KIB_LAP/Scheibe/Plotting.py +722 -0
- KIB_LAP/Scheibe/Shell_Calculation.py +523 -0
- KIB_LAP/Scheibe/Testing_Mesh.py +25 -0
- KIB_LAP/Scheibe/__init__.py +14 -0
- KIB_LAP/Scheibe/main.py +33 -0
- KIB_LAP/StabEbenRitz/Biegedrillknicken.py +757 -0
- KIB_LAP/StabEbenRitz/Biegedrillknicken_Trigeometry.py +328 -0
- KIB_LAP/StabEbenRitz/Querschnittswerte.py +527 -0
- KIB_LAP/StabEbenRitz/Stabberechnung_Klasse.py +868 -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 → kib_lap-0.7.7.dist-info}/METADATA +1 -1
- {kib_lap-0.5.dist-info → kib_lap-0.7.7.dist-info}/RECORD +37 -19
- Examples/Cross_Section_Thin.py +0 -61
- KIB_LAP/Betonbau/Bemessung_Zust_II.py +0 -648
- KIB_LAP/Betonbau/Iterative_Design.py +0 -723
- KIB_LAP/Plattentragwerke/NumInte.cpp +0 -23
- KIB_LAP/Plattentragwerke/NumericalIntegration.cpp +0 -23
- KIB_LAP/Plattentragwerke/plate_bending_cpp.cp313-win_amd64.pyd +0 -0
- KIB_LAP/main.py +0 -2
- {Examples → KIB_LAP/StabEbenRitz}/__init__.py +0 -0
- {kib_lap-0.5.dist-info → kib_lap-0.7.7.dist-info}/WHEEL +0 -0
- {kib_lap-0.5.dist-info → kib_lap-0.7.7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from Iteration import IterationClass
|
|
2
|
+
from Plotting import PlottingStructure
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
Iteration = IterationClass()
|
|
6
|
+
try:
|
|
7
|
+
Iteration.Summarize()
|
|
8
|
+
except:
|
|
9
|
+
Iteration.SummarizeLinear()
|
|
10
|
+
|
|
11
|
+
plotter = PlottingStructure(
|
|
12
|
+
Iteration.UG_FINAL,
|
|
13
|
+
Iteration.FI_FINAL,
|
|
14
|
+
Iteration.EXTFORCES,
|
|
15
|
+
Iteration.MBRFORCES,
|
|
16
|
+
Iteration.Inp.nodes,
|
|
17
|
+
Iteration.Inp.members,
|
|
18
|
+
Iteration.Mat.P0,
|
|
19
|
+
Iteration.Inp.restrainedIndex,
|
|
20
|
+
_reactionsFlag=True,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
plotter.Kspring_diag = Iteration.Kspring_diag # (nDoF,)
|
|
24
|
+
# optional (noch besser, damit nur echte Federn geplottet werden)
|
|
25
|
+
# plotter.spring_dofs = Iteration.spring_dofs
|
|
26
|
+
|
|
27
|
+
plotter.create_structure_plot()
|
|
@@ -33,10 +33,10 @@ class PlateBendingKirchhoffClass:
|
|
|
33
33
|
loading="Regular",
|
|
34
34
|
support="hhhh",
|
|
35
35
|
reihen=8,
|
|
36
|
-
x_s_positions
|
|
37
|
-
I_s_values=
|
|
38
|
-
y_s_positions
|
|
39
|
-
I_t_values
|
|
36
|
+
x_s_positions=[],
|
|
37
|
+
I_s_values=[],
|
|
38
|
+
y_s_positions=[],
|
|
39
|
+
I_t_values=[],
|
|
40
40
|
):
|
|
41
41
|
"""
|
|
42
42
|
Initialisierung der Klasse PlateBendingKirchhoff.
|
|
@@ -97,15 +97,12 @@ class PlateBendingKirchhoffClass:
|
|
|
97
97
|
|
|
98
98
|
self.load = np.zeros((self.reihen**2))
|
|
99
99
|
|
|
100
|
-
|
|
101
100
|
self.x_s_array = np.array(x_s_positions, dtype=np.float64)
|
|
102
101
|
self.I_s_array = np.array(I_s_values, dtype=np.float64)
|
|
103
102
|
|
|
104
|
-
|
|
105
103
|
self.y_s_array = np.array(y_s_positions, dtype=np.float64)
|
|
106
104
|
self.I_t_array = np.array(I_t_values, dtype=np.float64)
|
|
107
105
|
|
|
108
|
-
|
|
109
106
|
def CalculateAll(self):
|
|
110
107
|
"""
|
|
111
108
|
Führt alle Berechnungsschritte aus.
|
|
@@ -142,7 +139,7 @@ class PlateBendingKirchhoffClass:
|
|
|
142
139
|
self.x_s_array,
|
|
143
140
|
self.I_s_array,
|
|
144
141
|
self.y_s_array,
|
|
145
|
-
self.I_t_array
|
|
142
|
+
self.I_t_array,
|
|
146
143
|
)
|
|
147
144
|
|
|
148
145
|
self.mat = np.array(self.mat) # Konvertierung in ein NumPy-Array
|
|
@@ -779,49 +776,59 @@ class PlateBendingKirchhoffClass:
|
|
|
779
776
|
plt.close()
|
|
780
777
|
|
|
781
778
|
|
|
782
|
-
|
|
783
779
|
a = 15
|
|
784
780
|
b = 6
|
|
785
781
|
|
|
786
782
|
Plate = PlateBendingKirchhoffClass(
|
|
787
|
-
35000,
|
|
783
|
+
35000,
|
|
784
|
+
0.30,
|
|
785
|
+
a,
|
|
786
|
+
b,
|
|
787
|
+
1,
|
|
788
|
+
0.5,
|
|
789
|
+
0.5,
|
|
790
|
+
0.5,
|
|
791
|
+
0.5,
|
|
792
|
+
0.0,
|
|
793
|
+
0,
|
|
794
|
+
0,
|
|
795
|
+
n_inte=50,
|
|
796
|
+
loading="Liste",
|
|
797
|
+
support="hhhh",
|
|
798
|
+
reihen=8,
|
|
799
|
+
)
|
|
788
800
|
|
|
789
801
|
|
|
790
802
|
btire = 0.37
|
|
791
|
-
p_tire = 120/(4*btire**2) / 1000
|
|
803
|
+
p_tire = 120 / (4 * btire**2) / 1000
|
|
792
804
|
|
|
793
805
|
print("tire pressure [MN/m²]: ", p_tire)
|
|
794
806
|
|
|
795
807
|
# Daten als Liste von Listen
|
|
796
808
|
new_data = [
|
|
797
|
-
["No.","x0[m]","x1[m]","y0[m]","y1[m]","p0[MN/m**2]"],
|
|
798
|
-
[1,3+2-btire,3+2+btire,0.5,0.5+2*btire,p_tire *1.5],
|
|
799
|
-
[2,3+3.2-btire,3+3.2+btire,0.5,0.5+2*btire,p_tire *1.5],
|
|
800
|
-
[3,3+3.2-btire,3+3.2+btire,2.5,2.5+2*btire,p_tire *1.5],
|
|
801
|
-
[4,3+2-btire,3+2+btire,2.5,2.5+2*btire,p_tire *1.5],
|
|
802
|
-
|
|
803
|
-
[
|
|
804
|
-
|
|
805
|
-
[6,0,15,0,6,2.5/1000*1.5],
|
|
806
|
-
[7,0,15,0,6,0.35*25/1000*1.35],
|
|
807
|
-
|
|
809
|
+
["No.", "x0[m]", "x1[m]", "y0[m]", "y1[m]", "p0[MN/m**2]"],
|
|
810
|
+
[1, 3 + 2 - btire, 3 + 2 + btire, 0.5, 0.5 + 2 * btire, p_tire * 1.5],
|
|
811
|
+
[2, 3 + 3.2 - btire, 3 + 3.2 + btire, 0.5, 0.5 + 2 * btire, p_tire * 1.5],
|
|
812
|
+
[3, 3 + 3.2 - btire, 3 + 3.2 + btire, 2.5, 2.5 + 2 * btire, p_tire * 1.5],
|
|
813
|
+
[4, 3 + 2 - btire, 3 + 2 + btire, 2.5, 2.5 + 2 * btire, p_tire * 1.5],
|
|
814
|
+
[5, 0, 15, 0, 3, 6.5 / 1000 * 1.5],
|
|
815
|
+
[6, 0, 15, 0, 6, 2.5 / 1000 * 1.5],
|
|
816
|
+
[7, 0, 15, 0, 6, 0.35 * 25 / 1000 * 1.35],
|
|
808
817
|
# [6,2-0.2,2+0.2,3.5,3.9,100/0.4**2/1000],
|
|
809
818
|
# [7,3.2-0.2,3.2+0.2,3.5,3.9,100/0.4**2/1000],
|
|
810
819
|
# [8,3.2-0.2,3.2+0.2,5.5,5.9,100/0.4**2/1000],
|
|
811
820
|
# [9,2-0.2,2+0.2,5.5,5.9,100/0.4**2/1000],
|
|
812
|
-
|
|
813
821
|
# [10,2-0.2,2+0.2,6.5,6.9,100/0.4**2/1000],
|
|
814
822
|
# [11,3.2-0.2,3.2+0.2,6.5,6.9,100/0.4**2/1000],
|
|
815
823
|
# [12,3.2-0.2,3.2+0.2,8.5,8.9,100/0.4**2/1000],
|
|
816
824
|
# [13,2-0.2,2+0.2,8.5,8.9,100/0.4**2/1000]
|
|
817
|
-
|
|
818
825
|
]
|
|
819
826
|
|
|
820
827
|
# Konvertiere die Daten in ein DataFrame
|
|
821
828
|
df = pd.DataFrame(new_data[1:], columns=new_data[0])
|
|
822
829
|
|
|
823
830
|
# Dateipfad zur CSV-Datei
|
|
824
|
-
file_path =
|
|
831
|
+
file_path = "Loading/Constant_Loading.csv"
|
|
825
832
|
|
|
826
833
|
# Schreibe das DataFrame in eine CSV-Datei
|
|
827
834
|
df.to_csv(file_path, index=False)
|
|
@@ -829,9 +836,9 @@ df.to_csv(file_path, index=False)
|
|
|
829
836
|
|
|
830
837
|
Plate.CalculateAll()
|
|
831
838
|
|
|
832
|
-
Plate.SolutionPointDisp(0.5,0.5)
|
|
833
|
-
Plate.SolutionPointMomentx(0.5,0.5)
|
|
834
|
-
Plate.SolutionPointMomenty(0.5,0.5)
|
|
839
|
+
Plate.SolutionPointDisp(0.5, 0.5)
|
|
840
|
+
Plate.SolutionPointMomentx(0.5, 0.5)
|
|
841
|
+
Plate.SolutionPointMomenty(0.5, 0.5)
|
|
835
842
|
|
|
836
843
|
|
|
837
844
|
Plate.PlotLoad()
|
|
@@ -840,4 +847,4 @@ Plate.PlotMomentGrid()
|
|
|
840
847
|
print("SHEAR FORCES")
|
|
841
848
|
Plate.PlotShearForceGrid()
|
|
842
849
|
print("DRILL MOMENTS")
|
|
843
|
-
Plate.PlotTorsionalMomentGrid()
|
|
850
|
+
Plate.PlotTorsionalMomentGrid()
|
KIB_LAP/STABRAUM/InputData.py
CHANGED
|
@@ -20,6 +20,7 @@ class Input:
|
|
|
20
20
|
self.ElementLoads()
|
|
21
21
|
self.MaterialData()
|
|
22
22
|
self.CrossSectionData()
|
|
23
|
+
self.Springs()
|
|
23
24
|
|
|
24
25
|
def MaterialData(self):
|
|
25
26
|
try:
|
|
@@ -47,7 +48,7 @@ class Input:
|
|
|
47
48
|
df_numeric = df[numeric_columns]
|
|
48
49
|
|
|
49
50
|
self.nodes = df_numeric
|
|
50
|
-
|
|
51
|
+
self.nDoF = (len(self.nodes))*7
|
|
51
52
|
print("1. 🟢 Vertices.csv imported")
|
|
52
53
|
else:
|
|
53
54
|
self.forceLocationData = []
|
|
@@ -60,7 +61,7 @@ class Input:
|
|
|
60
61
|
numeric_columns = ['na', 'ne',"cs"]
|
|
61
62
|
df_numeric = df[numeric_columns]
|
|
62
63
|
self.members = df_numeric
|
|
63
|
-
|
|
64
|
+
|
|
64
65
|
print("2. 🟢 Edges.csv imported")
|
|
65
66
|
else:
|
|
66
67
|
print("2. 🛑 STOP: Edges.csv not found")
|
|
@@ -72,6 +73,16 @@ class Input:
|
|
|
72
73
|
df_numeric = df[numeric_columns]
|
|
73
74
|
self.RestraintData = df_numeric
|
|
74
75
|
|
|
76
|
+
def Springs(self):
|
|
77
|
+
if not glob("data/Springs.csv"):
|
|
78
|
+
self.SpringsData = pd.DataFrame(columns=["node_a","node_e","dof","cp[MN]"])
|
|
79
|
+
print("⚠️ Springs.csv not found (optional)")
|
|
80
|
+
return
|
|
81
|
+
|
|
82
|
+
df = pd.read_csv("data/Springs.csv")
|
|
83
|
+
self.SpringsData = df[["node_a","node_e","dof","cp[MN]"]].copy()
|
|
84
|
+
print("🟢 Springs.csv imported")
|
|
85
|
+
|
|
75
86
|
def NodalForces(self):
|
|
76
87
|
df = pd.read_csv("data/NodalForces.csv")
|
|
77
88
|
self.NodalForces = df
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
import numpy as np
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class OutputData:
|
|
6
|
+
def __init__(self):
|
|
7
|
+
print("Init OutputData")
|
|
8
|
+
|
|
9
|
+
def support_reactions_from_springs_table(self, res, u0_default=0.0):
|
|
10
|
+
# --- robuster Typ-/Attribut-Check ---
|
|
11
|
+
needed = ("Inp", "GesMat", "u_ges", "FGes")
|
|
12
|
+
missing = [a for a in needed if not hasattr(res, a)]
|
|
13
|
+
if missing:
|
|
14
|
+
raise TypeError(
|
|
15
|
+
"Du musst ein AnalysisResults-Objekt übergeben (res = mainloop().run()). "
|
|
16
|
+
f"Übergeben wurde: {type(res)}; fehlende Attribute: {missing}"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
dfR = res.Inp.RestraintData.copy()
|
|
20
|
+
|
|
21
|
+
# u als 1D
|
|
22
|
+
u = np.asarray(res.u_ges, dtype=float).reshape(-1)
|
|
23
|
+
|
|
24
|
+
# DOF Mapping (7 dof/node)
|
|
25
|
+
dof_name = {
|
|
26
|
+
0: ("Fx", "MN"),
|
|
27
|
+
1: ("Fy", "MN"),
|
|
28
|
+
2: ("Mz", "MNm"),
|
|
29
|
+
3: ("Fz", "MN"),
|
|
30
|
+
4: ("My", "MNm"),
|
|
31
|
+
5: ("Mx", "MNm"),
|
|
32
|
+
6: ("W", "-"),
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
rows = []
|
|
36
|
+
for _, row in dfR.iterrows():
|
|
37
|
+
node = int(row["Node"])
|
|
38
|
+
dof = int(row["Dof"])
|
|
39
|
+
k = float(row["Cp[MN/m]/[MNm/m]"])
|
|
40
|
+
|
|
41
|
+
gdof = 7 * (node - 1) + dof
|
|
42
|
+
ui = float(u[gdof])
|
|
43
|
+
u0 = float(u0_default)
|
|
44
|
+
|
|
45
|
+
Ri = k * (ui - u0)
|
|
46
|
+
|
|
47
|
+
name, unit = dof_name.get(dof, (f"DOF{dof}", ""))
|
|
48
|
+
|
|
49
|
+
rows.append(
|
|
50
|
+
{
|
|
51
|
+
"Node": node,
|
|
52
|
+
"DOF": dof,
|
|
53
|
+
"Type": name,
|
|
54
|
+
"k": k,
|
|
55
|
+
"u": ui,
|
|
56
|
+
"R_spring": Ri,
|
|
57
|
+
"Unit": unit,
|
|
58
|
+
}
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
return pd.DataFrame(rows).sort_values(["Node", "DOF"]).reset_index(drop=True)
|