Télécharger hbm_jeffcott_contact.dgibi
* fichier : hbm_jeffcott_contact.dgibi ****************************************************************** * * Systeme a deux ddl * * ROTOR JEFFCOTT AVEC CONTACT ROTOR-STATOR * .. . * m x + c x + k x = Fbal*cos wt + Fchoc_x * .. . * m y + c y + k y = Fbal*sin wt + Fchoc_y * * modele de contact : * Fn = -{r-jeu}+ kchoc * Ft = µ|Fn|sign(vrel) * * Continuation + HBM + AFT * ****************************************************************** *----------------------------------------------------------------------- * CHARMECA.PROCEDUR * Calcul de la force non lineaire fnl(x,t) et de sa derivee dfnl(x,t)/dx * dans le domaine temporel *----------------------------------------------------------------------- * * EN ENTREE : * * TAB1 * >> parametres génériques : * . 'DEP_NL' : LISTCHPO DE DEPLACEMENTS TEMPORELLES * ou (pas encore programmé) * . i . 'CHPOINT' = CHPOINT unitaire des deplacements NL * . i . 'LISTREEL' = evolution temporelle coefficient du chpoint * >> parametres propres a ce cas test : * . 'COEFF_FNL' : coefficient de non linearite * . 'POINT_FNL' : point de non linearite * . 'COMP_FNL' : composante de non linearite * * * EN SORTIE : * * TAB1 * >> parametres génériques : * . 'FNL_T' : LISTCHPO DES FORCES NON LINEAIRES TEMPORELLES * ou TABLE d'indice : (pas encore programmé) * . i . 'CHPOINT' = CHPOINT unitaire des forces non lineaires * . i . 'LISTREEL' = evolution temporelle coefficient du chpoint * . 'KNL_T' : DERIVEE DE FORCES NON LINEAIRES sous forme de TABLE : * . i . j = 'LISTREEL' evolution temporelle de dFi/dxj * *----------------------------------------------------------------------- DEBPROC CHARMECA TAB1*'TABLE'; ******** parametres d'entree propres a ce cas test ********** *coefficient de la force nl SINON; FINSI; pNL = TAB1 . 'POINT_FNL'; SINON; FINSI; COMP_FNL = TAB1 . 'COMP_FNL'; SINON; FINSI; * ******** parametres d'entree génériques ********** *DEPNL : list de champ par points, deplacements temporels du point nl * DEPNL = TAB1 . 'DEP_NL'; si (non IFCHPO); sinon; finsi; finsi; finsi; SINON; FINSI; * calcul de fnl ET dfnl/dx ? dans le doute on calcule tout... ******** Calcul de FNL ******** *nb: nombre de pas de temps *NCNL : nombre de composantes pour la force nl * BOUCLE POUR CONSTRUIRE le LISTREEL EXCENTRICITE(t) ib = 0; REPE bfor nb; ib = ib + 1; * mess 'x,y = ' DEP_X0 DEP_Y0; LST_X0 = LST_X0 ET DEP_X0; LST_Y0 = LST_Y0 ET DEP_Y0; * EXCENTRICITE R0 = ((DEP_X0**2) + (DEP_Y0**2))**0.5; LST_R0 = LST_R0 ET R0; FIN bfor; *---------- BOUCLE POUR CALCULER LA FORCE NL ----------- ib = 0; REPE Blst nb; ib = ib + 1; SI (R0 <EG ph0); fxr = 0.; fyr = 0.; si IFKNL; dfxdx = 0. ; dfxdy = 0. ; dfydx = 0. ; dfydy = 0. ; finsi; SINON; fn = -1. * pkc * (R0 - ph0); ft = pmu * fn; * car on suppose que v_tangentielle_relative >0 * (hyp : vitesse de roation >> deplacement du centre du disque) costet1 = DEP_X0 / R0; sintet1 = DEP_Y0 / R0; fxr = (fn * costet1) - (ft * sintet1); fyr = (fn * sintet1) + (ft * costet1); si IFKNL; cstet1 = costet1*sintet1; costet2 = costet1**2; sintet2 = sintet1**2; unmjeu1 = 1. - (ph0/R0); A1 = 1. - (ph0/R0 * sintet2); B1 = ph0/R0 * cstet1; C1 = B1; D1 = 1. - (ph0/R0 * costet2); dfxdx = pkc * ( A1 - (pmu * B1)); dfxdy = pkc * ( C1 - (pmu * D1)); dfydx = pkc * ( B1 + (pmu * A1)); dfydy = pkc * ( D1 + (pmu * C1)); * On fournit en realite les termes de Knl = - dF/dX finsi; FINSI; fxrp = fxrp et fxr; fyrp = fyrp et fyr; FNLTEMP = FNLTEMP ET si IFKNL; dfxdxp = dfxdxp et dfxdx; dfxdyp = dfxdyp et dfxdy; dfydxp = dfydxp et dfydx; dfydyp = dfydyp et dfydy; finsi; FIN Blst; * mess 'f^nl = ' fxr fyr; * mess 'dfnl/du=' dfxdx dfxdy dfydx dfydy; TAB1 . 'FNL_T' = FNLTEMP; TAB1 . 'KNL_T' = table; si IFKNL; TAB1 . 'KNL_T' . 1 . 1 = dfxdxp; TAB1 . 'KNL_T' . 1 . 2 = dfxdyp; TAB1 . 'KNL_T' . 2 . 1 = dfydxp; TAB1 . 'KNL_T' . 2 . 2 = dfydyp; finsi; fprog = (fxrp**2 + fyrp**2)**0.5; sinon; fnlmax0 = 0.; finsi; * si chgt brusque (mise en contact ou perte de contact), on actualise K si ( ((fnlmax > 1.E-50) et (fnlmax0 < 1.E-50)) OU ((fnlmax < 1.E-50) et (fnlmax0 > 1.E-50)) ); * mess 'contact detecté !'; WTAB . 'RECA_K' = VRAI; finsi; TAB1 . 'FNLMAX' = fnlmax; FINPROC; *----------------------------------------------------------------------- ************************************************************************ * * DEBUT DU CALCUL * * ************************************************************************ *opti echo 0 ; graph = faux ; GRAPH = FAUX ; SAVE = FAUX; TNR = VRAI; * GRAPH = VRAI ; SAVE = VRAI; TNR = FAUX; * *-------- Definition des options du calcul : * complet = faux; * CALCUL PAR DFT ? (Transformation de Fourier Discret CALC_DFT = FAUX; *si analyser la stabilite? OP_STAB = FAUX; * *si adimensionnement du temps? * Adim_t = VRAI; * *-------- Definition des parametres du calcul -------- *nombre d'harmoniques nhbm = 3 ; *nhbm = 7 ; * nhbm = 9 ; * nhbm = 11 ; *nhbm = 15 ; *plage d'etude de frequence en Hz t0 = 0.0; t1 = 10.; dt = 0.10; *des iterations itmoy = 6; ds = 1.; dsmax = 1.; dsmin = 1.E-3 ; * si AFT, OTFR: nb de points 2**OTFR pour TFR * OTFR = 7; OTFR = ENTI 'SUPERIEUR' (log (2 * (2 * nhbm + 1)) / (log 2)); *-------- Definition des parametres du contact --------------- *coefficient de frottement pmu = 0.11 ; *rigidite du contact pkc = 2500. ; * pkc = 0.; *jeu initial ph0 = 0.105 ; * *parametre de l'adimensionnement = 20% du jeu u1max = 0.20*ph0; * *---------Definition des parametres du rotor -------- *masse constant pmass = 1. ; *amortissement pamor = 5. ; *rigidite prigi = 100. ; *force du balourd pbal = 0.1; * frequences caracteristiques du pb (en Hz) w0 = (prigi/pmass)**0.5 / (2.*pi); w0c = ((prigi+pkc)/pmass)**0.5 / (2.*pi); wc = ((pkc)/pmass)**0.5 / (2.*pi); mess w0 w0c wc; * prefix : TITRE prefix; si GRAPH; finsi; *------------- geometrie -------- * P1 = 0. 0. ; P2 = 1. 0. ; *----------- construction des matrices caracteristiques ---------- * *OPTI DONN 5; *------- on définit une unique table pour tout (HBM et CONTINU) ------- TAB1 = TABLE ; *--------- remplissage des matrices "temporelles" --------- * TAB1 . 'MASSE_CONSTANTE' = MASS1 ; * TAB1 . 'AMORTISSEMENT_CONSTANT' = AMOR1 ; * ATTENTION AUX UNITES : ON VA TRAVAILLER EN Hz => mettre le 2pi ici TAB1 . 'MASSE_CONSTANTE' = (2.*pi **2) * MASS1 ; TAB1 . 'AMORTISSEMENT_CONSTANT' = (2.*pi) * AMOR1 ; TAB1 . 'RIGIDITE_CONSTANTE' = RI1 ; TAB1 . 'N_HARMONIQUE' = nhbm; *------- remplissage des resultats attendus sur ddls "temporels" ------- mycoul6 = MOTS 'VIOL' 'BLEU' 'BLEU' 'TURQ' 'TURQ' 'VERT' 'VERT' 'OLIV' 'OLIV' 'JAUN' 'JAUN' 'ORAN' 'ORAN' 'ROUG' 'ROUG' 'ROSE' 'ROSE' ; TAB1 . 'RESULTATS' . 1 . 'POINT_MESURE' = P2; TAB1 . 'RESULTATS' . 1 . 'COULEUR_HBM' = mycoul6; TAB1 . 'RESULTATS' . 2 . 'POINT_MESURE' = P2; TAB1 . 'RESULTATS' . 2 . 'COULEUR_HBM' = mycoul6; *--------- passage en frequentiel --------- HBM TAB1; LIST TAB1 . 'COMPOSANTES' . 'DEPLACEMENT'; LIST TAB1 . 'COMPOSANTES' . 'DEPLACEMENT_HBM'; *----------- definition du chargement ----------------------------------- * * ici, on definit directement le chargement en frequentiel * ATTENTION AUX UNITES : ON VA TRAVAILLER EN Hz => mettre le 2pi ici LIY1 = (2.*pi*LIX1)**2 ; si GRAPH; dess EV1 POSX CENT POSY CENT ; finsi; *----------- resolution par la procedure CONTINU ----------------------- * OPTIONS DE CALCULS TAB1 . 'CHARGEMENT' = CHA1; * calcul des forces NL TAB1 . 'PROCEDURE_CHARMECA'= VRAI ; TAB1 . 'N_PT_TFR' = OTFR; TAB1 . 'CALC_CHPO' = VRAI; * TAB1 . 'CALC_CHPO' = faux; -> charmeca pas prevu ! * *plage de frequence en Hz TAB1 . 'TEMPS_CALCULES' = LIS1T; TAB1 . 'MAXIPAS' = 500; TAB1 . 'MAXIPAS' = 300; TAB1 . 'PRECISION' = 1.E-5; TAB1 . 'ACCELERATION' = 4; *------parametres du contact TAB1 . 'POINT_FNL' = P2; *------parametres du continuation TAB1 . 'NB_ITERATION' = itmoy; TAB1 . 'MAXITERATION' = 30; TAB1 . 'WTABLE' . 'DS' = ds; TAB1 . 'WTABLE' . 'DSMAX' = dsmax; TAB1 . 'WTABLE' . 'DSMIN' = dsmin; TAB1 . 'MAXI_DEPLACEMENT' = u1max; TAB1 . 'MAXSOUSPAS' = 3; * *resultats a sortir * TAB1 . 'RESULTATS' = TRES1; * stabilité TAB1 . 'STABILITE' = vrai; * * opti debug 1 ; *calcul avec continuation CONTINU TAB1; * *---------------------- sauv avant reprise ---------------------------- * ficxdr = chai prefix '-avantREPRISE.xdr'; * mess ficxdr; * opti sauv ficxdr; * sauv ; *------------------------- reprise ----------------------------- * on impose l'absence de contact * on fait croire qu'on vient dans la direction opposee de maniere * a etre capable de traiter le point de rebroussement WTAB1 = TAB1 . 'WTABLE'; * OUBL TAB1 'WTABLE'; list WTAB1; WTAB2 . 'DTIME0' = -1. * WTAB1 . 'DTIME0'; WTAB2 . 'DDEP0' = -1. * WTAB1 . 'DDEP0'; TAB1 . 'WTABLE' = WTAB2; CONTINU TAB1; *------------------------- post-traitement ----------------------------- ********** tracé de toutes les harmoniques individuellement ********** wprog = TAB1 . 'TEMPS_PROG'; * wprog = (extr evtot cour 1) extr ABSC; evtot = TAB1 . 'RESULTATS_HBM' . 'RESULTATS_EVOL'; TDESS1 . 'TITRE' = TAB1 . 'RESULTATS_HBM' . 'TITRE'; si GRAPH; dess evtot TITX '\w(Hz)' POSX CENT TITY 'U_{k}' POSY CENT TDESS1 'LEGE'; TITX '\w(Hz)' POSX CENT TITY 'U_{k}' POSY CENT TDESS1 'LEGE'; finsi; ********** traduction des resultats frequentiels en temporels ********** HBM_POST TAB1; ************* tracé du max d'amplitude max_t(u(t)) ********************* evuyamp = TAB1 . 'RESULTATS' . 'RESULTATS_EVOL'; TDESS2 . 'TITRE' = TAB1 . 'RESULTATS' . 'TITRE'; si GRAPH; dess evuyamp1 TITX '\w(Hz)' POSX CENT TITY 'max|U(t)|' POSY CENT TDESS2 LEGE 'NO'; dess evuyamp1 TITX '\w(Hz)' POSX CENT TITY 'max|U(t)|' POSY CENT TDESS2 LEGE ; finsi; ************* tracé du max d'amplitude avec la stabilite ! ************* istab = TAB1 . 'RESULTATS_STABILITE' . 'FLOQ' . 'STABILITE'; Tdess2 . 'LIGNE_VARIABLE' . 1 = istab; si GRAPH; dess evuyamp1 TITX '\w(Hz)' POSX CENT TITY 'max|U(t)|' POSY CENT Tdess2; dess evuyamp1 TITX '\w(Hz)' POSX CENT TITY 'max|U(t)|' POSY CENT Tdess2; finsi; * autres tracé de la stabilite : lambda_R en fonction de W mycoul = mots 'VIOL' 'BLEU' 'AZUR' 'TURQ' 'VERT' 'OLIV' 'JAUN' 'ORAN' 'ROUG' 'ROSE'; il = 0; icoul = 0; repe bl nl; il = il + 1; icoul = icoul + 1; lr1 = TAB1 . 'RESULTATS_STABILITE' . 'FLOQ' . 'EXPOSANT_REEL' . il; evlrtot = evlrtot li1 = TAB1 . 'RESULTATS_STABILITE' . 'FLOQ' . 'EXPOSANT_IMAG' . il; evlitot = evlitot fin bl; si GRAPH; finsi; * stabilite : trace dynamique pour faire une animation si GRAPH; opti 'FTRA' ficps; TABORB . 'PAS' = 3; TABORB . 'EVOL_FIXE' = evzero ; ORBITE evlrtot TABORB; finsi; *------------------------- sauvegarde ----------------------------- si SAVE ; mess ficxdr; sauv ; finsi; *--------------------- test de non regression --------------------- si TNR ; * reference : these de Lihan Xie fig3.10 page 84 * sauf qu'ici, on ne prend que 3 harmoniques * recup valeurs de la courbes de reponse wadim = wamp / wc; ramp = uyamp; * R=UY puisque l'on a des orbites circulaires, * sinon il faudrait calculer r(t)=uy(t)**2+uz(t)**2 , puis R=max(r(t)) * recherche de la mise en contact si ((wdeb0 > 0.16) ou (wdeb1 < 0.16)); finsi; * verification que le calcul a bien attenit les w=10Hz si (wmax < 10.); mess wmax; finsi; * verification de l'amplitude max atteinte * rem : rmax = 4.4807 lors de la creation du cas test, * mais on arrondit pour rref rref = 4.5 ; si ((ABS (rmax - rref)) > 0.05); mess 'Le max|U| devrait etre de ' rref ' !'; mess rmax; finsi; * recherche des changements de stabilite list istab1; finsi; finsi; fin ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales