Télécharger pas_modl.procedur

Retour à la liste

Numérotation des lignes :

  1. * PAS_MODL PROCEDUR FANDEUR 22/05/02 21:15:28 11358
  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.  
  49. WTAB.'THE1' = 'EXIS' mod0 'FORM' 'THERMIQUE' ;
  50. WTAB.'THM1' = 'EXIS' mod0 'FORM' 'THERMOHYDRIQUE' ;
  51.  
  52. * FOR_THER = VRAI : on doit resoudre de la thermique/THM
  53. WTAB.'FOR_THER' = WTAB.'THE1' 'OU' WTAB.'THM1' ;
  54.  
  55. 'SI' WTAB.'THE1' ;
  56.  
  57. WTAB.'MOD_THE' = 'EXTR' mod0 'FORM' 'THERMIQUE';
  58. WTAB.'MAT_THE' = 'REDU' mat0 WTAB.'MOD_THE';
  59. WTAB.'MOD_T' = WTAB.'MOD_THE' ;
  60. WTAB.'MAT_T' = WTAB.'MAT_THE' ;
  61.  
  62. 'SI' WTAB.'THM1' ;
  63. WTAB.'MOD_THM' = 'EXTR' mod0 'FORM' 'THERMOHYDRIQUE' ;
  64. WTAB.'MAT_THM' = 'REDU' mat0 WTAB.'MOD_THM';
  65. WTAB.'MOD_T' = WTAB.'MOD_T' 'ET' WTAB.'MOD_THM' ;
  66. WTAB.'MAT_T' = WTAB.'MAT_T' 'ET' WTAB.'MAT_THM' ;
  67. 'FINSI' ;
  68. WTAB.'MOD_TOT' = WTAB.'MOD_T' ;
  69. WTAB.'MAT_TOT' = WTAB.'MAT_T' ;
  70.  
  71. WTAB.'CONVECTION' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'CONVECTION' ;
  72. 'SI' WTAB.'CONVECTION' ;
  73. WTAB.'MOD_CON' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'CONVECTION';
  74. WTAB.'MAT_CON' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_CON';
  75. 'FINSI';
  76.  
  77. WTAB.'RAYO' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'RAYONNEMENT' ;
  78. 'SI' WTAB.'RAYO' ;
  79. WTAB.'MOD_RAY' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'RAYONNEMENT';
  80. WTAB.'MAT_RAY' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_RAY';
  81. 'FINSI';
  82.  
  83. WTAB.'ADVECTION' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'ADVECTION' ;
  84. 'SI' WTAB.'ADVECTION' ;
  85. WTAB.'MOD_ADV' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'ADVECTION';
  86. WTAB.'MAT_ADV' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_ADV';
  87. 'FINSI';
  88.  
  89. WTAB.'CONDUCTION' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'CONDUCTION' ;
  90. 'SI' WTAB.'CONDUCTION' ;
  91. WTAB.'MOD_COND' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'CONDUCTION';
  92. WTAB.'MAT_COND' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_COND';
  93. 'FINSI';
  94.  
  95. WTAB.'SOURCE_Q' = 'EXISTE' WTAB.'MOD_THE' 'MATE' 'SOURCE' ;
  96. 'SI' WTAB.'SOURCE_Q' ;
  97. WTAB.'MOD_SOQ' = 'EXTR' WTAB.'MOD_THE' 'MATE' 'SOURCE';
  98. WTAB.'MAT_SOQ' = 'REDU' WTAB.'MAT_TOT' WTAB.'MOD_SOQ';
  99. 'FINSI';
  100.  
  101. 'SINON' ;
  102.  
  103. 'SI' WTAB.'THM1' ;
  104.  
  105. WTAB.'MOD_THM' = 'EXTR' mod0 'FORM' 'THERMOHYDRIQUE';
  106. WTAB.'MAT_THM' = 'REDU' mat0 WTAB.'MOD_THM';
  107. WTAB.'MOD_T' = WTAB.'MOD_THM' ;
  108. WTAB.'MAT_T' = WTAB.'MAT_THM' ;
  109. WTAB.'MOD_TOT' = WTAB.'MOD_T' ;
  110. WTAB.'MAT_TOT' = WTAB.'MAT_T' ;
  111.  
  112. WTAB.'CONVECTION' = 'EXISTE' mod0 'MATE' 'CONVECTION' ;
  113. 'SI' WTAB.'CONVECTION' ;
  114. WTAB.'MOD_CON' = 'EXTR' mod0 'MATE' 'CONVECTION';
  115. WTAB.'MAT_CON' = 'REDU' mat0 WTAB.'MOD_CON';
  116. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_CON';
  117. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_CON';
  118. 'FINSI';
  119.  
  120. WTAB.'RAYO' = 'EXISTE' mod0 'MATE' 'RAYONNEMENT' ;
  121. 'SI' WTAB.'RAYO' ;
  122. WTAB.'MOD_RAY' = 'EXTR' mod0 'MATE' 'RAYONNEMENT';
  123. WTAB.'MAT_RAY' = 'REDU' mat0 WTAB.'MOD_RAY';
  124. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_RAY';
  125. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_RAY';
  126. 'FINSI';
  127.  
  128. WTAB.'CONVECTION' = 'EXISTE' mod0 'MATE' 'CONDUCTION' ;
  129. 'SI' WTAB.'CONVECTION' ;
  130. WTAB.'MOD_COND' = 'EXTR' mod0 'MATE' 'CONDUCTION';
  131. WTAB.'MAT_COND' = 'REDU' mat0 WTAB.'MOD_COND';
  132. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_COND';
  133. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_COND';
  134. 'FINSI';
  135.  
  136. WTAB.'ADVECTION' = 'EXISTE' mod0 'MATE' 'ADVECTION' ;
  137. 'SI' WTAB.'ADVECTION' ;
  138. WTAB.'MOD_ADV' = 'EXTR' mod0 'MATE' 'ADVECTION';
  139. WTAB.'MAT_ADV' = 'REDU' mat0 WTAB.'MOD_ADV';
  140. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_ADV';
  141. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_ADV';
  142. 'FINSI';
  143.  
  144. WTAB.'SOURCE_Q' = 'EXISTE' mod0 'MATE' 'SOURCE' ;
  145. 'SI' WTAB.'SOURCE_Q' ;
  146. WTAB.'MOD_SOQ' = 'EXTR' mod0 'MATE' 'SOURCE';
  147. WTAB.'MAT_SOQ' = 'REDU' mat0 WTAB.'MOD_SOQ';
  148. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_SOQ';
  149. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_SOQ';
  150. 'FINSI';
  151.  
  152. 'FINSI';
  153.  
  154. 'FINSI';
  155.  
  156. * Formulation DIFFUSION :
  157. * On ajoute la formulation diffusion a la thermique pour TRANSNON :
  158. WTAB.'FOR_DIFF' = 'EXIS' mod0 'FORM' 'DIFFUSION' ;
  159. 'SI' WTAB.'FOR_DIFF' ;
  160. WTAB.'MOD_DIF' ='EXTR' mod0 'FORM' 'DIFFUSION' ;
  161. WTAB.'MAT_DIF' ='REDU' mat0 WTAB.'MOD_DIF' ;
  162.  
  163. 'SI' WTAB.'THE1' ;
  164. WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' WTAB.'MOD_DIF' ;
  165. WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' WTAB.'MAT_DIF' ;
  166. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ;
  167. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ;
  168.  
  169. 'SINON' ;
  170. WTAB.'MOD_THE' = WTAB.'MOD_DIF' ;
  171. WTAB.'MAT_THE' = WTAB.'MAT_DIF' ;
  172.  
  173. 'SI' WTAB.'THM1' ;
  174. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_DIF' ;
  175. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_DIF' ;
  176.  
  177. 'SINON' ;
  178. WTAB.'MOD_TOT' = WTAB.'MOD_DIF' ;
  179. WTAB.'MAT_TOT' = WTAB.'MAT_DIF' ;
  180. 'FINSI' ;
  181. 'FINSI' ;
  182. 'FINSI' ;
  183.  
  184. * Formulation Metallurgie (T.L. en juin 2018) :
  185. WTAB.'FOR_METALLU' = 'EXIS' mod0 'FORM' 'METALLURGIE' ;
  186. 'SI' WTAB.'FOR_METALLU' ;
  187. WTAB.'MOD_MET' ='EXTR' mod0 'FORM' 'METALLURGIE';
  188. WTAB.'MAT_MET' ='REDU' mat0 WTAB.'MOD_MET' ;
  189. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' WTAB.'MOD_MET' ;
  190. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' WTAB.'MAT_MET' ;
  191. 'FINS';
  192.  
  193. * Formulation CHANGEMENT_PHASE (CB215821 2019) :
  194. WTAB.'PHASE' = FAUX ;
  195. WTAB.'SOLUBILITE' = FAUX ;
  196. 'SI' ('EXIS' mod0 'FORM' 'CHANGEMENT_PHASE');
  197. MOPHA='EXTR' mod0 'FORM' 'CHANGEMENT_PHASE' ;
  198. MAPHA='REDU' mat0 MOPHA ;
  199. 'SI' ('EXIS' MOPHA 'MATE' 'SOLUBILITE');
  200. * Cas 'SOLUBILITE'
  201. WTAB.'SOLUBILITE' = VRAI ;
  202. MOSOL='EXTR' MOPHA 'MATE' 'SOLUBILITE' ;
  203. WTAB.'MOD_SOL' = MOSOL ;
  204. WTAB.'MAT_SOL' ='REDU' mat0 MOSOL ;
  205.  
  206. 'SINO';
  207. * Cas 'PARFAIT'
  208. WTAB.'PHASE' = VRAI ;
  209. MOPAR = 'EXTR' MOPHA 'MATE' 'PARFAIT' ;
  210. WTAB.'MOD_PHA' = MOPAR ;
  211. WTAB.'MAT_PHA' ='REDU' mat0 MOPAR ;
  212. 'FINS';
  213.  
  214. 'SI' ('EGA' ('TYPE' WTAB.'MOD_THE') 'MMODEL');
  215. WTAB.'MOD_THE' = WTAB.'MOD_THE' 'ET' MOPHA ;
  216. WTAB.'MAT_THE' = WTAB.'MAT_THE' 'ET' MAPHA ;
  217. 'SINO';
  218. WTAB.'MOD_THE' = MOPHA ;
  219. WTAB.'MAT_THE' = MAPHA ;
  220. 'FINS';
  221. WTAB.'MOD_TOT' = WTAB.'MOD_TOT' 'ET' MOPHA ;
  222. WTAB.'MAT_TOT' = WTAB.'MAT_TOT' 'ET' MAPHA ;
  223. 'FINSI';
  224.  
  225. *------------------------- Indices pour UNPAS -------------------------*
  226.  
  227. * Formulation MECANIQUE :
  228. WTAB.'MEC1' = 'EXISTE' mod0 'FORM' 'MECANIQUE' ;
  229. 'SI' WTAB.'MEC1' ;
  230.  
  231. WTAB.'MOD_MEC' = 'EXTR' mod0 'FORM' 'MECANIQUE';
  232. WTAB.'MAT_MEC' = 'REDU' mat0 WTAB.'MOD_MEC';
  233.  
  234. 'SI' ('EXISTE' mod0 'FORM' 'MELANGE');
  235. 'SI' ('EXISTE' mod0 'MATE' 'PARALLELE');
  236. MOPAL1 = 'EXTR' mod0 'MATE' 'PARALLELE' ;
  237. 'SI' ('EXISTE' MOPAL1 'FORM' 'MECANIQUE');
  238. MAPAL1 = 'REDU' 'STRI' mat0 MOPAL1 ;
  239. WTAB.'MOD_MEC' = MOPAL1 'ET' WTAB.'MOD_MEC' ;
  240. WTAB.'MAT_MEC' = MAPAL1 'ET' WTAB.'MAT_MEC' ;
  241. 'FINSI' ;
  242. 'FINSI' ;
  243. 'FINSI';
  244.  
  245. 'FINSI';
  246.  
  247. * Formulation CONTACT :
  248. WTAB.'CONTACT' = 'EXIS' mod0 'FORM' 'CONTACT' ;
  249. 'SI' WTAB.'CONTACT' ;
  250. WTAB.'MODCONTA' = 'EXTR' mod0 'FORM' 'CONTACT';
  251. MATCONTA = 'REDU' mat0 WTAB.'MODCONTA' ;
  252. NBCOMP = 'EXTR' MATCONTA 'COMP' ;
  253. 'SI' ('NEG' ('DIME' NBCOMP) 0) ;
  254. WTAB.'MATCONTA' = MATCONTA ;
  255. * A t-on la composante ADHE?
  256. WTAB.'ADHERENCE' = 'EXIS' ('EXTR' MATCONTA 'COMP') 'ADHE' ;
  257. 'FINSI' ;
  258. WTAB.'FROCOUL' = 'EXIS' WTAB.'MODCONTA' 'MATE' 'COULOMB' ;
  259. WTAB.'FROCABL' = 'EXIS' WTAB.'MODCONTA' 'MATE' 'FROCABLE' ;
  260. WTAB.'CAFROTTE' = WTAB.'FROCOUL' 'OU' WTAB.'FROCABL' ;
  261. 'FINSI';
  262.  
  263. * Formulation POREUX :
  264. WTAB.'POR1' = 'EXISTE' mod0 'FORM' 'POREUX' ;
  265. 'SI' WTAB.'POR1' ;
  266. WTAB.'MOD_POR' = 'EXTR' mod0 'FORM' 'POREUX';
  267. WTAB.'MAT_POR' = 'REDU' mat0 WTAB.'MOD_POR';
  268. 'FINSI';
  269.  
  270. * Formulation CHARGEMENT :
  271. 'SI' ('EXIS' mod0 'FORM' 'CHARGEMENT') ;
  272. WTAB.'MOD_CHA' = 'EXTR' mod0 'FORM' 'CHARGEMENT' ;
  273. WTAB.'MAT_CHA' = 'REDU' mat0 WTAB.'MOD_CHA' ;
  274. 'SI' ('EXIS' WTAB.'MOD_CHA' 'MATE' 'PRESSION') ;
  275. WTAB.'MOD_PRE' = 'EXTR' (WTAB.'MOD_CHA') 'COMP' 'PRESSION' ;
  276. * A t-on un MATE associe?
  277. MATZ = 'REDU' mat0 WTAB.'MOD_PRE' ;
  278. 'SI' ('NEG' ('DIME' ('EXTR' MATZ 'COMP')) 0) ;
  279. WTAB.'MAT_PRE' = MATZ ;
  280. 'FINSI' ;
  281. 'FINSI' ;
  282. 'FINSI' ;
  283.  
  284. * Formulation LIAISON :
  285. 'SI' ('EXISTE' mod0 'FORM' 'LIAISON');
  286. WTAB.'MOD_LIA' = 'EXTR' mod0 'FORM' 'LIAISON' ;
  287. WTAB.'MAT_LIA' = 'REDU' mat0 WTAB.'MOD_LIA' ;
  288. 'FINSI' ;
  289.  
  290. * FOR_MECA = VRAI : on doit resoudre de la MECANIQUE
  291. WTAB . 'FOR_MECA' = (WTAB.'MEC1') 'OU' (WTAB.'POR1') 'OU'
  292. ('EXIS' WTAB 'MOD_CHA') ;
  293.  
  294. 'SI' (WTAB.'FOR_MECA') ;
  295.  
  296. 'SI' (WTAB.'MEC1' 'ET' WTAB.'POR1') ;
  297. MO_TOT = WTAB.'MOD_MEC' 'ET' WTAB.'MOD_POR';
  298. 'SINON';
  299. 'SI' WTAB.'MEC1';
  300. MO_TOT = WTAB.'MOD_MEC';
  301. 'FINSI';
  302. 'SI' WTAB.'POR1';
  303. MO_TOT = WTAB.'MOD_POR';
  304. 'FINSI';
  305. 'FINSI';
  306. 'SI' ('EXISTE' WTAB 'MOD_LIA') ;
  307. MO_TOT = MO_TOT 'ET' WTAB.'MOD_LIA';
  308. 'FINSI' ;
  309.  
  310. WTAB.'MO_TOT' = MO_TOT ;
  311. WTAB.'MOD_REF' = MO_TOT ;
  312. WTAB.'MA_TOT' = 'REDU' mat0 MO_TOT ;
  313.  
  314. * Uniquement initialisation, sinon indice gere par UNPAS
  315. 'SI' ('NON' ('EXIS' WTAB 'MO_TOT_PREC')) ;
  316. WTAB.'MO_TOT_PREC' = MO_TOT ;
  317. 'FINSI' ;
  318.  
  319. * Non-LOCal :
  320. * On verifie que l'on a bien un seul type de formulation non locale
  321. lognlmo = 'EXIS' MO_TOT 'NON_LOCAL' 'MOYE' ;
  322. lognlsb = 'EXIS' MO_TOT 'NON_LOCAL' 'SB ' ;
  323. lognlhe = 'EXIS' MO_TOT 'NON_LOCAL' 'HELM' ;
  324. WTAB.'NLOC' = lognlmo 'OU' lognlsb 'OU' lognlhe ;
  325.  
  326. 'SI' WTAB.'NLOC' ;
  327.  
  328. 'SI' ((lognlmo 'ET' lognlsb) 'OU' (lognlsb 'ET' lognlhe) 'OU' (lognlhe 'ET' lognlmo)) ;
  329. 'ERREUR' 'On ne peut pas avoir deux formulations non locales differentes' ;
  330. 'FINSI' ;
  331.  
  332. * Cas 'MOYE'
  333. 'SI' lognlmo ;
  334. WTAB.'NON_LOCAL' = 'MOT' 'MOYE' ;
  335. 'FINSI' ;
  336. * Cas 'SB'
  337. 'SI' lognlsb ;
  338. WTAB.'NON_LOCAL' = 'MOT' 'SB' ;
  339. 'FINSI' ;
  340. * Cas 'HELM'
  341. 'SI' lognlhe ;
  342. WTAB.'NON_LOCAL' = 'MOT' 'HELM' ;
  343. 'FINSI' ;
  344. WTAB.'NLOC_MODL' = 'EXTR' MO_TOT 'NON_LOCAL' WTAB.'NON_LOCAL' ;
  345.  
  346. 'FINSI' ;
  347.  
  348. 'FINSI' ;
  349.  
  350. 'FINP' TPASA1 ;
  351.  
  352.  
  353.  

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