Programme d'analyse des contraintes FEM 2D par Python

Je pense que le post ci-dessous est meilleur pour la finition en tant que programme, alors veuillez vous y référer.

Aperçu

J'ai réalisé un programme d'analyse de contraintes FEM bidimensionnel élastique linéaire par Python.

L'élément est un élément isoparamétrique avec 4 nœuds par élément, et chaque élément a 4 points d'intégration Gauss.

Les charges pouvant être manipulées sont les suivantes.

Formule théorique

Formule de calcul du déplacement nodal
[\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}
Formule de calcul des contraintes d'élément
\\{\boldsymbol{\sigma}\\}=[\boldsymbol{D}]\\{\boldsymbol{\epsilon}-\boldsymbol{\epsilon_0}\\}

$ \ {\ boldsymbol {\ epsilon_0} \} $ est une distorsion due à un changement de température

Expression relationnelle de déplacement nodal-déformation de position arbitraire
\\{\boldsymbol{\epsilon}\\}=[\boldsymbol{B}]\\{\boldsymbol{u}\\}

$ \ {\ boldsymbol {\ epsilon} \} $ est la distorsion de n'importe quel point de l'élément

Formule de calcul de la déformation de position arbitraire de déplacement nodal
\\{\boldsymbol{v}\\}=[\boldsymbol{N}]\\{\boldsymbol{u}\\}

$ \ {\ boldsymbol {v} \} $ est le déplacement de n'importe quel point de l'élément

Peut-il être utilisé?

Puisque Python est un interpréteur, je me demandais si cela serait utile en termes de vitesse de calcul, mais le temps de calcul dans le modèle avec le nombre de nœuds: 3417, le nombre d'éléments: 3257 et le degré de liberté: 6834 est de 7,9 secondes, ce qui est un niveau utilisable. Cela a été confirmé.

programme

Le programme est long, j'ai donc mis un lien vers ce que j'ai collé dans Gist. De plus, le dessin de contour consiste simplement à peindre les éléments de différentes couleurs en fonction du niveau de stress. Pour mon propos, il n'est pas nécessaire de l'insérer séparément et de dessiner une ligne de contour.

Format des données d'entrée

npoin  nele  nsec  npfix  nlod  NSTR #Montant de base
t  E  po  alpha  gamma  gkh  gkv     #Propriété matérielle
..... (1~nsec) .....
node1  node2  node3  node4  isec     #élément-Relation nodale, numéro de propriété du matériau
..... (1~nele) .....
x  y  deltaT                         #Coordonnées nodales, changements de température nodaux
..... (1~npoin) .....
node  kox  koy  rdisx  rdisy         #Condition de contrainte de déplacement
..... (1~npfix) .....
node  fx  fy                         #Force externe
..... (1~nlod) .....
npoin, nele, nsec Nombre de nœuds, nombre d'éléments, nombre de propriétés du matériau
npfix, nlod Nombre de nœuds de contrainte, nombre de nœuds de chargement
NSTR État de contrainte (déformation plane: 0, contrainte plane: 1)
t, E, po, alpha Épaisseur de la plaque, coefficient d'élasticité, coefficient de Poisson, coefficient de dilatation linéaire
gamma, gkh, gkv Poids volumique unitaire, accélération horizontale et verticale (rapport de g)
x, y, delta T Coordonnée noeud x, coordonnée noeud y, changement de température du noeud
nœud, kox, koy Numéro de nœud de restriction, présence / absence de contraintes de direction x et y (contrainte: 1, liberté: 0)
rdisx, rdisy Déplacement des directions x et y (entrez 0 même si sans contrainte)
node, fx, fy Load node number, x-direction load, y-direction load

Format des données de sortie

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
nœud, dis-x, dis-y Numéro de nœud, déplacement dans la direction x, déplacement dans la direction y
elme, sig_x, sig_y, tau_xy Numéro d'élément, contrainte directe direction x, contrainte directe direction y, contrainte de cisaillement
p1, p2, ang Première contrainte principale, seconde contrainte principale, direction de la première contrainte principale
n, temps Liberté totale, temps de calcul

Exemple de sortie

tex_fig.png

c'est tout

Recommended Posts

Programme d'analyse des contraintes FEM 2D par Python
Analyse de données avec python 2
Analyse vocale par python
Analyse vocale par python
Analyse de données avec Python
[Python] Analyse morphologique avec MeCab
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Créer un gif 3D avec python3
Analyse des émotions par Python (word2vec)
Analyse des contraintes symétriques axiales avec Python
Analyse de squelette planaire avec Python
Analyse morphologique japonaise avec Python
Analyse des secousses musculaires avec Python
Programme d'analyse des contraintes symétriques axiales par Python (élément carré) [édition révisée]
Analyse d'impédance (EIS) avec python [impedance.py]
Résoudre ABC166 A ~ D avec Python
Déboguer un programme multi-processus python avec VSCode
Text mining avec Python ① Analyse morphologique
Analyse de données à partir de python (visualisation de données 1)
Analyse de régression logistique Self-made avec python
Analyse de données à partir de python (visualisation de données 2)
[Python] Un programme qui crée des escaliers avec #
Test de stress avec Locust écrit en Python
[Didacticiel d'analyse Python en base de données avec SQL Server 2017]
Analyse bidimensionnelle du flux de perméation saturée-insaturée avec Python
Apprentissage automatique avec python (2) Analyse de régression simple
Programmes Python de document HTML avec Sphinx
Exemple d'analyse de squelette tridimensionnelle par Python
Analyse des tweets avec Python, Mecab et CaboCha
Résoudre AtCoder ABC168 avec python (A ~ D)
Analyse de données à partir de python (pré-traitement des données-apprentissage automatique)
Analyse de conduction thermique bidimensionnelle non stationnaire avec Python
Python: analyse morphologique simplifiée avec des expressions régulières
[Python] Programme d'achat
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
[Python] axe limite du graphe 3D avec Matplotlib
Grattage avec Python
Analyse de données python
[Diverses analyses d'images avec plotly] Visualisation dynamique avec plotly [python, image]
Twilio avec Python
Analyse d'images médicales avec Python 1 (Lire une image IRM avec SimpleITK)
Intégrer avec Python
Jouez avec 2016-Python
Résolvez A ~ D du codeur yuki 247 avec python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Créer un diagramme de dispersion 3D avec SciPy + matplotlib (Python)
Analyse statique du code Python avec GitLab CI
Exemple de programme qui génère un syslog avec la journalisation Python
Analyse de régression LASSO facile avec Python (pas de théorie)
Excel avec Python
Analyse non linéaire géométrique du squelette élastique bidimensionnel avec Python