* fichier : newmod.dgibi ************************************************************************ ************************************************************************ * chute d'une barre dans un conduit uniforme * comparaison liaison point_plan_frottement et calcul analytique ; * ==> exploitation nombre de choc et temps de chute graph = 'N' ; complet = 'N' ; *geometrie * ; p1= 0. 1d-7 1d-7 ; p2= 0.5 0 0 ; P3 = 1. -1d-7 1d-7 ; * modele * * calcul des masses volumiques equivalentes * ro1 = 1400. ; * conditions aux limites ************************************** rigx = rig1 et blox ; ************************************** * ************************************** rigy = rig1 et bloy ; ************************************** * ************************************** rigrz = rig1 et blorz et blop2 ; ************************************** * ************************************** * matrice de masse ; ************************************** * ************************************** * vibration suivant x ; * * vibration suivant y ; * * vibration suivant rz ; *tmrz=vibr simul 0.001 1 rigrz mas1 ; *bp, 2017-10-03 : on interdit dans MATE les frequences<0 *--> petit ajustement : si (tmx. modes . 1 . frequence < 0.); tmx. modes . 1 . frequence = 0.; finsi; si (tmy. modes . 1 . frequence < 0.); tmy. modes . 1 . frequence = 0.; finsi; si (tmrz. modes . 1 . frequence < 0.); tmrz. modes . 1 . frequence = 0.; finsi; ******************************************* * assemblage des bases modales ******************************************* tbas_m = table base_modale ; tb1 = table base_de_modes ; tbas_m . modes = tb1 ; tb1 . maillage = barre ; tb1 . 1 = tmx . modes . 1 ; tb1 . 2 = tmy . modes . 1 ; tb1 . 3 = tmrz . modes . 1 ; ************************************************************************** * etape 0 * calcul PASAPAS en utilisant modele NEWMARK MODAL * mo_mod = mo1ux et mo1uy et mo1rz; ca_mod = ca1ux et ca1uy et ca1rz ; ************************************************** * suppression des multiplicateurs de lagrange * trace des deformeees ************************************************** i = 0 ; repeter enlagr 3 ; i = i + 1 ; def1 = tb1 . i .'DEFORMEE_MODALE' ; tb1 . i .'DEFORMEE_MODALE' = enleve def1 lx ; fin enlagr ; I = 0 ; tev_def = table ; REPETER Bmod 3 ; I=I+1; def_mod = tbas_m . modes . i .'DEFORMEE_MODALE' ; * DEF11 = DEFO barre DEF1 1.2 ; * DEF10 = DEFO barre DEF1 0. ; TREQ1 = tbas_m . modes . i .'FREQUENCE' ; mg = tbas_m . modes . i .'MASSE_GENERALISEE' ; LIST MG ; FIN Bmod ; * tabsymb = table ; titre ' modes de corps rigides ' ; * si (neg graph 'N') ; finsi ; ********************************************************* * calcul * 1ere etape : avec les liaisons POINT_PLAN_FROTTEMENT ********************************************************** * * calcul parametre par : impulsion initiale t_qp30 = table ; t_qp30 . 1 = 0.05 ; t_qp30 . 2 = 0.01 ; t_qp30 . 3 = 0.1 ; * ... et coefficient de frottement t_mu = table ; t_mu . 1 = 0.5 ; t_mu . 2 = 0.1 ; t_mu . 3 = 1. ; * sorties : chute t_ux = table ; * ... force normale t_fn = table ; * ... deplacement t_uy = table ; * ... frottement t_ft = table ; ***************************** * chargement ***************************** tchar = table chargement; f1 = mas1 * chp1 ; tchar.base_a = ch1 ; * ********************************************* * Donnees des constantes ********************************************* * Nombre de pas Duree du pas de temps Temps d'etude *npc=1; *nt2= 200 ;dt2 = 0.01 ; dt1 = 0.1 ; * bp-2017 pour comparaison *l_cal = prog 0. pas dt1 0.8 ; * vue de la barre ********************************************* * amortissement ********************************************* TAMOR = TABLE 'AMORTISSEMENT' ; TAMOR.'AMORTISSEMENT' = MATAMOR ; ** **debproc chuchoc qp30*flottant c_mu*flottant ; **** qp30 = t_qp30 . 3 ; c_mu =t_mu . 1; ********************************************* * conditions initiales ********************************************* pk = tbas_m . modes . 3 . point_repere ; pkx = tbas_m . modes . 1 . point_repere ; tinit = table initial; tinit . 'DEPLACEMENT' = CPID ; tinit . 'VITESSE' = CPIV ; *--------------------------------------------- y_gui = 0.083 ; c_mu = 0.7 ; * on essaye en modal * tbar2. dynamique = vrai ; tbar2 . modele = mo_mod et mo_gau et mo_dro ; tbar2 . caracteristiques = ca_mod et ca_gau et ca_dro ; tbar2 . chargement = ch1 ; *tbar2 . chargement = ch1 et ch2 ; *tbar2 . blocages_mecaniques = gui_gau et gui_dro ; tbar2 . vitesses = table ; tbar2 . vitesses . 0 = cpiv ; tbar2 . temps_calcules = l_cal ; tbar2 . hypothese_deformations = 'LINEAIRE' ; mod2 = tbar2 . modele; mat2 = tbar2 . caracteristiques; * list mod2; * list mat2; * list k2; * list m2; pasapas tbar2 ; ii2 = &bdbar2 - 1; si (ii2 > 0 ) ; si (nch_2 > 0 ) ; xfn2 = 0. ; xft2 = 0. ; repeter bli_2 nch_2 ; fin bli_2 ; sinon ; finsi ; finsi ; si (ega ii2 0 ) ; sinon ; finsi ; fin bdbar2 ; si (neg graph 'N') ; finsi ; si (neg graph 'N') ; titre ' reaction normale mode rotation ' ; finsi ; t_ux . 1 = ev2dex ; t_fn . 1 = ev2fn; t_uy . 1 = ev2yp1 ; t_ft . 1 = ev2ft ; *---------------------------------------------- * mixons *---------------------------------------------- DT3 = 0.001 ; si (neg complet 'N') ; sinon ; finsi ; tbar3 . dynamique = vrai ; *tbar3 . modele = mo_mod et mopl1 et mopl2 et mopl3 et mopl4; *tbar3 . caracteristiques = ca_mod et capl1 et capl2 et capl3 et capl4; tbar3 . modele = mo_mod et mo_dro et mopl2 et mopl3 ; *list tbar3 . modele ; tbar3 . caracteristiques = ca_mod et ca_dro et capl2 et capl3 ; tbar3 . chargement = ch1 ; tbar3 . vitesses = table ; tbar3 . vitesses . 0 = cpiv ; tbar3 . temps_calcules = l_cal3 ; tbar3 . hypothese_deformations = 'LINEAIRE' ; pasapas tbar3 ; ii3 = &bdbar3 - 1; si (ii3 > 0 ) ; si (nch_3 > 0 ) ; xfn3 = 0. ; repeter bli_3 nch_3 ; fin bli_3 ; sinon ; finsi ; finsi ; fin bdbar3 ; si (neg graph 'N') ; titre ' reaction normale mode rotation ' ; finsi ; t_ux . 3 = ev3dex; t_fn . 3 = ev3fn; t_uy . 3 = ev3yp1 ; * ************************************************************************** * 1ere etape * calcul DYN en utilisant les liaisons POINT_PLAN_FROTTEMENT ********************************************* * Table des Liaisons ********************************************* * TLIAI = TABLE 'LIAISON' ; TLB = TABLE 'LIAISON_B' ; TLIAI.'LIAISON_B' = TLB ; TL1 = TABLE 'LIAISON_ELEMENTAIRE' ; TL1.'SUPPORT' = p1 ; TL1.'NORMALE' = (0 1 0) ; TL1.'RAIDEUR' = 1.e6 ; TL1 . 'COEFFICIENT_GLISSEMENT' = c_mu ; TL1 . 'COEFFICIENT_ADHERENCE' = 0. ; TL1.'AMORTISSEMENT' = 0.; TL1.'RAIDEUR_TANGENTIELLE' = 1.E8 ; TL1.'AMORTISSEMENT_TANGENTIEL' = 7000.; tlb.1=tl1; TL2 = TABLE 'LIAISON_ELEMENTAIRE' ; TL2.'SUPPORT' = p1 ; TL2.'NORMALE' = (0 -1 0) ; TL2.'RAIDEUR' = 1.e6 ; TL2 . 'COEFFICIENT_GLISSEMENT' = c_mu ; TL2 . 'COEFFICIENT_ADHERENCE' = 0. ; TL2.'AMORTISSEMENT' = 0.; TL2.'RAIDEUR_TANGENTIELLE' = 1.E8 ; TL2.'AMORTISSEMENT_TANGENTIEL' = 7000.; tlb.2=tl2; TL3 = TABLE 'LIAISON_ELEMENTAIRE' ; TL3.'SUPPORT' = p3 ; TL3.'NORMALE' = (0 1 0) ; TL3.'RAIDEUR' = 1.e6 ; TL3 . 'COEFFICIENT_GLISSEMENT' = c_mu ; TL3 . 'COEFFICIENT_ADHERENCE' = 0. ; TL3.'AMORTISSEMENT' = 0.; TL3.'RAIDEUR_TANGENTIELLE' = 1.E8 ; TL3.'AMORTISSEMENT_TANGENTIEL' = 7000.; tlb.3=tl3; TL4 = TABLE 'LIAISON_ELEMENTAIRE' ; TL4.'SUPPORT' = p3 ; TL4.'NORMALE' = (0 -1 0) ; TL4.'RAIDEUR' = 1.e6 ; TL4 . 'COEFFICIENT_GLISSEMENT' = c_mu ; TL4 . 'COEFFICIENT_ADHERENCE' = 0. ; TL4.'AMORTISSEMENT' = 0.; TL4.'RAIDEUR_TANGENTIELLE' = 1.E8 ; TL4.'AMORTISSEMENT_TANGENTIEL' = 7000.; tlb.4=tl4; ********************************************* * Table des resultats demandes ********************************************* * * Table de sortie des variables generalisees TSORT = TABLE 'SORTIE' ; TSORV = TABLE 'VARIABLE' ; TSORT.'VARIABLE' = TSORV ; TSORV.'DEPLACEMENT' = vrai ; TSORV.'VITESSE' = faux ; TSORV.'ACCELERATION' = FAUX ; * * Table de sortie des variables de liaison sur base B TSORL = TABLE 'LIAISON_B' ; tsorl.tl1 = vrai; tsorl.tl2 = vrai; tsorl.tl3 = vrai; tsorl.tl4 = vrai; TSORT.'LIAISON_B'= tsorl; ********************************** * execution DYN ********************************** DT2 = 0.001 ; nt2 = (2200 - 10)/2 ;nt2 = 5*nt2; NPC = 1 ; tresu1 = dyne de_vogelaere tbas_m tliai tamor tchar tinit nt2 DT2 Npc TSORT ; * ttl1 = tresu1 . tl1 ; ttl2 = tresu1 . tl2 ; ttl3 = tresu1 . tl3 ; ttl4 = tresu1 . tl4 ; lis_temp = tresu1 . temps_de_sortie ; ************************************** * graphiques ************************************** tabsymb = table ; tabsymb . titre = table ; * ( TTL1.'UX' ) ; ( TTL3.'UX' ) ; titre ' deplacement ux points p1 et p3 ' ; si (neg graph 'N') ; dessin (ev1 et ev2) lege tabsymb ; finsi ; *** ( TTL1.'UY' ) ; ( TTL3.'UY' ) ; si (neg graph 'N') ; titre ' deplacement uy points p1 et p3 ' ; dessin (ev11 et ev22) lege tabsymb ; finsi ; *** tf1 = TTL1.'FORCE_DE_CHOC_NORMALE' ; tf2 = TTL2.'FORCE_DE_CHOC_NORMALE' ; tf3 = TTL3.'FORCE_DE_CHOC_NORMALE' ; tf4 = TTL4.'FORCE_DE_CHOC_NORMALE' ; * (tf1 - tf2) ; (tf3 - tf4) ; si (neg graph 'N') ; titre ' force de choc points p1 et p3 ' ; dessin (ev3 et ev4) lege tabsymb ; finsi ; *** tff1 = TTL1.'FORCE_DE_CHOC_TANGENTIELLE' ; tff2 = TTL2.'FORCE_DE_CHOC_TANGENTIELLE' ; tff3 = TTL3.'FORCE_DE_CHOC_TANGENTIELLE' ; tff4 = TTL4.'FORCE_DE_CHOC_TANGENTIELLE' ; ( tff1 + tff2 ) ; ( tff3 + tff4 ) ; si (neg graph 'N') ; titre ' FORCE_DE_CHOC_TANGENTIELLE p1 et p3' ; dessin (ev5 et ev6) lege tabsymb ; finsi ; *** titre ' deplacement ux p2 ' ; *dess ev7 lege ; *** *** tracer le profil a une date donnee p_photo ; *** t_ux . 2 = ev1 ; t_fn . 2 = (-1.) * ev3 ; t_uy . 2 = ev11 ; t_ft . 2 = (-1.) * ev5 ; ***** realisation des calculs **** ************************************************************************** * 2eme etape * calcul DYN en utilisant le chargement explicite etabli * voir aussi : etude de Cerqueira et Metivier, 2eme annee * IUP genie Mecanique Evry 92--93 * : these Rezkallah, Paris VI 1991 ************************************************************************** **************************************** * etablir l'evolution temporelle **************************************** qp30 = t_qp30 . 3; mu = t_mu . 1; xjeu = 1.e-3; longueur = 1. ; masse = 5. ; grav = 9.81 ; xjeu = y_gui ; * passage coordonnee angulaire --- inconnue modale vthet0 = 2.01*qp30 ; K_choc = 1.e6 ; * discretisation temporelle pdis_e = 15 ; pdis_c = 35 ; pdis_e = 15 ; pdis_c = 50 ; * omega0 = (6.*K_choc/masse)**0.5 ; * expression de la force de choc pdt_c = t_c/pdis_c ; for_y = abs_c * (omega0/pi*180) ; for_y = (sin(for_y)) *(k_choc*longueur*vthet0/2/omega0) ; * *** frottement frot_y = for_y*mu ; * ** cree une histoire de chargement * force et frottement k_c = 0 ; k_e = 0 ; repeter Bhist 2 ; * segment droit for_t = for_t et ord_e ; frot_t = frot_t et ord_e ; k_e = k_e + 1 ; * arche de sinus for_t = for_t et for_y ; frot_t = frot_t et frot_y ; k_c = k_c + 1 ; * segment droit for_t = for_t et ord_e ; frot_t = frot_t et ord_e ; k_e = k_e + 1 ; * segment droit for_t = for_t et ord_e ; frot_t = frot_t et ord_e ; k_e = k_e + 1 ; * arche de sinus (inverse pour la force de choc) for_t = for_t et (for_y*(-1.)) ; frot_t = frot_t et frot_y ; k_c = k_c + 1 ; * segment droit for_t = for_t et ord_e ; frot_t = frot_t et ord_e ; k_e = k_e + 1 ; * ev_for = ev_for * (-1.) ; * fin Bhist ; * si (neg graph 'N') ; titre ' force normale choc ' ; finsi ; *dess ev_for lege tabsymb ; si (neg graph 'N') ; titre ' force frottement choc ' ; finsi ; *** **************************************** * creer le champ de force **************************************** tchar_x = table chargement; * gravite f_g = mas1 * chp_g ; * * choc -- rappel : frottement et choc sont proportionnels -- *mu * * * tchar_x.base_a = ch_g et ch_x et ch_xf ; * ********************************************* * conditions initiales ********************************************* pk = tbas_m . modes . 3 . point_repere ; tinit_x = table initial; tinit_x . 'DEPLACEMENT' = CPID ; tinit_x . 'VITESSE' = CPIV ; ********************************************* * Table des resultats demandes ********************************************* * * Table de sortie des variables generalisees tsort_x = TABLE 'SORTIE' ; tsorv_x = TABLE 'VARIABLE' ; tsort_x.'VARIABLE' = tsorv_x ; tsorv_x.'DEPLACEMENT' = vrai ; tsorv_x.'VITESSE' = faux ; tsorv_x.'ACCELERATION' = FAUX ; * ********************************** * execution DYN * pb si dt2 = 0.01 (kich) ********************************** DT2 = 0.001 ; nt2 = (2200 - 10)/2 ;nt2 = nt2 *5; NPC = 20 ; tresu_x = dyne de_vogelaere tbas_m tamor tchar_x tinit_x nt2 DT2 Npc tsort_x ; * lis_temp = tresu_x . temps_de_sortie ; ************************************** * graphiques ************************************** si (neg graph 'N') ; titre ' deplacement ux p1 et p3' ; finsi ; si (neg graph 'N') ; titre ' deplacement ux p1 analytique et liaisons' ; finsi ; *** si (neg graph 'N') ; titre ' deplacement uy p1 et p3' ; titre ' deplacement uy p1 analytique et liaisons' ; finsi ; *** ** ** les cvcteurs propres \C3etant definis au signe pres, on fait les comparaisons sur les valeursabsolues. yyy1 = abs yyy1; yyy2 = abs yyy2; yyy3 = abs yyy3; err1 = abs ((yyy1 - yyy2)/yyy1) ; err2 = abs ((yyy1 - yyy3)/yyy1) ; mess 'yyy1 yyy2 yyy3' ' ' yyy1 yyy2 yyy3; mess 'err1 err2' ' ' err1 ' ' err2; si ((err1 < 0.12) et (err2 < 0.23)) ; sinon ; finsi ; *************************** * fin;
© Cast3M 2003 - Tous droits réservés.
Mentions légales