* BALOURD PROCEDUR BP208322 15/09/10 21:15:01 8622 ************************************************************************* * * * Procédure BALOURD * * Calcule la réponse à un balourd * * ************************************************************************* * * INPUT * * * PRFREQ: LISTREEL contenant les fréquences de rotation pour lesquelles * on calcule la réponse au balourd * * TAB1 Table contenant: * * TAB1.'BASE_MODALE': Table contenant la base de modes réels utilisées * (table générée par VIBR avec l'option TBAS) * * Les matrices de masse, de raideur,d'amortissement et de couplage gyroscopiqu * peuvent être données déjà projetées sur la base de modes réels ou non: * * TAB1.'MASS_PROJ': Matrice de masse projetée sur les modes réels utilisés * TAB1.'MASSE': Matrice de masse * * TAB1.'RIGI_PROJ': Matrice de rigidité projetée sur les modes réels utilisés * TAB1.'RIGIDITE': Matrice de rigidité * * TAB1.'BLOC_PROJ': Conditions aux limites projetée sur les modes réels utilis * TAB1.'BLOCAGE': Conditions aux limites * * * TAB1.'AMOR_PROJ': Matrice d'amortissement projetée sur les modes réels utili * TAB1.'AMORTISSEMENT': Matrice d'amortissement * * TAB1.'KROT_PROJ': Matrice de raideur antisymétrique due à l'amortissement co * projetée sur les modes réels utilisés * TAB1.'KROTATIF': Matrice de raideur antisymétrique due à l'amortissement cor * * TAB1.'GYRO_PROJ': Matrice de couplage gyrsocopique projetée sur les modes ré * TAB1.'GYROSCOPIQUE': Matrice de couplage gyrsocopique pour une vitesse de ro * La matrice de couplage gyroscopique doit être donnée * pour une vitesse de rotation de 1 rad/s * * La force de balourd peut être définie de plusieurs façon * * 1- La force de balourd réelle est donnée * et la procédure calcule automatiquement la partie imaginaire nécessaire au * en supposant l'axe de l'arbre tournant orienté suivant l'axe Ox et tournan * une vitesse positive * * TAB1.'FBALOURD': Force de balourd pour une vitesse de rotation unité * La force de balourd doit être donnée pour une vitesse de rotation de 1 rad * * TAB1.'VROTATION': CHPO défini sur les mêmes points que la force de balourd * et donnant la direction du vecteur rotation (composante du CHPO: RX RY RZ) * Par défaut, vecteur Ox. Ce vecteur permet de calculer la partie imaginaire * du vecteur force de balourd. * * 2- L'utilisateur donne directement la partie réelle et la partie imaginaire * utilisés pour la calcul (projetée ou non sur la base modale utilisée) * * TAB1.'FBAR_PROJ': Force de balourd réelle projetée sur les modes réels utili * TAB1.'FBAI_PROJ': Force de balourd imaginaire projetée sur les modes réels u * * TAB1.'FBALREEL': Force de balourd réelle pour une vitesse de rotation unité * La force de balourd doit être donnée pour une vitesse de rotation de 1 rad * TAB1.'FBALIMAG': Force de balourd imaginaire pour une vitesse de rotation un * La force de balourd doit être donnée pour une vitesse de rotation de 1 rad * * TAB1.'REPONSE' : Table contenant les i points où sont calculés les réponses * (TAB1.'REPONSE').i.'POINT': * * TAB1.'SAUVDEFO': Vrai si on veut sauver les déformées pour chaque réponse i * * * TAB1.'AFFICHAGE': VRAI si on veut afficher les fréquences de rotation au cou * * * OUTPUT * * * TAB1.'REPONSE' : Table contenant i indices * (TAB1.'REPONSE'). i . 'POINT': Points où sont calculés les réponses * Grandeurs données directement par l'inversion du système (pas de sens physi * (TAB1.'REPONSE'). i . 'UXREEL': Déplacement UX réel * (TAB1.'REPONSE'). i . 'UYREEL': Déplacement UY réel * (TAB1.'REPONSE'). i . 'UZREEL': Déplacement UZ réel * (TAB1.'REPONSE'). i . 'RXREEL': Rotation RX réel * (TAB1.'REPONSE'). i . 'RYREEL': Rotation RY réel * (TAB1.'REPONSE'). i . 'RZREEL': Rotation RZ réel * (TAB1.'REPONSE'). i . 'UXIMAG': Déplacement UX imaginaire * (TAB1.'REPONSE'). i . 'UYIMAG': Déplacement UY imaginaire * (TAB1.'REPONSE'). i . 'UZIMAG': Déplacement UZ imaginaire * (TAB1.'REPONSE'). i . 'RXIMAG': Rotation RX imaginaire * (TAB1.'REPONSE'). i . 'RYIMAG': Rotation RY imaginaire * (TAB1.'REPONSE'). i . 'RZIMAG': Rotation RZ imaginaire * * * * Grandeurs dans le repère de calcul * (TAB1.'REPONSE'). i . 'UX': Déplacement UX * (TAB1.'REPONSE'). i . 'UY': Déplacement UY * (TAB1.'REPONSE'). i . 'UZ': Déplacement UZ * (TAB1.'REPONSE'). i . 'RX': Rotation RX * (TAB1.'REPONSE'). i . 'RY': Rotation RY * (TAB1.'REPONSE'). i . 'RZ': Rotation RZ * (TAB1.'REPONSE'). i . 'GAXE': Déplacement maximum correspondant au gran * l'ellipse (trajectoire décrite) * (TAB1.'REPONSE'). i . 'PAXE': Déplacement maximum correspondant au pet * l'ellipse (trajectoire décrite) * * Déformées rélles et imaginaires pour chacune des fréquences * TAB1.'SAUVDEFO': Table qui contiendra les déformées pour chaque réponse i * (TAB1.'SAUVDEFO'). i.'FREQROTA' : Fréquence de rotation * (TAB1.'SAUVDEFO'). i. 'DEFORMEE_REELLE' : Déformée réelle * (TAB1.'SAUVDEFO'). i. 'DEFORMEE_IMAGINAIRE' : Déformée imaginaire * ************************************************************************ * *---------------- Recuperation des donnees d'entree -------------------- * 'SI' (EXISTE TAB1 'AFFICHAGE'); SI ((TAB1.'AFFICHAGE') EGA VRAI); TESTAF = TAB1.'AFFICHAGE'; SINON; TESTAF = FAUX; FINSI; 'SINON'; TESTAF = FAUX; 'FINSI'; * 'SI' (EXISTE TAB1 'PLAN_ELLIPSE'); 'SI' (EGA (TAB1.'PLAN_ELLIPSE') 'OXY'); PLANELLI = 'OXY'; 'SINON'; 'SI' (EGA (TAB1.'PLAN_ELLIPSE') 'OYZ'); PLANELLI = 'OYZ'; 'SINON'; 'SI' (EGA (TAB1.'PLAN_ELLIPSE') 'OXZ'); PLANELLI = 'OXZ'; 'SINON'; PLANELLI = 'OYZ'; 'FINSI'; 'FINSI'; 'FINSI'; 'SINON'; PLANELLI = 'OYZ'; 'FINSI'; * 'SI' (EXISTE TAB1 'SAUVDEFO'); SI ((TAB1.'SAUVDEFO') EGA VRAI); TESTDEFO = VRAI; TAB1.'SAUVDEFO' = TABLE; SINON; TESTDEFO = FAUX; FINSI; SINON; TESTDEFO = FAUX; FINSI; * 'SI' (EXISTE TAB1 'BASE_MODALE'); TESTMODE = VRAI; TBasR = TAB1.'BASE_MODALE'; 'SINON'; TESTMODE = FAUX; 'FINSI'; * 'SI' (EXISTE TAB1 'REPONSE'); TabRep = TAB1.'REPONSE'; 'SINON'; 'FINSI'; * 'SI' (EXISTE TAB1 'MASSE'); Mmas = TAB1.'MASSE'; SI TESTMODE; SINON; MMasP = MMas ; FINSI; 'SINON'; 'SI' (EXISTE TAB1 'MASS_PROJ'); MMasP = TAB1.'MASS_PROJ'; SI (NON TESTMODE); 'FINSI'; 'SINON'; 'FINSI'; 'FINSI'; * 'SI' (EXISTE TAB1 'RIGIDITE'); MRig = TAB1.'RIGIDITE'; SI TESTMODE; SINON; MRigP = MRig ; FINSI; 'SINON'; 'SI' ((EXISTE TAB1 'RIGI_PROJ')); MRigP = TAB1.'RIGI_PROJ'; MRig = MRigP ; SI (NON TESTMODE); 'FINSI'; 'SINON'; 'FINSI'; 'FINSI'; * 'SI' (EXISTE TAB1 'BLOCAGE'); BL0 = TAB1.'BLOCAGE'; SI TESTMODE; SINON; BL0P = BL0 ; FINSI; 'SINON'; 'SI' ((EXISTE TAB1 'BLOC_PROJ')); BL0P = TAB1.'BLO_PROJ'; BL0 = BL0P ; SI (NON TESTMODE); 'FINSI'; 'SINON'; BL0P = 0.*MRigP; BL0 = 0.*MRig; 'FINSI'; 'FINSI'; * 'SI' (EXISTE TAB1 'AMORTISSEMENT'); MCam = TAB1.'AMORTISSEMENT'; SI TESTMODE; SINON; MCamP = MCam ; FINSI; 'SINON'; 'SI' ((EXISTE TAB1 'AMOR_PROJ')); MCamP = TAB1.'AMOR_PROJ'; SI (NON TESTMODE); 'FINSI'; 'SINON'; MESS 'La matrice d amortissement est prise nulle'; MCamP = 0.*MRigP; MCam = 0.*MRig; 'FINSI'; 'FINSI'; * 'SI' (EXISTE TAB1 'KROTATIF'); MCah = TAB1.'KROTATIF'; SI TESTMODE; SINON; MCahP = MCah ; FINSI; 'SINON'; 'SI' (EXISTE TAB1 'KROT_PROJ'); MCahP = TAB1.'KROT_PROJ'; 'SINON'; MESS 'Absence d amortissement corotatif'; MCahP = 0.* MRigP ; MCah = 0.* MRig ; 'FINSI'; 'FINSI'; * * 'SI' (EXISTE TAB1 'GYROSCOPIQUE'); MCG = TAB1.'GYROSCOPIQUE'; SI TESTMODE; SINON; MCGP = MCG ; FINSI; 'SINON'; 'SI' (EXISTE TAB1 'GYRO_PROJ'); MCGP = TAB1.'GYRO_PROJ'; SI (NON TESTMODE); 'FINSI'; 'SINON'; MESS 'La matrice de couplage gyroscopique est prise nulle'; MCGP = 0.*MRigP; MCG = 0.*MRig; 'FINSI'; 'FINSI'; * 'SI' (EXISTE TAB1 'FBALOURD'); FbalR = TAB1.'FBALOURD'; 'SI' (EXISTE TAB1 'VROTATION'); VecRotb = (TAB1.'VROTATION'); VecRot = (1./NVecrb)*VecRotb; 'SINON'; RX 1. RY 0. RZ 0.; 'FINSI'; SI TESTMODE; SINON; FbalRP = FbalR ; FbalIP = FbalI ; FINSI; 'SINON'; 'SI' ((EXISTE TAB1 'FBALREEL') ET (EXISTE TAB1 'FBALIMAG')); FbalR = TAB1.'FBALREEL'; FbalI = TAB1.'FBALIMAG'; SI TESTMODE; SINON; FbalRP = FbalR ; FbalIP = FbalI ; FINSI; 'SINON'; 'SI' ((EXISTE TAB1 'FBAR_PROJ') ET (EXISTE TAB1 'FBAI_PROJ')) ; FbalRP = TAB1.'FBAR_PROJ'; FbalIP = TAB1.'FBAI_PROJ'; SI (NON TESTMODE); 'FINSI'; 'SINON'; 'FINSI'; 'FINSI'; 'FINSI'; * * *----------------- Boucle sur les vitesses de rotation ----------------- REPETER LAB1 NFREQ; i1 = &lab1; * Vitesse de Rotation ----------------------------- SI TESTAF; FINSI; * On résout sur une base de modes propres --------- SI TESTMODE; * * Ancienne syntaxe utilisant VIBC BALOU : * GEOx1 = EXTR FbalRP 'MAIL' ; * GEOx2 = GEOx1 ; * * XVal1 = PROG ; * XVal2 = PROG ; * REPE bbb2 (NBEL GEOx1) ; * i2 = &bbb2 ; * XP1 = 0. 0. 0. ; * GEOx2 = GEOx2 ET XP1 ; * Px1 = POIN GEOx1 i2 ; * XVal1 = XVal1 ET (PROG (EXTR FbalRP 'FALF' Px1)) ; * XVal2 = XVal2 ET (PROG (EXTR FbalIP 'FALF' Px1)) ; * FIN bbb2 ; * XVal2 = XVal1 ET XVal2 ; * PjFBalo = MANU CHPO GEOx2 1 'FALF' XVal2 ; * Depreel DepImag = VIBC MMasP 'BALOURD' * (MRigP et BL0P et (VALFREQ*MCahP)) * ((VALFREQ*MCGP) et MCamp) TBasR * ((VALFREQ**2)*PjFBalo) VALFREQ; * Nouvelle syntaxe : * HBL0 = IMPE BL0P 'RAIDEUR'; pas de blocage sur base modale Kdyn = ((VALFREQ**2)*HMas) et (HRig et (VALFREQ*HCah)) et (VALFREQ * (HCam et (VALFREQ*HCG))); * * On résout sur base "physique" --------------- SINON; * * MMasI = CHAN INCO COMPLEXE MMas; * MRigI = CHAN INCO COMPLEXE MRig; * MCahI = CHAN INCO COMPLEXE MCah; * MCGI = ((-1.)* (CHAN INCO MCG * ('MOTS' 'UX ' 'UY ' 'UZ ' 'RX ' 'RY ' 'RZ ') * ('MOTS' 'IUX ' 'IUY ' 'IUZ ' 'IRX ' 'IRY ' 'IRZ ') * ('MOTS' 'FX ' 'FY ' 'FZ ' 'MX ' 'MY ' 'MZ ') * ('MOTS' 'FX ' 'FY ' 'FZ ' 'MX ' 'MY ' 'MZ ') * QUEL )); * MCGI = MCGI et * ((1.)*(CHAN INCO MCG * ('MOTS' 'UX ' 'UY ' 'UZ ' 'RX ' 'RY ' 'RZ ') * ('MOTS' 'UX ' 'UY ' 'UZ ' 'RX ' 'RY ' 'RZ ') * ('MOTS' 'FX ' 'FY ' 'FZ ' 'MX ' 'MY ' 'MZ ') * ('MOTS' 'IFX ' 'IFY ' 'IFZ ' 'IMX ' 'IMY ' 'IMZ ') * QUEL )); * MCamI = ((-1.)* (CHAN INCO MCam * ('MOTS' 'UX ' 'UY ' 'UZ ' 'RX ' 'RY ' 'RZ ') * ('MOTS' 'IUX ' 'IUY ' 'IUZ ' 'IRX ' 'IRY ' 'IRZ ') * ('MOTS' 'FX ' 'FY ' 'FZ ' 'MX ' 'MY ' 'MZ ') * ('MOTS' 'FX ' 'FY ' 'FZ ' 'MX ' 'MY ' 'MZ ') * QUEL )); * MCamI = MCamI et * ((1.)*(CHAN INCO MCam * ('MOTS' 'UX ' 'UY ' 'UZ ' 'RX ' 'RY ' 'RZ ') * ('MOTS' 'UX ' 'UY ' 'UZ ' 'RX ' 'RY ' 'RZ ') * ('MOTS' 'FX ' 'FY ' 'FZ ' 'MX ' 'MY ' 'MZ ') * ('MOTS' 'IFX ' 'IFY ' 'IFZ ' 'IMX ' 'IMY ' 'IMZ ') * QUEL )); * * * Kdyn = ((-1.)*(VALFREQ**2)*(MMas et MMasI)) et * MRig et MRigI et BL0 et (VALFREQ*MCamI) et * (VALFREQ*(MCahI et MCah)) * et ((VALFREQ**2)*MCGI); * Kdyn = ((VALFREQ**2)*HMas) et (HRig et HBL0 et (VALFREQ * HCah)) et (VALFREQ * (HCam et (VALFREQ*HCG))); FX 0. FY 0. FZ 0. MX 0. MY 0. MZ 0. NATURE DISCRET); fbaldyn=(VALFREQ**2)*(FbalR et * FINSI; * Extraction des resultats demandes ----------- REPETER LAB2 NPoiRep; i2 = &lab2; POIREP = (TabRep. i2).'POINT'; * * SI (EGA PLANELLI 'OXY'); U1PbalR = UXPbalR; U1PbalI = UXPbalI; U2PbalR = UYPbalR; U2PbalI = UYPbalI; SINON; SI (EGA PLANELLI 'OXZ'); U1PbalR = UXPbalR; U1PbalI = UXPbalI; U2PbalR = UZPbalR; U2PbalI = UZPbalI; SINON; U1PbalR = UYPbalR; U1PbalI = UYPbalI; U2PbalR = UZPbalR; U2PbalI = UZPbalI; FINSI; FINSI; * U2max = (U1PbalR*U1PbalR)+(U1PbalI*U1PbalI)+ (U2PbalR*U2PbalR)+(U2PbalI*U2PbalI); * criteres pour mises a 0 : discutable CritU2 = U2max*1.D-10; CritU = (U2max**0.5)*1.D-5; * EE = 2.*((U1PbalR*U1PbalI)+(U2PbalR*U2PbalI)); FF = (U1PbalI*U1PbalI)+(U2PbalI*U2PbalI) - (U1PbalR*U1PbalR)-(U2PbalR*U2PbalR); * SI ((ABS(EE) < CritU2 ) ET (ABS(FF) < CritU2 )); th = 0.; SINON; th = 0.5*(atg EE FF); FINSI; Yy = (U1PbalR*(cos th)) - (U1PbalI*(sin th)); Zz = (U2PbalR*(cos th)) - (U2PbalI*(sin th)); SI ((ABS(Zz) < CritU) ET (ABS(Yy) < CritU)); phip = 0.; SINON; phip = (atg Zz Yy); FINSI; paxe = ((Yy**2)+(Zz**2))**0.5; th = th + 90.; Yy = (U1PbalR*(cos th)) - (U1PbalI*(sin th)); Zz = (U2PbalR*(cos th)) - (U2PbalI*(sin th)); SI ((ABS(Zz) < CritU ) ET (ABS(Yy) < CritU )); phig = 0.; SINON; phig = (atg Zz Yy); FINSI; gaxe = ((Yy**2)+(Zz**2))**0.5; * * stockage des listreels SI (i1 EGA 1) ; SINON; TabRep . i2 . 'UXREEL' = (TabRep . i2 . 'UXREEL' ) ET TabRep . i2 . 'UYREEL' = (TabRep . i2 . 'UYREEL') ET TabRep . i2 . 'UZREEL' = (TabRep . i2 . 'UZREEL') et TabRep . i2 . 'RXREEL' = (TabRep . i2 . 'RXREEL') ET TabRep . i2 . 'RYREEL' = ( TabRep . i2 . 'RYREEL' ) ET TabRep . i2 . 'RZREEL' = (TabRep . i2 . 'RZREEL') ET TabRep . i2 . 'UXIMAG' = (TabRep . i2 . 'UXIMAG') ET TabRep . i2 . 'UYIMAG' = (TabRep . i2 . 'UYIMAG') ET TabRep . i2 . 'UZIMAG' =(TabRep . i2 . 'UZIMAG') ET TabRep . i2 . 'RXIMAG' = (TabRep . i2 . 'RXIMAG') ET TabRep . i2 . 'RYIMAG' = ( TabRep . i2 . 'RYIMAG') ET TabRep . i2 . 'RZIMAG' = (TabRep . i2 . 'RZIMAG') ET TabRep . i2 . 'GAXE' = ( TabRep . i2 . 'GAXE') TabRep . i2 . 'PAXE' = ( TabRep . i2 . 'PAXE') et TabRep . i2 . 'ANGLEGAXE' = ( TabRep . i2 . 'ANGLEGAXE') * FINSI; * stockage des deformees dans une table SI TESTDEFO; TAB1 . 'SAUVDEFO' . i1 = TABLE; TAB1 . 'SAUVDEFO' . i1 . 'FREQROTA' = VALFREQ; TAB1 . 'SAUVDEFO' . i1 . 'DEFORMEE_REELLE' = Depreel; TAB1 . 'SAUVDEFO' . i1 . 'DEFORMEE_IMAGINAIRE' = Depimag; FINSI; * TabRep . i2 . 'UX' = ( ((TabRep . i2 . 'UXREEL' )**2) + ((TabRep . i2 . 'UXIMAG' )**2))**0.5; TabRep . i2 . 'UY' = ( ((TabRep . i2 . 'UYREEL' )**2) + ((TabRep . i2 . 'UYIMAG' )**2))**0.5; TabRep . i2 . 'UZ' = ( ((TabRep . i2 . 'UZREEL' )**2) + ((TabRep . i2 . 'UZIMAG' )**2))**0.5; TabRep . i2 . 'RX' = ( ((TabRep . i2 . 'RXREEL' )**2) + ((TabRep . i2 . 'RXIMAG' )**2))**0.5; TabRep . i2 . 'RY' = ( ((TabRep . i2 . 'RYREEL' )**2) + ((TabRep . i2 . 'RYIMAG' )**2))**0.5; TabRep . i2 . 'RZ' = ( ((TabRep . i2 . 'RZREEL' )**2) + ((TabRep . i2 . 'RZIMAG' )**2))**0.5; * FIN LAB2; * fin d'extraction des resultats demandes ----------- FIN lab1; *-------------- Fin de Boucle sur les vitesses de rotation ------------- *------------------------ Ecriture d'EVOLUTIOns ------------------------ REPETER LAB3 NPoiRep; i2 =&lab3; TabRep . i2 . 'ANGLEGAXE' FIN lab3; 'FINPROC'; *
© Cast3M 2003 - Tous droits réservés.
Mentions légales