Download campbell.procedur

Back to the list

   1 : * CAMPBELL  PROCEDUR  JC220346  12/09/12    21:15:00     7501           
   2 : *************************************************************************
   3 : *
   4 : *
   5 : * Procédure CAMPBELL
   6 : *
   7 : *  Calcule le diagramme de Campbell d'une machine tournante
   8 : *  Le diagramme peut être calculé dans le repère fixe
   9 : * (diagramme classique pour des modélisation de type poutre avec couplage gyrosc
  10 : *  ou dans le repère tournant (évolution des fréquences en tenant compte
  11 : *  des raideurs centrifuges, de précontrainte et du couplage de Coriolis)
  12 : *
  13 : *************************************************************************
  14 : *
  15 : *  INPUT
  16 : *=========
  17 : *
  18 : *
  19 : *  PRFREQ:  LISTREEL contenant les fréquences de rotation pour lesquelles
  20 : *           on calcule le diagramme de Campbell
  21 : *
  22 : *  TAB1     Table contenant:
  23 : *
  24 : *   TAB1.'BASE_MODALE': Table contenant la base de modes réels utilisées
  25 : *                       (table générée par VIBR avec l'option TBAS)
  26 : *
  27 : *   Les matrices de masse, de raideur, d'amortissement et de couplage
  28 : *   peuvent être données déjà projetées sur la base de modes réels ou non:
  29 : *
  30 : *   TAB1.'MASS_PROJ': Matrice de masse projetée sur les modes réels utilisés
  31 : *   TAB1.'MASSE': Matrice de masse
  32 : *
  33 : *   TAB1.'RIGI_PROJ': Matrice de rigidité projetée sur les modes réels utilisés
  34 : *   TAB1.'RIGIDITE': Matrice de rigidité
  35 : *
  36 : *   TAB1.'AMOR_PROJ': Matrice d'amortissement projetée sur les modes réels utili
  37 : *   TAB1.'AMORTISSEMENT': Matrice d'amortissement
  38 : *
  39 : * Pour les diagrammes de Campbell classique (dans le repère fixe)
  40 : *
  41 : *   TAB1.'KROT_PROJ': Matrice de raideur antisymétrique due à l'amortissement co
  42 : *                     projetée sur les modes réels utilisés
  43 : *   TAB1.'KROTATIF': Matrice de raideur antisymétrique due à l'amortissement cor
  44 : *
  45 : *   TAB1.'GYRO_PROJ': Matrice de couplage gyroscopique projetée sur les modes ré
  46 : *   TAB1.'GYROSCOPIQUE': Matrice de couplage gyroscopique pour une vitesse de ro
  47 : *
  48 : * Pour les diagrammes de Campbell dans le repère tournant
  49 : *
  50 : *   TAB1.'CORI_PROJ': Matrice de couplage de Coriolis projetée sur les modes rée
  51 : *   TAB1.'CORIOLIS': Matrice de couplage de Coriolis pour une vitesse de rotatio
  52 : *
  53 : *   TAB1.'KSIG_PROJ': Matrice de raideur de précontrainte projetée sur les modes
  54 : *   TAB1.'KSIGMA': Matrice de raideur de précontrainte pour une vitesse de rotat
  55 : *
  56 : *   TAB1.'KCEN_PROJ': Matrice de raideur centrifuge projetée sur les modes réels
  57 : *   TAB1.'KCENT': Matrice de raideur centrifuge pour une vitesse de rotation uni
  58 : *
  59 : *     Les matrices de couplage gyroscopique, de raideur de précontrainte et de r
  60 : *     doivent être données pour une vitesse de rotation unité
  61 : *      (1 Hz, 1 rad/s ou 1 tour/min selon le choix de l'utilisateur)
  62 : *
  63 : *   TAB1.'AFFICHAGE': VRAI si on veut afficher les fréquences de rotation au cou
  64 : *   TAB1.'CLASSEMENT': VRAI si on veut classer les modes directs (pulsation reel
  65 : *                                           et les modes rétrogrades (pulsation
  66 : *
  67 : *   TAB1.'AXE_DIRECT': Vecteur parallèle à la vitesse de rotation nécessaire pou
  68 : *                       les sens direct et rétrograde
  69 : *
  70 : *  OUTPUT
  71 : *==========
  72 : *
  73 : * TAB1. i     Table contenant les résultats pour le mode complexe i
  74 : *              (N modes réels donnant 2N modes complexes)
  75 : *   (TAB1. i). 'FREQUENCE_REELLE'    : Evolution donnant la fréquence réelle
  76 : *                                      en fonction de la fréquence de rotation
  77 : *   (TAB1. i). 'FREQUENCE_IMAGINAIRE':  Evolution donnant la fréquence imaginair
  78 : *                                      en fonction de la fréquence de rotation
  79 : *   (TAB1. i). 'FREQUENCE_MODULE' : Evolution donnant le module de la fréquence
  80 : *                                      en fonction de la fréquence de rotation
  81 : *   (TAB1. i). 'AMORTISSEMENT' : Evolution donnant l'amortissement en fonction
  82 : *                                      de la fréquence de rotation
  83 : *
  84 : *   Remarque: Pour chaque fréquence de rotation, les fréquences et amortissement
  85 : *             sont classés par ordre croissant. La ligne i correspond donc
  86 : *             à la fréquence ième par ordre croissant (pas de suivi de mode).
  87 : *
  88 : ************************************************************************
  89 : *
  90 : DEBPROC CAMPBELL TAB1*TABLE PRFREQ*LISTREEL;
  91 : *
  92 : *
  93 : ERR = VRAI;
  94 : *
  95 : 'SI' (EXISTE TAB1 'AFFICHAGE');
  96 :     SI ((TAB1.'AFFICHAGE') EGA VRAI);
  97 :         TESTAF = TAB1.'AFFICHAGE';
  98 :     SINON;
  99 :         TESTAF = FAUX;
 100 :     FINSI;
 101 : 'SINON';
 102 :     TESTAF = FAUX;
 103 : 'FINSI';
 104 : *
 105 : Nfreq = dime PRFREQ;
 106 : *
 107 : 'SI' (EXISTE TAB1 'FOURIER');
 108 :   FLFOUR = TAB1.'FOURIER';
 109 : 'SINON';
 110 :   FLFOUR = FAUX;
 111 : 'FINSI';
 112 : *
 113 : TESTCL = FAUX;
 114 : 'SI'  (EXISTE TAB1 'CLASSEMENT');
 115 :     'SI' (EGA (TAB1.'CLASSEMENT')  VRAI);
 116 :         TESTCL = TAB1.'CLASSEMENT';
 117 :     'SINON';
 118 :         TESTCL = FAUX;
 119 :     'FINSI';
 120 :     'SI' (EXISTE TAB1 'AXE_DIRECT');
 121 :       ppdirect = TAB1.'AXE_DIRECT';
 122 :     'SINON';
 123 :      'SI' (NON FLFOUR);
 124 :         ppdirect = 0. 0. 1.;
 125 :      'FINSI';
 126 :     'FINSI';
 127 : 'FINSI';
 128 : *
 129 : *
 130 : 'SI' (EXISTE TAB1 'BASE_MODALE');
 131 :     TBasR = TAB1.'BASE_MODALE';
 132 :     TMod1 = (TAB1.'BASE_MODALE') . 'MODES' ;
 133 :     NbModR = (DIME TMod1) - 2 ;
 134 :     FLAMODE= FAUX;
 135 :     mess 'Je lis la base modale';
 136 : 'SINON';
 137 :   'SI' (EXISTE TAB1 'NMODES');
 138 :      FLAMODE= VRAI;
 139 :      nmodes = TAB1.'NMODES';
 140 :      NbModR = nmodes;
 141 :      'SI' (EXISTE TAB1 'FREQ_PROCHE');
 142 :         fproche = TAB1.'FREQ_PROCHE';
 143 :       'SINON';
 144 :         fproche = 0;
 145 :      'FINSI';
 146 :    'SINON';
 147 :      MESS 'Il manque la base de modes réels dans TAB1';
 148 :      MESS 'Veuillez specifier le nombre de modes reels a calculer';
 149 :      ERR = FAUX;
 150 :    'FINSI';
 151 : 'FINSI';
 152 : NbModC = 2*NbModR;
 153 : *
 154 : 'SI' (EXISTE TAB1 'RIGIDITE');
 155 :     MRig = TAB1.'RIGIDITE';
 156 :     mess 'Je lis la rigidite';
 157 :     SI (NON FLAMODE);
 158 :       MRigP = PJBA TBasR MRig ;
 159 :     FINSI;
 160 : 'SINON';
 161 :   'SI'  (EXISTE TAB1 'RIGI_PROJ');
 162 :      MRigP = TAB1.'RIGI_PROJ';
 163 :   'SINON';
 164 :      MESS 'Il manque la matrice de rigidité dans TAB1';
 165 :      ERR = FAUX;
 166 :   'FINSI';
 167 : 'FINSI';
 168 : *
 169 : *
 170 : 'SI' (EXISTE TAB1 'MASSE');
 171 :     Mmas = TAB1.'MASSE';
 172 :     mess 'Je lis la masse';
 173 :     SI (NON FLAMODE);
 174 :        MMasP = PJBA TBasR MMas ;
 175 :     FINSI;
 176 : 'SINON';
 177 :   'SI'  (EXISTE TAB1 'MASS_PROJ');
 178 :      MMasP = TAB1.'MASS_PROJ';
 179 :   'SINON';
 180 :      MESS 'Il manque la matrice de masse dans TAB1';
 181 :      ERR = FAUX;
 182 :   'FINSI';
 183 : 'FINSI';
 184 : *
 185 : 'SI' (EXISTE TAB1 'AMORTISSEMENT');
 186 :     MCam = TAB1.'AMORTISSEMENT';
 187 :     mess 'Je lis l amortissement';
 188 :     SI (NON FLAMODE);
 189 :      MCamP = PJBA TBasR MCam ;
 190 :     FINSI;
 191 : 'SINON';
 192 :   'SI'  (EXISTE TAB1 'AMOR_PROJ');
 193 :      MCamP = TAB1.'AMOR_PROJ';
 194 :   'SINON';
 195 :      MESS 'La matrice d amortissement est prise nulle';
 196 :      SI FLAMODE;
 197 :         MCam = 0.*MRig;
 198 :      SINON;
 199 :         MCamP = 0.*MRigP;
 200 :      FINSI;
 201 :   'FINSI';
 202 : 'FINSI';
 203 : *
 204 : 'SI' (EXISTE TAB1 'KROTATIF');
 205 :     MCah = TAB1.'KROTATIF';
 206 :     SI (NON FLAMODE);
 207 :      MCahP = PJBA TBasR MCah ;
 208 :     FINSI;
 209 : 'SINON';
 210 :   'SI'  (EXISTE TAB1 'KROT_PROJ');
 211 :      MCahP = TAB1.'KROT_PROJ';
 212 :   'SINON';
 213 :      MESS 'Absence d amortissement corotatif';
 214 :      SI FLAMODE;
 215 :         MCah = 0.*MRig;
 216 :      SINON;
 217 :         MCahP = 0.*MRigP;
 218 :      FINSI;
 219 :   'FINSI';
 220 : 'FINSI';
 221 : *
 222 : 'SI' (EXISTE TAB1 'GYROSCOPIQUE');
 223 :     MCG = TAB1.'GYROSCOPIQUE';
 224 :     SI (NON FLAMODE);
 225 :       MCGP = PJBA TBasR MCG ;
 226 :     FINSI;
 227 : 'SINON';
 228 :   'SI'  (EXISTE TAB1 'GYRO_PROJ');
 229 :      MCGP = TAB1.'GYRO_PROJ';
 230 :   'SINON';
 231 :      MESS 'La matrice de couplage gyroscopique est prise nulle';
 232 :      SI FLAMODE;
 233 :         MCG = 0.*MRig;
 234 :      SINON;
 235 :         MCGP = 0.*MRigP;
 236 :      FINSI;
 237 :   'FINSI';
 238 : 'FINSI';
 239 : *
 240 : 'SI' (EXISTE TAB1 'CORIOLIS');
 241 :     MCCOR = TAB1.'CORIOLIS';
 242 :     mess 'Je lis Coriolis';
 243 :     SI (NON FLAMODE);
 244 :      MCCORP = PJBA TBasR MCCOR ;
 245 :     FINSI;
 246 : 'SINON';
 247 :   'SI'  (EXISTE TAB1 'CORI_PROJ');
 248 :      MCCORP = TAB1.'CORI_PROJ';
 249 :   'SINON';
 250 :      MESS 'La matrice de couplage de Coriolis est prise nulle';
 251 :      SI FLAMODE;
 252 :         MCCOR = 0.*MRig;
 253 :      SINON;
 254 :         MCCORP = 0.*MRigP;
 255 :      FINSI;
 256 :   'FINSI';
 257 : 'FINSI';
 258 : *
 259 : 'SI' (EXISTE TAB1 'KSIGMA');
 260 :     MKSIG = TAB1.'KSIGMA';
 261 :     mess 'Je lis Ksigma';
 262 :     SI (NON FLAMODE);
 263 :      MKSIP = PJBA TBasR MKSIG ;
 264 :     FINSI;
 265 : 'SINON';
 266 :   'SI'  (EXISTE TAB1 'KSIG_PROJ');
 267 :      MKSIP = TAB1.'KSIG_PROJ';
 268 :   'SINON';
 269 :      MESS 'La matrice de raideur de precontrainte est prise nulle';
 270 :      SI FLAMODE;
 271 :         MKSIG = 0.*MRig;
 272 :      SINON;
 273 :         MKSIP = 0.*MRigP;
 274 :      FINSI;
 275 :   'FINSI';
 276 : 'FINSI';
 277 : *
 278 : 'SI' (EXISTE TAB1 'KCENT');
 279 :     MKCEN = TAB1.'KCENT';
 280 :     mess 'Je lis Kcent';
 281 :    SI (NON FLAMODE);
 282 :     MKCEP = PJBA TBasR MKCEN ;
 283 :    FINSI;
 284 : 'SINON';
 285 :   'SI'  (EXISTE TAB1 'KCEN_PROJ');
 286 :      MKCEP = TAB1.'KCEN_PROJ';
 287 :   'SINON';
 288 :      MESS 'La matrice de raideur centrifuge est prise nulle';
 289 :       SI FLAMODE;
 290 :         MKCEN = 0.*MRig;
 291 :      SINON;
 292 :         MKCEP = 0.*MRigP;
 293 :      FINSI;
 294 :   'FINSI';
 295 : 'FINSI';
 296 : *
 297 : 'SI' ERR;
 298 : *
 299 : TFrqRe = TABLE;
 300 : TFrqIm = TABLE;
 301 : TFrqMo = TABLE;
 302 : TAmor = TABLE;
 303 : *
 304 : Repeter LAB1 Nfreq;
 305 :   omega1 = extr PRFREQ &lab1;
 306 :   i1 = &lab1 ;
 307 :   SI TESTAF;
 308 :      MESS 'Frequence N°' i1;
 309 :   FINSI;
 310 : *
 311 :   SI FLAMODE;
 312 :     TBASR = VIBR  'PROCHE' (prog FPROCHE) (lect nmodes)
 313 :      (MRig et  ((Omega1**2)*MKSIG) et ((Omega1**2)*MKCEN))
 314 :     Mmas 'TBAS';
 315 :     MRigP = PJBA TBasR MRig;
 316 :     MCahP = PJBA TBasR  MCah;
 317 :     MCCORP = PJBA TBasR MCCOR ;
 318 :     MKSIP =  PJBA TBasR MKSIG ;
 319 :     MKCEP = PJBA TBasR MKCEN ;
 320 :     MCamP = PJBA TBasR MCam ;
 321 :     MMasP = PJBA TBasR Mmas;
 322 :     MCGP = PJBA TBasR MCG ;
 323 :   FINSI;
 324 : 
 325 : *
 326 : *+DC Test classement des modes
 327 : *
 328 :   SI (EGA TESTCL VRAI);
 329 : *
 330 :    BasCiB = VIBC MMasP (MRigP et (Omega1*MCahP) et
 331 :           ((Omega1**2)*MKSIP) et ((Omega1**2)*MKCEP))
 332 :           ((Omega1*(MCgP et MCCORP)) et MCamP) TBASR;
 333 :     Imode = 1;
 334 : *
 335 :     Repeter Lab5 NbModC;
 336 :       Frq1 = BasCiB.'MODES'. &lab5 . 'FREQUENCE_REELLE';
 337 :       Frq1I = BasCiB.'MODES'. &lab5 . 'FREQUENCE_IMAGINAIRE';
 338 :       DEFR1 =BasCiB.'MODES'. &lab5 . 'DEFORMEE_MODALE_REELLE';
 339 :       DEFI1 =BasCiB.'MODES'. &lab5 . 'DEFORMEE_MODALE_IMAGINAIRE';
 340 : *
 341 :     'SI' FLFOUR;
 342 :       DEFR1 = (CHAN ATTRIBUT DEFR1 NATURE DISCRET)
 343 :        + (MANU CHPO (extr DEFR1 mail) 8 UR 0. UT 0. UZ 0.
 344 :           RT 0. IUR 0. IUT 0. IUZ 0. IRT 0. NATURE 'DISCRET');
 345 :       DEFI1 =  (CHAN ATTRIBUT DEFI1  NATURE DISCRET)
 346 :        + (MANU CHPO  (extr DEFI1 mail) 8 UR 0. UT 0. UZ 0.
 347 :            RT 0. IUR 0. IUT 0. IUZ 0. IRT 0. NATURE 'DISCRET');
 348 : *
 349 :       DEFR1R = EXCO DEFR1 UR SCAL;
 350 :       DEFR1T = EXCO DEFR1 UT SCAL;
 351 :       DEFR1Z = EXCO DEFR1 UZ SCAL;
 352 :       DEFR1RI = EXCO DEFR1 IUR SCAL;
 353 :       DEFR1TI = EXCO DEFR1 IUT SCAL;
 354 :       DEFR1ZI = EXCO DEFR1 IUZ SCAL;
 355 :       DEFI1R = EXCO DEFI1 UR SCAL;
 356 :       DEFI1T = EXCO DEFI1 UT SCAL;
 357 :       DEFI1Z = EXCO DEFI1 UZ SCAL;
 358 :       DEFI1RI = EXCO DEFI1 IUR SCAL;
 359 :       DEFI1TI = EXCO DEFI1 IUT SCAL;
 360 :       DEFI1ZI = EXCO DEFI1 IUZ SCAL;
 361 : *
 362 :       DEFR1RT = EXCO DEFR1 RT SCAL;
 363 :       DEFI1RT = EXCO DEFI1 RT SCAL;
 364 :       DEFR1RTI = EXCO DEFR1 IRT SCAL;
 365 :       DEFI1RTI = EXCO DEFI1 IRT SCAL;
 366 : *
 367 :       TESTDIRE = (-1.)*Frq1I*(maxi (resu (
 368 :           ((DEFR1R*DEFI1RI) - (DEFR1T*DEFI1TI) +
 369 :            (DEFR1Z*DEFI1ZI) - (DEFR1RI*DEFI1R) +
 370 :            (DEFR1TI*DEFI1T) - (DEFR1ZI*DEFI1Z)) )));
 371 : *
 372 :     SI ((abs TESTDIRE) > 1.D-20);
 373 :          TESTDIRE =TESTDIRE /(abs TESTDIRE);
 374 :     SINON;
 375 :          TESTDIRE = 2.;
 376 :     FINSI;
 377 : *
 378 :         BasCiB.'MODES'. &lab5 . 'FREQUENCE_REELLE' =
 379 :                            (SIGNE Frq1I)*(SIGNE TESTDIRE)* Frq1;
 380 :         BasCiB.'MODES'. &lab5 . 'FREQUENCE_IMAGINAIRE' = Frq1I;
 381 :         BasCiB.'MODES'. &lab5 . 'DEFORMEE_MODALE_IMAGINAIRE' =
 382 :                                  (SIGNE TESTDIRE)*DEFI1;
 383 : *
 384 :     'SINON';
 385 :       DEFR1 = (CHAN ATTRIBUT DEFR1 NATURE DISCRET)
 386 :        + (MANU CHPO (extr DEFR1 mail) 3 RX 0. RY 0. RZ 0.
 387 :            NATURE 'DISCRET');
 388 :       DEFI1 =  (CHAN ATTRIBUT DEFI1  NATURE DISCRET)
 389 :        + (MANU CHPO  (extr DEFI1 mail) 3 RX 0. RY 0. RZ 0.
 390 :             NATURE 'DISCRET');
 391 : *
 392 :       DEFR1X = EXCO DEFR1 UX SCAL;
 393 :       DEFR1Y = EXCO DEFR1 UY SCAL;
 394 :       DEFR1Z = EXCO DEFR1 UZ SCAL;
 395 :       DEFI1X = EXCO DEFI1 UX SCAL;
 396 :       DEFI1Y = EXCO DEFI1 UY SCAL;
 397 :       DEFI1Z = EXCO DEFI1 UZ SCAL;
 398 : *
 399 :       DEFR1RX = EXCO DEFR1 RX SCAL;
 400 :       DEFR1RY = EXCO DEFR1 RY SCAL;
 401 :       DEFR1RZ = EXCO DEFR1 RZ SCAL;
 402 :       DEFI1RX = EXCO DEFI1 RX SCAL;
 403 :       DEFI1RY = EXCO DEFI1 RY SCAL;
 404 :       DEFI1RZ = EXCO DEFI1 RZ SCAL;
 405 : *
 406 :       TESTDIRE = (-1.)*Frq1*(maxi (resu (
 407 :         ((((DEFR1Y*DEFI1Z) - (DEFI1Y*DEFR1Z)))
 408 :                            *(coor 1 ppdirect))
 409 :      +  ((((DEFR1Z*DEFI1X) - (DEFI1Z*DEFR1X)))
 410 :                            *(coor 2 ppdirect))
 411 :       + ((((DEFR1X*DEFI1Y) - (DEFI1X*DEFR1Y)))
 412 :                            *(coor 3 ppdirect)))));
 413 : *
 414 : * Si le mode est complexe...
 415 : * Sinon il est réel et on ne change rien
 416 : *
 417 :     SI ((abs TESTDIRE) > 1.D-13);
 418 :       SI (TESTDIRE > 0.D0);
 419 :         BasCiB.'MODES'. &lab5 . 'FREQUENCE_REELLE' = abs Frq1;
 420 :         BasCiB.'MODES'. &lab5 . 'FREQUENCE_IMAGINAIRE' = Frq1I;
 421 :         BasCiB.'MODES'. &lab5 . 'DEFORMEE_MODALE_IMAGINAIRE' =
 422 :                                  (SIGNE Frq1)*DEFI1;
 423 :       SINON;
 424 :         BasCiB.'MODES'. &lab5 . 'FREQUENCE_REELLE' =
 425 :                                 (-1.)*(abs Frq1);
 426 :         BasCiB.'MODES'. &lab5 . 'FREQUENCE_IMAGINAIRE' = Frq1I;
 427 :         BasCiB.'MODES'. &lab5 . 'DEFORMEE_MODALE_IMAGINAIRE' =
 428 :                                 (SIGNE Frq1)*DEFI1;
 429 :       FINSI;
 430 :      FINSI;
 431 : *
 432 :    'FINSI';
 433 : *
 434 : *         TESTDIRE = TESTDIRE +
 435 : *                  ((-1.)*Frq1*(maxi (resu (
 436 : *        ((((DEFR1RY*DEFI1RZ) - (DEFI1RY*DEFR1RZ)))
 437 : *                           *(coor 1 ppdirect))
 438 : *     +  ((((DEFR1RZ*DEFI1RX) - (DEFI1RZ*DEFR1RX)))
 439 : *                           *(coor 2 ppdirect))
 440 : *      + ((((DEFR1RX*DEFI1RY) - (DEFI1RX*DEFR1RY)))
 441 : *                           *(coor 3 ppdirect))))));
 442 : *
 443 : *
 444 :    FIN LAB5;
 445 : *
 446 : *
 447 :   SINON;
 448 :     BasCiB = VIBC MMasP (MRigP et (Omega1*MCahP) et
 449 :           ((Omega1**2)*MKSIP) et ((Omega1**2)*MKCEP))
 450 :           ((Omega1*(MCgP et MCCORP)) et MCamP) ;
 451 :   FINSI;
 452 : *
 453 : *+DC Test classement des modes
 454 : *
 455 :     Repeter Lab2 NbModC;
 456 :        i2 = &lab2;
 457 :        si (i2 ega 1);
 458 :           FrqReel = PROG (BasCiB.'MODES'. i2 . 'FREQUENCE_REELLE');
 459 :           FrqImag = PROG (BasCiB.'MODES'. i2 . 'FREQUENCE_IMAGINAIRE');
 460 :           FrqModul =  PROG
 461 :            ((((BasCiB.'MODES'. i2 . 'FREQUENCE_REELLE')**2) +
 462 :              ((BasCiB.'MODES'. i2 . 'FREQUENCE_IMAGINAIRE')**2))**0.5);
 463 :           AmorVal = PROG ((extr FrqImag 1)/(extr FrqModul 1));
 464 :        sinon;
 465 :           FrqReel = FrqReel et
 466 :            (prog (BasCiB.'MODES'. i2 . 'FREQUENCE_REELLE'));
 467 :           FrqImag = FrqImag et
 468 :            (prog (BasCiB.'MODES'. i2 . 'FREQUENCE_IMAGINAIRE'));
 469 :           FrqModul =  FrqModul et (PROG
 470 :            ((((BasCiB.'MODES'. i2 . 'FREQUENCE_REELLE')**2) +
 471 :              ((BasCiB.'MODES'. i2 . 'FREQUENCE_IMAGINAIRE')**2))**0.5));
 472 :           AmorVal = AmorVal et
 473 :                   (PROG ((extr FrqImag i2)/(extr FrqModul i2)));
 474 :        finsi;
 475 :     FIN lab2;
 476 :     FrqReel  = ORDONNER CROISSANT FrqReel;
 477 :     FrqImag  = ORDONNER CROISSANT FrqImag;
 478 :     FrqModul = ORDONNER CROISSANT FrqModul;
 479 :     AmorVal  = ORDONNER CROISSANT AmorVal;
 480 : *
 481 :     Repeter Lab3  NbModC;
 482 :       i3 = &lab3;
 483 :        si (i1 ega 1);
 484 :          TFrqRe.i3 = (prog (extr FrqReel i3));
 485 :          TFrqIm.i3 = (prog (extr FrqImag i3));
 486 :          TFrqMo.i3 = (prog (extr FrqModul i3));
 487 :          TAmor.i3 =  (prog (extr AmorVal i3));
 488 :        sinon;
 489 :          TFrqRe.i3 = (TFrqRe.i3) et
 490 :                      (prog (extr FrqReel i3));
 491 :          TFrqIm.i3 = (TFrqIm.i3) et
 492 :                      (prog (extr FrqImag i3));
 493 :          TFrqMo.i3 = (TFrqMo.i3)et
 494 :                       (prog (extr FrqModul i3));
 495 :          TAmor.i3 =  (TAmor.i3) et
 496 :                       (prog (extr AmorVal i3));
 497 :        finsi;
 498 :     FIN lab3;
 499 : FIN lab1;
 500 : *
 501 :   Repeter Lab4  NbModC;
 502 :     i4 = &lab4;
 503 :     TAB1.i4 = TABLE;
 504 :       (TAB1.i4). 'FREQUENCE_REELLE' = evol manu
 505 :                   PRFREQ (TFrqRe.i4);
 506 :       (TAB1.i4). 'FREQUENCE_IMAGINAIRE' = evol manu
 507 :                   PRFREQ (TFrqIm.i4);
 508 :       (TAB1.i4). 'FREQUENCE_MODULE' = evol manu
 509 :                   PRFREQ (TFrqMo.i4);
 510 :       (TAB1.i4). 'AMORTISSEMENT' = evol manu
 511 :                   PRFREQ  (TAmor.i4);
 512 :   FIN lab4;
 513 : *
 514 : 'FINSI';
 515 : *
 516 : 'FINPROC';
 517 : *
 518 : 
 519 : 
 520 : 
 521 : 
 522 : 
 523 : 
 524 : 
 525 : 
 526 :  

© Cast3M 2003 - All rights reserved.
Disclaimer