Télécharger topoptim_10_Non-linear.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier topoptim_10_Non-linear.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. ************************************************************************
  6. ** Non-linear topology optimization of a simple 2D structure in contact
  7. ** with a rigid sphere with prescribed displacement.
  8. **
  9. ** Author:
  10. ** Guenhael Le Quilliec (LaMe - Polytech Tours)
  11. **
  12. ** Version:
  13. ** V2.0 2025/11/13 Updated to make it compatible with TOPOPTIM V4.0
  14. ** V1.0 2017/04/18 Original version compatible with TOPOPTIM V2.1
  15. ************************************************************************
  16.  
  17. * Plot results
  18. graph0 = FAUX ;
  19.  
  20. * General options
  21. OPTI 'DIME' 2 'MODE' 'AXIS' 'ELEM' 'QUA4' ;
  22.  
  23. * Number of elements
  24. nelp0 = 30 ;
  25. nelr0 = 30 ;
  26. nelz0 = 30 ;
  27.  
  28. * Dimensions
  29. r0 = 20.0e-3 ;
  30. l1 = nelr0 * 1.0e-3 ;
  31. l2 = nelz0 * 1.0e-3 ;
  32.  
  33. * Bulk mesh
  34. p0 = 0.0 0.0 ;
  35. p1 = 0.0 (-1.0 * l2) ;
  36. p2 = l1 (-1.0 * l2) ;
  37. p3 = l1 0.0 ;
  38. ln0 = DROI nelz0 p0 p1 ;
  39. ln1 = DROI nelr0 p1 p2 ;
  40. ln2 = DROI nelz0 p2 p3 ;
  41. ln3 = DROI nelr0 p3 p0 ;
  42. msh0 = SURF (ln0 ET ln1 ET ln2 ET ln3) ;
  43.  
  44. * Indent mesh
  45. p5 = 0.0 r0 ;
  46. p6 = r0 r0 ;
  47. arc0 = CERC nelp0 p0 p5 p6 ;
  48.  
  49. * Model and material
  50. mod0 = MODE msh0 'MECANIQUE' 'ELASTIQUE' ;
  51. mat0 = MATE mod0 'YOUN' 0.1e9 'NU' 0.4 ;
  52.  
  53. * Time steps
  54. nbstp0 = 20 ;
  55. time0 = 2.0 ;
  56. lst_tps0 = PROG 0.0 'PAS' (time0 / (FLOT nbstp0)) time0 ;
  57.  
  58. * Boundary conditions
  59. bc1 = (BLOQ 'UR' ln0) ET (BLOQ 'UZ' ln1) ET (BLOQ 'UR' arc0) ;
  60. bc2 = BLOQ 'UZ' arc0 ;
  61.  
  62. * Loading
  63. evol0 = EVOL 'MANU' 'Temps' lst_tps0 'Coef'
  64. (PROG 0.0 'PAS' (1.0 / (FLOT nbstp0)) 1.0) ;
  65. load0 = CHAR 'DIMP' (DEPI bc2 -2.0e-3) evol0 ;
  66.  
  67. * Contact
  68. modct0 = MODE arc0 'CONTACT' 'FROTTANT' 'COULOMB' ln3;
  69. matct0 = MATE modct0 'MU' 0.5 ;
  70.  
  71. * Factor evolutions
  72. pfct0 = EVOL 'MANU' 'CYCLES' (PROG 1 6) 'P' (PROG 1.0 3.0) ;
  73. qfct0 = EVOL 'MANU' 'CYCLES' (PROG 2 32) 'Q' (PROG 1.0 10.0) ;
  74.  
  75. * Finite element model table
  76. mdl0 = TABL ;
  77. mdl0.'MODELE' = mod0 ET modct0 ;
  78. mdl0.'CARACTERISTIQUES' = mat0 ET matct0 ;
  79. mdl0.'BLOCAGES_MECANIQUES' = bc1 ET bc2 ;
  80. mdl0.'CHARGEMENT' = load0 ;
  81. mdl0.'TEMPS_CALCULES' = lst_tps0 ;
  82.  
  83. * Optimization table
  84. tab0 = TABL ;
  85. tab0.'TRAC' = graph0 ;
  86. tab0.'RESOLUTION_PASAPAS' = mdl0 ;
  87. tab0.'FRACTION_VOLUME_LIMITE' = 0.2 ;
  88. tab0.'PENALISATION_P' = pfct0 ;
  89. tab0.'OC_Q' = qfct0 ;
  90. tab0.'SEUIL_ELEMENTS_ACTIFS' = 1.0e-2 ;
  91. tab0.'MES_SAUVEGARDES' = TABL ;
  92. tab0.'MES_SAUVEGARDES'.'RESOLUTION' = VRAI ;
  93. *tab0.'FILTRE' = MOT 'EDP' ;
  94. *tab0.'FILTRE_EDP_RAYON' = 2.0 * l1 / (FLOT nelr0) ;
  95. *tab0.'FILTRE' = MOT 'CHAPEAU' ;
  96. *tab0.'FILTRE_CHAPEAU_RAYON' = 2.5 * l1 / (FLOT nelr0) ;
  97. *tab0.'FILTRER' = MOT 'DENSITE' ;
  98. *tab0.'OPTIMISEUR' = MOT 'MMA' ;
  99.  
  100. * Optimization
  101. TOPOPTIM tab0 ;
  102.  
  103. * Output data
  104. topo0 = tab0.'TOPOLOGIE'.(tab0.'CYCLE') ;
  105. topomsh0 = tab0.'MAILLAGE'.(tab0.'CYCLE') ;
  106. res0 = tab0.'RESOLUTION'.(tab0.'CYCLE') ;
  107.  
  108. * Deform the mesh
  109. DEPL (msh0 ET arc0) 'PLUS' res0.'DEPLACEMENTS'.(1) ;
  110.  
  111. * Plot final deformed mesh
  112. * and final topology (physical density)
  113. SI graph0 ;
  114. TRAC (topomsh0 ET (arc0 COUL 'BLEU')) ;
  115. TRAC (REDU topo0 topomsh0) (REDU mod0 topomsh0)
  116. (PROG 0.0 'PAS' (1.0 / 56.0) 1.0)
  117. 'TITR' 'Topologie finale' ;
  118. FINS ;
  119.  
  120. * Plot output evolutions
  121. SI graph0 ;
  122. REPE loop0 (DIME tab0.'EVOLUTIONS_SAUVEES') ;
  123. evoname0 = EXTR tab0.'EVOLUTIONS_SAUVEES' &loop0 ;
  124. DESS tab0.'EVOLUTIONS'.evoname0 'POSY' 'EXCE'
  125. 'TITR' (CHAI 'Evolution de' ' ' evoname0
  126. ' au cours des cycles d''optimisation') ;
  127. FIN loop0 ;
  128. FINS ;
  129.  
  130. FIN ;
  131.  
  132.  
  133.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales