Télécharger toporeso.procedur

Retour à la liste

Numérotation des lignes :

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

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