2D FEM Stressanalyseprogramm von Python

Ich denke, der folgende Beitrag ist besser für das Ende als Programm, also beziehen Sie sich bitte darauf.

Überblick

Ich habe ein lineares elastisches zweidimensionales FEM-Spannungsanalyseprogramm von Python erstellt.

Das Element ist ein isoparametrisches Element mit 4 Knoten pro Element, und jedes Element hat 4 Gauß-Integrationspunkte.

Die Lasten, die gehandhabt werden können, sind wie folgt.

Theoretische Formel

Berechnungsformel für die Knotenverschiebung
[\boldsymbol{k}]\\{\boldsymbol{u}\\}=\\{\boldsymbol{f}\\}+\\{\boldsymbol{f_t}\\}+\\{\boldsymbol{f_b}\\}
\begin{align} &[\boldsymbol{k}]=t\cdot \int_A [\boldsymbol{B}]^T[\boldsymbol{D}][\boldsymbol{B}] dA \\\ &\\{\boldsymbol{f_t}\\}=t\cdot \int_A [\boldsymbol{B}]^T[\boldsymbol{D}]\\{\boldsymbol{\epsilon_0}\\} dA \\\ &\\{\boldsymbol{f_b}\\}=t\cdot\gamma\cdot \int_A [\boldsymbol{N}]^T [\boldsymbol{N}] dA \cdot \\{\boldsymbol{w}\\} \end{align}
Berechnungsformel für die Elementspannung
\\{\boldsymbol{\sigma}\\}=[\boldsymbol{D}]\\{\boldsymbol{\epsilon}-\boldsymbol{\epsilon_0}\\}

$ \ {\ boldsymbol {\ epsilon_0} \} $ ist eine Verzerrung aufgrund einer Temperaturänderung

Knotenverschiebung - willkürliche Position Dehnung relationaler Ausdruck
\\{\boldsymbol{\epsilon}\\}=[\boldsymbol{B}]\\{\boldsymbol{u}\\}

$ \ {\ boldsymbol {\ epsilon} \} $ ist die Verzerrung eines beliebigen Punktes im Element

Berechnungsformel für die Knotenverschiebung und beliebige Positionsdehnung
\\{\boldsymbol{v}\\}=[\boldsymbol{N}]\\{\boldsymbol{u}\\}

$ \ {\ boldsymbol {v} \} $ ist die Verschiebung eines beliebigen Punkts im Element

Kann es verwendet werden?

Da Python ein Interpreter ist, war ich besorgt, ob es in Bezug auf die Berechnungsgeschwindigkeit nützlich wäre, aber die Berechnungszeit im Modell mit der Anzahl der Knoten: 3417, der Anzahl der Elemente: 3257 und dem Freiheitsgrad: 6834 beträgt 7,9 Sekunden, was eine verwendbare Ebene ist. Es wurde das bestätigt.

Programm

Das Programm ist lang, daher habe ich einen Link zu dem eingefügt, was ich in Gist eingefügt habe. Darüber hinaus werden beim Konturzeichnen die Elemente je nach Spannungsniveau einfach in verschiedenen Farben gemalt. Für meinen Zweck ist es nicht erforderlich, es separat einzufügen und eine Konturlinie zu zeichnen.

Eingabedatenformat

npoin  nele  nsec  npfix  nlod  NSTR #Grundbetrag
t  E  po  alpha  gamma  gkh  gkv     #Materialeigenschaft
..... (1~nsec) .....
node1  node2  node3  node4  isec     #Element-Knotenbeziehung, Materialeigenschaftsnummer
..... (1~nele) .....
x  y  deltaT                         #Knotenkoordinaten, Änderungen der Knotentemperatur
..... (1~npoin) .....
node  kox  koy  rdisx  rdisy         #Verschiebungsbeschränkungsbedingung
..... (1~npfix) .....
node  fx  fy                         #Äußere Kraft
..... (1~nlod) .....
npoin, nele, nsec Anzahl der Knoten, Anzahl der Elemente, Anzahl der Materialeigenschaften
npfix, nlod Anzahl der Rückhalteknoten, Anzahl der Ladeknoten
NSTR Spannungszustand (ebene Dehnung: 0, ebene Spannung: 1)
t, E, po, alpha Plattendicke, Elastizitätskoeffizient, Poisson-Verhältnis, linearer Ausdehnungskoeffizient
gamma, gkh, gkv Volumenvolumeneinheit, horizontale und vertikale Beschleunigung (Verhältnis von g)
x, y, Delta T Knoten x-Koordinate, Knoten y-Koordinate, Knotentemperaturänderung
Knoten, kox, koy Beschränken Sie die Knotennummer, das Vorhandensein / Fehlen von Einschränkungen in x- und y-Richtung (Einschränkung: 1, Freiheit: 0)
rdisx, rdisy Verschiebung in x- und y-Richtung (geben Sie 0 ein, auch wenn dies nicht eingeschränkt ist)
Knoten, fx, fy Knotennummer laden, Last in x-Richtung, Last in y-Richtung

Ausgabedatenformat

npoin  nele  nsec npfix  nlod   NSTR
    4     1     1     2     2      1
  sec               t               E              po           alpha           gamma        gkh        gkv
    1   1.0000000e+00   1.0000000e+03   0.0000000e+00   1.0000000e-05   2.3000000e+00      0.000      0.000
 node               x               y              fx              fy          deltaT   kox   koy
    1   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00     1     1
    2   1.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00     0     1
    3   1.0000000e+00   1.0000000e+00   0.0000000e+00   1.0000000e+01   0.0000000e+00     0     0
    4   0.0000000e+00   1.0000000e+00   0.0000000e+00   1.0000000e+01   0.0000000e+00     0     0
 node   kox   koy          rdis_x          rdis_y
    1     1     1   0.0000000e+00   0.0000000e+00
    2     0     1   0.0000000e+00   0.0000000e+00
 elem     i     j     k     l   sec
    1     1     2     3     4     1
 node           dis-x           dis-y
    1   0.0000000e+00   0.0000000e+00
    2   8.8817842e-19   0.0000000e+00
    3   1.7763568e-18   2.0000000e-02
    4   4.1448326e-18   2.0000000e-02
 elem           sig_x           sig_y          tau_xy              p1              p2             ang
    1  -7.4014868e-16   2.0000000e+01   1.1333527e-16   2.0000000e+01   0.0000000e+00   9.0000000e+01
n=8  time=0.044 sec
Knoten, dis-x, dis-y Knotennummer, Verschiebung in x-Richtung, Verschiebung in y-Richtung
elme, sig_x, sig_y, tau_xy Elementnummer, direkte Spannung in x-Richtung, direkte Spannung in y-Richtung, Scherspannung
p1, p2, ang Erste Hauptspannung, zweite Hauptspannung, Richtung der ersten Hauptspannung
n, Zeit Gesamtfreiheit, Berechnungszeit

Ausgabebeispiel

tex_fig.png

das ist alles

Recommended Posts

2D FEM Stressanalyseprogramm von Python
Datenanalyse mit Python 2
Sprachanalyse mit Python
Sprachanalyse mit Python
Datenanalyse mit Python
[Python] Morphologische Analyse mit MeCab
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Erstellen Sie ein 3D-GIF mit Python3
Emotionsanalyse von Python (word2vec)
Axialsymmetrische Spannungsanalyse mit Python
Planare Skelettanalyse mit Python
Japanische morphologische Analyse mit Python
Muskel-Ruck-Analyse mit Python
Axialsymmetrisches Spannungsanalyseprogramm von Python (quadratisches Element) [überarbeitete Ausgabe]
Impedanzanalyse (EIS) mit Python [impedance.py]
Löse ABC166 A ~ D mit Python
Debuggen Sie das Python-Multiprozessprogramm mit VSCode
Text Mining mit Python ① Morphologische Analyse
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Logistische Regressionsanalyse Selbst erstellt mit Python
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
[Python] Ein Programm, das Treppen mit # erstellt
Stresstest mit Locust in Python geschrieben
[In-Database Python Analysis Tutorial mit SQL Server 2017]
Zweidimensionale Analyse des gesättigten und ungesättigten Permeationsflusses mit Python
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
HTML-Dokument Python-Programme mit Sphinx
Beispiel einer dreidimensionalen Skelettanalyse von Python
Tweet-Analyse mit Python, Mecab und CaboCha
Löse AtCoder ABC168 mit Python (A ~ D)
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
Zweidimensionale instationäre Wärmeleitungsanalyse mit Python
Python: Vereinfachte morphologische Analyse mit regulären Ausdrücken
[Python] Einkaufsprogramm
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
[Python] Grenzachse des 3D-Graphen mit Matplotlib
Scraping mit Python
Datenanalyse Python
[Verschiedene Bildanalysen mit Plotly] Dynamische Visualisierung mit Plotly [Python, Bild]
Twilio mit Python
Medizinische Bildanalyse mit Python 1 (MRT-Bild mit SimpleITK lesen)
In Python integrieren
Spielen Sie mit 2016-Python
Löse A ~ D des Yuki-Codierers 247 mit Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Erstellen Sie ein 3D-Streudiagramm mit SciPy + matplotlib (Python)
Statische Analyse von Python-Code mit GitLab CI
Beispielprogramm, das Syslog mit Python-Protokollierung ausgibt
Einfache LASSO-Regressionsanalyse mit Python (keine Theorie)
Excel mit Python
Zweidimensionale geometrische nichtlineare Analyse des elastischen Skeletts mit Python