Télécharger topoacti.procedur

Retour à la liste

Numérotation des lignes :

  1. * TOPOACTI PROCEDUR FD218221 25/12/18 21:15:01 12429
  2.  
  3. ************************************************************************
  4. ** Procedure called by TOPOPTIM to generate data on the active zone (A)
  5. ** and its intersection (I) with the design zone (D), including:
  6. ** - meshes;
  7. ** - models;
  8. ** - penalized physical densities (Z);
  9. ** - sensitivities of the penalized physical densities;
  10. ** - (full density) material;
  11. ** - penalized material;
  12. ** - contact mesh, contact model, and contact characteristics.
  13. **
  14. ** Author:
  15. ** Guenhael Le Quilliec (LaMe - Polytech Tours)
  16. **
  17. ** Version:
  18. ** 2.0 2025/11/21 Various updates and improvements for TOPOPTIM V4.0.
  19. ** 1.0 2021/04/15 Initial version
  20. ************************************************************************
  21.  
  22. DEBP TOPOACTI tab*'TABLE' ;
  23.  
  24. * Input data
  25. * **********
  26.  
  27. Wtab = tab.'WTABLE' ;
  28. Ltab = Wtab.'LOGIQUE' ;
  29.  
  30. mshB = Wtab.'MAILLAGE_B' ;
  31. mshD = Wtab.'MAILLAGE_D' ;
  32.  
  33. oldmshA = Wtab.'MAILLAGE_A' ;
  34. oldmshI = Wtab.'MAILLAGE_I' ;
  35.  
  36. LF = Ltab.'ZONE_FIGEE' ;
  37.  
  38. * Active mesh (A) and its intersection (I) with the design zone (D)
  39. * *****************************************************************
  40.  
  41. LIeqlD = VRAI ;
  42. LAeqlB = VRAI ;
  43. SI (tab.'SEUIL_ELEMENTS_ACTIFS' > 0.0) ;
  44. newmshA = Wtab.'MAX_Z_B' ELEM 'SUPE' tab.'SEUIL_ELEMENTS_ACTIFS' ;
  45. * Detect if the active mesh has changed
  46. LnewmshA = NEG (NBEL (DIFF oldmshA newmshA)) 0 ;
  47. SI (NON LnewmshA) ;
  48. newmshA = oldmshA ;
  49. FINS ;
  50. LAeqlB = EGA (NBEL newmshA) (NBEL mshB) ;
  51. * All elements are active
  52. SI LAeqlB ;
  53. LIeqlA = NON LF ;
  54. mshA = mshB ;
  55. mshI = mshD ;
  56. * Some elements are inactive
  57. SINO ;
  58. mshA = newmshA ;
  59. LIeqlD = FAUX ;
  60. SI LF ;
  61. LIeqlA = FAUX ;
  62. SI (NON LnewmshA) ;
  63. mshI = oldmshI ;
  64. SINO ;
  65. mshI = INTE mshA mshD ;
  66. FINS ;
  67. SINO ;
  68. LIeqlA = VRAI ;
  69. mshI = mshA ;
  70. FINS ;
  71. FINS ;
  72. SINO ;
  73. LIeqlA = NON LF ;
  74. mshA = mshB ;
  75. mshI = mshD ;
  76. * Detect if the active mesh has changed
  77. LnewmshA = NEG oldmshA mshA ;
  78. FINS ;
  79. Wtab.'MAILLAGE_A' = mshA ;
  80. Wtab.'MAILLAGE_I' = mshI ;
  81.  
  82. * Active & intersection models
  83. * ****************************
  84.  
  85. SI Ltab.'MECANIQUE' ;
  86. SI LnewmshA ;
  87. SI LAeqlB ;
  88. modMA = Wtab.'MECANIQUE'.'MODELE_B' ;
  89. SINO ;
  90. modMA = REDU Wtab.'MECANIQUE'.'MODELE_B' mshA ;
  91. FINS ;
  92. SI LIeqlD ;
  93. modMI = Wtab.'MECANIQUE'.'MODELE_D' ;
  94. SINO ;
  95. SI LIeqlA ;
  96. modMI = modMA ;
  97. SINO ;
  98. modMI = REDU modMA mshI ;
  99. FINS ;
  100. FINS ;
  101. Wtab.'MECANIQUE'.'MODELE_A' = modMA ;
  102. Wtab.'MECANIQUE'.'MODELE_I' = modMI ;
  103. SINO ;
  104. modMA = Wtab.'MECANIQUE'.'MODELE_A' ;
  105. modMI = Wtab.'MECANIQUE'.'MODELE_I' ;
  106. FINS ;
  107. FINS ;
  108.  
  109. SI Ltab.'THERMIQUE' ;
  110. SI LnewmshA ;
  111. SI LAeqlB ;
  112. modTA = Wtab.'THERMIQUE'.'MODELE_B' ;
  113. SINO ;
  114. modTA = REDU Wtab.'THERMIQUE'.'MODELE_B' mshA ;
  115. FINS ;
  116. SI LIeqlD ;
  117. modTI = Wtab.'THERMIQUE'.'MODELE_D' ;
  118. SINO ;
  119. SI LIeqlA ;
  120. modTI = modTA ;
  121. SINO ;
  122. modTI = REDU modTA mshI ;
  123. FINS ;
  124. FINS ;
  125. Wtab.'THERMIQUE'.'MODELE_A' = modTA ;
  126. Wtab.'THERMIQUE'.'MODELE_I' = modTI ;
  127. SINO ;
  128. modTA = Wtab.'THERMIQUE'.'MODELE_A' ;
  129. modTI = Wtab.'THERMIQUE'.'MODELE_I' ;
  130. FINS ;
  131. FINS ;
  132.  
  133. * Active & intersection penalized physical density
  134. * ************************************************
  135.  
  136. SI Ltab.'MECANIQUE' ;
  137. SI LAeqlB ;
  138. ZMA = Wtab.'MECANIQUE'.'Z_B' ;
  139. SINO ;
  140. ZMA = REDU Wtab.'MECANIQUE'.'Z_B' mshA ;
  141. FINS ;
  142. SI LIeqlD ;
  143. ZMI = Wtab.'MECANIQUE'.'Z_D' ;
  144. SINO ;
  145. SI LIeqlA ;
  146. ZMI = ZMA ;
  147. SINO ;
  148. ZMI = REDU ZMA mshI ;
  149. FINS ;
  150. FINS ;
  151. Wtab.'MECANIQUE'.'Z_A' = ZMA ;
  152. Wtab.'MECANIQUE'.'Z_I' = ZMI ;
  153. FINS ;
  154. SI Ltab.'THERMIQUE' ;
  155. SI LAeqlB ;
  156. ZTA = Wtab.'THERMIQUE'.'Z_B' ;
  157. SINO ;
  158. ZTA = REDU Wtab.'THERMIQUE'.'Z_B' mshA ;
  159. FINS ;
  160. SI LIeqlD ;
  161. ZTI = Wtab.'THERMIQUE'.'Z_D' ;
  162. SINO ;
  163. SI LIeqlA ;
  164. ZTI = ZTA ;
  165. SINO ;
  166. ZTI = REDU ZTA mshI ;
  167. FINS ;
  168. FINS ;
  169. Wtab.'THERMIQUE'.'Z_A' = ZTA ;
  170. Wtab.'THERMIQUE'.'Z_I' = ZTI ;
  171. FINS ;
  172.  
  173. * Active & intersection sensitivities of the penalized physical density
  174. * *********************************************************************
  175.  
  176. SI Ltab.'MECANIQUE' ;
  177. * SI LAeqlB ;
  178. * dZMA = Wtab.'MECANIQUE'.'SENSIBILITE_Z_B' ;
  179. * SINO ;
  180. * dZMA = REDU Wtab.'MECANIQUE'.'SENSIBILITE_Z_B' mshA ;
  181. * FINS ;
  182. SI LIeqlD ;
  183. dZMI = Wtab.'MECANIQUE'.'SENSIBILITE_Z_D' ;
  184. SINO ;
  185. * SI LIeqlA ;
  186. * dZMI = dZMA ;
  187. * SINO ;
  188. * dZMI = REDU dZMA mshI ;
  189. dZMI = REDU Wtab.'MECANIQUE'.'SENSIBILITE_Z_D' mshI ;
  190. * FINS ;
  191. FINS ;
  192. * Wtab.'MECANIQUE'.'SENSIBILITE_Z_A' = dZMA ;
  193. Wtab.'MECANIQUE'.'SENSIBILITE_Z_I' = dZMI ;
  194. FINS ;
  195. SI Ltab.'THERMIQUE' ;
  196. * SI LAeqlB ;
  197. * dZTA = Wtab.'THERMIQUE'.'SENSIBILITE_Z_B' ;
  198. * SINO ;
  199. * dZTA = REDU Wtab.'THERMIQUE'.'SENSIBILITE_Z_B' mshA ;
  200. * FINS ;
  201. SI LIeqlD ;
  202. dZTI = Wtab.'THERMIQUE'.'SENSIBILITE_Z_D' ;
  203. SINO ;
  204. * SI LIeqlA ;
  205. * dZTI = dZTA ;
  206. * SINO ;
  207. * dZTI = REDU dZTA mshI ;
  208. dZTI = REDU Wtab.'THERMIQUE'.'SENSIBILITE_Z_D' mshI ;
  209. * FINS ;
  210. FINS ;
  211. * Wtab.'THERMIQUE'.'SENSIBILITE_Z_A' = dZTA ;
  212. Wtab.'THERMIQUE'.'SENSIBILITE_Z_I' = dZTI ;
  213. FINS ;
  214.  
  215. * Active & intersection material
  216. * ******************************
  217.  
  218. SI Ltab.'MECANIQUE' ;
  219. SI LnewmshA ;
  220. SI LAeqlB ;
  221. matMA = Wtab.'MECANIQUE'.'CARACTERISTIQUES_B' ;
  222. SINO ;
  223. matMA = REDU Wtab.'MECANIQUE'.'CARACTERISTIQUES_B' modMA ;
  224. FINS ;
  225. SI LIeqlD ;
  226. matMI = Wtab.'MECANIQUE'.'CARACTERISTIQUES_D' ;
  227. SINO ;
  228. SI LIeqlA ;
  229. matMI = matMA ;
  230. SINO ;
  231. matMI = REDU matMA modMI ;
  232. FINS ;
  233. FINS ;
  234. Wtab.'MECANIQUE'.'CARACTERISTIQUES_A' = matMA ;
  235. Wtab.'MECANIQUE'.'CARACTERISTIQUES_I' = matMI ;
  236. SINO ;
  237. matMA = Wtab.'MECANIQUE'.'CARACTERISTIQUES_A' ;
  238. FINS ;
  239. FINS ;
  240.  
  241. SI Ltab.'THERMIQUE' ;
  242. SI LnewmshA ;
  243. SI LAeqlB ;
  244. matTA = Wtab.'THERMIQUE'.'CARACTERISTIQUES_B' ;
  245. SINO ;
  246. matTA = REDU Wtab.'THERMIQUE'.'CARACTERISTIQUES_B' modTA ;
  247. FINS ;
  248. SI LIeqlD ;
  249. matTI = Wtab.'THERMIQUE'.'CARACTERISTIQUES_D' ;
  250. SINO ;
  251. SI LIeqlA ;
  252. matTI = matTA ;
  253. SINO ;
  254. matTI = REDU matTA modTI ;
  255. FINS ;
  256. FINS ;
  257. Wtab.'THERMIQUE'.'CARACTERISTIQUES_A' = matTA ;
  258. Wtab.'THERMIQUE'.'CARACTERISTIQUES_I' = matTI ;
  259. SINO ;
  260. matTA = Wtab.'THERMIQUE'.'CARACTERISTIQUES_A' ;
  261. FINS ;
  262. FINS ;
  263.  
  264. * Active & intersection penalized material
  265. * ****************************************
  266.  
  267. SI Ltab.'MECANIQUE' ;
  268. ZmatMA = TOPOMATE modMA matMA ZMA tab.'COMPOSANTES' ;
  269. SI LIeqlA ;
  270. ZmatMI = ZmatMA ;
  271. SINO ;
  272. ZmatMI = REDU ZmatMA mshI ;
  273. FINS ;
  274. Wtab.'MECANIQUE'.'CARACTERISTIQUES_Z_A' = ZmatMA ;
  275. Wtab.'MECANIQUE'.'CARACTERISTIQUES_Z_I' = ZmatMI ;
  276. FINS ;
  277. SI Ltab.'THERMIQUE' ;
  278. ZmatTA = TOPOMATE modTA matTA ZTA tab.'COMPOSANTES' ;
  279. SI LIeqlA ;
  280. ZmatTI = ZmatTA ;
  281. SINO ;
  282. ZmatTI = REDU ZmatTA mshI ;
  283. FINS ;
  284. Wtab.'THERMIQUE'.'CARACTERISTIQUES_Z_A' = ZmatTA ;
  285. Wtab.'THERMIQUE'.'CARACTERISTIQUES_Z_I' = ZmatTI ;
  286. FINS ;
  287.  
  288. * Active contact
  289. * **************
  290.  
  291. SI LnewmshA ;
  292. SI Ltab.'CONTACT' ;
  293. SI (NON LAeqlB) ;
  294. tmp = DIFF mshB mshA ;
  295. tmp = (MANU 'CHPO' tmp 1 'SCAL' 1.0) POIN 'SUPE' 0.0 ;
  296. tmp = Wtab.'CONTACT'.'MAILLAGE_B' ELEM 'APPU' 'LARG' tmp ;
  297. mshcntA = DIFF Wtab.'CONTACT'.'MAILLAGE_B' tmp ;
  298. SINO ;
  299. mshcntA = Wtab.'CONTACT'.'MAILLAGE_B' ;
  300. FINS ;
  301. modcntA = REDU Wtab.'CONTACT'.'MODELE_B' mshcntA ;
  302. matcntA = REDU Wtab.'CONTACT'.'CARACTERISTIQUES_B' modcntA ;
  303. Wtab.'CONTACT'.'MAILLAGE_A' = mshcntA ;
  304. Wtab.'CONTACT'.'MODELE_A' = modcntA ;
  305. Wtab.'CONTACT'.'CARACTERISTIQUES_A' = matcntA ;
  306. FINS ;
  307. FINS ;
  308.  
  309. * Update number of active elements
  310. * ********************************
  311. SI LnewmshA ;
  312. Wtab.'NB_ACTIVE_ELEM' = NBEL mshA ;
  313. FINS ;
  314.  
  315. FINP ;
  316.  
  317.  
  318.  

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