* fichier : dy_devo6.dgibi
* Test Dy_devo6.dgibi: Jeux de donn�es *
* ------------------------------------ *
* *
*******************************************************
*
* DYNE LIAISON POIN_PLAN
* avec plastification du ressort de choc
*
* il s'agit d'une grande masse anim�e d'un mouvement
* sinusoidale (avec deux amplitudes differentes) qui
* impacte un plan
*
* on teste aussi la reprise de calcul
*
*******************************************************
opti echo 1 ;
graph ='N' ;
dpasa='O' ; complet = 'N' ;
*******************************************************
m1 = 100000 ; comm 'masse impact�e';
ke = 100. ; comm 'raideur de choc';
se1 = 50. ; comm 'limite �lastique';
dt = .01 ; comm 'pas de temps';
t1 = 12 ; comm 'dur�e du calcul';
*******************************************************
opti dime 3 ;
pp1 = 0 0 0 ;
p1 = 0 0 0 ;
*
tab1 = table 'BASE_MODALE' ;
TAB2 = TABLE 'BASE_DE_MODES' ;
TAB1 . MODES = TAB2 ;
TAB2 . 1 = TABLE 'MODE' ;
TAB2 . 1 .'POINT_REPERE' = PP1 ;
TAB2 . 1 . 'FREQUENCE' = 0 ;
TAB2 . 1 .'MASSE_GENERALISEE' = M1 ;
TAB2 . 1 .'DEFORMEE_MODALE' = manu chpo p1 1 ux 1. ;
ma1 = manu poi1 tab2 . 1 . point_repere ;
mo1 = mode ma1 mecanique elastique modal ;
ca1 = mate mo1 freq tab2 . 1 . frequence
mass tab2 . 1 . masse_generalisee defo tab2 . 1 . deformee_modale ;
*
** definition du chargement
w0 = .125*2*pi ;
list1 = prog 0. pas dt (t1/2-dt) ;
list2 = prog (t1/2) pas dt t1 ;
lisy1 = prog sinu .125 ampl (w0**2) list1 ;
lisy2 = prog sinu .125 ampl (1.5*(w0**2)) list2 ;
ev1 = evol manu 'temps' (list1 et list2)
'accel' (lisy1 et lisy2) ;
fx1 = force fx (-1*m1) p1 ;
cha1 = char fx1 ev1 ;
*
** chargement et cond. initiales en base A
cham1 = pjba tab1 cha1 ;
TCHA1 = TABLE 'CHARGEMENT' ;
TCHA1.'BASE_A' = CHAM1 ;
TINIT = TABLE 'INITIAL' ;
TINIT.'VITESSE' = manu chpo pp1 1 alfa w0 ;
*
** definition de la liaison
TLIA = TABLE 'LIAISON' ;
TLB = TABLE 'LIAISON_B' ;
TLIA.'LIAISON_B' = TLB ;
TL1 = TABLE 'LIAISON_ELEMENTAIRE' ;
TL1.'TYPE_LIAISON' = MOT 'POINT_PLAN';
TL1.'SUPPORT' = P1 ;
TL1.'NORMALE' = (1 0 0);
TL1.'RAIDEUR' = KE ;
TL1.'JEU' = 0.;
tl1.'SEUIL_PLASTIQUE' = se1 ;
TL1.'AMORTISSEMENT'= 0. ;
TLB. 1 = TL1 ;
*
mappb = manu poi1 p1 ;
moppb = modele mappb liaison point_plan ;
tsopb = table ; tsopb . moppb = vrai ;
cappb = mate moppb 'NORM' (1 0 0) 'RAID' ke 'JEU' 0.
'SPLA' se1 'AMOR' 0. 'SORT' tsopb ;
** nombre de pas
npas0 = (enti (t1/dt)) ;
npas = npas0 / 2 ;
*npas = 2 ;
nins = 1 ;
** definition de la sortie
TSORT = TABLE 'SORTIE' ;
TSORL = TABLE 'LIAISON_B' ;
TSORT.'LIAISON_B' = TSORL ;
TSORL.TL1 = VRAI ;
*
** 1er bloc de calcul
*tres1 = dyne differences_centrees tlia tab1 tcha1
* tsort tinit npas dt nins;
tres1 = dyne de_vogelaere tlia tab1 tcha1
tsort tinit npas dt nins;
TTL1 = TRES1.TL1 ;
LIS_TEM0 = TRES1.'TEMPS_DE_SORTIE';
lisxp1 = TTL1.'UX' ;
lisyp1 = ttl1 .'FORCE_DE_CHOC' ;
titre 'force - deplacement';
evdf1 = evol manu 'depl' lisxp1 'force' lisyp1 ;
titre 'deplacement plastique - temps' ;
evdp1 = evol manu 'temps' lis_tem0 'dep_pl'
ttl1.deplacement_plastique ;
*dess (evdp1 et (ev2dp1 coul vert)) ;
*
*
si (ega dpasa 'O');
*
t_final = npas * dt ;
l_cal = prog 0 pas dt t_final ;
tabdyn = table 'PASAPAS' ;
tabdyn . dynamique = vrai ;
tabdyn . modele = mo1 et moppb ;
tabdyn . caracteristiques = ca1 et cappb ;
tabdyn . chargement = cham1 ;
tabdyn . vitesses = table ;
tabdyn . vitesses . 0 = manu chpo pp1 1 alfa w0 ;
tabdyn . temps_sauves = l_cal ;
pasapas tabdyn ;
*opti donn 5 ;
l_t0 = prog 0. tabdyn . temps . 1 ;
tt1 = 'EXTR' tabdyn . variables_internes . 1 'SLIA' 2 1 1 ;
lis3xp1 = tt1.ux ;
lis3yp1 = tt1.force_de_choc ;
lis3dp1 = tt1.deplacement_plastique ;
indi1 = 1 ;
repeter bs ((dime tabdyn . temps) - 2) ;
indi1 = indi1 + 1 ;
l_t0 = l_t0 et (prog tabdyn . temps . indi1) ;
ttu1 = 'EXTR' tabdyn . variables_internes . indi1 'SLIA' 2 1 1 ;
lis3xp1 = lis3xp1 et ttu1.ux ;
lis3yp1 = lis3yp1 et ttu1.force_de_choc ;
lis3dp1 = lis3dp1 et ttu1.deplacement_plastique ;
fin bs ;
ev3df1 = evol manu 'depl' lis3xp1 'force' lis3yp1 ;
ev3dp1 = evol manu 'temps' l_t0 'dep_pl'lis3dp1 ;
*
sinon ;
*
tabdyn . nombre_pas = npas ;
tabdyn . pas_de_temps = dt ;
tabdyn . pas_de_sortie = nins ;
tabdyn . sortie = table ;
tabdyn . sortie . moppb = vrai ;
dyne de_vogelaere tabdyn ;
*
l_t0 = prog ;
repeter bs (dime tabdyn . temps) ;
l_t0 = l_t0 et (prog tabdyn . temps . (&bs - 1)) ;
fin bs ;
lis2xp1 = tabdyn.liaisons.moppb.ux ;
lis2yp1= tabdyn.liaisons.moppb.force_de_choc ;
ev2df1 = evol manu 'depl' lis2xp1 'force' lis2yp1 ;
ev2dp1 = evol manu 'temps' l_t0 'dep_pl'
tabdyn.liaisons.moppb.deplacement_plastique ;
*
finsi ;
*
** reprise de calcul
si (ega complet 'O') ;
si (ega dpasa 'O');
*
t_fin0 = npas * dt * 2 ;
l_cal = prog t_final pas dt t_fin0 ;
tabdyn . temps_sauves = l_cal ;
pasapas tabdyn ;
*l_t0 = prog 0. tabdyn . temps . 1 ;
tt1 = 'EXTR' tabdyn . variables_internes . 1 'SLIA' 2 1 1 ;
lis3xp1 = tt1.ux ;
lis3yp1 = tt1.force_de_choc ;
lis3dp1 = tt1.deplacement_plastique ;
indi1 = 1 ;
repeter bs ((dime tabdyn . temps) - 2) ;
indi1 = indi1 + 1 ;
l_t0 = l_t0 et (prog tabdyn . temps . indi1) ;
ttu1 = 'EXTR' tabdyn . variables_internes . indi1 'SLIA' 2 1 1 ;
lis3xp1 = lis3xp1 et ttu1.ux ;
lis3yp1 = lis3yp1 et ttu1.force_de_choc ;
lis3dp1 = lis3dp1 et ttu1.deplacement_plastique ;
fin bs ;
ev3df1 = evol manu 'depl' lis3xp1 'force' lis3yp1 ;
ev3dp1 = evol manu 'temps' l_t0 'dep_pl'lis3dp1 ;
sinon ;
*
tabdyn . init_dyne = tabdyn . reprise_dyne ;
dyne de_vogelaere tabdyn ;
si faux ;
t2dyn = table 'PASAPAS' ;
t2dyn . modele = mo1 et moppb ;
t2dyn . caracteristiques = ca1 et cappb ;
t2dyn . chargement = cham1 ;
t2dyn . init_dyne = tabdyn . reprise_dyne ;
t2dyn . nombre_pas = npas ;
t2dyn . pas_de_temps = dt ;
t2dyn . pas_de_sortie = nins ;
t2dyn . sortie = table ;
t2dyn . sortie . moppb = vrai ;
dyne de_vogelaere t2dyn ;
sinon ;
t2dyn = tabdyn ;
finsi ;
l_t2 = prog ;
repeter bs (dime t2dyn . temps) ;
l_t2 = l_t2 et (prog t2dyn . temps . (&bs - 1)) ;
fin bs ;
lis2xp2 = t2dyn.liaisons.moppb.ux ;
lis2yp2= t2dyn.liaisons.moppb.force_de_choc ;
ev2df2 = evol manu 'depl' lis2xp2 'force' lis2yp2 ;
ev2dp2 = evol manu 'temps' l_t2 'dep_pl'
t2dyn.liaisons.moppb.deplacement_plastique ;
*
finsi ;
finsi ;
**
*
tinit = table initial ;
tinit.reprise = tres1.reprise ;
tres2 = dyne de_vogelaere tlia tab1 tcha1 tsort
tinit npas dt nins ;
TTL2 = TRES2.TL1 ;
LIS_TEM2 = TRES2.'TEMPS_DE_SORTIE';
lisxp2 = TTL2.'UX' ;
lisyp2 = ttl2 .'FORCE_DE_CHOC' ;
titre 'force - deplacement';
evdf2 = evol rouge manu 'depl' lisxp2 'force' lisyp2 ;
titre 'deplacement plastique - temps' ;
evdp2 = evol rouge manu 'temps' lis_tem2 'dep_pl'
ttl2.deplacement_plastique;
*
si (neg graph 'N');
titre 'force - deplacement';
dess (evdf1 et evdf2) ;
titre 'deplacement plastique - temps' ;
dess (evdp1 et evdp2) ;
finsi;
*
* maxima des deplacements plastiques theoriques
d11 = .5 ; d22 = 1.5 ;
mess
'max des depl. plastiques theoriques'd11' ' d22;
d1 = maxi (extr evdp1 ordo) ;
d2 = maxi (extr evdp2 ordo) ;
d31 = maxi (extr ev3dp1 ordo) ;
mess
'max des depl. plastiques C2000 'd1' ' d2 ' ' d31 ;
er1 = abs(d1/d11 - 1); er2 = abs (d2/d22 - 1);
er3 = abs(d31/d11 - 1) ;
mess
'erreur 'er1'% 'er2'% 'er3 '% ' ;
err = maxi (prog er1 er2) ;
si (err > .005) ;
erre 5 ;
sinon ;
erre 0 ;
finsi;
fin ;
© Cast3M 2003 - All rights reserved.
Disclaimer