Zweidimensionale geometrische nichtlineare Analyse des elastischen Skeletts mit Python

Programmübersicht

Randbedingungen behandeln
Element Beschreibung
Knotenkraftinkrement Geben Sie die Anzahl der Ladeknoten, die Ladeknotennummer und den Ladeinkrementwert an
Knotenverschiebungsbeschränkung Verschiebungsbeschränkung Geben Sie die Anzahl der Knoten und die Beschränkungsknotennummer an (vollständige Einschränkung: Nur Verschiebung = 0 kann behandelt werden)

FEM-Analyseprogramm

Program nameDescription
py_fem_gfrmAL.py Planare Skelettgeometrie Nichtlineares Strukturanalyseprogramm

Skript zur Ausführung der FEM-Analyse

python3 py_fem_gfrmAL.py inp.txt out.txt nnmax
inp.txt : Eingabedatendatei (durch Leerzeichen getrennte Daten)
out.txt : Ausgabedatendatei (leere getrennte Daten)
nnmax : Anzahl der Ladeschritte

Eingabedatenformat

npoin  nele  nsec  npfix  nlod  # Basic values for analysis
E  A  I                         # Material properties
    ..... (1 to nsec) .....     # 
node_1  node_2  isec            # Element connectivity, material set number
    ..... (1 to nele) .....     # 
x  y                            # Node coordinate of node
    ..... (1 to npoin) .....    # 
lp  fix_x  fix_y  fix_r         # Restricted node number
    ..... (1 to npfix) .....    # 
lp  df_x  df_y  df_r            # Loaded node and loading conditions (load increment)
    ..... (1 to nlod) .....     #     (omit data input if nlod=0)
npoin, nele, nsec : Anzahl der Knoten, Anzahl der Elemente, Anzahl der Querschnittsmerkmale
npfix, nlod : Anzahl der Rückhalteknoten, Anzahl der Ladeknoten
E, A, I : Elastizitätskoeffizient, Querschnittsfläche, sekundäres Querschnittsmoment
Knoten_1, Knoten_2, isec : Knoten 1, Knoten 2, Abschnittskennlinie
x, y : x-Koordinate, y-Koordinate
lp, fix_x, fix_y, fix_r : Knotennummer, x / y / Drehrichtungsbeschränkung (0: frei, 1: vollständige Einschränkung)
lp, df_x, df_y, df_r : Knotennummer, x · y · Rotationslast

Ausgabedatenformat

npoin  nele  nsec npfix  nlod  nnmax
    (Each value of above)
sec  E  A  I
    sec   : Material number
    E     : Elastic modulus
    A     : Section area
    I     : Moment of inertia
    ..... (1 to nsec) .....
node  x  y  fx  fy  fr  kox  koy  kor
    node   : Node number
    x      : x-coordinate
    y      : y-coordinate
    fx     : Load in x-direction
    fy     : Load in y-direction
    fr     : Moment load
    kox    : Index of restriction in x-direction (0: free, 1: fixed)
    koy    : Index of restriction in y-direction (0: free, 1: fixed)
    kor    : Index of restriction in rotation    (0: free, 1: fixed)
    ..... (1 to npoin) .....
elem  i  j  sec
    elem : Element number
    i    : Node number of start point
    j    : Node number of end point
    sec  : Material number
    ..... (1 to nele) .....
* nnn=0 iii=0 lam=0.0
node  fp-x  fp-y  fp-r  dis-x  dis-y  dis-r  dr-x  dr-y dr-r
    node  : Node number
    fp-x  : Total load in x-direction
    fp-y  : Total load in y-direction
    fp-r  : Total load in rotation
    dis-x : Displacement in x-direction
    dis-y : Displacement in y-direction
    dis-r : Displacement in rotation
    dr-x  : Un-balanced force in x-direction
    dr-y  : Un-balanced force in y-direction
    dr-r  : Un-balanced force in rotation
    ..... (1 to npoin) .....
elem  N_i  S_i  M_i  N_j  S_j  M_j
    elem : Element number
    N_i  : Axial force of node-i
    S_i  : Shear force of node-i
    M_i  : Moment of node-i
    N_j  : Axial force of node-j
    S_j  : Shear force of node-j
    M_j  : Moment of node-j
    ..... (1 to nele) .....
* nnn=1 iii=xx lam=xxx
node  fp-x  fp-y  fp-r  dis-x  dis-y  dis-r  dr-x  dr-y dr-r
    node  : Node number
    fp-x  : Total load in x-direction
    fp-y  : Total load in y-direction
    fp-r  : Total load in rotation
    dis-x : Displacement in x-direction
    dis-y : Displacement in y-direction
    dis-r : Displacement in rotation
    dr-x  : Un-balanced force in x-direction
    dr-y  : Un-balanced force in y-direction
    dr-r  : Un-balanced force in rotation
    ..... (1 to npoin) .....
elem  N_i  S_i  M_i  N_j  S_j  M_j
    elem : Element number
    N_i  : Axial force of node-i
    S_i  : Shear force of node-i
    M_i  : Moment of node-i
    N_j  : Axial force of node-j
    S_j  : Shear force of node-j
    M_j  : Moment of node-j
    ..... (1 to nele) .....

.... .... ....

* nnn=nnmax-1 iii=xx lam=xxx
node  fp-x  fp-y  fp-r  dis-x  dis-y  dis-r  dr-x  dr-y dr-r
    ..... (1 to npoin) .....
elem  N_i  S_i  M_i  N_j  S_j  M_j
    ..... (1 to nele) .....
n=(total degrees of freedom)  time=(calculation time)
fp-x, fp-y, fp-r : Last in x-Richtung, Last in y-Richtung, Last in Drehrichtung
dis-x, dis-y, dis-r : Verschiebung in x-Richtung, Verschiebung in y-Richtung, Rotationsverschiebung
dr-x, dr-y, dr-r : Unausgeglichene Kraft in x-Richtung, Unausgeglichene Kraft in y-Richtung, Unausgeglichene Kraft in Drehrichtung
N, S, M : Axialkraft, Scherkraft, Moment
n : Gesamtfreiheitsgrade (Quelle simultaner Gleichungen)
Zeit : Berechnungszeit

Ausgabebeispiel

Program nameDescription
inp_gfrm_canti.txt Cantilever FEM Analyseeingabedaten
inp_gfrm_cable.txt Cantilever mit Kabel Eingabedaten für die Strahl-FEM-Analyse
inp_gfrm_arch.txt Eingabe der Arch FEM-Analyse Daten
inp_gfrm_lee.txt Eingabe der Frame-FEM-Analyse Daten
py_fig_gfrm.py Last-Verschiebungs-Kurve Zeichenprogramm (matplotlib)
py_fig_gfrm_mode.py Programm (matplotlib)

Programm zum Zeichnen von Last-Verschiebungs-Kurven py_fig_gfrm.py

Im Programm zur Erstellung von Last- / Verschiebungskurven py_fig_gfrm.py wurde die Eingabe über die Befehlszeile aufgrund des Versuchs, sie vielseitig zu gestalten, ziemlich verwirrend.

Erstellungsprogramm für das Verschiebungsmodusdiagramm py_fig_gfrm_mode.py

Mit dem Erstellungsprogramm py_fig_gfrm_mode.py für das Verschiebungsmodusdiagramm ist es relativ einfach, etwas Vielseitiges nur mit dem Verschiebungsmodus zu realisieren, aber es wird ziemlich kompliziert, wenn versucht wird, Randbedingungen festzulegen. Da ich nur 4 Diagramme erstellen möchte, gebe ich die Eingabedatei im Programm an und verarbeite jede Datei einzeln.

(Pfeil zeigt Last an)

Der Pfeil, der die Last angibt, wird als Pfeil geschrieben. mit Pfeil ``` ax.arrow(x,y,u,v,head_length=hl, ....) ``` Schreiben Sie eine Anweisung wie

. Wenn Sie beispielsweise einen vertikalen Pfeil zeichnen, sollten Sie beachten, dass die Länge vom Schwanz bis zur Pfeilspitze (v + head_length) beträgt. Die tatsächliche Korrespondenz ist wie folgt. ``` uu=0.0 vv=(ymax-ymin)*0.1 x1=xx[lnod-1] y1=yy[lnod-1]+vv hl=vv*0.4 hw=hl*0.5 ax.arrow(x1,y1,uu,-(vv-hl), lw=2.0,head_width=hw, head_length=hl, fc='#555555', ec='#555555') ```

(Symbol für festes Ende)

Das Symbol für das feste Ende an der Basis des vertikalen Einwegbalkens wird mit fill (... hatch = '///') gezeichnet. Hier gibt Füllung einen rechteckigen Bereich an. Da jedoch kein Rand erforderlich ist, wird in Füllung Linienbreite = 0,0 angegeben, um zu verhindern, dass der Rand gezeichnet wird. Die tatsächliche Korrespondenz ist wie folgt. ``` lp=1; x1=x[lp-1]; y1=y[lp-1] px=[x1-2*scl,x1+2*scl,x1+2*scl,x1-2*scl] py=[y1,y1,y1-1*scl,y1-1*scl] ax.fill(px,py,fill=False,linewidth=0.0,hatch='///') ax.plot([x1-2*scl,x1+2*scl],[y1,y1],color='#000000',linestyle='-',linewidth=1.5) ```

Ausführungsskript für das FEM-Berechnungsausführungs- / Lastverschiebungskurven-Zeichenprogramm

# FEM calculation by Arc-Length method
python py_fem_gfrmAL.py inp_gfrm_canti.txt out_gfrm_canti.txt 70
python py_fem_gfrmAL.py inp_gfrm_cable.txt out_gfrm_cable.txt 290
python py_fem_gfrmAL.py inp_gfrm_arch.txt out_gfrm_arch.txt 310
python py_fem_gfrmAL.py inp_gfrm_lee.txt out_gfrm_lee.txt 160

# Drawing of Load-displacement curve
python py_fig_gfrm.py out_gfrm_canti.txt 11 11 -411.07 1000 1000 \$u/L\$ $\v/L\$ \$u/L\$\,$\v/L\$ \$P/P_{cr}\$ LL
python py_fig_gfrm.py out_gfrm_cable.txt 12 11 -1644.3 1000 1000 \$u/L\$ \$v/L\$ \$u/L\$\,\$v/L\$ \$P/P_{cr}\$ LL
python py_fig_gfrm.py out_gfrm_arch.txt 21 21 -666.4 -500 -500 \$u/R\$ \$v/R\$ \$u/R\$\,\$v/R\$ \$P\\cdot\(R^2/EI\)\$ UL
python py_fig_gfrm.py out_gfrm_lee.txt 13 13 -166.6 1000 -1000 \$u/L\$ \$v/L\$ \$u/L\$\,\$v/L\$ \$P\\cdot\(L^2/EI\)\$ LL

# Drawing of displacement mode
python py_fig_gfrm_mode.py
python py_fig_gfrm.py out.txt node-L node-D nd-L nd-u nd-v leg-u leg-v x-Label y-Label loc
out.txt : FEM-Ausgabedatendatei (leere getrennte Daten)
Knoten-L : Laden der Knotennummer zum Zeichnen einer Lastverschiebungskurve
Knoten-D : Knotennummer der Verschiebungszeichnung zum Zeichnen einer Lastverschiebungskurve
nd-L : Numerischer Wert (einschließlich Vorzeichen) für die Lastlosigkeit
nd-u : Numerischer Wert (einschließlich Vorzeichen) für dimensionslose Verschiebung in x-Richtung
nd-v : Numerischer Wert (einschließlich Vorzeichen) für dimensionslose Verschiebung in y-Richtung
leg-u : Beschriftung in x-Richtung (für Legende)
leg-v : Verschiebungsbezeichnung in y-Richtung (für Legende)
x-Label : x-Achsen-Label (Verschiebung)
y-Label : y-Achsen-Label (Laden)
loc : Position der Legendenzeichnung

Beispiel für die Ausgabe des Verschiebungsmodus und der Last-Verschiebungskurve

Cantilever (inp_gfrm_canti.txt) , der eine axiale Druckkraft erhält
L=1,000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$
Initial deflection $v_0$=1mm
Buckling load $P_{cr}=\pi^2 EI / 4 L^2$=411.07N

fig_mode_gfrm_canti.png

fig_gfrm_canti.png

Cantilever (inp_gfrm_cable.txt) , dessen Spitze von einem Kabel gezogen wird
Column: L=1,000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$
Cable: L=1,000mm, E=200,000MPa, A=28.3$^2$
Initial deflection $v_0$=5mm
Buckling load $P_{cr}=\pi^2 EI / L^2$=1644.3NN

fig_mode_gfrm_cable.png

fig_gfrm_cable.png

Asymmetrisch unterstützter Bogen (inp_gfrm_arch.txt) unter vertikaler konzentrierter Last
R=500mm, Center angle=215$^\circ$, E=200,000MPa, A=100m$^2$, I=833m$^4$

fig_mode_gfrm_arch.png

fig_gfrm_arch.png

Frame, der vertikale konzentrierte Last empfängt (inp_gfrm_lee.txt)
L=1000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$

fig_mode_gfrm_lee.png

fig_gfrm_lee.png

das ist alles

Recommended Posts

Zweidimensionale geometrische nichtlineare Analyse des elastischen Skeletts mit Python
Planare Skelettanalyse mit Python
Dreidimensionale Skelettstrukturanalyse mit Python
Zweidimensionale Analyse des gesättigten und ungesättigten Permeationsflusses mit Python
Zweidimensionale instationäre Wärmeleitungsanalyse mit Python
Datenanalyse mit Python 2
Sprachanalyse mit Python
Datenanalyse mit Python
Flugzeugskelettanalyse mit Python (4) Umgang mit erzwungener Verschiebung
[Python] Morphologische Analyse mit MeCab
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Emotionsanalyse von Python (word2vec)
Muskel-Ruck-Analyse mit Python
Planare Skelettanalyse mit Python (3) Erstellung eines Querschnittskraftdiagramms
Impedanzanalyse (EIS) mit Python [impedance.py]
Text Mining mit Python ① Morphologische Analyse
Planare Skelettanalyse in Python (2) Hotfix
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Logistische Regressionsanalyse Selbst erstellt mit Python
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
[In-Database Python Analysis Tutorial mit SQL Server 2017]
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
2D FEM Stressanalyseprogramm von Python
Beispiel einer dreidimensionalen Skelettanalyse von Python
Tweet-Analyse mit Python, Mecab und CaboCha
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
Sie können es mit Python tun! Strukturanalyse zweidimensionaler kolloidaler Kristalle
Python: Vereinfachte morphologische Analyse mit regulären Ausdrücken
[Verschiedene Bildanalysen mit Plotly] Dynamische Visualisierung mit Plotly [Python, Bild]
Medizinische Bildanalyse mit Python 1 (MRT-Bild mit SimpleITK lesen)
Statische Analyse von Python-Code mit GitLab CI
FizzBuzz in Python3
Scraping mit Python
Python-Skript-Skelett
Scraping mit Python
Python mit Go
Datenanalyse Python
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Sammeln von Informationen von Twitter mit Python (morphologische Analyse mit MeCab)
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Lesehinweis: Einführung in die Datenanalyse mit Python
Python Scikit-learn Lineare Regressionsanalyse Nichtlineare einfache Regressionsanalyse Maschinelles Lernen
Aufbau einer Datenanalyseumgebung mit Python (IPython Notebook + Pandas)
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
[Python] DB-Instanz von RDS mit Elastic Beanstalk hinzugefügt