v1.01.348 ZZZZ348 – Couplage des commandes Code-Aster et le solveur en Python de l’intégration dans le temps employé dans l’outil LEGOS#
Résumé:
Dans le contexte dudéveloppement de l’outil de calcul des machines tournantes dans le code LEGOS qui utilise un solveur écrit en C++ et possède une API python, la possibilité de couplage via le fichier de commande aster est plus simple et ne nécessite plus le passage compliqué par YACS.
Ainsi, cette possibilité de faire le couplage des commandes aster et le solveur de l’intégration dans le temps en python utilisé dans le code LEGOS est démontrée au travers d’un calcul mécanique simple d’une ligne d’arbre soumise à un chargement harmonique.
Ce cas-test se décompose en deux parties:
Commandes aster afin de construire la base modale et les matrices de masse, amortissement, gyroscopie et raideur de la ligne d’arbre étudiée;
Solveur en python pour réaliser l’intégration dans le temps du système dynamique qui permet de coupler la dynamique de la ligne d’arbres avec le code de lubrification du code LEGOS.
Le résultat de ce cas-test est comparé avec le calcul de référence de l’ancienne procédure de calcul des machines tournantes utilisant l’opérateur DYNA_VIBRA. Il s’agit donc d’un cas-test non-régression. La comparaison montre une cohérence excellente entre les deux résultats.
Déroulement du couplage#
Équation fondamentale dynamique du système tournant#
L’équation dynamique du système tournant s’écrit comme suit (sans prendre en compte de la précontrainte):
\(K\ddot{U}+(C+G)\dot{U}+(K+\mathit{KG})U=F\)
où:
\(M,C,K\) : respectivement les matrices classiques de masse, d’amortissement et de rigidité du système discrétisé
\(G\mathit{et}\mathit{KG}\) : respectivement les matrices de couplage de Coriolis et de raideur centrifuge.
\(\ddot{U},\dot{U},U\) : les vecteurs en accélération, vitesse et déplacement
\(F\) : vecteur de chargement externe
Partie 1 : Commandes aster#
Les commandes aster sont utilisées afin de construire la base modale. Les matrices de masses, amortissement, gyroscopie et de raideur sont ensuite projetées sur cette base.
Le déroulementde ces commandes est présenté dans le logigrammesuivant:
Figure 2.2-1
Les matrices sont extraits et stockées sous forme des objets en python via la commande EXTR_MATR_GENE().
Partie 2 : Solveur de l’intégration dans le temps en python#
Le solveur de l’intégration dans le temps en python utilise le schéma β-Newmark avec γ = 0,5 et β=0,25.
L’architecture du solveur en python est présentée dans la figure ci-dessous:
Figure 2.3-1
Les classes sont définies comme suit:
Base(): convertir des bases modales Aster en objets du langage python. Cette classe permet de convertir des vecteurs de résultats de la base généralisée en base physique et vice-versa;
Load(): classe générique représentant un chargement;
LinearBearing(): Permet de traiter les paliers linéaire comme un chargement extérieure. ;
HamonicLoad(): Chargement de type harmonique Integrator: Classe générique représentatn un schéma d’intégration temporel.
NewmarkIntegrator(): Intégrateur utilisant le schéma de Newmark.
TransientSimulation(): Permet de contrôler l’intégration en construisant le vecteur de chargement et l’archivage des résultats.
Le résultat obtenu est la valeur maximale du déplacement en nœud N2Z1 en fonction du temps.
Solution de référence#
La solution de référence est faite par l’ancienne procédure de calcul des machines tournantes avec le passage de l’opérateur DYNA_VIBRA avec les données du problème décrit ci-dessus.
Le déplacement maximal en nœud N2Z1 est de 2.6473318845597886e-05 (m).
Modélisation#
Caractéristiques du maillage#
Le maillage est constitué de 13 nœuds, 12 mailles SEG2 et 1 maille POI1.
Caractéristiques de la modélisation#
Concernant le maillage, la ligne d’arbre est modélisée par des éléments type poutre (POU_D_T) portés sur les segments linéaire (SEG2). Les trois paliers (supports) sont modélisés par des éléments discrets (DIS_TR). Le disque est modélisé par une masse nodale (élément discret DIS_TR) avec des moments d’inertie en rotation.
Résultats de la modélisation#
Le déplacement maximal obtenu par le cas-test est comparé avec la solution de référence (test non-régression):
Déplacement max |
Référence |
Code_Aster |
Erreur relative (%) |
1 |
2.647331884559E-05 |
2.64636281607E-05 |
-0,0355 |
Tableau 5-1
Synthèse des résultats#
Parfait accord des résultats Code_Aster avec les valeurs de référence.