--Erstellen einer Finite-Elemente-Methode (FEM) mit Python ~ vba → Python-Übersetzung ~
Wenn Sie das Konzept grob erklären Erstellen wir eine Finite-Elemente-Methode (FEM) mit Python
Sagen wir zunächst ~ vba → Python-Übersetzung ~ [dieses Buch](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl .rakuten.co.jp% 2Fhgc% 2F0eac8dc2.9a477d4e .rakuten.co.jp% 252Frb% 252F1700147% 252F) Excel-Beispiel "5-1 Dreidimensionale Skelettanalyse .xls" (im Folgenden Beispiel) wird in Python umgeschrieben.
[Einführung in die Excel-Finite-Elemente-Methode (Excel-Kurs für Bauingenieurwesen)](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb .afl.rakuten.co.jp% 2Fhgc% 2F0eac8dc2.9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A2 % 252F books.rakuten.co.jp% 252Frb% 252F1700147% 252F)
Die Übersetzung lautet wie folgt: jp% 2Fhgc% 2F0eac8dc2.9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252F2 jp% 252Frb% 252F1700147% 252F) → Python wird übersetzt.
5-1 Dreidimensionale Skelettanalyse.xls
Private Sub cmd Berechnung_Click()
Dim I As Long
Dim NEQ As Integer
For I =1 Zum Anordnen der Obergrenze
AJCB(I) = 0
Next
Dateneingabe anrufen
Rufen Sie die SKY-Matrix auf(NEQ)
For I = 1 To NEQ
FORCE(I) = 0
Next I
Verteilte Lastverteilung aufrufen
Rufen Sie externe Kraft hinzufügen
Call decomp(NEQ)
Call redbak(NEQ)
Verschiebungsberechnung aufrufen
Kraft- und Momentberechnung aufrufen
Ergebnisausgabe aufrufen
MsgBox "Die Analyse ist beendet"
End Sub
framecalc.py
from Calcrate import Calcrate
if __name__ == "__main__":
cal = Calcrate()
NEQ = 0
cal.Dateneingabe()
cal.SKY Matrix(NEQ)
cal.Verteilte Lastverteilung()
cal.Externe Kraft hinzufügen()
cal.decomp(NEQ)
cal.redbak(NEQ)
cal.Verschiebungsberechnung()
cal.Kraft- und Momentberechnung()
cal.Ergebnisausgabe()
print("Die Analyse ist beendet")
Meine Umgebung ist wie folgt.
OS
Laden Sie zunächst den Quellcode herunter.
[Beispiel](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhc2 9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252Fbooks.rakuten.co.jp% 252Frb% 25% 252F) Bitte laden Sie 5-1 3D skeleton analysis.xls
gemäß den Anweisungen im Buch herunter.
Wir werden dieses Excel VBA in Python übersetzen.
Die in Python übersetzte Quelle ist hier.
$ git clone -b "#1" https://github.com/sasaco/FramePython.git
Wenn die Umgebung bereit ist, wechseln Sie in das Quellcodeverzeichnis und drücken Sie framecalc.py, um die Analyse zu starten. Wenn "Analyse abgeschlossen" angezeigt wird, wurde die Analyse korrekt durchgeführt.
python
$ cd FramePython
$ python framecalc.py
$Die Analyse ist beendet
[Beispiel](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhc2 9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252Fbooks.rakuten.co.jp% 252Frb% 25% 252F) Excel verwendet Blatt ** [Eingabe 1] [Eingabe 2] ** als Eingabedaten. Die Analyseergebnisse werden im Blatt ** [Berechnung / Ausgabe] ** gespeichert.
Das übersetzte Python-Programm funktioniert also nicht mit der Excel-Tabelle [Beispiel](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhc2 9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252Fbooks.rakuten.co.jp% 252Frb% 25% 252F) Excel-Tabelle ** [Eingabe 1] [Eingabe 2] [Berechnung / Ausgabe] ** wird in CSV konvertiert und die Datei wird für die Eingabe und Ausgabe verwendet.
Die Sequenz von vba ist 1 ~
5-1 Dreidimensionale Skelettanalyse.xls
Range(1,1)
Python-Array ist von 0
Calcrate.py
Range[0][0]
Also musste ich beim Übersetzen vorsichtig sein.
[Beispiel](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhg2 9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252Fbooks.rakuten.co.jp% 252Frb% 252F1700% 252F) Die Excel-Zeichenfunktion ist nicht auf Python portiert
Die Übersetzungsarbeiten für vba → python sind vorerst abgeschlossen, daher habe ich die Analyseergebnisse beider verglichen Ein kleiner Wert von fast 0 hat einen Fehler, aber ist es nicht eine vernünftige Reproduzierbarkeit?
Verschiebung | REACT | Element | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X | Y | Z | angX | angY | angZ | Rx | Ry | Rz | Mx | My | Mz | Knoten | Fx | Fy | Fz | Mx | My | Mz | |||||
1 | 0.00E+00 | 0.00E+00 | 0.00E+00 | 0.00E+00 | 0.00E+00 | 0.00E+00 | 1 | 3.49E+01 | 408.073 | 20.088 | 31.400 | 1.73E-16 | -17.837 | 1 | 1 | 408.073 | -34.929 | 20.088 | 1.73E-16 | -31.400 | -17.837 | ||
2 | 2.30E-03 | -2.59E-02 | -1.23E-04 | 1.17E-04 | -6.91E-21 | -2.08E-03 | 2 | -5.00E-15 | -76.000 | 0.000 | 48.000 | 1.28E-14 | -75.000 | 2 | -408.073 | 34.929 | -20.088 | -1.73E-16 | -48.953 | -121.877 | |||
3 | 1.17E-02 | -4.30E-02 | 2.04E-04 | 2.42E-04 | 4.04E-19 | -3.80E-03 | 3 | -1.46E-13 | -78.000 | 0.000 | 48.000 | -3.70E-14 | -75.000 | 2 | 2 | 269.653 | -44.737 | 22.027 | -1.03E-14 | -34.644 | -46.608 | ||
4 | 2.76E-02 | -5.04E-02 | 1.19E-03 | 4.20E-04 | -5.62E-19 | -5.41E-03 | 4 | 9.19E-14 | -56.000 | 0.000 | 42.667 | 3.56E-13 | -66.667 | 3 | -269.653 | 44.737 | -22.027 | 1.03E-14 | -53.464 | -132.339 | |||
5 | 0.00E+00 | 0.00E+00 | 0.00E+00 | 0.00E+00 | 0.00E+00 | 0.00E+00 | 5 | 7.02E+00 | 623.968 | 20.088 | 31.400 | -6.73E-15 | 29.101 | 3 | 3 | 116.788 | -45.660 | 18.809 | 2.42E-14 | -24.329 | -50.990 |
Verschiebung | REACT | Element | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X | Y | Z | angX | angY | angZ | Rx | Ry | Rz | Mx | My | Mz | Knoten | Fx | Fy | Fz | Mx | My | Mz | |||||
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 34.9286048 | 408.0727049 | 20.08821182 | 31.40032555 | -9.49E-15 | -17.83716034 | 1 | 1 | 408.0727049 | -34.9286048 | 20.08821182 | -9.49E-15 | -31.40032555 | -17.83716034 | ||
2 | 0.002298747 | -0.025909378 | -0.000123095 | 0.000117015 | 3.79E-19 | -0.002080804 | 2 | -1.91E-14 | -76 | -3.11E-15 | 48 | 1.46E-14 | -75 | 2 | -408.0727049 | 34.9286048 | -20.08821182 | 9.49E-15 | -48.95252174 | -121.8772589 | |||
3 | 0.011665227 | -0.043030177 | 0.000204306 | 0.000242481 | 8.13E-19 | -0.003795417 | 3 | -6.95E-14 | -78 | -6.66E-15 | 48 | -1.17E-13 | -75 | 2 | 2 | 269.6525828 | -44.73675837 | 22.02695187 | -1.08E-14 | -34.64397073 | -46.60823232 | ||
4 | 0.027638145 | -0.050445274 | 0.001194231 | 0.000419675 | 6.78E-19 | -0.005408655 | 4 | -2.39E-13 | -56 | 3.55E-14 | 42.66666667 | -2.39E-13 | -66.66666667 | 3 | -269.6525828 | 44.73675837 | -22.02695187 | 1.08E-14 | -53.46383676 | -132.3388011 | |||
5 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 7.022385521 | 623.9683925 | 20.08821182 | 31.40032555 | -4.93E-15 | 29.10143338 | 3 | 3 | 116.7877789 | -45.66043605 | 18.80913902 | 3.39E-15 | -24.32874619 | -50.9899696 |
Vorläufig konnte ich ähnliche Ergebnisse erzielen.
nächstes Mal,
Ich denke.
Dieser Artikel ist also ein laufendes Projekt Noch nicht beendet.
Der aktuelle Programmstatus befindet sich im Hauptzweig. https://github.com/sasaco/FramePython/tree/master Möglicherweise haben Sie damit begonnen, einige der oben genannten Probleme zu beheben
Bitte kontaktieren Sie uns, wenn Sie interessiert sind.
Recommended Posts