Download vibr8.dgibi

Back to the list

* fichier :  vibr8.dgibi
*************************************************
*  TEST : VIBR8                                 *
*                                               *
*   Calcul des modes propres complexes d'un     *
*      Arbre soumis a une force suiveuse        *
* Conditions aux limites : encastre - libre     *
*************************************************
*
opti echo 1 ;
*--- Affichage
AFFICH = vrai;
GRAPH = 'N';
IMPRPS = FAUX;

Si (IMPRPS);
  Opti Trac ps;
Finsi;
************************************
*   Caracteristiques du systeme    *
************************************
*--- Materiau
Rhostru = 4000.;
Youstru = 1.E10;
Nustru = 0.3;
*--- Dimensions du crayon
Lstru = 6.;
R = 10.E-3;
*--- Variations de la force
Fsmin = 0.;
Fsmax = 60.;
PFs = 1.;
*
LFs = (Prog Fsmin PAS PFs Fsmax);
*
**************************************
*         Maillage du systeme        *
**************************************
*
NbN = 10;
Mess 'Nombre d elements :' NbN;
Mess ' ';
Opti Dime 3 Elem qua4;
PA = 0. 0. 0. ;
PB = (Lstru) 0. 0. ;
L1 = PA D NBN PB;

* petite surface pour appliquer la pression suiveuse
pb1 = lstru .05 -.05 ;
pb2 = lstru .05 .05 ;
ll1 = pb1 d 2 pb2 ;
surf1 = tran ll1 2 (0 -.1 0) ;
Elim L1 surf1 0.005;
mail1 = l1 et surf1 ;
si (  ega graph 'O');
trac mail1 ;
 finsi;
*
Modl1 = Modl L1 MECANIQUE ELASTIQUE ISOTROPE Tuya;
Matr1 = Matr Modl1 Youn Youstru Nu Nustru Rho Rhostru ;
Car1 = Carb Modl1 Epai R Rayo R ;
Matr1 = Matr1 et Car1;
Modl2 = Modl surf1 MECANIQUE ELASTIQUE ISOTROPE coq4;
*
**************************************
*   Masses, Rigidites ... du systeme *
**************************************
*
*--- Masse
Mstru = Masse Modl1 Matr1;
*--- Raideur structrale
Ks = Rigi Modl1 Matr1;
*--- Conditions aux limites : Probleme plan
Cl1 = Bloq Depl PA;
Cl2 = Bloq Rota PA;
Cl3 = Bloq UZ L1;
Cl4 = Bloq Ry L1;
cl5 = rela cori depl rota surf1 ;
*
Kstru = Ks et Cl1 et Cl2 et Cl3 et Cl4 et cl5;
*
*****************************************
*     FLAMBAGE  SOUS FORCE CONSERVATIVE
*****************************************
*
*--- Chargement
press1 = manu chpo surf1 1 p (-1/.1/.1);
fe1 = press coqu modl2  press1 norm ;
*--- Resolution et calcul des contraintes
Dep1 = Reso Kstru FE1;
Sig1 = Sigm Modl1 Matr1 Dep1;
* rigidite geometrique
Ksi1 = Ksigma Modl1 Sig1 Car1 'FLAM';
*
ETAB = TABLE;
ETAB.'OBJM' = Modl1;
ETAB.'CLIM' = (Cl1 et Cl2 et Cl3 et Cl4);
ETAB.'RIGI' = Ks;
ETAB.'KSIG' = Ksi1;
ETAB.'LAM1' = 0.001;
ETAB.'LAM2' = 100.;
ETAB.'NMOD' = 1;
*
STAB = FLAMBAGE ETAB;
*
LA1 = STAB . 1 . LAMB;
*
***********************************
*    Rigidite due à la force suiveuse
***********************************

kp1 = kp modl2 press1 asym  ;
Kfe = -1*KP1;

*
*****************************************
*             Analyse modale            *
*****************************************
*
PMod = Prog .17696 1.1095 3.1162;
Basr = VIBR PROCHE PMod Kstru Mstru TBAS;
nnor (Basr.'MODES') (mots 'UY');
*
Basm = Basr.'MODES';
Nbmod = DIME Basm-2;
Si (Affich);
Mess ' ';
Mess 'Sans force suiveuse';
Mess '    Mode     Frequence ';
Mess '---------------------------';
  Repeter LMod Nbmod;
    i=&LMod;
    Mess '   ' i '   ' Basm.i.'FREQUENCE';
  Fin LMod;
  Mess ' ';
  Mess ' ';
  Mess ' ';
Finsi;
*
*****************************************
*     Valeur theorique de confusion
*        des deux premiers modes (flottement)
*****************************************
*
Fth = 20.05 * Youstru * (PI * (R**4) / 4.)/ (Lstru*Lstru);

*
*****************************************
* Mise en forme du tableau de resultats *
*****************************************
*
Mod = Table;
Mod.Reel = Table;
Mod.Imag = Table;
Repeter Bloc6 (2*Nbmod);
  i=&Bloc6;
  Mod.Reel.i=Prog;
  Mod.Imag.i=Prog;
Fin Bloc6;
*
*****************************************
*        Projection des matrices        *
*****************************************
*
*--- Matrice masse
Mt = (PJBA MStru Basr);
*--- Matrices de raideur
Ksp = (PJBA Kstru Basr);
Kfp = (PJBA Ksi1 Basr);
Kfp2 = (PJBA Kfe Basr);
*
* --- Reperage de la force critique
FSauv = 'N';
*
* ===================================== *
*      Boucle sur la force suiveuse     *
* ===================================== *
*
Repeter Bloc10 (DIME LFs);
  k=&Bloc10;
  Fs = (Extr LFs k);
  Si (AFFICH);
  Mess 'Iteration' k;
  Mess 'Force suiveuse : ' Fs ;
  Mess ' ';
  Mess '----------------------------------------------------------------
--------------';
  Mess '  Mode     Frequence      Amort.      P. Reelle    P. Imaginaire
   Stabilité  ';
  Finsi;
*
******************************************
*         Masses, rigidites ...          *
******************************************
*
*---- Rigidite tangentz
  Kt = (Ksp) et (Fs*Kfp) et (Fs*Kfp2);
*
******************************************
*       Calcul des modes complexes       *
******************************************
*
  Basc = VIBC Mt Kt;
  Basm = Basc.'MODES';
*
*--- Extraction des frequences
  Prf = Prog;
  Pif = Prog;
  Repeter Bloc2 (2*Nbmod);
    i=&Bloc2;
    Modn = Basm.i;
    f = Modn.'FREQUENCE_REELLE';
*    Si (>EG f 0.);
      Prf = Prf et (Prog Modn.'FREQUENCE_REELLE');
      Pif = Pif et (Prog Modn.'FREQUENCE_IMAGINAIRE');
*    Finsi;
  Fin bloc2;
*
*--- Tri croissant des frequences
  n1 = DIME Prf;
  Prfc = Prog (extr Prf 1);
  Pifc = Prog (extr Pif 1);
  Repeter Bloc3 (n1-1);
    i=&Bloc3+1;
    f = extr Prf i;
    n2 = DIME Prfc;
    Pos = 1;
    Repeter Bloc4 n2;
      j = &Bloc4;
      f1 = extr Prfc j;
      Si (> f f1);
        Pos = Pos + 1;
      Finsi;
    Fin Bloc4;
    Prfc = INSE Prfc Pos f;
    Pifc = INSE Pifc Pos (extr Pif i);
  Fin Bloc3;
*--- Sauvegarde
  Repeter Bloc5 n1;
    i=&Bloc5;
    f =  (Extr Prfc i);
    if = (Extr Pifc i);
    Si (AFFICH);
      Msg = 'STAB.';
      Si ((< if -1.D-10) et (>EG f 0.));
        Msg = 'INST.';
        Si (EGA FSauv 'N');
          Fcrit = Fs - (PFs/2.);
          Fsauv = 'O';
        Finsi;
      Finsi;
      Si (> f 0.);
*  Valeurs propres relatives a lambda = i omega = ix2PIxf
        Mess  i  f  (if/f)  (-2*PI*if)  (2*PI*f) Msg;
      Sinon;
        Si (EGA f 0.);
          Mess i f '     -----     ' (-2*PI*if) (2*PI*f) Msg;
        Finsi;
      Finsi;
    Finsi;
    Mod.Reel.i = Mod.Reel.i et (Prog f);
    Mod.Imag.i = Mod.Imag.i et (Prog if);
  Fin Bloc5;
  Si (AFFICH);
  Mess '----------------------------------------------------------------
--------------';
  Mess ' ';
  Finsi;
*
Fin Bloc10;
*
**********************************
*           Traces               *
**********************************
*
*
Si (EGA GRAPH 'O');
*
Nbcour=2*Nbmod;
Tab1 = Table;
Repeter Ident1 Nbcour;
  k=&Ident1;
  Tab1.k = 'NOLI';
Fin Ident1;
*
  k=1;
  Titr 'Frequences (partie reelle)';
  Evol1 = Evol BLAN manu (LFs/LA1) (Mod.Reel.k);
  Titr 'Frequences (partie imaginaire)';
  Evol2 = Evol BLAN manu LFs (Mod.Imag.k);
* --- Traces relatifs a lambda = i omega = ix2PIxf
  Titr 'Lambda (partie reelle)';
  Evol3 = Evol BLAN manu LFs (-2.*PI*(Mod.Imag.k));
  Titr 'Lambda (partie imaginaire)';
  Evol4 = Evol BLAN manu LFs (2*PI*(Mod.Reel.k));
  Titr 'Lambda (partie reelle / partie imaginaire)';
  Evol5 = Evol BLAN manu (2.*PI*(Mod.Reel.k))
                             (-2.*PI*(Mod.Imag.k));
  Repeter Trac1 (Nbcour-1);
    k=&Trac1+1;
    Si (> (DIME Mod.Reel.k) 0);
      Titr 'Frequences (partie reelle)';
      Evol1 = Evol1 et (Evol BLAN manu LFs (Mod.Reel.k));
      Titr 'Frequences (partie imaginaire)';
      Evol2 = Evol2 et (Evol BLAN manu LFs (Mod.Imag.k));
      Titr 'Lambda (partie reelle)';
      Evol3 = Evol3 et (Evol BLAN manu LFs
                                      (-2.*PI*(Mod.Imag.k)));
      Titr 'Lambda (partie imaginaire)';
      Evol4 = Evol4 et (Evol BLAN manu LFs
                                      (2.*PI*(Mod.Reel.k)));
      Titr 'Lambda (partie reelle / partie imaginaire)';
      Evol5 = Evol5 et (Evol BLAN manu
                  (2.*PI*(Mod.Reel.k)) (-2.*PI*(Mod.Imag.k)));
    Finsi;
  Fin Trac1;
*
  Titr 'Frequences (partie reelle)';
  EvolTh = Evol ROUGE manu (Prog Fth Fth) (Prog 0. 2.5);
  Dess (Evol1  et EvolTh) ybor 0. 3.  Lege
                Titx 'Force (N)'
                Tity 'Re(F) (Hz)' Tab1;
  Titr 'Frequences (partie imaginaire)';
  EvolTh = Evol ROUGE manu (Prog Fth Fth) (Prog -0.5 0.5);
  Dess (Evol2 et EvolTh)  Lege
                Titx 'Force (N)'
                Tity 'Im(F) (Hz)' Tab1;
  Dess Evol3  lege
                Titx 'Force (N)'
                Tity 'Re(i.2.PI.F)' Tab1;
  Dess Evol4 ybor 0. 15. Lege
                Titx 'Force (N)'
                Tity 'Im(i.2.PI.F)' Tab1;
  Dess Evol5  Lege
                Titx 'Re(i.2.PI.F)'
                Tity 'Im(i.2.PI.F)' Tab1;
Finsi;

Si ((Abs(Fcrit-Fth)/Fth) < 0.05);
  Erre 0;
Sinon;
  Erre 5;
Finsi;
*
FIN;




 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer