Download dy_devo7.dgibi

Back to the list

* fichier :  dy_devo7.dgibi
d_pasa = vrai ; temps ;
***********************
*
* poutre sous charge mobile
*
**********************
option echo 0;
graph = faux ;
** barre
option dime 3 elem seg2;
ne = 10;
xl = 1.;
A1 = 0.  0.  0.;
A2 = xl  0.  0 ;
l1 = d  ne  a1 a2;

PSOl1= 0  0  0;
MSOL1= 1.0;
KSOL1= 100.0;
WSOL1= (KSOL1/ MSOL1)**0.5;
FREQSOL1 = wsol1 / (2 * pi ) ;
lx = prog 0. pas ( 1. / ne ) 1.;
xlz = sin ( 180. * lx ) ;
DEFSOL1 = manu chpo  l1  6  ux 0.0 uy 0.0 uz xlz
                           rx 0.0 ry 0.0 rz 0.0;
*support
b1 = 0.  0.  1e-8;

PSOL2 = 0  0  0;
DEFSOL2= manu chpo  b1  6  ux 1.0 uy 0.0 uz 0.0
                           rx 0.0 ry 0.0 rz 0.0;
PSOL3 = 0  0  0;
MSOL2 = .001;
KSOL2 = 0.;
WSOL2 = (KSOL2 / MSOL2)**0.5;
FREQSOL2 = wsol2 / (2 * pi ) ;
DEFSOL3= manu chpo  b1  6  ux 0.0 uy 0.0 uz 1.0
                           rx 0.0 ry 0.0 rz 0.0;

**************************
**************************
** BASE DE MODE GLOBALE **
**************************
**************************

TBAS2 = table 'BASE_MODALE';
TAB2 = table 'BASE_DE_MODES';
tab2.maillage = b1 ;
TBAS2.'MODES' = TAB2;

TABSOL2 = table 'MODES';
TABSOL2.'POINT_REPERE' = PSOL2;
TABSOL2.'FREQUENCE' = FREQSOL2;
TABSOL2.'MASSE_GENERALISEE' = MSOL2;
TABSOL2.'DEFORMEE_MODALE' = DEFSOl2;
TABSOL2.numero_mode = 1;
TAB2 . 1 = TABSOL2;
mai2 = manu poi1 psol2 ;
mo_mod2 = modele mai2  mecanique elastique modal ;
ca_mod2 = mate mo_mod2 freq freqsol2 mass msol2 defo defsol2 amor 0. ;

TABSOL3  = table 'MODES';
TABSOL3.'POINT_REPERE' = PSOL3;
TABSOL3.'FREQUENCE' = FREQSOL2;
TABSOL3.'MASSE_GENERALISEE' = MSOL2;
TABSOL3.'DEFORMEE_MODALE' = DEFSOL3;
TABSOL3.numero_mode = 2;
TAB2 . 2 = TABSOL3;
mai3 = manu poi1 psol3 ;
mo_mod3 = modele mai3  mecanique elastique modal ;
ca_mod3 = mate mo_mod3 freq freqsol2 mass msol2 defo defsol3 amor 0. ;


TBAS1 = table 'BASE_MODALE';
TAB1 = table 'BASE_DE_MODES';
tab1.maillage = l1 ;
TBAS1.'MODES' = TAB1;

TABSOL1  = table 'MODES';
TABSOL1.'POINT_REPERE' = PSOL1;
TABSOL1.'FREQUENCE' = FREQSOL1;
TABSOL1.'MASSE_GENERALISEE' = MSOL1;
TABSOL1.'DEFORMEE_MODALE' = DEFSOL1;
TABSOL1.numero_mode = 1;
TAB1 . 1 = TABSOL1;
mai1 = manu poi1 psol1 ;
mo_mod1 = modele mai1  mecanique elastique modal ;
ca_mod1 = mate mo_mod1 freq freqsol1 mass msol1 defo defsol1 amor 0. ;


TABTOT = table 'ENSEMBLE_DE_BASES';
TABTOT . 1 = TBAS1;
TABTOT . 2= TBAS2;

mo_moda = mo_mod1 et mo_mod2 et mo_mod3 ;
ca_moda = ca_mod1 et ca_mod2 et ca_mod3 ;
***********************************
***********************************
** Definition de l'amortissement **
***********************************
***********************************

AMORTOT = amor TABTOT (prog 0. 0. 0.) ;

TAMOR = table 'AMORTISSEMENT';
TAMOR . 'AMORTISSEMENT' = AMORTOT;


*****************************
TLIA = table 'LIAISON';

TLB = table 'LIAISON_B';
TLIA.'LIAISON_B' = TLB;
raid1 = 1e4 ; amor1 = 2*((raid1*msol2)**.5)/2;
raidn1 = manu 'CHPO' 1 b1 'rain' raid1;
amorn1 = manu 'CHPO' 1 b1 'amon' amor1;
N1 = 0. 1. 0.;
TL1 = table 'LIAISON_ELEMENTAIRE';
TL1.'TYPE_LIAISON' = mot 'LIGNE_LIGNE_FROTTEMENT';
TL1.'LIGNE_MAITRE'              =  l1;
TL1.'LIGNE_ESCLAVE'             =  b1;
TL1.'COEFFICIENT_GLISSEMENT'    = 0.0;
TL1.'COEFFICIENT_ADHERENCE'     = 0.0;
TL1.'RAIDEUR_TANGENTIELLE'      = -1;
TL1.'RAIDEURS'                  = raidn1;
TL1.'AMORTISSEMENT_TANGENTIEL'  = 1e-2;
TL1.'AMORTISSEMENTS'            =amorn1;
TL1.'NORMALE'                   = N1;
tlb.1=TL1;
 mallf1 = manu poi1 (0. 0. 0.) ;
 mollf1 = modele mallf1 liaison ligne_ligne frottement ;
 maut1 = manu poi1 b1 ;
 callf1 = mate mollf1 lima l1 lies maut1 glis 0. adhe 0. rtan -1 
          raid raidn1 atan 1.e-2 amor amorn1 norm n1 ; 

TSORT = TABLE 'SORTIE';
TSORV = TABLE 'VARIABLE';
TSORT.'VARIABLE' = TSORV;
TSORV.'DEPLACEMENT' = vrai;
TSORV.'VITESSE' = vrai;
TSOR2 = TABLE 'SORTIE'          ;
TSORT.'LIAISON_B'       = TSOR2 ;
tsorv2 = table variable ;
tsorv2.'CHPOINT_FORCE_DE_CHOC'= vrai ;
tsorv2.'UX_POINT_DE_CONTACT'= vrai;
tsorv2.'VITESSE_TANGENTIELLE'= vrai;
tsorv2.'FORCE_DE_CHOC_NORMALE' = vrai ;
tsor2.tl1 = tsorv2 ;

 tmollf1 = table ; tmollf1 . mollf1 = tsorv2 ;
 callf1 = callf1 et (mate mollf1 sort tmollf1) ;
*****************************************
*****************************************
** Definition des conditions initiales **
*****************************************
*****************************************

TINIT = table 'INITIAL';

v0 = 1.;
 TINIT.'VITESSE' = manu chpo  psol2 1 alfa (prog v0)  ;
*******************************
PDT = 2e-4;
NP = 5000;
NINS = 50;
*******************************
** Application du chargement **
*******************************
*******************************

FFZ = 1.0/100;
FOA1 = force fx 0.0 fy 0.0 fz (-1 * FFZ)  b1;
FOA1P = pjba TBAS2 FOA1;

LISTEMPS = prog 0.0
             pas PDT 
                 (NP * PDT * 2);

LISCHA = prog (dime LISTEMPS) * 1.0;

EVCHA = evol manu temps LISTEMPS LISCHA;
*dessin EVCHA;

CHAZ = char FOA1P EVCHA;
TCHA1 = TABLE 'CHARGEMENT' ;
TCHA1.'BASE_A' = CHAZ;

cha1 = char foa1 evcha ; cha2 = pjba cha1 mo_moda ca_moda ;

********************
********************
** Operateur DYNE **
********************
********************
tabdyn = table 'PASAPAS' ;
tabdyn . chargement = cha2 ;
tabdyn . vitesses = table ;
tabdyn . vitesses . 0  =  manu chpo  psol2 1 alfa (prog v0)  ;
tabdyn . modele = mo_moda et mollf1 ;
tabdyn . caracteristiques = ca_moda et callf1 ;

si d_pasa ;
 tabdyn . dynamique = vrai ;
 tabdyn . temps_calcules = prog 0. pas (2*pdt) (np*pdt) ;
 tabdyn . temps_sauves = prog 0. pas (nins*pdt) (np*pdt) ;
 pasapas tabdyn ;

sinon ;
tabdyn . sortie = table ;
tabdyn . sortie . mollf1 = tsorv2 ;
tabdyn . pas_de_temps = pdt ;
tabdyn . nombre_pas = np ;
tabdyn . pas_de_sortie = nins ;
 dyne de_vogelaere tabdyn ; 

finsi ;
*
TRESU  = DYNE 'DE_VOGELAERE' TABTOT   tamor     TINIT 
                          tcha1    tSORT  TLIA
                                NP     PDT    NINS;


LIS_TEM    = TRESU  . 'TEMPS_DE_SORTIE';
lis_te1 = prog  tabdyn . temps . 0 ; 
lis_te1 = prog ;
l_fdcn1 = prog ;
repeter bs ((dime tabdyn . temps) - 1) ;
  lis_te1 = lis_te1 et (prog tabdyn . temps . &bs ) ;
 si d_pasa ;
  ttu1 = 'EXTR' tabdyn . variables_internes . &bs 'SLIA' 4 1 1 ;
  l_fdcn1 = l_fdcn1 et ttu1.force_de_choc_normale ;
 finsi ;
fin bs ;

* solution exacte
  omb=   pi * v0 / xl;
  beta = omb / wsol1;
      s1 = sin ( lis_tem * omb * 180. / pi) ;
      s2 = sin ( lis_tem * wsol1 * 180. / pi) ;

     lz0 =( -1 /  ksol1) * (1. / ( 1 - (beta*beta))) *
      ( s1 - ( beta * s2) ) ;

  ev0 = (evol jaun manu lis_tem lz0)*ffz ;

  pp = poin l1 proc ((xl/2) 0 0 ) ;
  evz = (evol reco tresu tbas1 depl pp uz) ;
  xmax = mini (extr evz ordo);
 evvz = evol vert reco tabdyn mo_moda ca_moda depl pp uz ;
  xmmax = mini (extr evvz ordo);
  xmax0 = (mini lz0)*ffz ;
  ecart = ( abs (xmax - xmax0)) / (abs (xmax)) ;
  eccart = ( abs (xmmax - xmax0)) / (abs (xmmax)) ;
*

* verification du bon fonctionement des sorties
ev1 = evol manu lis_tem tresu.tl1.force_de_choc_normale ;
si d_pasa ;
  si ((dime lis_te1) ega ((dime l_fdcn1) - 1)) ;
    lis_te1 = (prog 0.) et lis_te1 ;
  finsi ;
 ev2 = evol vert manu lis_te1 l_fdcn1 ;
sinon ;
 ev2 = evol vert manu lis_te1 
         tabdyn . liaisons . mollf1 . force_de_choc_normale ;
finsi ;
progx = prog ; progy1 = prog ; progy2 = prog ;
progxx = prog ; progyy1 = prog ; progyy2 = prog ;
repeter bou1 (dime lis_tem) ;
  t1 = extr lis_tem &bou1 ;
  x1= tresu.tl1.'CHPOINT_FORCE_DE_CHOC'.&bou1 ;
  x2 = extr x1 b1 norm ;
  x3 = extr x1 b1 tang ;
  progy1 = progy1 et (prog x2) ;
  progy2 = progy2 et (prog x3) ;
  progx = progx et (prog t1) ;
  tt1 = tabdyn . temps . (&bou1-1) ;
   mess 't1' t1 'tt1' tt1 ; 
 si d_pasa ;
  si (&bou1 > 1 ) ; 
  ttu1 = 'EXTR' tabdyn . variables_internes . (&bou1-1) 'SLIA' 4 1 1 ;
  xxx1 = ttu1 . 'CHPOINT_FORCE_DE_CHOC' ;
  xx1 = xxx1 . (dime xxx1) ;
  finsi ;
 sinon ;
  xx1 = tabdyn . liaisons . mollf1 . 'CHPOINT_FORCE_DE_CHOC'. &bou1 ;
 finsi ;
  si (&bou1 > 1) ;
  xx2 = extr xx1 b1 norm ;
  xx3 = extr xx1 b1 tang ;
  progyy1 = progyy1 et (prog xx2) ;
  progyy2 = progyy2 et (prog xx3) ;
  progxx = progxx et (prog tt1) ;
  sinon ;
  progxx = 0. ; progyy1 = prog 0. ; progyy2 = 0. ;
  finsi ;
fin bou1 ;
ev11 = evol rouge manu progx progy1 ;
ev22 = evol rouge manu progx progy2 ;
evv11 = evol bleu manu progxx progyy1 ;
evv22 = evol bleu manu progxx progyy2 ;
si graph ;
  titre ' force choc normale ' ;
 dess (ev1 et ev2);
  titre ' force choc  / normale ' ;
 dess (ev11 et evv11);
  titre ' force choc / tangente ' ;
 dess (ev22 et evv22);
  titre ' trajectoire ' ;
 dess (evz et ev0 et evvz) ;
finsi ;
temps;
mess 'max theorique ' xmax0 'dyne'  xmax 'ecartr' ecart;
mess 'max theorique ' xmax0 'pasapas'  xmmax 'ecartr' eccart;

si (( ecart > 0.01 )ou ( eccart > 0.01 ));
erre 5;
sinon;
erre 0;
finsi;
fin;




 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer