enfr

Interaction fluide-structure : chaînage Code_Saturne / Code_Aster

3 octobre 2012

par C. Bodel, EDF R&D / AMA

Objectif : Appliquer sur un modèle de poutre un effort calculé en amont par Code_Saturne (voir la représentation vectorielle de l’effort sur l’image ci-dessous).

Code_Saturne calcule un effort instationnaire appliqué à une poutre, et qui représente les turbulences induites par l’écoulement autour de celle-ci. Dans Code_Saturne, un modèle LES a été utilisé pour la turbulence, ce qui permet de modéliser les plus grosses structures tourbillonnaires, et d’arriver à ce résultat.

Figure 1 : Excitation fluide.

Côté mécanique, on souhaite calculer les vibrations de la poutre soumise à cet effort. Comment faire ?

  1. Mettre en vis-à-vis les deux maillages, fluides et solides,
  2. Importer les données du calcul fluide, qui ont été exportées depuis Code_Saturne au format MED, sous la forme d’un champ constant par cellule, composé de vecteurs à 3 composantes correspondant aux trois composantes de la force résultante. Une petite modification de LIRE_RESU a été réalisée par l’équipe Aster pour permettre la souplesse d’utilisation demandée.
  3. Créer, pour chaque pas de temps, trois fonctions Aster paramétrée par l’abscisse le long de la poutre, dont a valeur est la composante de la force importée. Des routines python, permettant de récupérer la maille du maillage fluide correspondant à une abscisse donnée, ont été créée pour l’occasion.
  4. Appliquer l’effort sur le modèle mécanique (modélisation poutre POU_D_T) avec l’option de chargement FORCE_POUTRE. Le calcul dynamique est linéaire avec choc, on utilise DYNA_VIBRA en temporel et sur base modale pour l’exécution.

Dans la plupart des calculs en dynamique linéaire, le chargement est défini par séparation de variables, sous la forme f(x).g(t), la fonction g correspondant au paramètre FONC_MULT dans la définition des chargements. Ce n’est pas possible ici, le chargement étant importé de la manière la plus générale possible. Le chargement appliqué sur le modèle mécanique est donc assemblé sous la forme d’un résultat de dynamique transitoire (sd dyna_trans), et projeté en une fois sur la base généralisée.
Pour ce faire, on a créé un nouvel opérateur appelé PROJ_RESU_BASE, analogue à PROJ_VECT_BASE, permettant de projeter en une fois tous les pas de temps utilisés. Pour simplifier l’utilisation, cet opérateur est utilisable avec la commande PROJ_BASE (ancienne MACRO_PROJ_BASE). La descritption de son utilisation est proposée dans le cas-test sdls119b.

Concernant les temps de calcul, le plus long est de récupérer les 10000 et quelques pas de temps du calcul fluide, et de les appliquer au calcul mécanique. L’utilisation des fonctions Aster est la solution la plus propre, mais pas la plus performante. Le temps de cette partie du calcul est de 4 heures. Le calcul dynamique en lui-même prend une heure (pour 6 s de calcul). On est loin des deux mois de calcul nécessaires à l’exécution du calcul CFD-LES avec Saturne ! Le chaînage simple, dans la mesure où les hypothèses de son utilisation sont vérifiées (pas de rétro-action du solide sur le fluide), permet de découpler les deux calculs, et d’exécuter chacun des deux avec la souplesse que permet leur temps de résolution.

On obtient le déplacement sur la totalité de la poutre multi-supportée (cf animation ci-dessous) :

Figure 2 : Déplacement sur la totalité de la poutre multi-supportée.

Au final, les résultats du calcul sont relativement satisfaisants par rapport aux essais menés sur maquette dans le cadre de cette étude. La comparaison des auto-spectres sur la figure ci-dessous (sur un point de mesure en milieu de traversée) le montre.

Figure 3 : Auto-spectres.