Download vibr9.dgibi

Back to the list

* fichier :  vibr9.dgibi
*
*************************************************
*  TEST : VIBR9                                 *
*                                               *
*   Calcul des modes propres complexes d'une    *
*    structure soumise a une force suiveuse     *
*   (la structure est composée de deux barres   *
*     reliees par deux ressorts spiraux)        *
*************************************************
*
Opti Echo 0;
Opti dime 2 elem seg2 impi 0;
Graph = 'N';
Affich = VRAI;
*******************************************
*             Points reperes              *
*******************************************
P1= 0 0;
P2= 1 0;
L1 = D 1 P1 P2;
L2 = D 1 P2 P1;
*
*******************************************
*         Description du système          *
*******************************************
*
* Demi-longueur d'une barre
a = 1;
* Masse d'une barre
m = 10;
* Raideur des ressorts spiraux
k = 20;
* Variation de la force suiveuse
Fmin = 0.;
Fmax = 100.;
PFs = 1.;
*
lFs= Prog Fmin PAS PFs Fmax;
*
*******************************************
*        Frontiere des domaines           *
*******************************************
*
Fs1 = 5*k/(4*a);
Fs2 = 13*k/(4*a);
*
Si (Affich);
  Mess 'Fs 1 = ' Fs1;
  Mess 'Fs 2 = ' Fs2;
Finsi;
*
*******************************************
*   Définition des grandeurs physiques    *
*******************************************
*
* --- Matrice Masse totale
Mt = m*a*a*(MANU RIGI type MASSE L1 (MOTS ALFA) DUAL (MOTS FALF)
                      (PROG 5. 1. 1. 1.));

* --- Matrice Raideur
Ks = k*(MANU RIGI type RIGIDITE L1 (MOTS ALFA) DUAL (MOTS FALF)
                      (PROG 2. -1. -1. 1.));
* --- Matrice Raideur pour force suiveuse unitaire
UK = 2*a*(MANU RIGI type RIGIDITE L1 (MOTS ALFA) DUAL (MOTS FALF)
                      (PROG -1. 1. 0. 0.));
* /////////////////////////////////////// *
*     Initialisation de l'algorithme      *
* /////////////////////////////////////// *
*
* Frequences propres
Freqr = Table 'FREQ_REEL';
Freqi = Table 'FREQ_IMAG';
Repeter Freq1 4;
  Ifreq = &Freq1;
  Freqr.Ifreq = Prog;
  Freqi.Ifreq = Prog;
Fin Freq1;
*
dlFs = dime lFs;
*
* /////////////////////////////////////// *
*         Itérations sur Fs               *
* /////////////////////////////////////// *
*
* --- Reperage de la force critique
FSauv = 'N';
*
Repeter bloc1 dlFs;
*
  i=&bloc1;
  Fs = extr lFs i;
*
* --- Matrice de Raideur totale
  Kt = Ks et (Fs*UK) ;
*
*******************************************
*              Résolution                 *
*******************************************
*
  BASC = VIBC Mt Kt ;
*
*******************************************
*         Traitement et stockage          *
*******************************************
*
*
  Si (AFFICH);
  Mess 'Iteration' I;
  Mess 'Force suiveuse : ' Fs ;
  Mess ' ';
  Mess '----------------------------------------------------------------
--------------';
  Mess '  Mode     Frequence      Amort.      P. Reelle    P. Imaginaire
   Stabilité  ';
  Finsi;
*
  BMOD = BASC.'MODES';
  Repeter Freq2 4;
    Ifreq=&Freq2;
    MOD = BMOD.Ifreq;
    Si (EGA MOD.SOUSTYPE 'MODE_ANNULE');
      f1 = 0.;
      if1 =1.;
    Sinon;
      f1 = MOD.'FREQUENCE_REELLE';
      if1 =MOD.'FREQUENCE_IMAGINAIRE';
    Finsi;
    Freqr.Ifreq = Freqr.Ifreq et (Prog f1);
    Freqi.Ifreq = Freqi.Ifreq et (Prog if1);
    Si (Affich);
      Msg = 'STAB.';
      Si ((< if1 -1.D-10) et (>EG f1 0.));
        Msg = 'INST.';
        Si (EGA FSauv 'N');
          Fcrit = Fs - (PFs/2.);
          FSauv = 'O';
        Finsi;
      Finsi;
      Si (> f1 0.);
*  Valeurs propres relatives a lambda = i omega = ix2PIxf
        Mess  Ifreq  f1  (if1/f1)  (-2*PI*if1)  (2*PI*f1) Msg;
      Sinon;
        Si (EGA f 0.);
          Mess Ifreq f1 '     -----     ' (-2*PI*if1) (2*PI*f1) Msg;
        Finsi;
      Finsi;
    Finsi;
  Fin Freq2;
  Mess ' ';
  Mess ' ';
*
*
* /////////////////////////////////////// *
*              Fin du calcul              *
* /////////////////////////////////////// *
*
Fin bloc1;
*
Si (   EGA Graph  'O');
*
  TabM = Table;
  TabM.1 = 'NOLI';
  Titr 'Frequence (partie reelle)';
  Evol1 = Evol blanc manu lFs (Freqr.1);
  Titr 'Frequence (partie imaginaire)';
  Evol2 = Evol blanc manu lFs (Freqi.1);
  Titr 'Frequence dans le plan complexe';
  Evol3 = Evol blanc manu (Freqr.1) (Freqi.1);
  Repeter Trac1 3;
    i=&Trac1+1;
    TabM.i ='NOLI';
    Titr 'Frequence (partie reelle)';
    Evol1 = Evol1 et (Evol blanc manu lFs (Freqr.i));
    Titr 'Frequence (partie imaginaire)';
    Evol2 = Evol2 et (Evol blanc manu lFs (Freqi.i));
    Titr 'Frequence dans le plan complexe';
    Evol3 = Evol3 et (Evol Blanc manu (Freqr.i) (Freqi.i));
  Fin Trac1;
  Dess Evol1 Titx 'Force (N)'
             Tity 'Re(F) (Hz)' TabM;
  Dess Evol2 Titx 'Force (N)'
             Tity 'Im(F) (Hz)' TabM;
  Dess Evol3 Titx 'Re(F) (Hz)'
             Tity 'Im(F) (Hz)' TabM;
Finsi;
*
*Mess 'Erreur : ' (Abs(Fcrit-Fs1)/Fs1);
*Opti donn 5;
*
Si ((Abs(Fcrit-Fs1)/Fs1) < 0.05);
  Erre 0;
Sinon;
  Erre 5;
Finsi;
*
FIN;

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer