Erstellen einer Finite-Elemente-Methode (FEM) mit Python ~ vba → Python-Übersetzung ~

Serieninhaltsverzeichnis

--Erstellen einer Finite-Elemente-Methode (FEM) mit Python ~ vba → Python-Übersetzung ~


Übersicht über die Übersetzung von vba → python

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.

41N5A3TAQXL.SX332_BO1,204,203,200[1].jpg

[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")

Umweltbedingung

Meine Umgebung ist wie folgt.

OS

Entwicklungsumgebung

Bewegen wir es zuerst

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

Python-Programmspezifikationen

Informationen zur Dateneingabe / -ausgabe

[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. b.png

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.

Informationen zu Array-Indizes

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.

Informationen zur Zeichenfunktion

[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

Vergleich der Analyseergebnisse

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?

Beispiel für Excel-Analyseergebnisse (Auszug)

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

Analyseergebnis des Python-Programms (Auszug)

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

nächstes Mal

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

Erstellen einer Finite-Elemente-Methode (FEM) mit Python ~ vba → Python-Übersetzung ~
Erstellen einer Finite-Elemente-Methode (FEM) mit Python ~ damyarou spielt ~ herum
Memorandum zur Einführung des EXODUS-Datenmodells der Finite-Elemente-Methode (FEM)
Führen Sie Python mit VBA aus
Kernel-Methode mit Python
Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
Erstellen der ρ-Methode zum Entschlüsseln der elliptischen Kurve mit Python
Verwenden Sie IvyFEM (Finite-Elemente-Methodenbibliothek für .NET) aus Python
Ein Ei mit Python erstellen
[Python] LASSO-Regression mit Gleichungsbeschränkung unter Verwendung der Multiplikatormethode
Rufen Sie die API mit python3 auf.
Lösen Sie das Python-Rucksackproblem mit der Branch-and-Bound-Methode
Extrahieren Sie die xz-Datei mit Python
[Python] Klicken Sie auf die Google Übersetzungs-API
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
Finden Sie die Bearbeitungsentfernung (Levenshtein-Entfernung) mit Python
Installieren Sie das Python-Plug-In mit Netbeans 8.0.2
Ich mochte den Tweet mit Python. ..
Beherrsche den Typ mit Python [Python 3.9 kompatibel]
[Python] Erstellen mehrerer Fenster mit Tkinter
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
Machen Sie die Python-Konsole mit UNKO bedeckt
Holen Sie sich HTML von Element mit Python-Selen
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Verwenden Sie DeepL mit Python (für die Artikelübersetzung)
Hinter dem Flyer: Docker mit Python verwenden
Automatische Update-Methode von Python Pyinstaller exe
Onkel SES modernisiert die VBA-App mit Python
Überprüfen Sie die Existenz der Datei mit Python
2D FEM Stressanalyseprogramm von Python
[Python] Ruft den Variablennamen mit str ab
[Python] Runden Sie nur mit dem Operator ab
Zeigen Sie Python 3 im Browser mit MAMP an
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Lesen wir die RINEX-Datei mit Python ①
Arbeiten mit OpenStack mit dem Python SDK
Laden Sie mit Python Dateien im Web herunter
Lernen Sie das Entwurfsmuster "Singleton" mit Python
[Python] Betreiben Sie den Browser automatisch mit Selenium
Der Beginn der Finite-Elemente-Methode (eindimensionale Elementsteifigkeitsmatrix)
Lernen Sie das Designmuster "Facade" mit Python
Der Weg zum Kompilieren zu Python 3 mit Thrift
Japanische Übersetzung: PEP 20 - Das Zen von Python
Flächenextraktionsmethode mit dem Zellautomaten Versuchen Sie die Flächenextraktion aus dem Bild mit Growcut (Python).
Vergleichen Sie die Summe jedes Elements in zwei Listen mit dem in Python angegebenen Wert
Lösen Sie das asymmetrische Python-Problem für reisende Verkäufer mit der Branch-and-Bound-Methode