Télécharger pas_modl.procedur

Retour à la liste

Numérotation des lignes :

  1. * PAS_MODL PROCEDUR MB234859 24/02/20 21:15:03 11843
  2. DEBPROC PAS_MODL TPASA1*'TABLE' ;
  3. *
  4. *----------------------- Objet de la procedure ------------------------*
  5. *
  6. * Initialise ou met a jour les indices relatifs aux modeles de
  7. * la table WTABLE de PASAPAS, ainsi que les caracteristiques
  8. * associees (MAT_...).
  9. *
  10. * Pour plus de details, voir la notice.
  11. *
  12. *--------------------------- Initialisations --------------------------*
  13.  
  14. wtab = TPASA1.'WTABLE' ;
  15.  
  16. * Modele global :
  17. si (exis wtab 'MODELE') ;
  18. mod0 = wtab.modele ;
  19. sino ;
  20. erreur ' ***** Il manque le MODELE dans Wtable' ;
  21. quit PAS_MODL ;
  22. fins ;
  23.  
  24. * Indice modele_courant :
  25. si (exis wtab 'MODELE_COURANT') ;
  26. si (ega mod0 (wtab.modele_courant)) ;
  27. quit PAS_MODL ;
  28. sino ;
  29. wtab.modele_courant = mod0 ;
  30. fins ;
  31. sino ;
  32. wtab.modele_courant = mod0 ;
  33. fins ;
  34.  
  35. * Caracteristiques :
  36. si (exis wtab 'CARACTERISTIQUES') ;
  37. mat0 = wtab.caracteristiques ;
  38. sino ;
  39. erreur ' ***** Il manque les CARACTERISTIQUES dans Wtable' ;
  40. quit PAS_MODL ;
  41. fins ;
  42.  
  43. *mess '***** Appel a PAS_MODL ' ;
  44.  
  45. *------------------------ Indices pour TRANSNON -----------------------*
  46.  
  47. * Formulation THERMIQUE & THERMOHYDRIQUE :
  48. WTAB.'THE1' = 'EXIS' mod0 'FORM' 'THERMIQUE' ;
  49. WTAB.'THM1' = 'EXIS' mod0 'FORM' 'THERMOHYDRIQUE' ;
  50.  
  51. * FOR_THER = VRAI : on doit resoudre de la thermique/THM
  52. WTAB.'FOR_THER' = WTAB.'THE1' 'OU' WTAB.'THM1' ;
  53.  
  54. 'SI' WTAB.'THE1' ;
  55. WTAB.'MOD_THE' = 'EXTR' mod0 'FORM' 'THERMIQUE';
  56. WTAB.'MAT_THE' = 'REDU' mat0 WTAB.'MOD_THE';
  57. WTAB.'MOD_T' = WTAB.'MOD_THE' ;
  58. WTAB.'MAT_T' = WTAB.'MAT_THE' ;
  59.  
  60. 'SI' WTAB.'THM1' ;
  61. WTAB.'MOD_THM' = 'EXTR' mod0 'FORM' 'THERMOHYDRIQUE' ;
  62. WTAB.'MAT_THM' = 'REDU' mat0 WTAB.'MOD_THM';
  63. WTAB.'MOD_T' = WTAB.'MOD_T' 'ET' WTAB.'MOD_THM' ;
  64. WTAB.'MAT_T' = WTAB.'MAT_T' 'ET' WTAB.'MAT_THM' ;
  65. 'FINSI' ;
  66. WTAB.'MOD_TOT' = WTAB.'MOD_T' ;
  67. WTAB.'MAT_TOT' = WTAB.'MAT_T' ;
  68.  
  69. WTAB.'CONVECTION' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'CONVECTION' ;
  70. 'SI' WTAB.'CONVECTION' ;
  71. WTAB.'MOD_CON' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'CONVECTION';
  72. WTAB.'MAT_CON' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_CON';
  73. 'FINSI';
  74.  
  75. WTAB.'RAYO' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'RAYONNEMENT' ;
  76. 'SI' WTAB.'RAYO' ;
  77. WTAB.'MOD_RAY' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'RAYONNEMENT';
  78. WTAB.'MAT_RAY' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_RAY';
  79. 'FINSI';
  80.  
  81. WTAB.'CONDUCTION' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'CONDUCTION' ;
  82. 'SI' WTAB.'CONDUCTION' ;
  83. WTAB.'MOD_COND' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'CONDUCTION';
  84. WTAB.'MAT_COND' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_COND';
  85. 'FINSI';
  86.  
  87. WTAB.'SOURCE_Q' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'SOURCE' ;
  88. 'SI' WTAB.'SOURCE_Q' ;
  89. WTAB.'MOD_SOQ' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'SOURCE';
  90. WTAB.'MAT_SOQ' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_SOQ';
  91. 'FINSI';
  92.  
  93. 'SINON' ;
  94.  
  95. 'SI' WTAB.'THM1' ;
  96.  
  97. WTAB.'MOD_THM' = 'EXTR' mod0 'FORM' 'THERMOHYDRIQUE';
  98. WTAB.'MAT_THM' = 'REDU' mat0 WTAB.'MOD_THM';
  99. WTAB.'MOD_T' = WTAB.'MOD_THM' ;
  100. WTAB.'MAT_T' = WTAB.'MAT_THM' ;
  101. WTAB.'MOD_TOT' = WTAB.'MOD_T' ;
  102. WTAB.'MAT_TOT' = WTAB.'MAT_T' ;
  103.  
  104. WTAB.'CONVECTION' = 'EXISTE' mod0 'MATE' 'CONVECTION' ;
  105. 'SI' WTAB.'CONVECTION' ;
  106. WTAB.'MOD_CON' = 'EXTR' mod0 'MATE' 'CONVECTION';
  107. WTAB.'MAT_CON' = 'REDU' mat0 WTAB.'MOD_CON';
  108. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_CON';
  109. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_CON';
  110. 'FINSI';
  111.  
  112. WTAB.'RAYO' = 'EXISTE' mod0 'MATE' 'RAYONNEMENT' ;
  113. 'SI' WTAB.'RAYO' ;
  114. WTAB.'MOD_RAY' = 'EXTR' mod0 'MATE' 'RAYONNEMENT';
  115. WTAB.'MAT_RAY' = 'REDU' mat0 WTAB.'MOD_RAY';
  116. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_RAY';
  117. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_RAY';
  118. 'FINSI';
  119.  
  120. WTAB.'CONVECTION' = 'EXISTE' mod0 'MATE' 'CONDUCTION' ;
  121. 'SI' WTAB.'CONVECTION' ;
  122. WTAB.'MOD_COND' = 'EXTR' mod0 'MATE' 'CONDUCTION';
  123. WTAB.'MAT_COND' = 'REDU' mat0 WTAB.'MOD_COND';
  124. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_COND';
  125. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_COND';
  126. 'FINSI';
  127.  
  128. WTAB.'SOURCE_Q' = 'EXISTE' mod0 'MATE' 'SOURCE' ;
  129. 'SI' WTAB.'SOURCE_Q' ;
  130. WTAB.'MOD_SOQ' = 'EXTR' mod0 'MATE' 'SOURCE';
  131. WTAB.'MAT_SOQ' = 'REDU' mat0 WTAB.'MOD_SOQ';
  132. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_SOQ';
  133. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_SOQ';
  134. 'FINSI';
  135.  
  136. 'FINSI';
  137.  
  138. 'FINSI';
  139.  
  140. * Formulation DIFFUSION :
  141. * On ajoute la formulation diffusion a la thermique pour TRANSNON :
  142. WTAB.'FOR_DIFF' = 'EXIS' mod0 'FORM' 'DIFFUSION' ;
  143. 'SI' WTAB.'FOR_DIFF' ;
  144. WTAB.'MOD_DIF' ='EXTR' mod0 'FORM' 'DIFFUSION' ;
  145. WTAB.'MAT_DIF' ='REDU' mat0 WTAB.'MOD_DIF' ;
  146.  
  147. 'SI' WTAB.'THE1' ;
  148. WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' WTAB.'MOD_DIF' ;
  149. WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' WTAB.'MAT_DIF' ;
  150. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ;
  151. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ;
  152.  
  153. 'SINON' ;
  154. WTAB.'MOD_THE' = WTAB.'MOD_DIF' ;
  155. WTAB.'MAT_THE' = WTAB.'MAT_DIF' ;
  156.  
  157. 'SI' WTAB.'THM1' ;
  158. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ;
  159. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ;
  160.  
  161. 'SINON' ;
  162. WTAB.'MOD_TOT' = WTAB.'MOD_DIF' ;
  163. WTAB.'MAT_TOT' = WTAB.'MAT_DIF' ;
  164. 'FINSI' ;
  165. 'FINSI' ;
  166. 'FINSI' ;
  167.  
  168. WTAB.'ADVECTION' = 'EXISTE' mod0 'MATE' 'ADVECTION' ;
  169. 'SI' WTAB.'ADVECTION' ;
  170. WTAB.'MOD_ADV' = 'EXTR' mod0 'MATE' 'ADVECTION';
  171. WTAB.'MAT_ADV' = 'REDU' mat0 WTAB.'MOD_ADV';
  172. 'FINSI';
  173.  
  174. * Formulation Metallurgie (T.L. en juin 2018) :
  175. WTAB.'FOR_METALLU' = 'EXIS' mod0 'FORM' 'METALLURGIE' ;
  176. 'SI' WTAB.'FOR_METALLU' ;
  177. WTAB.'MOD_MET' ='EXTR' mod0 'FORM' 'METALLURGIE';
  178. WTAB.'MAT_MET' ='REDU' mat0 WTAB.'MOD_MET' ;
  179. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_MET' ;
  180. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_MET' ;
  181. 'FINS';
  182.  
  183. * Formulation CHANGEMENT_PHASE (CB215821 2019) :
  184. WTAB.'PHASE' = FAUX ;
  185. WTAB.'SOLUBILITE' = FAUX ;
  186. 'SI' ('EXIS' mod0 'FORM' 'CHANGEMENT_PHASE');
  187. MOPHA='EXTR' mod0 'FORM' 'CHANGEMENT_PHASE' ;
  188. MAPHA='REDU' mat0 MOPHA ;
  189. 'SI' ('EXIS' MOPHA 'MATE' 'SOLUBILITE');
  190. * Cas 'SOLUBILITE'
  191. WTAB.'SOLUBILITE' = VRAI ;
  192. MOSOL='EXTR' MOPHA 'MATE' 'SOLUBILITE' ;
  193. WTAB.'MOD_SOL' = MOSOL ;
  194. WTAB.'MAT_SOL' ='REDU' mat0 MOSOL ;
  195.  
  196. 'SINO';
  197. * Cas 'PARFAIT'
  198. WTAB.'PHASE' = VRAI ;
  199. MOPAR = 'EXTR' MOPHA 'MATE' 'PARFAIT' ;
  200. WTAB.'MOD_PHA' = MOPAR ;
  201. WTAB.'MAT_PHA' ='REDU' mat0 MOPAR ;
  202. 'FINS';
  203.  
  204.  
  205. 'SI' ('EGA' ('TYPE' WTAB.'MOD_THE') 'MMODEL');
  206. WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' MOPHA ;
  207. WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' MAPHA ;
  208. 'SINO';
  209. WTAB.'MOD_THE' = MOPHA ;
  210. WTAB.'MAT_THE' = MAPHA ;
  211. 'FINS';
  212. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' MOPHA ;
  213. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' MAPHA ;
  214. 'FINSI';
  215.  
  216. *------------------------- Indices pour UNPAS -------------------------*
  217.  
  218. * Formulation MECANIQUE :
  219. WTAB.'MEC1' = 'EXISTE' mod0 'FORM' 'MECANIQUE' ;
  220. 'SI' WTAB.'MEC1' ;
  221.  
  222. WTAB.'MOD_MEC' = 'EXTR' mod0 'FORM' 'MECANIQUE';
  223. WTAB.'MAT_MEC' = 'REDU' mat0 WTAB.'MOD_MEC';
  224.  
  225. 'SI' ('EXISTE' mod0 'FORM' 'MELANGE');
  226. 'SI' ('EXISTE' mod0 'MATE' 'PARALLELE');
  227. MOPAL1 = 'EXTR' mod0 'MATE' 'PARALLELE' ;
  228. 'SI' ('EXISTE' MOPAL1 'FORM' 'MECANIQUE');
  229. MAPAL1 = 'REDU' 'STRI' mat0 MOPAL1 ;
  230. WTAB.'MOD_MEC' = MOPAL1 'ET' WTAB.'MOD_MEC' ;
  231. WTAB.'MAT_MEC' = MAPAL1 'ET' WTAB.'MAT_MEC' ;
  232. 'FINSI' ;
  233. 'FINSI' ;
  234. 'FINSI';
  235.  
  236. 'FINSI';
  237.  
  238. * Formulation CONTACT :
  239. WTAB.'CONTACT' = 'EXIS' mod0 'FORM' 'CONTACT' ;
  240. 'SI' WTAB.'CONTACT' ;
  241. WTAB.'MODCONTA' = 'EXTR' mod0 'FORM' 'CONTACT';
  242. MATCONTA = 'REDU' mat0 WTAB.'MODCONTA' ;
  243. NBCOMP = 'EXTR' MATCONTA 'COMP' ;
  244. 'SI' ('NEG' ('DIME' NBCOMP) 0) ;
  245. WTAB.'MATCONTA' = MATCONTA ;
  246. * A t-on la composante ADHE?
  247. WTAB.'ADHERENCE' = 'EXIS' ('EXTR' MATCONTA 'COMP') 'ADHE' ;
  248. 'FINSI' ;
  249. WTAB.'FROCOUL' = 'EXIS' WTAB.'MODCONTA' 'MATE' 'COULOMB' ;
  250. WTAB.'FROCABL' = 'EXIS' WTAB.'MODCONTA' 'MATE' 'FROCABLE' ;
  251. WTAB.'CAFROTTE' = WTAB.'FROCOUL' 'OU' WTAB.'FROCABL' ;
  252. 'FINSI';
  253.  
  254. * Formulation POREUX :
  255. WTAB.'POR1' = 'EXISTE' mod0 'FORM' 'POREUX' ;
  256. 'SI' WTAB.'POR1' ;
  257. WTAB.'MOD_POR' = 'EXTR' mod0 'FORM' 'POREUX';
  258. WTAB.'MAT_POR' = 'REDU' mat0 WTAB.'MOD_POR';
  259. 'FINSI';
  260.  
  261. * Formulation CHARGEMENT :
  262. 'SI' ('EXIS' mod0 'FORM' 'CHARGEMENT') ;
  263. WTAB.'MOD_CHA' = 'EXTR' mod0 'FORM' 'CHARGEMENT' ;
  264. WTAB.'MAT_CHA' = 'REDU' mat0 WTAB.'MOD_CHA' ;
  265. 'SI' ('EXIS' WTAB.'MOD_CHA' 'MATE' 'PRESSION') ;
  266. WTAB.'MOD_PRE' = 'EXTR' (WTAB.'MOD_CHA') 'COMP' 'PRESSION' ;
  267. * A t-on un MATE associe?
  268. MATZ = 'REDU' mat0 WTAB.'MOD_PRE' ;
  269. 'SI' ('NEG' ('DIME' ('EXTR' MATZ 'COMP')) 0) ;
  270. WTAB.'MAT_PRE' = MATZ ;
  271. 'FINSI' ;
  272. 'FINSI' ;
  273. 'FINSI' ;
  274.  
  275. * Formulation LIAISON :
  276. 'SI' ('EXISTE' mod0 'FORM' 'LIAISON');
  277. WTAB.'MOD_LIA' = 'EXTR' mod0 'FORM' 'LIAISON' ;
  278. WTAB.'MAT_LIA' = 'REDU' mat0 WTAB.'MOD_LIA' ;
  279. 'FINSI' ;
  280.  
  281. * Formulation NAVIER_STOKES
  282. WTAB.'NVSTNL' = ('EXISTE' mod0 'FORM' 'NAVIER_STOKES')
  283. 'ET' ('EXISTE' mod0 'MATE' 'NLIN') ;
  284. 'SI' WTAB. 'NVSTNL' ;
  285. WTAB.'MOD_NSL' = 'EXTR' mod0 'MATE' 'NLIN' ;
  286. WTAB.'MAT_NSL' = 'REDU' mat0 WTAB . 'MOD_NSL' ;
  287. 'FINSI' ;
  288.  
  289. * FOR_MECA = VRAI : on doit resoudre de la MECANIQUE
  290. WTAB . 'FOR_MECA' = (WTAB.'MEC1') 'OU' (WTAB.'POR1') 'OU'
  291. ('EXIS' WTAB 'MOD_CHA') ;
  292.  
  293. 'SI' (WTAB.'FOR_MECA') ;
  294.  
  295. 'SI' (WTAB.'MEC1' 'ET' WTAB.'POR1') ;
  296. MO_TOT = WTAB.'MOD_MEC' 'ET' WTAB.'MOD_POR';
  297. 'SINON';
  298. 'SI' WTAB.'MEC1';
  299. MO_TOT = WTAB.'MOD_MEC';
  300. 'FINSI';
  301. 'SI' WTAB.'POR1';
  302. MO_TOT = WTAB.'MOD_POR';
  303. 'FINSI';
  304. 'FINSI';
  305. 'SI' ('EXISTE' WTAB 'MOD_LIA') ;
  306. MO_TOT = MO_TOT 'ET' WTAB.'MOD_LIA';
  307. 'FINSI' ;
  308.  
  309. WTAB.'MO_TOT' = MO_TOT ;
  310. WTAB.'MOD_REF' = MO_TOT ;
  311. WTAB.'MA_TOT' = 'REDU' mat0 MO_TOT ;
  312.  
  313. * Uniquement initialisation, sinon indice gere par UNPAS
  314. 'SI' ('NON' ('EXIS' WTAB 'MO_TOT_PREC')) ;
  315. WTAB.'MO_TOT_PREC' = MO_TOT ;
  316. 'FINSI' ;
  317.  
  318. * Non-LOCal :
  319. * On verifie que l'on a bien un seul type de formulation non locale
  320. lognlmo = 'EXIS' MO_TOT 'NON_LOCAL' 'MOYE' ;
  321. lognlsb = 'EXIS' MO_TOT 'NON_LOCAL' 'SB ' ;
  322. lognlhe = 'EXIS' MO_TOT 'NON_LOCAL' 'HELM' ;
  323. WTAB.'NLOC' = lognlmo 'OU' lognlsb 'OU' lognlhe ;
  324.  
  325. 'SI' WTAB.'NLOC' ;
  326.  
  327. 'SI' ((lognlmo 'ET' lognlsb) 'OU' (lognlsb 'ET' lognlhe) 'OU' (lognlhe 'ET' lognlmo)) ;
  328. 'ERREUR' 'On ne peut pas avoir deux formulations non locales differentes' ;
  329. 'FINSI' ;
  330.  
  331. * Cas 'MOYE'
  332. 'SI' lognlmo ;
  333. WTAB.'NON_LOCAL' = 'MOT' 'MOYE' ;
  334. 'FINSI' ;
  335.  
  336. * Cas 'SB'
  337. 'SI' lognlsb ;
  338. WTAB.'NON_LOCAL' = 'MOT' 'SB' ;
  339. 'FINSI' ;
  340.  
  341. * Cas 'HELM'
  342. 'SI' lognlhe ;
  343. WTAB.'NON_LOCAL' = 'MOT' 'HELM' ;
  344. 'FINSI' ;
  345. WTAB.'NLOC_MODL' = 'EXTR' MO_TOT 'NON_LOCAL' WTAB.'NON_LOCAL' ;
  346.  
  347. 'SI' lognlsb ;
  348. MOD_SB = WTAB.'NLOC_MODL' ;
  349. CHM_1 = 'MANU' 'CHML' MOD_SB 'LONG' 1.0 'STRESSES'
  350. 'TYPE' 'CARACTERISTIQUES' ;
  351. CHM_L = 'INTG' 'ELEM' MOD_SB CHM_1 'LONG' ;
  352. CHM_L = 'CHAN' 'COMP' 'LONG' CHM_L ;
  353. CHM_L = 'CHAN' 'STRESSES' MOD_SB CHM_L ;
  354. TAIL1 = CHM_L ** (1. / ('VALE' 'DIME')) ;
  355. FTCH = 'EXCO' WTAB.'MA_TOT' 'SBFT' 'SBFT' ;
  356. FTCH = 'CHAN' 'STRESSES' MOD_SB FTCH ;
  357. MALVIA = TAIL1 '+' FTCH ;
  358. WTAB.'NLOC_SB_REGU' = 'CHAN' MALVIA 'TYPE' 'VARIABLES INTERNES' ;
  359. 'FINSI' ;
  360.  
  361. 'FINSI' ;
  362.  
  363. 'FINSI' ;
  364.  
  365. 'FINP' TPASA1 ;
  366.  
  367.  
  368.  
  369.  
  370.  

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