Télécharger topopena.procedur

Retour à la liste

Numérotation des lignes :

  1. * TOPOPENA PROCEDUR FD218221 25/12/18 21:15:09 12429
  2.  
  3. ************************************************************************
  4. ** Procedure called by TOPOPTIM to calculate the penalized physical
  5. ** density field.
  6. **
  7. ** Author:
  8. ** Guenhael Le Quilliec (LaMe - Polytech Tours)
  9. **
  10. ** Version:
  11. ** 4.0 2025/11/10 Renamed TOPOPENA, made compatible with
  12. ** TOPOPTIM V4.0, and return derivatives (only
  13. ** on D). RAMP penalty function is now available.
  14. ** 3.0 2025/11/10 Densities are now given for the entire mesh,
  15. ** not only D.
  16. ** 2.0 2021/04/22 Fixing an issue when calculating MAX_Z with both
  17. ** thermal and mechanical densities.
  18. ** 1.0 2021/04/15 Initial version of TOPODENS
  19. ************************************************************************
  20.  
  21. DEBP TOPOPENA tab*'TABLE' ;
  22.  
  23. * General input data
  24. * ******************
  25.  
  26. Wtab = tab.'WTABLE' ;
  27. Ltab = Wtab.'LOGIQUE' ;
  28.  
  29. * Mechanical model
  30. * ****************
  31.  
  32. SI Ltab.'MECANIQUE' ;
  33. ZMD dZMD = TOPOFONC tab.'PENALISATION' 'VALEUR' 'DERIVEE'
  34. Wtab.'Y_D' Wtab.'PENALISATION_P'
  35. tab.'RAPPORT_RAIDEURS_MECANIQUES' 1.0 ;
  36. SI Ltab.'ZONE_FIGEE' ;
  37. * Combine the Z field on D with the unitary field on F
  38. * This creates a 2-zone field merged into a single zone
  39. * field, preserving the original element order using REDU
  40. ZMB = REDU (ZMD ET Wtab.'UNIT_F') Wtab.'MODELE_B' ;
  41. SINO ;
  42. ZMB = ZMD ;
  43. FINS ;
  44. maxZB = ZMB ;
  45. maxZD = ZMD ;
  46. Wtab.'MECANIQUE'.'Z_B' = ZMB ;
  47. Wtab.'MECANIQUE'.'Z_D' = ZMD ;
  48. Wtab.'MECANIQUE'.'SENSIBILITE_Z_D' = dZMD ;
  49. Wtab.'MAX_Z_B' = maxZB ;
  50. Wtab.'MAX_Z_D' = maxZD ;
  51. FINS ;
  52.  
  53. * Thermal model
  54. * *************
  55.  
  56. SI Ltab.'THERMIQUE' ;
  57. ZTD dZTD = TOPOFONC tab.'PENALISATION' 'VALEUR' 'DERIVEE'
  58. Wtab.'Y_D' Wtab.'PENALISATION_P'
  59. tab.'RAPPORT_RAIDEURS_THERMIQUES' 1.0 ;
  60. SI Ltab.'MECANIQUE' ;
  61. ctrmshD = Wtab.'MAILLAGE_GRAVITE_D' ;
  62. tmp1 = MANU 'CHPO' ctrmshD 'SCAL' (EXTR ZTD 'VALE' 'SCAL') ;
  63. tmp2 = MANU 'CHPO' ctrmshD 'SCAL' (EXTR ZMD 'VALE' 'SCAL') ;
  64. tmp2 = MAXI tmp1 tmp2 ;
  65. tmp2 = EXTR tmp2 'VALE' ctrmshD ;
  66. maxZD = MANU 'CHML' Wtab.'MECANIQUE'.'MODELE_D'
  67. 'REPA' 'SCAL' tmp2 'TYPE' 'SCALAIRE' 'GRAVITE' ;
  68. * Switch the model of the element field ZTD from Mecha to Therm
  69. * ZTD = TOPOCHAN ZTD Wtab.'THERMIQUE'.'MODELE_D' ctrmshD ;
  70. ZTD = MANU 'CHML' Wtab.'THERMIQUE'.'MODELE_D'
  71. 'REPA' 'SCAL' (EXTR tmp1 'VALE' ctrmshD)
  72. 'TYPE' 'SCALAIRE' 'GRAVITE' ;
  73. SI Ltab.'ZONE_FIGEE' ;
  74. * Combine the Z field on D with the unitary field on F
  75. * This creates a 2-zone field merged into a single zone
  76. * field, preserving the original element order using REDU
  77. ZTB = REDU (ZTD ET Wtab.'UNIT_F') Wtab.'MODELE_B' ;
  78. * Same procedure applied to maxZ
  79. maxZB = REDU (maxZD ET Wtab.'UNIT_F') Wtab.'MODELE_B' ;
  80. SINO ;
  81. ZTB = ZTD ;
  82. maxZB = maxZD ;
  83. FINS ;
  84. SINO ;
  85. SI Ltab.'ZONE_FIGEE' ;
  86. * Combine the Z field on D with the unitary field on F
  87. * This creates a 2-zone field merged into a single zone
  88. * field, preserving the original element order using REDU
  89. ZTB = REDU (ZTD ET Wtab.'UNIT_F') Wtab.'MODELE_B' ;
  90. SINO ;
  91. ZTB = ZTD ;
  92. FINS ;
  93. maxZB = ZTB ;
  94. maxZD = ZTD ;
  95. FINS ;
  96. Wtab.'THERMIQUE'.'Z_B' = ZTB ;
  97. Wtab.'THERMIQUE'.'Z_D' = ZTD ;
  98. Wtab.'THERMIQUE'.'SENSIBILITE_Z_D' = dZTD ;
  99. Wtab.'MAX_Z_B' = maxZB ;
  100. Wtab.'MAX_Z_D' = maxZD ;
  101. FINS ;
  102.  
  103. FINP ;
  104.  
  105.  
  106.  

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