Télécharger toporeso.procedur

Retour à la liste

Numérotation des lignes :

  1. * TOPORESO PROCEDUR FD218221 25/12/18 21:15:13 12429
  2.  
  3. ************************************************************************
  4. ** Procedure called by TOPOPTIM for solving the finite element
  5. ** problem(s)
  6. **
  7. ** Author:
  8. ** Guenhael Le Quilliec (LaMe - Polytech Tours)
  9. **
  10. ** Version:
  11. ** 3.0 2025/11/20 Made compatible with TOPOPTIM V4.0
  12. ** 2.0 2021/04/22 Made compatible with Cast3M-2020
  13. ** for linear thermo-mechanical resolution
  14. ** 1.0 2021/04/15 Initial version
  15. ************************************************************************
  16.  
  17. DEBP TOPORESO tab*'TABLE' ;
  18.  
  19. * Input data
  20. * **********
  21.  
  22. Wtab = tab.'WTABLE' ;
  23. Ltab = Wtab.'LOGIQUE' ;
  24.  
  25. Lmcn = Ltab.'MECANISME' ;
  26. mshA = Wtab.'MAILLAGE_A' ;
  27.  
  28. modA = VIDE 'MMODEL' ;
  29. ZmatA = VIDE 'MCHAML' ;
  30. ldg = Wtab.'CHARGEMENT' ;
  31. SI Ltab.'MECANIQUE' ;
  32. modMA = Wtab.'MECANIQUE'.'MODELE_A' ;
  33. ZmatMA = Wtab.'MECANIQUE'.'CARACTERISTIQUES_Z_A' ;
  34. bdcM = Wtab.'MECANIQUE'.'BLOCAGES' ;
  35. modA = modA ET modMA ;
  36. ZmatA = ZmatA ET ZmatMA ;
  37. ldgM = Wtab.'MECANIQUE'.'CHARGEMENT' ;
  38. FINS ;
  39. SI Ltab.'THERMIQUE' ;
  40. modTA = Wtab.'THERMIQUE'.'MODELE_A' ;
  41. ZmatTA = Wtab.'THERMIQUE'.'CARACTERISTIQUES_Z_A' ;
  42. bdcT = Wtab.'THERMIQUE'.'BLOCAGES' ;
  43. modA = modA ET modTA ;
  44. ZmatA = ZmatA ET ZmatTA ;
  45. ldgT = Wtab.'THERMIQUE'.'CHARGEMENT' ;
  46. FINS ;
  47. SI Ltab.'CONTACT' ;
  48. modA = modA ET Wtab.'CONTACT'.'MODELE_A' ;
  49. ZmatA = ZmatA ET Wtab.'CONTACT'.'CARACTERISTIQUES_A' ;
  50. FINS ;
  51.  
  52. * Solve FE problem(s)
  53. * *******************
  54.  
  55. SI Ltab.'CAS_MULTIPLES' ;
  56. casnbr = Wtab.'NB_CAS' ;
  57. resA = TABL ;
  58. REPE itr casnbr ;
  59. resA.&itr = COPI Wtab.'RESOLUTION_B' ;
  60. SI Ltab.'MECANIQUE' ;
  61. resA.&itr.'BLOCAGES_MECANIQUES' = bdcM.&itr ;
  62. FINS ;
  63. SI Ltab.'THERMIQUE' ;
  64. resA.&itr.'BLOCAGES_THERMIQUES' = bdcT.&itr ;
  65. FINS ;
  66. resA.&itr.'CHARGEMENT' = ldg.&itr ;
  67. resA.&itr.'MODELE' = modA ;
  68. resA.&itr.'CARACTERISTIQUES' = ZmatA ;
  69. SI Lmcn ;
  70. resA.&itr.'MECANISME_ENTREE' = TABL ;
  71. resA.&itr.'MECANISME_SORTIE' = TABL ;
  72. FINS ;
  73. MENA 'OBLI' ;
  74. SI Ltab.'PASAPAS' ;
  75. resA.&itr.'TEMPS_SAUVES' = Wtab.'TEMPS_SAUVES' ;
  76. SI Lmcn ;
  77. resA.&itr.'MECANISME_ENTREE' = COPI resA.&itr ;
  78. resA.&itr.'MECANISME_ENTREE'.'RIGIDITE_CONSTANTE' = Wtab.'RESSORTS'.&itr ;
  79. resA.&itr.'MECANISME_SORTIE' = COPI resA.&itr.'MECANISME_ENTREE' ;
  80. resA.&itr.'MECANISME_SORTIE'.'CHARGEMENT' = Wtab.'MECANISME'.&itr ;
  81. SAUT 1 'LIGN' ;
  82. MESS '+--------------------------------------+' ;
  83. MESS '| |' ;
  84. MESS '| TOPOPTIM : Progression |' ;
  85. MESS '| |' ;
  86. MESS '| Resolution Mecanisme Entree |' ;
  87. MESS (CHAI '|' 'Cycle'*21 Wtab.'CYCLE'/23 '|'*40) ;
  88. MESS (CHAI '|' 'Cas de charge'*23 ' ' &itr ' /' ' ' casnbr '|'*40) ;
  89. MESS '| |' ;
  90. MESS '+--------------------------------------+' ;
  91. SAUT 1 'LIGN' ;
  92. PASAPAS (resA.&itr.'MECANISME_ENTREE') ;
  93. * Index of last saved data
  94. tmp = INDE resA.&itr.'MECANISME_ENTREE'.'TEMPS' ;
  95. resA.&itr.'MECANISME_ENTREE'.'MAX_ID' = tmp.(DIME tmp) ;
  96. SAUT 1 'LIGN' ;
  97. MESS '+--------------------------------------+' ;
  98. MESS '| |' ;
  99. MESS '| TOPOPTIM : Progression |' ;
  100. MESS '| |' ;
  101. MESS '| Resolution Mecanisme Sortie |' ;
  102. MESS (CHAI '|' 'Cycle'*21 Wtab.'CYCLE'/23 '|'*40) ;
  103. MESS (CHAI '|' 'Cas de charge'*23 ' ' &itr ' /' ' ' casnbr '|'*40) ;
  104. MESS '| |' ;
  105. MESS '+--------------------------------------+' ;
  106. SAUT 1 'LIGN' ;
  107. PASAPAS (resA.&itr.'MECANISME_SORTIE') ;
  108. * Index of last saved data
  109. tmp = INDE resA.&itr.'MECANISME_SORTIE'.'TEMPS' ;
  110. resA.&itr.'MECANISME_SORTIE'.'MAX_ID' = tmp.(DIME tmp) ;
  111. FINS ;
  112. SI (((NON Lmcn) ET Ltab.'MECANIQUE') OU
  113. (Lmcn ET (tab.'MECANISME_ZERO_SPRING' OU
  114. ((ABS tab.'POIDS_ENERGIE_DEFO') > tab.'PRECISION')))) ;
  115. SAUT 1 'LIGN' ;
  116. MESS '+--------------------------------------+' ;
  117. MESS '| |' ;
  118. MESS '| TOPOPTIM : Progression |' ;
  119. MESS '| |' ;
  120. SI Lmcn ;
  121. MESS '| Resolution Sans Ressorts |';
  122. FINS ;
  123. MESS (CHAI '|' 'Cycle'*21 Wtab.'CYCLE'/23 '|'*40) ;
  124. MESS (CHAI '|' 'Cas de charge'*23 ' ' &itr ' /' ' ' casnbr '|'*40) ;
  125. MESS '| |' ;
  126. MESS '+--------------------------------------+' ;
  127. SAUT 1 'LIGN' ;
  128. PASAPAS (resA.&itr) ;
  129. * Index of last saved data
  130. tmp = INDE resA.&itr.'TEMPS' ;
  131. resA.&itr.'MAX_ID' = tmp.(DIME tmp) ;
  132. FINS ;
  133. SINO ;
  134. MESS (CHAI ' - Resolution du cas de charge' ' ' &itr ' /' ' ' casnbr) ;
  135. SI Ltab.'MECANIQUE' ;
  136. tmp = (RIGI modMA ZmatMA) ET bdcM.&itr ;
  137. SI Lmcn ;
  138. tmp1 = tmp ET Wtab.'RESSORTS'.&itr ;
  139. tmp2 = RESO tmp1 ldgM.&itr ;
  140. resA.&itr.'MECANISME_ENTREE'.'DEPLACEMENTS'= tmp2 ;
  141. resA.&itr.'MECANISME_ENTREE'.'CONTRAINTES' = SIGM 'LINE' modMA ZmatMA tmp2 ;
  142. resA.&itr.'MECANISME_ENTREE'.'DEFORMATIONS'= EPSI 'LINE' modMA ZmatMA tmp2 ;
  143. tmp2 = RESO tmp1 Wtab.'MECANISME'.&itr ;
  144. resA.&itr.'MECANISME_SORTIE'.'DEPLACEMENTS'= tmp2 ;
  145. resA.&itr.'MECANISME_SORTIE'.'CONTRAINTES' = SIGM 'LINE' modMA ZmatMA tmp2 ;
  146. resA.&itr.'MECANISME_SORTIE'.'DEFORMATIONS'= EPSI 'LINE' modMA ZmatMA tmp2 ;
  147. FINS ;
  148. SI ((NON Lmcn) OU (Lmcn ET (tab.'MECANISME_ZERO_SPRING' OU
  149. ((ABS tab.'POIDS_ENERGIE_DEFO') > tab.'PRECISION')))) ;
  150. tmp = RESO tmp ldgM.&itr ;
  151. resA.&itr.'DEPLACEMENTS' = tmp ;
  152. resA.&itr.'CONTRAINTES' = SIGM 'LINE' modMA ZmatMA tmp ;
  153. resA.&itr.'DEFORMATIONS' = EPSI 'LINE' modMA ZmatMA tmp ;
  154. FINS ;
  155. FINS ;
  156. SI Ltab.'THERMIQUE' ;
  157. resA.&itr.'TEMPERATURES' = RESO ((COND modTA ZmatTA) ET bdcT.&itr)
  158. ldgT.&itr ;
  159. FINS ;
  160. FINS ;
  161. FIN itr ;
  162. SI (NON Ltab.'PASAPAS') ;
  163. SAUT 1 'LIGN' ;
  164. FINS ;
  165. SINO ;
  166. resA = COPI Wtab.'RESOLUTION_B' ;
  167. resA.'MODELE' = modA ;
  168. resA.'CARACTERISTIQUES' = ZmatA ;
  169. SI Lmcn ;
  170. resA.'MECANISME_ENTREE' = TABL ;
  171. resA.'MECANISME_SORTIE' = TABL ;
  172. FINS ;
  173. MENA 'OBLI' ;
  174. SI Ltab.'PASAPAS' ;
  175. resA.'TEMPS_SAUVES' = Wtab.'TEMPS_SAUVES' ;
  176. SI Lmcn ;
  177. resA.'MECANISME_ENTREE' = COPI resA ;
  178. resA.'MECANISME_ENTREE'.'RIGIDITE_CONSTANTE' = Wtab.'RESSORTS' ;
  179. resA.'MECANISME_SORTIE' = COPI resA.'MECANISME_ENTREE' ;
  180. resA.'MECANISME_SORTIE'.'CHARGEMENT' = Wtab.'MECANISME' ;
  181. SAUT 1 'LIGN' ;
  182. MESS '+--------------------------------------+' ;
  183. MESS '| |' ;
  184. MESS '| TOPOPTIM : Progression |' ;
  185. MESS '| |' ;
  186. MESS '| Resolution Mecanisme Entree |' ;
  187. MESS '| |' ;
  188. MESS '+--------------------------------------+' ;
  189. SAUT 1 'LIGN' ;
  190. PASAPAS (resA.'MECANISME_ENTREE') ;
  191. * Index of last saved data
  192. tmp = INDE resA.'MECANISME_ENTREE'.'TEMPS' ;
  193. resA.'MECANISME_ENTREE'.'MAX_ID' = tmp.(DIME tmp) ;
  194. SAUT 1 'LIGN' ;
  195. MESS '+--------------------------------------+' ;
  196. MESS '| |' ;
  197. MESS '| TOPOPTIM : Progression |' ;
  198. MESS '| |' ;
  199. MESS '| Resolution Mecanisme Sortie |' ;
  200. MESS '| |' ;
  201. MESS '+--------------------------------------+' ;
  202. SAUT 1 'LIGN' ;
  203. PASAPAS (resA.'MECANISME_SORTIE') ;
  204. * Index of last saved data
  205. tmp = INDE resA.'MECANISME_SORTIE'.'TEMPS' ;
  206. resA.'MECANISME_SORTIE'.'MAX_ID' = tmp.(DIME tmp) ;
  207. FINS ;
  208. SI (((NON Lmcn) ET Ltab.'MECANIQUE') OU
  209. (Lmcn ET (tab.'MECANISME_ZERO_SPRING' OU
  210. ((ABS tab.'POIDS_ENERGIE_DEFO') > tab.'PRECISION')))) ;
  211. SI Lmcn ;
  212. SAUT 1 'LIGN' ;
  213. MESS '+--------------------------------------+' ;
  214. MESS '| |' ;
  215. MESS '| TOPOPTIM : Progression |' ;
  216. MESS '| |' ;
  217. MESS '| Resolution Sans Ressorts |' ;
  218. MESS '| |' ;
  219. MESS '+--------------------------------------+' ;
  220. SAUT 1 'LIGN' ;
  221. FINS ;
  222. PASAPAS resA ;
  223. * Index of last saved data
  224. tmp = INDE resA.'TEMPS' ;
  225. resA.'MAX_ID' = tmp.(DIME tmp) ;
  226. FINS ;
  227. SINO ;
  228. SI Ltab.'MECANIQUE' ;
  229. tmp = (RIGI modMA ZmatMA) ET bdcM ;
  230. SI Lmcn ;
  231. tmp1 = tmp ET Wtab.'RESSORTS' ;
  232. tmp2 = RESO tmp1 ldgM ;
  233. resA.'MECANISME_ENTREE'.'DEPLACEMENTS' = tmp2 ;
  234. resA.'MECANISME_ENTREE'.'CONTRAINTES' = SIGM 'LINE' modMA ZmatMA tmp2 ;
  235. resA.'MECANISME_ENTREE'.'DEFORMATIONS' = EPSI 'LINE' modMA ZmatMA tmp2 ;
  236. tmp2 = RESO tmp1 Wtab.'MECANISME' ;
  237. resA.'MECANISME_SORTIE'.'DEPLACEMENTS' = tmp2 ;
  238. resA.'MECANISME_SORTIE'.'CONTRAINTES' = SIGM 'LINE' modMA ZmatMA tmp2 ;
  239. resA.'MECANISME_SORTIE'.'DEFORMATIONS' = EPSI 'LINE' modMA ZmatMA tmp2 ;
  240. FINS ;
  241. SI ((NON Lmcn) OU (Lmcn ET (tab.'MECANISME_ZERO_SPRING' OU
  242. ((ABS tab.'POIDS_ENERGIE_DEFO') > tab.'PRECISION')))) ;
  243. tmp = RESO tmp ldgM ;
  244. resA.'DEPLACEMENTS' = tmp ;
  245. resA.'CONTRAINTES' = SIGM 'LINE' modMA ZmatMA tmp ;
  246. resA.'DEFORMATIONS' = EPSI 'LINE' modMA ZmatMA tmp ;
  247. FINS ;
  248. FINS ;
  249. SI Ltab.'THERMIQUE' ;
  250. resA.'TEMPERATURES' = RESO ((COND modTA ZmatTA) ET bdcT) ldgT ;
  251. FINS ;
  252. FINS ;
  253. FINS ;
  254.  
  255. * Output data
  256. * ***********
  257.  
  258. * Save the resolution table
  259. Wtab.'RESOLUTION_A' = resA ;
  260.  
  261. FINP ;
  262.  
  263.  
  264.  

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