* fichier : dy_devo6.dgibi ************************************************************************ * Section : Mecanique Dynamique ************************************************************************ * 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 ;