* fichier : drx_flexion_elas.dgibi ************************************************************************ * Section : Mecanique Dynamique ************************************************************************ * * Cas test de la procédure EXPLICIT * * Calcul de la réponse dynamique d'une plaque axisymétrqiue * à une force de type impact sur son centre * * La réponse est comparée à un calcul modale avec DYNE * * options de calcul: * linéaire, * petits déplacements, * axisymétrie, * éléments QUA4,TRI3 et COQ2, * conditions aux limites de déplacements nuls en 1 point. * * * maillage d'une plaque cylindrique * en beton avec ferraillage * * Diametre 20 m Epaisseur 1m * fer tous les metres * * axe de symétrie * \ * \ Force sur r=1m * \ !!!! * ---------------------------- * uz | beton | * |_ ur | + fer |\ * O ---------------------------- \ * blocage suivant z * graph = faux; opti echo 0; * * MAILLAGE * opti dime 2 mode axis ; ep1 = 2. ; ray1 = 20. ; int1 = 2. ; * parametre du nombre d'element sur la verticale n1 = 6 ; * paramètre du nombre d'élément sur l'horizontale n2 = 1; pi1 = 0. 0 ; ps1 = 0. ep1 ; opti elem seg2 ; lv1 = d pi1 n1 ps1 ; nfer = ( enti ray1 ) / ( enti int1 ) ; tabmail = table maillage ; tabmail . 1 = table ; tabmail . 1 . 'LVERT' = lv1 ; ln = lect 6 4 3 8 * 2 20 * 1 ; opti elem qua4 ; i = 1 ; repeter bou1 nfer ; ni = extr ln i ; tabmail . i . 'SU' = (tabmail . i . 'LVERT') trans ( ni * n2 ) ( int1 0. ) ; tabmail . i . 'LSUP' = cote 2 (tabmail . i . 'SU') ; tabmail . i . 'LINF' = cote 4 (tabmail . i . 'SU') ; i = i + 1; tabmail . i = table ; tabmail . i . 'LVERT' = inve (cote 3 (tabmail . (i - 1) . 'SU')) ; si ( i ega 4 ) ; n1 = n1 / 2 ; d4 = int1 / ni / n2 ; pi4 = (2 * int1 + d4) 0. ; ps4 = (2 * int1 + d4) ep1 ; li4 = d pi4 n1 ps4 ; su4a = coutu (tabmail . (i - 1) . 'LVERT') li4 ; su4b = li4 trans ( ni * n2 - 1) ( (d4 * ( ni * n2 - 1)) 0.) ; tabmail . (i - 1) . 'SU' = su4a et su4b ; tabmail . (i - 1) . 'LSUP' = (cote 2 su4a) et (cote 2 su4b) ; tabmail . (i - 1) . 'LINF' = (cote 4 su4a) et (cote 4 su4b) ; tabmail . i . 'LVERT' = inve (cote 3 su4b ) ; finsi ; si ( i ega 2 ) ; total1 = (tabmail . (i - 1 ) . 'SU') ; totsup1 = (tabmail . (i - 1 ) . LSUP ) ; totinf1 = (tabmail . (i - 1 ) . LINF ) ; totvert1 = (tabmail . i . LVERT ) ; sinon ; total2 = total1 et (tabmail . (i - 1) . 'SU') ; * detr total1 ; total1 = total2 ; totsup2 = totsup1 et (tabmail . (i - 1) . 'LSUP') ; * detr totsup1 ; totsup1 = totsup2 ; totinf2 = totinf1 et (tabmail . (i - 1) . 'LINF') ; * detr totinf1 ; totinf1 = totinf2 ; totvert2 = totvert1 et (tabmail . i . LVERT ) ; * detr totvert1 ; totvert1 = totvert2 ; finsi ; fin bou1 ; mailpres = ( elem ( tabmail . 1 . lsup ) 1 ) et ( elem ( tabmail . 1 . lsup ) 2 ) et ( elem ( tabmail . 1 . lsup ) 3 ) ; totvert1 = coul totvert1 vert ; totsup1 = coul totsup1 bleu ; totinf1 = coul totinf1 bleu ; total1 = coul total1 jaune ; totfer = totvert1 et totsup1 et totinf1 ; *trac totfer titr 'Ferraillage' ecla ; *trac ( total1 et totfer ) titr 'Ferraillage et Beton' ecla ; opti echo 0 ; nelm = (nbelem total1) ; nnom = (nbno total1) ; nelc = ( nbelem totfer ) ; nnoc = (nbno totfer) ; nnddl = nnom * 2 + nnoc ; sauter 1 ligne ; mess 'Nbre d element massifs' nelm 'soit' nnom; mess 'Nbre d element coque ' nelc 'soit' nnoc ; mess 'Total' ( nelm + nelc ) 'Elements' nnddl 'ddl' ; sauter 1 ligne ; opti echo 1 ; * determnation des distances minimales L * pour le calcul du pas de temps * * MODELE ET MATERIAU * mobeto = mode total1 mecanique elastique ; mabeto = mate mobeto YOUN 40.d9 NU 0.2 RHO 2.4d3; mofer = mode totfer mecanique elastique coq2 ; mafer = mate mofer RHO 7.8d3 YOUN 210.d9 NU 0.3 ; carfer = cara mofer EPAI 12.d-3 ; * * CONDITONS AUX LIMITES * pext1 = total1 poin proc ( ray1 0. ) ; cl1 = bloq UZ pext1 ; * * CHARGEMENT SPATIAL * fpres = (PRESS COQU ( redu mofer mailpres) 1. NORM) / -3.14158 ; fpres = 'EXCO' fpres ( 'MOTS' 'FR' 'FZ' ) ; vpres = vect fpres FR FZ rouge 2.; titr 'Distribution spatiale du chargement (forces nodales equi.)' ; *trac vpres total1 ; * * ANALYSE MODALE * rig1 = rigi ( mobeto et mofer ) (mabeto et mafer et carfer ) ; mas1 = masse ( mobeto et mofer ) (mabeto et mafer et carfer ) ; temps zero ; tbas1 = vibr 'INTERVALLE' 0. 300. basse 70 ( rig1 et cl1 ) mas1; lfreq = prog ; i = 1 ; repeter bou1 ( (dime tbas1 . modes ) - 2); tabi = tbas1 . modes . i ; lfreq = lfreq et ( prog tabi .frequence ) ; * titr 'Frequence ' tabi .frequence ; * trac ( defo total1 tabi . deformee_modale ) ; i = i + 1 ; fin bou1 ; * * evolution temporelle force d'impact * evolp = evol manu ((prog 0. 10. 20. 30. 40. 50. 60. 70. 1000.)*1.d-3) ((prog 0. 55. 55. 110. 110. 55. 55. 0. 0.)*1.d6 / 3.) ; * * réponse élastique de la structrue avec dyne * tabchar = table chargement ; cha1 = char MECA evolp fpres ; chaba1 = PJBA cha1 tbas1 ; tabchar . BASE_A = chaba1 ; sol1 = 'PSMO' (rig1 et cl1 ) (tbas1 . 'MODES') fpres ; tbas1 . 'PSEUDO_MODES' = sol1 ; fr1 = extr lfreq (dime lfreq ) ; w1 = 2 * pi * fr1 ; dt = 2 ** .5 * 2 / w1 / 10 ; npas = 'ENTI' ( 21.d-3 / dt) ; nins = 1 ; 'MESS' 'Nombre de pas : ' npas ; tbas1 = reac cl1 tbas1 ; tabres = dyne de_vogelaere tbas1 tabchar npas dt nins ; TABTPS = TEMP 'NOEC'; tdyn = TABTPS.'TEMPS_CPU'.'INITIAL' ; evx = 'EVOL' 'RECO' tabres tbas1 cha1 'REAC' pext1 FZ ; evy = 'EVOL' 'RECO' tabres tbas1 cha1 DEPL pi1 UZ ; * * calcul à l'aide de la procédure explicite * * pas de temps minimum celbet = ( 37.d9 / 2.4d3 ) ** 0.5 ; celfer = ( 210.d9 / 7.8d3 ) ** 0.5 ; lmin = int1 / 6. / n1 ; dtmin = lmin / ( maxi ( prog celfer celbet ) ) ; tab_in = TABLE ; tab_in .'CHARGEMENT' = cha1 ; tab_in .'LIAISONS' = cl1 ; tab_in .'MODELE' = mobeto et mofer; tab_in .'CARACTERISTIQUES' = mafer et mabeto et carfer ; tab_in .'PAS_TEMPS' = dtmin ; tab_in .'NPASMAX' = enti ( 20.87d-3 / dtmin ) ; tab_in .'TEMPS_SORTIE' = prog 0. PAS 2.5d-4 20.87d-3 ; temps zero ; DREXUS tab_in ; TABTPS = TEMP 'NOEC'; texpli = TABTPS.'TEMPS_CPU'.'INITIAL' ; * * FORCE DE REACTION DU CADRE * i = 1 ; lt = prog 0.; lz = prog 0. ; lzpi1 = prog 0. ; repeter bou1 ( (dime tab_in . deplacements ) - 1) ; lt = lt et ( prog tab_in . temps . i ) ; fex1 = tab_in . forces_exterieures . i; dep1 = tab_in . deplacements . i; fz = extr fex1 pext1 'FZ' ; lz = lz et ( prog fz ) ; lzpi1 = lzpi1 et ( prog ( extr dep1 pi1 UZ ) ); i = i + 1 ; fin bou1 ; evfz = evol bleu manu 'Temps' lt 'Fz' lz ; evx = coul evx turq ; tabgraf = table ; tabgraf . 1 = 'MARQ CROI ' ; tabgraf . 2 = 'MARQ PLUS ' ; tabgraf.'TITRE' = table ; tabgraf.'TITRE' . 1 = mot 'explicit' ; tabgraf.'TITRE' . 2 = mot 'base_modale' ; si graph; dess ( evfz et evx ) tabgraf lege xbor 0. 0.024 ; finsi; * * DEPLACEMENT VERTICAL AU DROIT DE LA FORCE * evuz = evol bleu manu 'TEMPS' lt 'UZ' lzpi1 ; evy = coul evy turq ; tabgraf . 2 = 'MARQ PLUS ' ; tabgraf.'TITRE' . 2 = mot 'base_modale' ; si graph; dess ( evuz et evy ) tabgraf lege xbor 0. 0.024 ; finsi; * * TEST DE BON FONCTIONNEMENT * lz2 = ipol lt ( extr evx 'ABSC' ) (extr evx 'ORDO' ) ; err1 = (maxi abs ( lz2 - lz )) / ( maxi abs lz2 ); lerr1 = err1 >eg 0.15 ; luz2 = ipol lt ( extr evy 'ABSC' ) (extr evy 'ORDO' ) ; err2 = (maxi abs ( lzpi1 - luz2 )) / ( maxi abs luz2 ) ; lerr2 = err2 >eg 0.05 ; mess 'Erreur sur la force ' (err1 * 100. ) '%' ; mess 'Erreur sur le deplacement ' (err2 * 100. ) '%' ; si (tdyn