Télécharger topology.procedur

Retour à la liste

Numérotation des lignes :

  1. * TOPOLOGY PROCEDUR FD218221 23/11/29 21:15:10 11799
  2. * TOPOLOGY PROCEDUR CB215821 21/03/19 21:15:10 9715
  3.  
  4. ************************************************************************
  5. ** Procedure called by TOPOPTIM for updating the topology using the
  6. ** Optimality Criterion method.
  7. **
  8. ** Author:
  9. ** Guenhael Le Quilliec (LaMe - Polytech Tours)
  10. **
  11. ** Version:
  12. ** 2.2 2021/03/19 Modification of default value of 'OC_L2'
  13. ** 2.1 2018/01/29 Fixing an issue with quadratic elements
  14. ** 2.0 2017/11/11
  15. ************************************************************************
  16.  
  17. DEBP TOPOLOGY tab0*'TABLE' ;
  18.  
  19. * Input data
  20. * **********
  21.  
  22. wtab0 = tab0.'WTABLE' ;
  23. bool0 = wtab0.'BOOL' ;
  24. un1 = wtab0.'UN'.(1) ;
  25. d0 = wtab0.'FACTEUR_D' ;
  26. move0 = un1 * tab0.'TOPOLOGIE_MAX_INC' ;
  27. void0 = tab0.'TOPOLOGIE_MIN' ;
  28. xOld0 = wtab0.'TOPOLOGIE' ;
  29. xOldP0 = xOld0 + move0 ;
  30. xOldM0 = xOld0 - move0 ;
  31. dc0 = wtab0.'SENSIBILITE' ;
  32. q0 = wtab0.'FACTEUR_Q' ;
  33. qbool0 = q0 > 1 ;
  34. *** mcn0 = bool0.'MECANISME' ;
  35. SI bool0.'MECANIQUE' ;
  36. mod1 = wtab0.'MECANIQUE'.'MODELE'.(1) ;
  37. mat1 = wtab0.'MECANIQUE'.'CARACTERISTIQUES'.(1) ;
  38. SINO ;
  39. mod1 = wtab0.'THERMIQUE'.'MODELE'.(1) ;
  40. mat1 = wtab0.'THERMIQUE'.'CARACTERISTIQUES'.(1) ;
  41. FINS ;
  42. v1 = wtab0.'VOLUME'.(1) * tab0.'FRACTION_VOLUME' ;
  43. l1 = tab0.'OC_L1' ;
  44. SI (NON (EXIS tab0 'OC_L2')) ;
  45. l2 = MAXI 'ABS' dc0 ;
  46. SINO ;
  47. l2 = tab0.'OC_L2' ;
  48. FINS ;
  49. l2min = tab0.'OC_L2_MIN' ;
  50. crit0 = tab0.'OC_CRITERE' ;
  51. maxit0 = tab0.'OC_MAX_IT' ;
  52. **** SI mcn0 ;
  53. bmin0 = tab0.'OC_B_MIN' ;
  54. **** FINS ;
  55.  
  56. * Update the topology
  57. * *******************
  58.  
  59. REPE loop0 maxit0 ;
  60. SI ((((l2 - l1) / (l1 + l2)) > crit0) ET (l2 > l2min)) ;
  61. lmid0 = 0.5 * (l2 + l1) ;
  62. Be0 = dc0 * (-1.0 / lmid0) ;
  63. * Negative values does not only happen for compliant
  64. * mechanism synthesis but also for elastic strain energy
  65. * minimization with quadratic elements
  66. **** SI mcn0 ;
  67. Be0 = BORN Be0 'SCAL' 'MINI' bmin0 ;
  68. **** FINS ;
  69. x0 = xOld0 * (Be0**d0) ;
  70. SI qbool0 ;
  71. x0 = x0**q0 ;
  72. FINS ;
  73. * Bound x0 (void0<x0<1 and Abs(x0-xOld0)<move0)
  74. mask0 = x0 MASQ 'INFE' xOldP0 ;
  75. x0 = (x0 * mask0) - (xOldP0 * (mask0 - un1)) ;
  76. x0 = BORN x0 'SCAL' 'MAXI' 1.0 ;
  77. mask0 = x0 MASQ 'SUPE' xOldM0 ;
  78. x0 = (x0 * mask0) - (xOldM0 * (mask0 - un1)) ;
  79. x0 = BORN x0 'SCAL' 'MINI' void0 ;
  80. * New bound of the Lagrange multiplier
  81. SI ((INTG x0 mod1 mat1) > v1) ;
  82. l1 = lmid0 ;
  83. SINO ;
  84. l2 = lmid0 ;
  85. FINS ;
  86. SINO ;
  87. QUIT loop0 ;
  88. FINS ;
  89. FIN loop0 ;
  90.  
  91. * Save the new topology
  92. wtab0.'TOPOLOGIE' = x0 ;
  93.  
  94. FINP ;
  95.  
  96.  
  97.  

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