* 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