Création d'une méthode des éléments finis (FEM) avec python ~ vba → traduction python ~

Table des matières de la série

--Création d'une méthode des éléments finis (FEM) avec python ~ vba → traduction python ~


Vue d'ensemble de la traduction vba → python

Si vous expliquez le concept grossièrement Créons la méthode des éléments finis (FEM) avec python

Tout d'abord, disons ~ vba → traduction python ~ [ce livre](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% 253A% 252Futen.co.puten% 252Fraks.puten.com .rakuten.co.jp% 252Frb% 252F1700147% 252F) Exemple Excel 5-1 Analyse de squelette tridimensionnelle .xls (ci-après exemple) sera réécrit en python.

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

[Introduction à la méthode des éléments finis Excel (cours de génie civil Excel)](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% 253AFputen% 252Fraks. % 252F books.rakuten.co.jp% 252Frb% 252F1700147% 252F)

La traduction est la suivante [Sample](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% 253A% 252Futen% 252Fbook %Frak% 253A% 252Futen% 252Fbook %Fruten.com jp% 252Frb% 252F1700147% 252F) → python sera traduit.

5-1 Analyse tridimensionnelle du squelette.xls



Calcul de sous-cmd privé_Click()

    Dim I As Long
    Dim NEQ As Integer

    For I =1 À la limite supérieure de la matrice
        AJCB(I) = 0
    Next

Saisie des données d'appel
Appelez la matrice SKY(NEQ)
    For I = 1 To NEQ
        FORCE(I) = 0
    Next I
Appeler la distribution de charge distribuée
Appel de force externe ajouter
    Call decomp(NEQ)
    Call redbak(NEQ)
Calcul du déplacement d'appel
Calcul de la force d'appel et du moment

Sortie de résultat d'appel

    MsgBox "L'analyse est terminée"

End Sub

framecalc.py


from Calcrate import Calcrate

if __name__ == "__main__":

    cal = Calcrate()
    NEQ = 0

    cal.Saisie des données()
    cal.Matrice SKY(NEQ)
    cal.Répartition de la charge distribuée()
    cal.Ajout de force externe()
    cal.decomp(NEQ)
    cal.redbak(NEQ)
    cal.Calcul du déplacement()
    cal.Calcul de force et de moment()

    cal.Sortie de résultat()

    print("L'analyse est terminée")

Condition environnementale

Mon environnement est le suivant.

OS

Environnement de développement

Commençons par le déplacer

Tout d'abord, téléchargez le code source.

[Exemple](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhgc%2cF0 9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252Fbooks.rak.co.jp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 252F) Veuillez télécharger 5-1 3D skeleton analysis.xls selon les instructions du livre. Nous allons traduire ce VBA Excel en python.

La source traduite en python est ici. $ git clone -b "#1" https://github.com/sasaco/FramePython.git

Lorsque l'environnement est prêt, accédez au répertoire du code source et appuyez sur framecalc.py pour démarrer l'analyse. Si «L'analyse est terminée» s'affiche, l'analyse a été effectuée correctement.

python


$ cd FramePython

$ python framecalc.py

$L'analyse est terminée

spécifications du programme python

À propos de l'entrée / sortie de données

[Exemple](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhgc%2cF0 9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252Fbooks.rak.co.jp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 252F) Excel utilise la feuille ** [entrée 1] [entrée 2] ** comme données d'entrée. Les résultats de l'analyse sont stockés dans la feuille ** [Calcul / Sortie] **. b.png

Le programme python traduit ne fonctionne pas avec la feuille Excel, donc [Exemple](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhgc%2cF0F0 9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252Fbooks.rak.co.jp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 252F) Feuille Excel ** [Entrée 1] [Entrée 2] [Calcul / Sortie] ** est convertie en csv et le fichier est utilisé pour l'entrée et la sortie.

À propos des indices de tableau

La séquence de vba est 1 ~

5-1 Analyse tridimensionnelle du squelette.xls


Range(1,1)

le tableau python est de 0

Calcrate.py


Range[0][0]

J'ai donc dû être prudent lors de la traduction.

À propos de la fonction de dessin

[Exemple](https://rpx.a8.net/svt/ejp?a8mat=2TINC2+D4Q7VE+2HOM+BW8O1&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhgc%2cF0F0 9a477d4e.0eac8dc3.0aa56a48% 2Fa08100810103_2TINC2_D4Q7VE_2HOM_BW8O1% 3Fpc% 3Dhttp% 253A% 252F% 252Fbooks.rak.co.jp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 3DAhp% 252Frb% 252F1700147% 252F) La fonction de dessin Excel n'est pas portée en python

Comparaison des résultats d'analyse

Pour le moment, le travail de traduction de vba → python est terminé, j'ai donc comparé les résultats d'analyse des deux Une petite valeur de presque 0 a une erreur, mais n'est-ce pas une reproductibilité raisonnable?

Exemple de résultats d'analyse Excel (extrait)

Déplacement REACT élément
X Y Z angX angY angZ Rx Ry Rz Mx My Mz nœud 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

Résultat d'analyse du programme python (extrait)

Déplacement REACT élément
X Y Z angX angY angZ Rx Ry Rz Mx My Mz nœud 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

la prochaine fois

Pour le moment, j'ai pu obtenir des résultats similaires.

la prochaine fois, --Séparer la classe de pièces d'analyse ――La méthode de résolution de la matrice est comme python

Je suis en train de penser.

Cet article est un projet en cours, donc Pas encore complété.

L'état actuel du programme se trouve dans la branche maître. https://github.com/sasaco/FramePython/tree/master Vous avez peut-être commencé à corriger certains des problèmes ci-dessus

Veuillez nous contacter si vous êtes intéressé.

Recommended Posts

Création d'une méthode des éléments finis (FEM) avec python ~ vba → traduction python ~
Création d'une méthode des éléments finis (FEM) avec python ~ Damyarou's déconner ~
Mémorandum d'introduction du modèle de données EXODUS de la méthode des éléments finis (FEM)
Exécutez Python avec VBA
Méthode Kernel avec Python
Détruire l'expression intermédiaire de la méthode sweep avec Python
Création de la méthode ρ pour décrypter une courbe elliptique avec python
Utiliser IvyFEM (bibliothèque de méthodes d'éléments finis pour .NET) à partir de Python
Créer un œuf avec python
[Python] Régression LASSO avec contrainte d'équation utilisant la méthode du multiplicateur
Appelez l'API avec python3.
Résolvez le problème du sac à dos Python avec la méthode de branche et liée
Extraire le fichier xz avec python
[Python] Accédez à l'API Google Translation
Obtenez la météo avec les requêtes Python
Obtenez la météo avec les requêtes Python 2
Trouvez la distance d'édition (distance de Levenshtein) avec python
Installer le plug-in Python avec Netbeans 8.0.2
J'ai aimé le tweet avec python. ..
Maîtriser le type avec Python [compatible Python 3.9]
[Python] Création de plusieurs fenêtres avec Tkinter
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
Rendre la console Python couverte d'UNKO
Obtenir le code HTML de l'élément avec du sélénium Python
[Python] Définissez la plage du graphique avec matplotlib
Utiliser DeepL avec python (pour la traduction d'articles)
Derrière le flyer: utiliser Docker avec Python
Méthode de mise à jour automatique par python Pyinstaller exe
Uncle SES modernise l'application VBA avec Python
Vérifier l'existence du fichier avec python
Programme d'analyse des contraintes FEM 2D par Python
[Python] Récupère le nom de la variable avec str
[Python] Arrondissez avec juste l'opérateur
Afficher Python 3 dans le navigateur avec MAMP
Rechercher le labyrinthe avec l'algorithme python A *
Lisons le fichier RINEX avec Python ①
Travailler avec OpenStack à l'aide du SDK Python
Télécharger des fichiers sur le Web avec Python
Apprenez le modèle de conception "Singleton" avec Python
[Python] Utiliser automatiquement le navigateur avec Selenium
Le début de la méthode des éléments finis (matrice de rigidité des éléments unidimensionnels)
Apprenez le modèle de conception "Façade" avec Python
La route de la compilation vers Python 3 avec Thrift
Traduction japonaise: PEP 20 - Le Zen de Python
Méthode d'extraction de zone à l'aide de l'automate cellulaire Essayez l'extraction de zone de l'image avec growcut (Python)
Comparez la somme de chaque élément dans deux listes avec la valeur spécifiée en Python
Résolvez le problème du voyageur de commerce asymétrique Python avec la méthode de branche et de liaison