Télécharger pas_modl.procedur

Retour à la liste

Numérotation des lignes :

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

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