* 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';
MESHROT = EXTR MODROT 'MAILLAGE';
*=== 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 :
si (exis TATA 'JACOBIEN');
DJAC0 = redu (TATA . 'JACOBIEN' . 0) MODROT;
RHO0 = exco MATROT 'RHO' 'RHO';
DJAC1 = JACO MODROT;
TATA . 'JACOBIEN' . IT = DJAC1;
DJAC01 = CHAN (DJAC0 / DJAC1) MODROT 'RIGIDITE';
RHO1 = RHO0 * DJAC01;
KCENT1 = KENT 'CENTRIFUGE' MODROT RHO1 VROT;
sino;
* ici on fait + simple
KCENT1 = KENT 'CENTRIFUGE' MODROT MATROT VROT;
fins;
*=== CALCUL DE FCENT ===================================
XYZ = (NOMC (COOR 1 MESHROT) 'UX' 'NATURE' 'DIFFUS') ET
(NOMC (COOR 2 MESHROT) 'UY' 'NATURE' 'DIFFUS') ET
(NOMC (COOR 3 MESHROT) 'UZ' 'NATURE' 'DIFFUS');
* FCENT = (-1.*omeg2) * KCENT1 * (XYZ- XYZ0);
FCENT = (-1.*omeg2) * KCENT1 * XYZ;
*=== RESULTATS ========================================
* on fournit les resultats dans la table TCENT
TCENT = tabl;
TCENT . 'ADDI_SECOND'= FCENT;
* Fournit-on KCENT1 dans ADDI_MATRICE? (oui par défaut...)
si (exis TATA 'ADDI_MATRICE' );
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)
SI (non (exis WTAB 'PAS_CHARGEMENT'));
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
SI (WTAB.'CONV');
WTAB . 'PAS_CHARGEMENT' = (WTAB . 'PAS_CHARGEMENT') + 1;
ICHG = WTAB . 'PAS_CHARGEMENT';
mess '== appel a PERSO1 : CONV '
'-> 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';
mess '== appel a PERSO1 : NC AU PAS_CHARGEMENT=' ICHG
' -> on quitte ';
QUIT PERSO1;
FINS;
*=== RECUP =============================================
* pas de temps
time = WTAB . 'T_FINAL';
* 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é
si (neg time (extr TATA . 'TEMPS_CALCULES' ICHG));
mess 'pb pour definir le PAS_CHARGEMENT utilisé';
erre 21;
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';
MESHROT = EXTR MODROT 'MAILLAGE';
* du modele, materiau et maillage associé au rotor + stator
MODTOT = TATA . 'MODELE';
MATTOT = TATA . 'CARACTERISTIQUES';
MESHTOT = EXTR MODTOT 'MAILLAGE';
*=== ANALYSES ELEMENTAIRES ==============================
mess ' ANALYSES PAS DE CHARGE=' ICHG ' - Omega=' time 'Hz';
* 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
GEOM0 = FORM;
GEOM2 = 'FORM' u1;
* FORM GEOM2;
FLRECA = faux;
SI (EXIS TATA 'ANALYSES');
TABANA = TATA . 'ANALYSES';
*---ANALYSE de DEFO_CENTRIFUGE ---------------------------
si (exis TABANA 'DEFO_CENTRIFUGE');
MESS ' ANALYSE DEFO_CENTRIFUGE';
* -on trace ?
si (exis TABANA . 'DEFO_CENTRIFUGE' 'SAUVDEFO');
si (exis TABANA . 'DEFO_CENTRIFUGE' . 'SAUVDEFO' time);
trac (VMIS sig1 modtot mattot) modtot
'TITR' (chai 'DEFO CENTRIFUGE - pas' ICHG
' \W=' time 'Hz - \s_{VM}');
fins;
fins;
* -points de mesure ?
si(exis TABANA . 'DEFO_CENTRIFUGE' 'RESULTATS');
TRES1 = TABANA . 'DEFO_CENTRIFUGE' . 'RESULTATS';
si (exis TRES1 'TEMPS_RESULTATS');
TRES1 . 'TEMPS_RESULTATS'
= TRES1 . 'TEMPS_RESULTATS' et time;
sino;
TRES1 . 'TEMPS_RESULTATS' = prog time;
fins;
NMES1 = dime TRES1;
iMES1 = 0;
repe BMES1 NMES1;
iMES1 = iMES1 + 1;
si (non (exis TRES1 iMES1)); iter BMES1; fins;
xval1 = EXTR u1 TRES1 . iMES1 . 'P_MESURE'
TRES1 . iMES1 . 'DIRECTION';
si (exis TRES1 . iMES1 'RESULTATS');
TRES1 . iMES1 . 'RESULTATS'
= TRES1 . iMES1 . 'RESULTATS' et xval1;
sino;
TRES1 . iMES1 . 'RESULTATS' = prog xval1;
fins;
fin BMES1;
*.......eventuellement tracé des mesures.........................
si (exis TABANA 'TEMPS_AFFICHAGE_RESULTATS');
si (exis TABANA . 'TEMPS_AFFICHAGE_RESULTATS' time );
ev1ux = VIDE 'EVOLUTIO';
ev1uy = VIDE 'EVOLUTIO';
ev1uz = VIDE 'EVOLUTIO';
Tdess1x = tabl; Tdess1x . 'TITRE' = tabl; iMES1x=0;
Tdess1y = tabl; Tdess1y . 'TITRE' = tabl; iMES1y=0;
Tdess1z = tabl; Tdess1z . 'TITRE' = tabl; iMES1z=0;
iMES1 = 0;
repe BMES1 NMES1;
iMES1 = iMES1 + 1;
si (non (exis TRES1 iMES1)); iter BMES1; fins;
TRES1 . iMES1 . 'RESULTATS_EVOL'
= EVOL (extr mycoul1 iMES1) 'MANU'
'\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;
mytit1 = chai 'déformée centrifuge au pas ' ICHG ;
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 ---------------------------
si (exis TABANA 'MODES_COMPLEXES');
MESS ' ANALYSE MODES_COMPLEXES';
* -calcul des matrices elementaires
FLRECA = vrai;
* Cas 3D Rotor + stator
* recup des matrices elementaires existantes
si (exis TATA 'RIGIDITE_CONSTANTE');
KCSTTOT = TATA . 'RIGIDITE_CONSTANTE' ;
fins;
liatot = TATA . 'BLOCAGES_MECANIQUES' ;
* calcul des matrices elementaires
RIGTOT = RIGI modtot mattot;
Ksigm1 = KSIG MODROT MATROT sig1;
Kcent1 = KENT 'CENTRIFUGE' MODROT MATROT VROT;
Kcent1 = omeg2 * Kcent1;
MASTOT = MASS modtot mattot ;
Gcori1 = CORI MODROT MATROT VROT;
Gcori1 = omeg * Gcori1;
* assemblage + imped pour mode reel (VIBR) et complexe (VIBC)
RIGVIBR = IMPE
(RIGTOT et KCSTTOT et liatot et Ksigm1 et Kcent1) 'RAIDEUR';
MASVIBR = -1.*(IMPE (MASTOT) 'MASSE');
AMOVIBR = IMPE (Gcori1) 'AMORTISSEMENT';
* -calcul des MODES_REELS
MESS ' -MODES_REELS';
* -calcul du MODES_COMPLEXES
MESS ' -MODES_COMPLEXES';
fins;
*---Analyse BALOURD --------------------------------------
*---Analyse TOURNANT --------------------------------------
FINSI;
*=== MENAGE DES MATRICES ELEMENTAIRES inutiles ===========
SI (FLRECA);
DETR RIGTOT; DETR Ksigm1; DETR Kcent1;
DETR MASTOT; DETR Gcori1;
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 ==============
SI ((ICHG + 1) 0)
* tq : K^dyn(OMEGA) = HKCST2 + OMEGA*HCCST2 + OMEGA**2 * HMCST2
KCSTTOT = mot 'NONDEFINI';
si (exis TATA 'RAIDEUR_CONSTANTE');
HKCST2 = TATA . 'RAIDEUR_CONSTANTE'; KCSTTOT = HKCST2;
txtcst = chai txtcst 'K^cst';
fins;
si (exis TATA 'AMORTISSEMENT_CONSTANT');
HCCST2 = TATA . 'AMORTISSEMENT_CONSTANT';
si (ega KCSTTOT'NONDEFINI'); KCSTTOT = omeg * HCCST2;
sino; KCSTTOT = KCSTTOT et (omeg * HCCST2);
fins;
txtcst = chai txtcst '+ W*C^cst';
fins;
si (exis TATA 'MASSE_CONSTANTE');
HMCST2 = TATA . 'MASSE_CONSTANTE';
si (ega KCSTTOT'NONDEFINI'); KCSTTOT = omeg2 * HMCST2;
sino; KCSTTOT = KCSTTOT et (omeg2 * HMCST2);
fins;
txtcst = chai txtcst '+ W²*M^cst';
fins;
* Matrice constante fournie a PASAPAS
si(neg KCSTTOT 'NONDEFINI');
TATA . 'RIGIDITE_CONSTANTE' = KCSTTOT;
TATA . 'WTABLE' . 'RIGIDITE_CONSTANTE' = KCSTTOT;
fins;
txtcst = chai txtcst ') POUR Omega= ' time2 'Hz'
MESS txtcst;
FINSI;
SAUT LIGN;
FINPROC;
*=======================================================
******************************************************
*** ***
*** OPTIONS ***
*** ***
******************************************************
COMPLET = FAUX;
* COMPLET = VRAI;
opti dime 3 elem cub8 ;
*** inclinaison du disque (dx =0.1m) ***
dxdisq = 0.;
dxdisq = 0.1E-3;
dxdisqE = enti (10000. * dxdisq);
si (COMPLET); prefix = chai 'rotor7_COMPLET';
sinon; prefix = chai 'rotor7';
fins;
*** tracés **
GRAPH = VRAI ;
* GRAPH = FAUX ;
OPTI 'TRAC' 'PSC' ;
fic2tra = chai prefix '.ps';
OPTI 'FTRA' fic2tra;
OPTI 'EPTR' 5 'POTR' 'HELVETICA_16';
eye1 = 5. -10. 3. ;
* eye1 = 50. 100. 30.;
*** sauvegarde ***
fic2xdr = chai prefix '.xdr';
***************************************************
*** ***
*** 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;
p2axe = p0 plus ((L1 - (0.5*hvol))*vaxe);
p3axe = p0 plus ((L1 + (0.5*hvol))*vaxe);
p4axe = p0 plus ((L2)*vaxe);
p5axe = p0 plus ((Ltot)*vaxe);
pbal = p1e plus ((L1 - (0.5*hvol))*vaxe);
* Section circulaire de l'arbre
p1p = p0 PLUS (0.2*(p1 MOIN p0)) ;
p2p = p0 PLUS (0.2*(p2 MOIN p0)) ;
p3p = p0 PLUS (0.2*(p3 MOIN p0)) ;
p4p = p0 PLUS (0.2*(p4 MOIN p0)) ;
cer1 = (cer3 (2*n1) p1 p2 p3) ;
cer1p = (cer3 (2*n1) p1p p2p p3p) ;
cer2 = (cer3 (2*n1) p3 p4 p1) ;
cer2p = (cer3 (2*n1) p3p p4p p1p) ;
secarbre = (REGL cer1 cer1p) et (COUT cer1p p0)
et (REGL cer2 cer2p) et (COUT cer2p p0) ;
elim secarbre (1.E-4*Re1) ;
* Section circulaire du volant d'inertie
secvolan = (rota 360. (4*n1) (d n2 p1 p1e) p0 vaxe) et secarbre;
ELIM secvolan (1.E-4*Re1) ;
*
*volume obtenu par translation
vol1 = secarbre volu naxe1 tran ((L1 - (0.5*hvol))*vaxe);
vol2 = (secvolan plus ((L1 - (0.5*hvol))*vaxe))
volu naxe2 tran (hvol*vaxe);
vol3 = (secarbre plus ((L1 + (0.5*hvol))*vaxe))
volu naxe3 tran ((L2 - (L1 + (0.5*hvol)))*vaxe);
vol4 = (secarbre plus (L2*vaxe))
volu naxe4 tran ((Ltot - L2)*vaxe);
voltot = vol1 et vol2 et vol3 et vol4;
elim 0.0001 (voltot et p1axe et p2axe et
p3axe et p4axe et p5axe et pbal);
*
*on recupere les aretes necessaires pour les liaisons avec le stator
ligrot1 = ARET secarbre ;
facrot2 = FACE vol4 2 ; ligrot2 = ARET facrot2 ;
facrot3 = FACE vol4 1 ; ligrot3 = ARET facrot3 ;
facrot4 = face vol2 1 ; ligrot4 = aret facrot4 ;
* tracé
si (GRAPH);
trac eye1 ( (coul ligrot1 rose) et (coul ligrot2 roug)
et (coul ligrot3 TURQ) et voltot) 'CACH'
'TITR' 'Maillage du rotor';
rp1 = @REPERE (prog 0.5 0.2 0.2) 'ORAN';
trac eye1 (voltot et rp1) CACH;
fins;
***********************************************************
*** ***
*** CREATION D UN DEFAUT DE GEOMETRIE
*** ***
***********************************************************
* creation du chpoint de defaut
y2 = coor vol2 2;
y2max = ABS (maxi y2 'ABS');
u666 = (nomc y2 'UX') * (dxdisq / y2max);
si (GRAPH);
trac eye1 (vect u666 'DEPL') (u666 exco 'UX') (voltot)
TITR 'champ de défaut';
fins;
depl vol2 'PLUS' u666 ;
***************************************************
*** ***
*** 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 ***
mod1 = MODE voltot 'MECANIQUE' 'ELASTIQUE' 'ISOTROPE';
mat1 = MATE mod1 'YOUN' Ey1 'NU' Nu1 'RHO' Rho1;
*=> 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
ps10 = bary ligrot1 ;
* Palier 2 : point ps20
ps20 = bary ligrot2 ;
* on rassemble (possible?)
MESHpal = (MANU 'POI1' ps10) et ps20 ;
NBN1 = nbno MESHpal;
*=> on crée les ressorts avec MANU + IMPE
PKAPUI3D = (1./NBN1) * (PROG KY 0. 0. KZ );
LDIRAP = MOTS UY UZ;
RIGAPP = MANU 'RIGI' MESHpal LDIRAP PKAPUI3D;
K_HARM = IMPE RIGAPP 'RAIDEUR' ;
*=> on crée les amortisseurs avec MANU + IMPE
PCAPUI3D = (1./NBN1) * (PROG CY 0. 0. CZ);
DAMA3D = MANU 'RIGI' MESHpal LDIRAP PCAPUI3D;
C_HARM = IMPE DAMA3D 1. 'AMOR' ;
C_CONV = IMPE DAMA3D 'RAIDEUR';
* 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
ligrot11 = chan ligrot1 'POI1';
pr10r = bary ligrot11 ;
nrot1 = nbno ligrot11 ;
chprot1x = (MANU 'CHPO' ligrot11 1 'UX' (1./(nrot1)) NATURE DIFFUS)
ET (MANU 'CHPO' pr10r 1 'UX' -1. NATURE DIFFUS);
chprot1y = (MANU 'CHPO' ligrot11 1 'UY' (1./(nrot1)) NATURE DIFFUS)
ET (MANU 'CHPO' pr10r 1 'UY' -1. NATURE DIFFUS);
chprot1z = (MANU 'CHPO' ligrot11 1 'UZ' (1./(nrot1)) NATURE DIFFUS)
ET (MANU 'CHPO' pr10r 1 'UZ' -1. NATURE DIFFUS);
* liarot1 = (RELA chprot1y) et (RELA chprot1z);
liarot1 = (RELA chprot1x) et (RELA chprot1y) et (RELA chprot1z);
* on fait le changement de repere stator / rotor
liasr1 = (rela 'UY' ps10 - 'UY' pr10r)
et (rela 'IUY' ps10 - 'UZ' pr10r)
et (rela 'UZ' ps10 - 'UZ' pr10r)
et (rela 'IUZ' ps10 + 'UY' pr10r) ;
*blocage moteur (RX_M)
xc1 yc1 zc1 = COOR ligrot11 ;
xc0 yc0 zc0 = COOR pr10r ;
xc1 = xc1 - (MANU 'CHPO' ligrot11 1 'SCAL' xc0 'NATURE' 'DIFFUS');
yc1 = yc1 - (MANU 'CHPO' ligrot11 1 'SCAL' yc0 'NATURE' 'DIFFUS');
zc1 = zc1 - (MANU 'CHPO' ligrot11 1 'SCAL' zc0 'NATURE' 'DIFFUS');
REF0 = (xc1**2) + (yc1**2) + (zc1**2);
REF1 = ( 1. /nrot1)*(CHAN COMP (yc1) 'UZ');
REF2 = ((-1.)/nrot1)*(CHAN COMP (zc1) 'UY');
RRX = CHAN 'ATTRIBUT' ((REF1 ET REF2)/REF0) NATURE diffus;
liaRX1 = RELA (RRX ET (MANU CHPO pr10r 1 'RX' -1. NATURE diffus));
bloRX1 = BLOQ pr10r 'RX';
***************************************************
*** Liaison Palier 2 ***
*on crée un point fictif pr20r pour y condenser les deplacements moyens...
*...du rotor
ligrot21 = chan ligrot2 'POI1';
pr20r = bary ligrot21 ;
nrot2 = nbno ligrot21 ;
chprot2y = (MANU 'CHPO' ligrot21 1 'UY' (1./(nrot2)) NATURE DIFFUS)
ET (MANU 'CHPO' pr20r 1 'UY' -1. NATURE DIFFUS);
chprot2z = (MANU 'CHPO' ligrot21 1 'UZ' (1./(nrot2)) NATURE DIFFUS)
ET (MANU 'CHPO' pr20r 1 'UZ' -1. NATURE DIFFUS);
liarot2 = (RELA chprot2y) et (RELA chprot2z);
* on fait le changement de repere stator / rotor
liasr2 = (rela 'UY' ps20 - 'UY' pr20r)
et (rela 'IUY' ps20 - 'UZ' pr20r)
et (rela 'UZ' ps20 - 'UZ' pr20r)
et (rela 'IUZ' ps20 + 'UY' pr20r) ;
*blocage moteur (RX_M)
xc1 yc1 zc1 = COOR ligrot21 ;
xc0 yc0 zc0 = COOR pr20r ;
xc1 = xc1 - (MANU 'CHPO' ligrot21 1 'SCAL' xc0 'NATURE' 'DIFFUS');
yc1 = yc1 - (MANU 'CHPO' ligrot21 1 'SCAL' yc0 'NATURE' 'DIFFUS');
zc1 = zc1 - (MANU 'CHPO' ligrot21 1 'SCAL' zc0 'NATURE' 'DIFFUS');
REF0 = (xc1**2) + (yc1**2) + (zc1**2);
REF1 = ( 1. /nrot1)*(CHAN COMP (yc1) 'UZ');
REF2 = ((-1.)/nrot1)*(CHAN COMP (zc1) 'UY');
RRX = CHAN 'ATTRIBUT' ((REF1 ET REF2)/REF0) NATURE diffus;
liaRX2 = RELA (RRX ET (MANU CHPO pr20r 1 'RX' -1. NATURE diffus));
bloRX2 = BLOQ pr20r 'RX';
***************************************************
*** Blocage axial et moteur? ***
blo1x = bloq pr10r 'UX';
***************************************************
*** 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 = tabl;
TMES . 1 = TABL;
TMES . 1 . 'P_MESURE' = p1axe ;
TMES . 1 . 'DIRECTION' = mot 'UY';
TMES . 1 . 'TITRE' = mot 'UY (x=0)';
TMES . 2 = TABL;
TMES . 2 . 'P_MESURE' = p1axe ;
TMES . 2 . 'DIRECTION' = mot 'UZ';
TMES . 2 . 'TITRE' = mot 'UZ (x=0)';
TMES . 3 = TABL;
TMES . 3 . 'P_MESURE' = p5axe ;
TMES . 3 . 'DIRECTION' = mot 'UY';
TMES . 3 . 'TITRE' = mot 'UY (x=L)';
TMES . 4 = TABL;
TMES . 4 . 'P_MESURE' = p5axe ;
TMES . 4 . 'DIRECTION' = mot 'UZ';
TMES . 4 . 'TITRE' = mot 'UZ (x=L)';
TMES . 5 = TABL;
TMES . 5 . 'P_MESURE' = pbal ;
TMES . 5 . 'DIRECTION' = mot 'UY';
TMES . 5 . 'TITRE' = mot 'UY (x=L/3)';
TMES . 6 = TABL;
TMES . 6 . 'P_MESURE' = pbal ;
TMES . 6 . 'DIRECTION' = mot 'UZ';
TMES . 6 . 'TITRE' = mot 'UZ (x=L/3)';
TMES . 7 = TABL;
TMES . 7 . 'P_MESURE' = pbal ;
TMES . 7 . 'DIRECTION' = mot 'UX';
TMES . 7 . 'TITRE' = mot 'UX (x=L/3)';
nmes = dime TMES;
* 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;
ptsmes = ptsmes COUL 'ROUG';
si (GRAPH);
trac (voltot et ptsmes)
'TITR' 'Points de mesure';
fins;
***********************************************************
*** ***
*** ANALYSES NL ***
*** ***
***********************************************************
***************************************************
* chargement = vitesse de rotation
si (COMPLET);
promeg = prog 0. 1. PAS 1. 30. PAS 5. 170. PAS 10. 1200.;
prodefo = prog 0. 25 26 130 145 700 720 1200.;
proresu = prog 0. 1. 5. 10. 13. 14. 15. 17. 20. PAS 20. 200.
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.;
promeg = prog 0. PAS 2. 24. 25. 26. PAS 2. 30. PAS 10. 110.
115. PAS 2.5 145. 150.
160. PAS 20. 200.;
prodefo = prog 0. 24 26 130 145 200 ;
proresu = prog 0. PAS 10. 30. 50. PAS 50. 200.;
fins;
***************************************************
* REMPLISSAGE DE LA TABLE PASAPAS
TAB2 = tabl 'PASAPAS';
TAB2 . 'MODELE' = MOD1;
TAB2 . 'CARACTERISTIQUES' = MAT1;
* definition du rotor :
TAB2 . 'MODELE_ROTOR' = MOD1;
TAB2 . 'CARACTERISTIQUES_ROTOR' = MAT1;
TAB2 . 'VEC_ROTATION' = vaxe;
TAB2 . 'JACOBIEN' = tabl ;
TAB2 . 'JACOBIEN' . 0 = jaco MOD1 ;
* 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_CHAR_MECA'= VRAI;
TAB2 . 'K_SIGMA' = VRAI;
* TAB2 . 'K_CENT' = VRAI;
* appel a perso1 + demande d'autres analyses
TAB2 . 'PROCEDURE_PERSO1' = VRAI;
TAB2 . 'ANALYSES' = tabl;
TAB2 . 'ANALYSES' . 'DEFO_CENTRIFUGE' = tabl ;
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-5 et 10)
TAB2 . 'PRECISION' = 0.5E-5;
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.;
profin = prog 0. PAS 0.2 30. PAS 1. (extr promeg (dime promeg));
u1spl = IPOL profin u1 'SPLI';
u1splev = evol manu profin u1spl OCEA;
dess u1splev;
* resonance 1 entre 25 et 26Hz
i25 = POSI 25. 'DANS' profin 1.E-8;
i26 = POSI 26. 'DANS' profin 1.E-8;
li25 = lect i25 PAS 1 i26;
pro25 = extr profin li25;
u25 = extr u1spl li25;
Ome25 = IPOL 0. u25 pro25; mess '1^ere resonance a ' Ome25;
Ome25th = 25.608;
errOme = prog (1. - (Ome25 / Ome25th)) ;
* resonance 1 entre 130 et 150Hz
i130 = POSI 135. 'DANS' profin 1.E-7;
i150 = POSI 145. 'DANS' profin 1.E-7;
li140 = lect i130 PAS 1 i150;
pro140 = extr profin li140;
u140 = extr u1spl li140;
Ome140 = IPOL 0. u140 pro140; mess '2^eme resonance a ' Ome140;
Ome140th = 138.66;
errOme = errOme et (1. - (Ome140 / Ome140th)) ;
SI (COMPLET);
* resonance 1 entre 710 et 720Hz
i710 = POSI 710. 'DANS' profin 1.E-6;
i720 = POSI 720. 'DANS' profin 1.E-6;
li715 = lect i710 PAS 1 i720;
pro715 = extr profin li715;
u715 = extr u1spl li715;
Ome715 = IPOL 0. u715 pro715; mess '3^eme resonance a ' Ome715;
Ome715th = 714.60;
errOme = errOme et (1. - (Ome715 / Ome715th)) ;
FINS;
list errOme;
errmax = maxi errOme 'ABS' ;
SI (errmax > 0.03); ERRE 5 ;
SINON ; ERRE 0 ;
FINSI ;
FIN ;
© Cast3M 2003 - All rights reserved.
Disclaimer