3. Jeux de données

3.1. opti_topo_1.dgibi

Script Cast3M opti_topo_1.dgibi

  1************************************************************************
  2* Exemple de méthode d'optimisation topologique                        *
  3* Méthode SIMP                                                         *
  4* Application à une poutre en flexion                                  *
  5************************************************************************
  6
  7
  8** Paramètres globaux
  9OPTI 'DIME' 2 'MODE' 'PLAN' 'DEFO' 'ELEM' 'QUA4' ;
 10l      = 1. ;
 11h      = 0.2 ;
 12yo     = 200.E9 ;
 13nu     = 0.3 ;
 14
 15** Maillage (controlé par sa taille de maille)
 16den1   = l / 120. ;
 17OPTI 'DENS' den1 ;
 18p1     = 0. 0. ;
 19p2     = l  0. ;
 20lb     = DROI p1 p2 ;
 21mail   = lb TRAN (0. h) ;
 22p3     = mail POIN 'PROC' ((l / 2.) h) ;
 23con    = CONT mail ;
 24
 25** Modèle
 26mod    = MODE mail 'MECANIQUE' ;
 27ma0    = MATE mod 'YOUN' yo 'NU' nu ;
 28
 29** Blocages
 30blo    = (BLOQ 'UY' p1) ET (BLOQ 'UX' 'UY' p2) ;
 31
 32** Chargement
 33f      = FORC (0. -1.E5) p3 ;
 34
 35** Paramètres d'optimisation
 36p      = 3. ;
 37fv     = 0.4 ;
 38eta    = 0.5 ;
 39rmin   = 1.5 * den1 ;
 40m      = 0.1 ;
 41xmin   = 0.001 ;
 42xmax   = 1. ;
 43
 44** Optimisation topologique
 45* initialisation de la topologie
 46x      = MANU 'CHML' mod 'SCAL' fv 'GRAVITE' ;
 47vini   = MESU mail ;
 48vcib   = vini * fv ;
 49* matrice de filtrage
 50un     = MANU 'CHML' mod 'SCAL' 1. 'GRAVITE' ;
 51vole   = INTG mod un 'ELEM' ;
 52mcg    = un POIN 'SUPERIEUR' 0. ;
 53wg     = PROI mcg vole ;
 54kfil   = MFIL wg rmin 1. 0. ;
 55* boucle d'optimisation
 56liso  = PROG 0. 'PAS' 0.05 1. ;
 57REPE b1 100 ;
 58* pénalisation de la rigidité
 59  yop    = (x ** p) * yo ;
 60  map    = MATE mod 'YOUN' yop 'NU' nu ;
 61* résolution du problème mécanique
 62  rip    = RIGI mod map ;
 63  u      = RESO (rip ET blo) f ;
 64* déformée et tracé de la topologie
 65  def1   = DEFO mail u 1000. ;
 66  TRAC x mod con def1 liso 'TITR' (CHAI 'Iteration' ' ' (&b1 - 1)) ;
 67* fonction objectif : compliance = uT.K.u = Int(sig:eps)dV
 68  eps    = EPSI 'LINE' mod u ;
 69  sig    = ELAS mod map eps ;
 70  psi    = INTG mod (ENER mod sig eps) ;
 71* sensibilité
 72  sig0   = ELAS mod ma0 eps ;
 73  ene0   = ENER mod eps sig0 ;
 74  ene    = CHAN ene0 mod 'GRAVITE' ;
 75  dpsi   = (-1. * p * (x ** (p - 1.)) * ene) ;
 76* filtrage de la sensibilité
 77  xdpsi  = x * dpsi ;
 78  xdpsi0 = PROI mcg xdpsi ;
 79  xdpsi1 = kfil * xdpsi0 ;
 80  xdpsi  = MANU 'CHML' mod 'REPA' 'SCAL' (EXTR xdpsi1 'VALE') 'TYPE' 'SCALAIRE' 'GRAVITE' ;
 81  dpsi   = xdpsi / x ;
 82* optimisation d'une nouvelle topologie (méthode du critère d'optimalité)
 83  l1     = 0. ;
 84  l2     = MAXI 'ABS' dpsi ;
 85  REPE b2 50 ;
 86    SI ((l2 - l1) < 1.E-4) ;
 87      QUIT b2 ;
 88    FINSI ;
 89    lmid   = 0.5 * (l1 + l2) ;
 90    b      = -1. * dpsi / lmid ;
 91    xinf   = BORN (x - m) 'MINIMUM' xmin ;
 92    xsup   = BORN (x + m) 'MAXIMUM' xmax ;
 93    xnew   = x * (b ** eta) ;
 94    minf   =  (xnew - xinf) MASQ 'INFERIEUR' 0. ;
 95    mmil   = ((xnew - xinf) MASQ 'SUPERIEUR' 0.) * ((xnew - xsup) MASQ 'INFERIEUR' 0.) ;
 96    msup   =  (xnew - xsup) MASQ 'SUPERIEUR' 0. ;
 97    xnew   = (xinf * minf) + (xnew * mmil) + (xsup * msup) ;
 98    vnew   = INTG mod xnew ;
 99    SI (vnew > vcib) ;
100      l1     = lmid ;
101    SINON ;
102      l2     = lmid ;
103    FINSI ;
104  FIN b2 ;
105* bilan de l'itération
106  change = MAXI 'ABS' (x - xnew) ;
107  MESS 'It.' ' ' &b1 '   Obj.' ' ' c '   Change' ' ' change '   Fvol.' ' ' (vnew / vini) '   Dicho.' ' ' &b2 ;
108  SI (change < 0.01) ;
109    QUIT b1 ;
110  FINSI ;
111* préparation de la nouvelle itération
112  x      = xnew ;
113FIN  b1 ;
114
115** Tracé de la topologie finale
116yop    = (xnew ** p) * yo ;
117map    = MATE mod 'YOUN' yop 'NU' nu ;
118rip    = RIGI mod map ;
119u      = RESO (rip ET blo) f ;
120def1   = DEFO mail u 1000. ;
121TRAC x mod con def1 liso 'TITR' (CHAI 'Iteration' ' ' (&b1 - 1)) ;
122
123
124FIN ;