5. Post-traitements pour les études « machines tournantes »#
Pour un calcul modal, le Code_Aster permet de calculer les sensibilités modales au balourd ainsi que les coefficients de participation. Pour les calculs harmoniques, Code_Aster permet de tracer l’évolution de l’amplitude et de la phase d’un degré de liberté en fonction de la fréquence d’excitation, de tracer pour une fréquence d’excitation donnée la déformée du rotor et les ellipses trajectoires des nœuds. Il permet également de déterminer les caractéristiques de la trajectoire du nœud pour une fréquence d’excitation donnée.
5.1. Sensibilités modales au balourd#
Il peut arriver qu’un mode (position de sa vitesse critique) se situe dans une zone estimée « à risque » sans que ce dernier ne pose de problème vibratoire particulier. En effet, lors de l’introduction de la notion d’amortissement, les racines de l’équation du comportement écrite sous forme matricielle ne sont plus purement complexes, et une partie réelle apparaît :
\({r}_{i}=-\frac{{\epsilon}_{i}{\omega}_{i}}{\sqrt{1-{\epsilon}_{i}^{2}}}+j{\omega}_{i}\)
Où \({\epsilon}_{i}\) est l’amortissement réduit du mode et \({\omega}_{i}\) la fréquence propre du mode. On peut alors définir le facteur de sensibilité au balourd, \({M}_{i}\) :
\({M}_{i}=\frac{{\left(\frac{\Omega}{{\omega}_{i}}\right)}^{2}}{\sqrt{{\left(1-{\left(\frac{\Omega}{{\omega}_{i}}\right)}^{2}\right)}^{2}+4{ϵ}_{i}^{2}{\left(\frac{\Omega}{{\omega}_{i}}\right)}^{2}}}\) ,
Où \(\Omega\) est la vitesse de rotation de la ligne d’arbres.
Cette grandeur permet de déterminer si oui ou non le mode est critique. Ainsi, un mode parfaitement synchrone avec la vitesse de rotation peut s’avérer inoffensif pour la ligne d’arbres si son amortissement réduit possède une valeur proche de 1. C’est pourquoi, on considère que si la valeur du facteur de sensibilité est inférieure à un certain seuil, alors il n’y a pas de problème vibratoire particulier. Cette grandeur peut être calculée de la façon suivante à partir du concept MODE_MECA:
TABLE=RECU_TABLE(CO=MODES,
NOM_PARA=(“NUME_MODE”,”FREQ”,”AMOR_REDUIT”),);
tab=TABLE.EXTR_TABLE()
fprop=tab.FREQ
amort=tab.AMOR_REDUIT
# Calcul pour le ièmemode
fp=fprop[i]
am=amort[i]
r=w/fp
Mn=r**2/sqrt((1.-r**2)**2.+(2.*am*r)**2)
5.2. Coefficients de participation#
Pour un mode donné, les coefficients de participation sont les contributions respectives des énergies de déformation du rotor et du support à l’énergie de déformation totale du système. L’énergie de déformation totale du mode \(k\) s’écrit:
\({E}_{k}={\Phi}_{k}^{t}K{\Phi}_{k}\)
En séparant les degrés de liberté relatifs au rotor et ceux relatifs au support, l’énergie s’exprime sous la forme:
\({E}_{k}=\left[\begin{array}{c}{\Phi}_{\mathrm{kr}}^{t}{\Phi}_{\mathrm{ks}}^{t}\end{array}\right](\left[\begin{array}{cc}{K}_{r}& 0\\ 0& 0\end{array}\right]+\left[\begin{array}{cc}{K}_{\mathrm{rr}}(\Omega )& {K}_{\mathrm{rs}}(\Omega )\\ {K}_{\mathrm{sr}}(\Omega )& {K}_{\mathrm{ss}}(\Omega )\end{array}\right]+\left[\begin{array}{cc}0& 0\\ 0& {K}_{s}\end{array}\right])\left[\begin{array}{c}{\Phi}_{\mathrm{kr}}\\ {\Phi}_{\mathrm{ks}}\end{array}\right]\)
Si l’on note \({E}_{\mathrm{kr}}\) et \({E}_{\mathrm{ks}}\) les énergies du rotor et du support, définies par:
\({E}_{\mathrm{kr}}={\Phi}_{\mathrm{kr}}^{t}{K}_{r}{\Phi}_{\mathrm{kr}}\) et \({E}_{\mathrm{ks}}={\Phi}_{\mathrm{ks}}^{t}{K}_{s}{\Phi}_{\mathrm{ks}}\)
Les coefficients de participation relatifs au rotor et support sont définis respectivement par:
\({\rho}_{\mathrm{kr}}=\frac{{E}_{\mathrm{kr}}}{{E}_{k}}\) et \({\rho}_{\mathrm{ks}}=\frac{{E}_{\mathrm{ks}}}{{E}_{k}}\)
L’opérateur POST_ELEM permet d’accéder directement aux énergies potentielle, cinétique et de déformation élastique sur tout le système mécanique (option TOUT=’OUI’) ou des parties du système (option GROUP_MA=’ROTOR’ ou GROUP_MA=‘MASSIF’). L’exemple suivant permet de calculer ces énergies pour les 4 premiers modes de la ligne d’arbres.
Remarque:
Il est important de noter que le calcul des énergies n’est disponible que pour les modes réels.
EPOT_TOT=POST_ELEM(RESULTAT=MODES,
NUME_MODE=(1,2,3,4),
MODELE=MODELE,
CARA_ELEM=CARELEM,
CHAM_MATER=CHMAT,
ENER_POT=_F(TOUT=”OUI”),
);
epot_tot=EPOT_TOT.EXTR_TABLE()
tot_epot=epot_tot.TOTALE
EPOT_ROT=POST_ELEM(RESULTAT=MODES,
NUME_MODE=(1,2,3,4),
MODELE=MODELE,
CARA_ELEM=CARELEM,
CHAM_MATER=CHMAT,
ENER_POT=_F(GROUP_MA=”ROTOR”),
);
epot_rot=EPOT_ROT.EXTR_TABLE()
rot_epot=epot_rot.TOTALE
EPOT_MAS=POST_ELEM(RESULTAT=MODES,
NUME_MODE=(1,2,3,4),
MODELE=MODELE,
CARA_ELEM=CARELEM,
CHAM_MATER=CHMAT,
ENER_POT=_F(GROUP_MA=”MASSIF”),
);
epot_mas=EPOT_MAS.EXTR_TABLE()
mas_epot=epot_mas.TOTALE
L’obtention des coefficients de participation peut se faire en Python de la même façon que pour les sensibilités modales au balourd \({M}_{n}\) (cf. paragraphe 7.1).
# Calcul des participations du rotor et massif pour le premier mode
tot_pot1=tot_epot[1]
rot_pot1=rot_epot[1]
mas_pot1=mas_epot[1]
part_rot=rot_pot1/tot_pot1
part_mas=mas_pot1/tot_pot1
print “part_rot”, part_rot
print “part_mas”, part_mas
5.3. Détermination des phases et amplitudes en harmonique#
La déformée (modale, réponse harmonique, etc.) est caractérisée par des déplacements complexes. Ce caractère complexe des déplacements correspond à l’introduction de déphasage entre les déplacements des nœuds du modèle. Ce déphasage est dû à l’amortissement et aux effets gyroscopiques liés à la rotation du rotor. À partir du concept résultat, les déplacements latéraux sont récupérés sous forme de fonctions comme suit:
DY_DIS2=RECU_FONCTION(RESULTAT=DHAM,
NOM_CHAM=”DEPL”,
NOM_CMP=”DX”,
GROUP_NO=”N_DIS2”,);
DZ_DIS2=RECU_FONCTION(RESULTAT=DHAM,
NOM_CHAM=”DEPL”,
NOM_CMP=”DY”,
GROUP_NO=”N_DIS2”,);
Les amplitudes et les phases de déplacement suivant les axes \(x\) et \(y\) sont obtenues à partir des déplacements modaux complexes dans les mêmes directions comme suit :
MOD_Y_D2=CALC_FONCTION(EXTRACTION=_F(FONCTION=DX_DIS2,
PARTIE=”MODULE”,),);
MOD_Z_D2=CALC_FONCTION(EXTRACTION=_F(FONCTION=DY_DIS2,
PARTIE=”MODULE”,),);
PHA_Y_D2=CALC_FONCTION(EXTRACTION=_F(FONCTION=DX_DIS2,
PARTIE=”PHASE”,),);
PHA_Z_D2=CALC_FONCTION(EXTRACTION=_F(FONCTION=DY_DIS2,
PARTIE=”PHASE”,),);
Pour la commodité de mise en œuvre des opérations ultérieures de post-traitement, ces grandeurs sont stockées sous format de tables.
TABMODY=CREA_TABLE(FONCTION=_F(FONCTION=MOD_X_D2, ))
TABMODZ=CREA_TABLE(FONCTION=_F(FONCTION=MOD_Y_D2, ))
TABPHAY=CREA_TABLE(FONCTION=_F(FONCTION=PHA_X_D2, ))
TABPHAZ=CREA_TABLE(FONCTION=_F(FONCTION=PHA_Y_D2, ))
MODYDIS2=TABMODZ[“DX”,1]
MODZDIS2=TABMODY[“DY”,1]
PHAYDIS2=TABPHAZ[“DX”,1]
PHAZDIS2=TABPHAY[“DY”,1]
5.4. Détermination des ellipses des rotors#
Comme pour les modes propres, La trajectoire d’un nœud dans le plan perpendiculaire à la fibre neutre du rotor est donc une ellipse dont les caractéristiques sont définies de la manière suivante :
Figure 5.4-a: Illustration de la trajectoire d’un mode
Ensuite, on doit déterminer le grand-axe de la trajectoire elliptique. D’un point de vue vibratoire, c’est la valeur du demi grand-axe qui représente le niveau (crête) vibratoire à prendre en compte pour le dimensionnement ou la surveillance.
dax=ellipse(MODXDIS2,MODYDIS2,PHAXDIS2,PHAYDIS2)
La fonction ellipse est définie comme suit:
def ellipse(modx,mody,thetx,thety) :
thetx=thetx*pi/180.
thety=thety*pi/180.
num = modx**2*sin(2*thetx) + mody**2*sin(2*thety)
denum = modx**2*cos(2*thetx) + mody**2*cos(2*thety)
if abs(denum) < 1e-33 :
maxdemiaxe = 0.
else :
T=.5*atan(-num/denum)
ux1 = modx*cos(T+thetx)
uy1 = mody*cos(T+thety)
ux2 = modx*cos(T+thetx+pi/2.)
uy2 = mody*cos(T+thety+pi/2.)
axy1 = sqrt(ux1**2+uy1**2)
axy2 = sqrt(ux2**2+uy2**2)
maxdemiaxe = max(axy1,axy2)
return maxdemiaxe
Le sens de parcours de la trajectoire est appelé sens de précession. Si le sens de parcours de la trajectoire elliptique correspond au sens de rotation du rotor, la précession est dite directe . Dans le cas contraire la précession est dite inverse ou rétrograde.
On suppose sans le démontrer que, pour un même mode, tous les nœuds ont le même sens de précession. On parle alors de mode direct ou rétrograde.
Dans Code_Aster , l’identification du sens de précession se fait soit en fonction du signe de la plus grande orbite (le nœuddont le grand axe est maximum) dans un mode, soit en fonction du signe de la somme des signes de toutes les orbites. Pour plus de renseignements sur le calcul du sens de précession, le lecteur pourra se référer au document [R7.10.03].
5.5. Diagramme de Campbell#
Le diagramme de Campbell est une représentation graphique permettant le suivi des fréquences naturelles d’un système en rotation en fonction de sa vitesse de rotation ainsi que les zones d’instabilité de ces modes ([R7.10.03]). Les fréquences naturelles et les modes d’un système tournant sont obtenus par la résolution de l’équation d’équilibre dynamique d’un système d’arbres tournants, sans second membre et incluant les effets d’amortissement gyroscopique.
A cet effet, deux macro-commandes sont développées dans Code_Aster .La première macro-commande, CALC_MODE_ROTATION [U4.42.51], permet le calcul des fréquences et des modes sur le système complet en fonctions des vitesses de rotation. La deuxième macro-commande, IMPR_DIAG_CAMPBELL [U4.52.52], permet de classer les modes en flexion, en torsion et en traction compression, de normer ces modes, de déterminer le sens de précession des modes en flexion, de réaliser le tri des fréquences suivant différentes méthodes de suivi de modes et, enfin, de tracer le diagramme de Campbell.