Télécharger pas_modl.procedur

Retour à la liste

Numérotation des lignes :

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

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