Download drx_flexion_elas.dgibi

Back to the list

* fichier :  drx_flexion_elas.dgibi
*
*       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 tbas;

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 ;
tdyn = temps noec ;

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  ;
texpli = temps noec ;

*
*      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 	
					
			

© Cast3M 2003 - All rights reserved.
Disclaimer