* fichier : rotor7.dgibi ************************************************************************ ************************************************************************ *********************************************************************** * * rotor7.dgibi * * Cas test basé sur rotor2.dgibi et rotor6.dgibi [Ex. Lalanne p.13] * Modélisation 3D : rotor dans le repère tournant * stator dans le repere fixe * * B. Prabel, novembre 2012 : * -teste le calcul de deformee centrifuge NL : * forces suiveuses + grands deplacements * -analyse de stabilité associée * *********************************************************************** ****************************************************** *** *** *** PROCEDURES *** *** *** ****************************************************** *======================================================= * * procedure : CHARMECA * chargement centrifuge de type forces suiveuses * appels : PASAPAS -> UNPAS -> CHARMECA * creation : BP 15/09/2011 * nomenclature : * TATA = table PRECED de UNPAS = table PRECED de PASAPAS (entrée/sortie) * time = temps (entrée) * addi_second = F a ajouter au second membre * addi_matrice = dF/du (=dF/dx en grand depl) a ajouter a l'operateur K * du Newton de unpas * *======================================================= DEBPROC CHARMECA TATA*'TABLE' time*'FLOTTANT'; *=== RECUP ============================================= * du pas IT IT = TATA . 'WTABLE' . 'PAS'; * de omega = vitesse de rotation (Hz) * = paramètre de chargement * = time omeg = (2. * pi) * time ; * mess '====== appel a CHARMECA ======= Omega =' time 'Hz pas' IT; omeg2 = omeg ** 2 ; * du vecteur rotation (supposé de direction fixe) VROT = TATA . 'VEC_ROTATION'; * du modele, materiau et maillage associé au rotor MODROT = TATA . 'MODELE_ROTOR'; MATROT = TATA . 'CARACTERISTIQUES_ROTOR'; *=== CALCUL DE KCENT1 =================================== * bp (rem ianis) 13/10/2011 : rho n'est pas constant en grand deplacement * pour imposer conservation de la masse il faut ecrire qqchose comme : * RHO0 = exco MATROT 'RHO' 'RHO' ; TATA . 'JACOBIEN' . IT = DJAC1; * DJAC01 = CHAN (DJAC0 / DJAC1) MODROT 'RIGIDITE'; * RHO1 = RHO0 * DJAC01 ; * on change DJAC01 en type rigidite pour truander calpaq.eso ... sino; * ici on fait + simple fins; *=== CALCUL DE FCENT =================================== * FCENT = (-1.*omeg2) * KCENT1 * (XYZ- XYZ0); FCENT = (-1.*omeg2) * KCENT1 * XYZ; *=== RESULTATS ======================================== * on fournit les resultats dans la table TCENT TCENT . 'ADDI_SECOND'= FCENT; * Fournit-on KCENT1 dans ADDI_MATRICE? (oui par défaut...) FLMATR= TATA . 'ADDI_MATRICE'; sino; FLMATR= VRAI; fins; si (FLMATR); TCENT . 'ADDI_MATRICE'= (omeg2 * KCENT1); fins; *=== MENAGE =========================================== * on detruit ce qui ne sert a rien si (non FLMATR); DETR KCENT1 'ELEMENTAIRE'; finsi; DETR XYZ; FINPROC TCENT; *======================================================= *======================================================= * * procedure : PERSO1 * procedure d'analyses (calcul des modes reels, complexes ...) * autour de la position d equilibre NL centrifuge definie par Omega * appels : BRASERO -> BRASERO2 -> BRASENL -> pasapas -> PERSO1 * creation : BP 15/09/2011 * *======================================================= DEBPROC PERSO1 TATA*'TABLE'; *=== RECUP DE WTAB , CONV, ICHG ======================= WTAB = TATA . 'WTABLE'; * On commence par créer un indice PAS_CHARGEMENT dans WTABLE * (initialement à 0) WTAB . 'PAS_CHARGEMENT' = WTAB . 'PAS'; ICHG = WTAB . 'PAS_CHARGEMENT'; mess 'on crée WTAB . PAS_CHARGEMENT ' 'initialisé depuis WTAB . PAS =' ICHG; FINSI; * On ne travaille que sur les pas ayant convergés WTAB . 'PAS_CHARGEMENT' = (WTAB . 'PAS_CHARGEMENT') + 1; ICHG = WTAB . 'PAS_CHARGEMENT'; '-> on incremente WTAB . PAS_CHARGEMENT =' ICHG; *=> ICHG = 1 , 2 , ... NOMEG SINON; * * on redémarre l'algo depuis l etat 0 * si (mult WTAB . 'ISOUSPAS' 4); * mess 'on redemarre l algo depuis l etat 0' ; * WTAB . 'FOR' = WTAB . 'FOR0'; * * WTAB . 'TEMPS0' = TATA . 'ESTIMATION' . 'TEMPS'; * WTAB . 'TEMPS0' = 0.; * TATA . 'ESTIMATION' . 'DEPLACEMENTS' * = 0. * TATA . 'ESTIMATION' . 'DEPLACEMENTS'; * TATA . 'ESTIMATION' . 'CONTRAINTES' * = 0. * TATA . 'ESTIMATION' . 'CONTRAINTES'; * TATA . 'ESTIMATION' . 'REACTIONS' * = 0. * TATA . 'ESTIMATION' . 'REACTIONS'; * TATA . 'ESTIMATION' . 'DEFORMATIONS' * = 0. * TATA . 'ESTIMATION' . 'DEFORMATIONS'; * * fins; ICHG = WTAB . 'PAS_CHARGEMENT'; ' -> on quitte '; QUIT PERSO1; FINS; *=== RECUP ============================================= * pas de temps time = TATA . 'ESTIMATION' . 'TEMPS'; * ipas = WTAB . 'PAS'; *bp: ce n est pas IPAS qu il faut mais ICHG (défini dans pasapas) * pour le cas ou on a un pas nonconvergé mess 'pb pour definir le PAS_CHARGEMENT utilisé'; fins; u1 = TATA . 'ESTIMATION' . 'DEPLACEMENTS'; sig1 = TATA . 'ESTIMATION' . 'CONTRAINTES'; * on recupère omega = vitesse de rotation (Hz) * = paramètre de chargement = time dans notre cas omeg = (2. * pi) * time ; omeg2 = omeg ** 2 ; * du vecteur rotation (supposé de direction fixe) VROT = TATA . 'VEC_ROTATION'; * du modele, materiau et maillage associé au rotor MODROT = TATA . 'MODELE_ROTOR'; MATROT = TATA . 'CARACTERISTIQUES_ROTOR'; * du modele, materiau et maillage associé au rotor + stator MODTOT = TATA . 'MODELE'; MATTOT = TATA . 'CARACTERISTIQUES'; *=== ANALYSES ELEMENTAIRES ============================== * couleur des courbes mycoul1 = MOTS VIOL BLEU TURQ VERT ORAN ROUG AZUR VIOL BLEU TURQ VERT ORAN ROUG AZUR; * on se place sur la configuration deformee * FORM GEOM2; FLRECA = faux; TABANA = TATA . 'ANALYSES'; *---ANALYSE de DEFO_CENTRIFUGE --------------------------- MESS ' ANALYSE DEFO_CENTRIFUGE'; * -on trace ? ' \W=' time 'Hz - \s_{VM}'); fins; fins; * -points de mesure ? TRES1 = TABANA . 'DEFO_CENTRIFUGE' . 'RESULTATS'; TRES1 . 'TEMPS_RESULTATS' = TRES1 . 'TEMPS_RESULTATS' et time; sino; fins; iMES1 = 0; repe BMES1 NMES1; iMES1 = iMES1 + 1; TRES1 . iMES1 . 'DIRECTION'; TRES1 . iMES1 . 'RESULTATS' = TRES1 . iMES1 . 'RESULTATS' et xval1; sino; fins; fin BMES1; *.......eventuellement tracé des mesures......................... iMES1 = 0; repe BMES1 NMES1; iMES1 = iMES1 + 1; TRES1 . iMES1 . 'RESULTATS_EVOL' '\W (Hz)' (TRES1 . 'TEMPS_RESULTATS') 'u (m)' (TRES1 . iMES1 . 'RESULTATS') ; si (ega TRES1 . iMES1 . 'DIRECTION' 'UX'); ev1ux = ev1ux et TRES1 . iMES1 . 'RESULTATS_EVOL'; iMES1x = iMES1x + 1; Tdess1x . 'TITRE' . iMES1x = TRES1 . iMES1 . 'TITRE'; fins; si (ega TRES1 . iMES1 . 'DIRECTION' 'UY'); ev1uy = ev1uy et TRES1 . iMES1 . 'RESULTATS_EVOL'; iMES1y = iMES1y + 1; Tdess1y . 'TITRE' . iMES1y = TRES1 . iMES1 . 'TITRE'; fins; si (ega TRES1 . iMES1 . 'DIRECTION' 'UZ'); ev1uz = ev1uz et TRES1 . iMES1 . 'RESULTATS_EVOL'; iMES1z = iMES1z + 1; Tdess1z . 'TITRE' . iMES1z = TRES1 . iMES1 . 'TITRE'; fins; fin BMES1; dess ev1ux 'GRIL' 'POINT' 'GRIS' 'TITR' mytit1 'POSX' 'CENT' 'POSY' 'CENT' 'LEGE' 'NO' Tdess1x; dess ev1uy 'GRIL' 'POINT' 'GRIS' 'TITR' mytit1 'POSX' 'CENT' 'POSY' 'CENT' 'LEGE' 'NO' Tdess1y; dess ev1uz 'GRIL' 'POINT' 'GRIS' 'TITR' mytit1 'POSX' 'CENT' 'POSY' 'CENT' 'LEGE' 'NO' Tdess1z; fins; fins; fins; fins; *---ANALYSE de MODES_COMPLEXES --------------------------- MESS ' ANALYSE MODES_COMPLEXES'; * -calcul des matrices elementaires FLRECA = vrai; * Cas 3D Rotor + stator * recup des matrices elementaires existantes KCSTTOT = TATA . 'RIGIDITE_CONSTANTE' ; fins; liatot = TATA . 'BLOCAGES_MECANIQUES' ; * calcul des matrices elementaires Kcent1 = omeg2 * Kcent1; Gcori1 = omeg * Gcori1; * assemblage + imped pour mode reel (VIBR) et complexe (VIBC) RIGVIBR = IMPE (RIGTOT et KCSTTOT et liatot et Ksigm1 et Kcent1) 'RAIDEUR'; * -calcul des MODES_REELS * -calcul du MODES_COMPLEXES fins; *---Analyse BALOURD -------------------------------------- *---Analyse TOURNANT -------------------------------------- FINSI; *=== MENAGE DES MATRICES ELEMENTAIRES inutiles =========== SI (FLRECA); DETR RIGVIBR 'ELEMENTAIRE'; DETR MASVIBR 'ELEMENTAIRE'; DETR AMOVIBR 'ELEMENTAIRE'; FINS; *=== CONFIGURATION DE REFERENCE = DEFORMEE ============== * on revient a la configuration initiale pour pasapas FORM GEOM0; *=== ON FORME LA RIGIDITE_CONSTANTE DU PAS SUIVANT ============== * Prochaine vitesse de rotation omeg = (2. * pi) * time2 ; omeg2 = omeg ** 2 ; * Recup des matrices elementaires * + Formation de la matrice constante (pour OMEGA>0) * tq : K^dyn(OMEGA) = HKCST2 + OMEGA*HCCST2 + OMEGA**2 * HMCST2 HKCST2 = TATA . 'RAIDEUR_CONSTANTE'; KCSTTOT = HKCST2; fins; HCCST2 = TATA . 'AMORTISSEMENT_CONSTANT'; si (ega KCSTTOT'NONDEFINI'); KCSTTOT = omeg * HCCST2; sino; KCSTTOT = KCSTTOT et (omeg * HCCST2); fins; fins; HMCST2 = TATA . 'MASSE_CONSTANTE'; si (ega KCSTTOT'NONDEFINI'); KCSTTOT = omeg2 * HMCST2; sino; KCSTTOT = KCSTTOT et (omeg2 * HMCST2); fins; fins; * Matrice constante fournie a PASAPAS si(neg KCSTTOT 'NONDEFINI'); TATA . 'RIGIDITE_CONSTANTE' = KCSTTOT; TATA . 'WTABLE' . 'RIGIDITE_CONSTANTE' = KCSTTOT; fins; MESS txtcst; FINSI; FINPROC; *======================================================= ****************************************************** *** *** *** OPTIONS *** *** *** ****************************************************** COMPLET = FAUX; * COMPLET = VRAI; *opti debug 1; *** inclinaison du disque (dx =0.1m) *** dxdisq = 0.; dxdisq = 0.1E-3; dxdisqE = enti (10000. * dxdisq); fins; *** tracés ** GRAPH = VRAI ; * GRAPH = FAUX ; OPTI 'FTRA' fic2tra; eye1 = 5. -10. 3. ; * eye1 = 50. 100. 30.; *** sauvegarde *** *************************************************** *** *** *** MAILLAGE *** *** *** *************************************************** *** géométrie *** Ltot = 0.40 ; L1 = Ltot/3.; L2 = 2.*Ltot/3.; Re1 = 0.01 ; Ri2 = 0.01 ; Re2 = 0.15 ; * hvol = 0.03; hvol = 0.005; *** arbre + volant *** * Sections circulaires de l'arbre et du volant d'inertie p0 = 0. 0. 0.; vaxe = 1. 0. 0.; p1 = 0. Re1 0. ; p1e = 0. Re2 0. ; p2 = 0. 0. Re1 ; p3 = 0. ((-1.)*Re1) 0. ; p4 = 0. 0. ((-1.)*Re1) ; *finesse du maillage n1 = 3; n2 = 5; naxe1 = 10; naxe2 = 2; naxe3 = 10; naxe4 = 10; p1axe = p0; * Section circulaire de l'arbre * Section circulaire du volant d'inertie * *volume obtenu par translation voltot = vol1 et vol2 et vol3 et vol4; p3axe et p4axe et p5axe et pbal); * *on recupere les aretes necessaires pour les liaisons avec le stator * tracé si (GRAPH); 'TITR' 'Maillage du rotor'; fins; *********************************************************** *** *** *** CREATION D UN DEFAUT DE GEOMETRIE *** *** *********************************************************** * creation du chpoint de defaut si (GRAPH); TITR 'champ de défaut'; fins; *************************************************** *** *** *** MODELES, MATERIAUX et MATRICES *** *** *** *************************************************** *************************************************** *** Données Matériaux et Supports * arbre et disque en acier Ey1 = 2.E+11 ; Nu1 = 0.3 ; Rho1 = 7800. ; * Raideur et amortissement des supports bet= 0.0002; Ky = 50000. ; Kz = 50000.; Cy = Ky*bet ; Cz = Kz*bet; *************************************************** *** Rotor 3D *** *=> ses matrices seront calculées par PASAPAS *************************************************** *** Stator *** * on pose le deplacement du stator u^{sta} = (e_X e_Y e_Z) * * x: 0 * y: UY cos (OMEGA t) - IUY sin (OMEGA t) * z: UZ cos (OMEGA t) - IUZ sin (OMEGA t) * Palier 1 : point ps10 * Palier 2 : point ps20 * on rassemble (possible?) *=> on crée les ressorts avec MANU + IMPE *=> on crée les amortisseurs avec MANU + IMPE * On aura a ajouter dans PASAPAS la raideur "constante" la matrice : * K_HARM + OMEGA * C_HARM *************************************************** *** Liaison Palier 1 *** *on crée un point fictif pr10r pour y condenser les deplacements moyens... *...du rotor * liarot1 = (RELA chprot1y) et (RELA chprot1z); * on fait le changement de repere stator / rotor *blocage moteur (RX_M) REF0 = (xc1**2) + (yc1**2) + (zc1**2); *************************************************** *** Liaison Palier 2 *** *on crée un point fictif pr20r pour y condenser les deplacements moyens... *...du rotor * on fait le changement de repere stator / rotor *blocage moteur (RX_M) REF0 = (xc1**2) + (yc1**2) + (zc1**2); *************************************************** *** Blocage axial et moteur? *** *************************************************** *** assemblage des CL et liaisons liatot = liarot1 et liasr1 et liarot2 et liasr2 et blo1x et liaRX1 et bloRX1 et liaRX2 et bloRX2; *********************************************************** *** *** *** PT DE MESURE *** *** *** *********************************************************** TMES . 1 . 'P_MESURE' = p1axe ; TMES . 2 . 'P_MESURE' = p1axe ; TMES . 3 . 'P_MESURE' = p5axe ; TMES . 4 . 'P_MESURE' = p5axe ; TMES . 5 . 'P_MESURE' = pbal ; TMES . 6 . 'P_MESURE' = pbal ; TMES . 7 . 'P_MESURE' = pbal ; * tracé imes = 0; repe BMES (nmes/2); imes = imes + 2; si(ega &BMES 1); ptsmes = TMES . imes . 'P_MESURE'; sino; ptsmes = ptsmes et TMES . imes . 'P_MESURE'; fins; fin BMES; si (GRAPH); 'TITR' 'Points de mesure'; fins; *********************************************************** *** *** *** ANALYSES NL *** *** *** *********************************************************** *************************************************** * chargement = vitesse de rotation si (COMPLET); PAS 200. 1200.; sino; * promeg = prog 0. 1. PAS 1. 30. PAS 5. 170. PAS 10. 200.; * promeg = prog 0. PAS 2. 30. PAS 10. 160. PAS 20. 200.; 115. PAS 2.5 145. 150. 160. PAS 20. 200.; fins; *************************************************** * REMPLISSAGE DE LA TABLE PASAPAS TAB2 . 'MODELE' = MOD1; TAB2 . 'CARACTERISTIQUES' = MAT1; * definition du rotor : TAB2 . 'MODELE_ROTOR' = MOD1; TAB2 . 'CARACTERISTIQUES_ROTOR' = MAT1; TAB2 . 'VEC_ROTATION' = vaxe; * blocage, liaison et autres matrices TAB2 . 'BLOCAGES_MECANIQUES'= liatot; * on initialise RIGIDITE_CONSTANTE pour OMEGA=0, * puis sera actualisée par PERSO1 TAB2 . 'RIGIDITE_CONSTANTE' = K_HARM; TAB2 . 'RAIDEUR_CONSTANTE' = K_HARM; TAB2 . 'AMORTISSEMENT_CONSTANT' = C_HARM; * TAB2 . 'MASSE_CONSTANTE' = M_HARM; * liste des Omegas (en Hz) TAB2 . 'TEMPS_CALCULES' = PROMEG; * Fcentrifuges suiveuses + grands deplacements TAB2 . 'GRANDS_DEPLACEMENTS'= VRAI; TAB2 . 'PROCEDURE_CHARMECA' = VRAI; TAB2 . 'K_SIGMA' = VRAI; * TAB2 . 'K_CENT' = VRAI; * appel a perso1 + demande d'autres analyses TAB2 . 'PROCEDURE_PERSO1' = VRAI; TAB2 . 'ANALYSES' . 'DEFO_CENTRIFUGE' . 'SAUVDEFO' = prodefo; TAB2 . 'ANALYSES' . 'DEFO_CENTRIFUGE' . 'RESULTATS' = TMES; TAB2 . 'ANALYSES' . 'TEMPS_AFFICHAGE_RESULTATS' = proresu; * TAB2 . 'ANALYSES' . 'MODES_COMPLEXES' = 10; * autres parametres de pasapas * (1E-4 et 200 par defaut dans pasapas, ici on fixe 1.E-6 et 10) TAB2 . 'PRECISION' = 1E-6; TAB2 . 'MAXSOUSPAS' = 10; TAB2 . 'MAXITERATION' = 100; * nouveaux parametres de PV * TAB2 . 'PREDICTEUR' = mot 'HPP'; * TAB2 . 'STABILITE' = faux; TAB2 . 'STABILITE' = vrai; TAB2 . 'LINESEARCH' = faux; * TAB2 . 'LINESEARCH' = vrai; * TAB2 . 'PREDICTEUR' = mot 'HPP'; * 1er choix de parametres possible : * on reactualise K^el si dEpsilon > ..(10E-2 par defaut) * TAB2 . 'REAC_GRANDS' = 1.E-5; * TAB2 . 'REAC_GRANDS' = 1.E-4; * 2nd choix de parametres possible : * bp 28/11/2012 : 3 nouvelles options pour pasapas TAB2 . 'INITIALISATION' = faux; TAB2 . 'RENORMALISATION' = vrai; * 1.E-3 est deja la valeur par defaut : on s'assure de la conserver TAB2 . 'MAXDEFOR' = 1.E-3; * TAB2 . 'MAXDEFOR' = 1.E-4; * TAB2 . 'CONVERGENCE_MONOTONE' = vrai; *************************************************** * APPEL A PASAPAS PASAPAS TAB2; temp impr ; *************************************************** * TEST DE BON FONCTIONNEMENT *************************************************** * on verifie qu'on a passé 2 (ou 3 si COMPLET) resonances u1 = tab2 . 'ANALYSES' . 'DEFO_CENTRIFUGE' . 'RESULTATS' . 1 . 'RESULTATS_EVOL'; * promeg = prog 0. 1. PAS 1. 30. PAS 5. 170. PAS 10. 1200.; dess u1splev; * resonance 1 entre 25 et 26Hz Ome25th = 25.608; * resonance 1 entre 130 et 150Hz Ome140th = 138.66; errOme = errOme et (1. - (Ome140 / Ome140th)) ; SI (COMPLET); * resonance 1 entre 710 et 720Hz Ome715th = 714.60; errOme = errOme et (1. - (Ome715 / Ome715th)) ; FINS; list errOme; FINSI ; FIN ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales