Télécharger chitrnsp.procedur

Retour à la liste

Numérotation des lignes :

  1. * CHITRNSP PROCEDUR JC220346 12/09/12 21:15:01 7501
  2. 'DEBPROC' CHITRNSP TRANSI*'TABLE' ;
  3. *----------------------------------------------------------------------
  4. * Transport geochimie
  5. *----------------------------------------------------------------------
  6. *
  7. *------------------------------
  8. * Phrase d'appel (en GIBIANE) :
  9. *------------------------------
  10. *
  11. * CHITRNSP TABLE ;
  12. *
  13. *----------------------------------
  14. * Opérandes (à mettre dans TABLE) :
  15. *----------------------------------
  16. *
  17. * ___________________________________________________________________
  18. * | |
  19. * | Indice Contenu |
  20. * | |
  21. * -------------------------------------------------------------------
  22. * | |
  23. * |------------------------------------------------ |
  24. * |Données physiques, géométriques et materielles : |
  25. * |------------------------------------------------ |
  26. * | |
  27. * |'MODELE' Objet modèle (MMODEL créé par MODE) |
  28. * | |
  29. * |'DIFFUSION' Données physiques et materielles : |
  30. * | conductivité hydraulique (MCHAML créé par MATE) |
  31. * | |
  32. * |'POROSITE' Contient pour chaque élément la valeur moyenne de la |
  33. * | porosité (défaut 1 ) nom CK |
  34. * | |
  35. * |'DOMAINE' Références géométriques (TABLE créée par KDOM) |
  36. * | |
  37. * |'CONVECTION' Flux de la vitesse convective (CHAMPOIN de support |
  38. * | DOMAINE.FACE) |
  39. * | |
  40. * | |
  41. * | 'CHIMI1' Table issue de CHI1 |
  42. * | |
  43. * | 'TAQU' concentration des aqueux au centre des faces |
  44. * | CHAMPOIN possedant une composante par composant |
  45. * | chimique. |
  46. * | |
  47. * | 'ITERC' nombre max d'itérations de couplage (défaut 100) |
  48. * | |
  49. * | 'PRECISION' précision critère de convergence pour le couplage |
  50. * | valeur par défaut 1.E-3 |
  51. * | |
  52. * | 'LOGC' parametres de calcul de CHI2 |
  53. * | 'TOT' |
  54. * | <'EPS'> <'ITMAX'> <'ITERSOLI'> <'PRECPE'> |
  55. * | <'NITERPE'> <'DELPE'> <'NFI'> <'FIONI'> <'NTY4'> <'TEMPE'> |
  56. * | <'CLIM'> <'SORTIE'> <'IMPRIM'> |
  57. * | |
  58. * |-------------------------------------- |
  59. * |Conditions aux limites / chargements : |
  60. * |-------------------------------------- |
  61. * | |
  62. * |'BLOCAGE' Contient les matrices de blocage (RIGIDITE) |
  63. * | |
  64. * |'TRACE_IMPOSE' Valeurs des traces de concentrations imposées |
  65. * | chargement de CHPOIN au centre des faces |
  66. * | |
  67. * |'FLUX_IMPOSE' Valeurs des flux de concentrations imposées |
  68. * | chargement de CHPOIN au centre des faces |
  69. * | |
  70. * |'SOURCE' Valeurs de la source |
  71. * | Chargement relatifs aux CHPOIN centre |
  72. * | ( défaut CHPOIN centre 0.) |
  73. * | |
  74. * |--------------------- |
  75. * |Algorithme en temps : |
  76. * |--------------------- |
  77. * | |
  78. * |'PAS_DE_TEMPS' Valeur du pas de temps de calcul (FLOTTANT) |
  79. * | |
  80. * | 'TEMPS_FINAL' Valeur du temps final (FLOTTANT) |
  81. * | |
  82. * |'TEMPS_SAUVES' Valeur des temps sauvegardés (LISTREEL - défaut |
  83. * | on sauve tous les pas de temps) |
  84. * | |
  85. * |'THETA' Coefficient de relaxation du terme de diffusion |
  86. * | compris entre 0. et 1. |
  87. * | (theta-méthode) (FLOTTANT - défaut 1.) |
  88. * | Possibilité de non-convergence lorsque theta<1/2 |
  89. * | Valeurs de theta généralement utilisées : |
  90. * | Schéma de Euler explicite : 0. |
  91. * | Schéma de Crank-Nicholson : 1/2 |
  92. * | Schéma de Euler implicite : 1. |
  93. * | |
  94. * | |
  95. * | 'SORTIE' listmots liste des élèments à conserver (cf CHI2) |
  96. * |_________________________________________________________________|
  97. *
  98. *
  99. *
  100. *---------------------------------
  101. * Résultats (stockés dans TABLE) :
  102. *---------------------------------
  103. *
  104. * ___________________________________________________________________
  105. * | |
  106. * | Indice Contenu |
  107. * | |
  108. * -------------------------------------------------------------------
  109. * | |
  110. * |'SOUSTYPE' 'GEOCHIMIE' (type MOT) |
  111. * | |
  112. * |'TEMPS' TABLE contenant les temps sauvegardés (FLOTTANT) |
  113. * | |
  114. * |'TOT' TABLE contenant les concentrations totales aux centres |
  115. * | CHPOIN centre ayant une composante par composant chimique |
  116. * | |
  117. * |'AQUE' TABLE contenant les concentrations des aqueux |
  118. * | CHPOIN centre ayant une composante par composant chimique |
  119. * | |
  120. * |'FIXE' TABLE contenant les concentrations des fixés |
  121. * | CHPOIN centre ayant une composante par composant chimique |
  122. * | |
  123. * |'TAQU' TABLE contenant les traces de concentrations des aqueux |
  124. * | CHPOIN face ayant une composante par composant chimique |
  125. * | on aura en plus une table pour chacun des éléments de la liste |
  126. * | SORTIE. Les sauvegardes des CHPOIN centre issus du calcul CHI2 |
  127. * | |
  128. * |_________________________________________________________________|
  129. *
  130. *
  131. * ___________________________________________________________________
  132. * | |
  133. * | Les tables résultats sont indicés par des entiers variant de 0 |
  134. * | à N . |
  135. * | A l'indice 0 on stocke les valeurs initiales, aux indices |
  136. * | suivants les champs correspondant au temps de sortie TEMPS.I . |
  137. * | Les champs servant en cas de reprise sont stockés à l'indice N .|
  138. * |_________________________________________________________________|
  139. *
  140. *
  141. *
  142. *--------------------------------------------------------------------*
  143. * RECUPERATION DES DONNEES PHYSIQUES, GEOMETRIQUES ET MATERIELLES *
  144. *--------------------------------------------------------------------*
  145. *
  146. * SOUSTYPE
  147. 'SI' ( 'NON' ('EXIS' TRANSI 'SOUSTYPE') ) ;
  148. 'ERREUR' 'indice SOUSTYPE absent de la table des données ' ;
  149. 'QUITTER' CHITRNSP ;
  150. 'FINSI' ;
  151. 'SI' ( 'NEG' ( TRANSI. 'SOUSTYPE') 'GEOCHIMIE' ) ;
  152. 'ERREUR' 'indice SOUSTYPE incorrect dans la table des données ' ;
  153. 'QUITTER' CHITRNSP ;
  154. 'FINSI' ;
  155. * MODELE
  156. 'SI' ( 'EXISTE' TRANSI 'MODELE' ) ;
  157. MODHYB = TRANSI . 'MODELE' ;
  158. MCHYB = 'DOMA' MODHYB 'ORIENTAT' ;
  159. XVOLU = 'DOMA' MODHYB 'VOLUME' ;
  160. CEHYTOT = 'DOMA' MODHYB 'CENTRE' ;
  161. FACHYTOT = 'DOMA' MODHYB 'FACE' ;
  162. 'SINON' ;
  163. 'ERREUR' 'Il manque le modele' ;
  164. 'QUITTER' CHITRNSP ;
  165. 'FINSI' ;
  166. * DIFFUSION
  167. 'SI' ( 'EXISTE' TRANSI 'DIFFUSION' ) ;
  168. MAT1 = TRANSI . 'DIFFUSION' ;
  169. 'SINON' ;
  170. 'ERREUR'
  171. 'Indice DIFFUSION absent de la table de données.' ;
  172. 'QUITTER' CHITRNSP ;
  173. 'FINSI' ;
  174. * POROSITE
  175. 'SI' ( 'EXISTE' TRANSI 'POROSITE' ) ;
  176. COEMK = TRANSI . 'POROSITE' ;
  177. 'SINON' ;
  178. COEMK = 'MANU' 'CHPO' CEHYTOT 1 'CK' 1.D0 ;
  179. 'FINSI' ;
  180. COEMM= 'KCHA' MODHYB 'CHAM' COEMK ;
  181. COEMC= 'NOMC' 'SCAL' COEMK ;
  182. EMSURF = 'INTG' 'ELEM' MODHYB COEMM ;
  183. * CONVECTION
  184. 'SI' ( 'EXISTE' TRANSI 'CONVECTION' ) ;
  185. QFACE = TRANSI . 'CONVECTION' ;
  186. 'SINON' ;
  187. 'ERREUR'
  188. 'Indice CONVECTION absent de la table de données.' ;
  189. 'QUITTER' CHITRNSP ;
  190. 'FINSI' ;
  191. * CHIMI1
  192. 'SI' ( 'EXISTE' TRANSI 'CHIMI1' ) ;
  193. TB1 = TRANSI . 'CHIMI1' ;
  194. 'SI' ( 'NON' ('EXISTE' TB1 'SOUSTYPE' ) ) ;
  195. 'ERREUR'
  196. 'Indice CHIMI1 ne convient pas.' ;
  197. 'QUITTER' CHITRNSP ;
  198. 'FINSI' ;
  199. 'SI' ( 'NEG' ( TB1.'SOUSTYPE' ) 'CHIMI1' ) ;
  200. 'ERREUR' 'Le sous-typage de la table CHIMI1 est incorrect';
  201. 'QUITTER' CHITRNSP ;
  202. FINSI ;
  203. NBCOMP= DIME ( TB1 . 'DESCHI' .'IDX' ) ;
  204. 'MESS' ' NOMBRE DE COMPOSANTS ' NBCOMP ;
  205. 'SINON' ;
  206. 'ERREUR'
  207. 'Indice CHIMI1 absent de la table de données.' ;
  208. 'QUITTER' CHITRNSP ;
  209. 'FINSI' ;
  210. * PRECISION
  211. 'SI' ( 'EXISTE' TRANSI 'PRECISION' ) ;
  212. EPSS = TRANSI . 'PRECISION' ;
  213. 'SINON' ;
  214. EPSS = 1.D-3 ;
  215. 'FINSI' ;
  216. * ITERC
  217. 'SI' ( 'EXISTE' TRANSI 'ITERC' ) ;
  218. ITERC = TRANSI . 'ITERC' ;
  219. 'SINON' ;
  220. ITERC= 100 ;
  221. 'FINSI' ;
  222. *--------------------------------------------------------------------*
  223. * RECUPERATION DES DONNEES POUR LE SCHEMA EN TEMPS *
  224. *--------------------------------------------------------------------*
  225. *
  226. * THETA
  227. 'SI' ( 'EXISTE' TRANSI 'THETA' ) ;
  228. TETA = TRANSI . 'THETA' ;
  229. 'SINON' ;
  230. TETA = 1.D0 ;
  231. 'FINSI' ;
  232. * PAS_DE_TEMPS
  233. 'SI' ( 'EXISTE' TRANSI 'PAS_DE_TEMPS' ) ;
  234. DELTAT = TRANSI . 'PAS_DE_TEMPS' ;
  235. 'SINON' ;
  236. 'ERREUR'
  237. 'Indice PAS_DE_TEMPS absent de la table de données.' ;
  238. 'QUITTER' CHITRNSP ;
  239. 'FINSI' ;
  240. * TEMPS INITIAL
  241. 'SI' ( 'EXISTE' TRANSI 'TEMPS') ;
  242. IND1= 'INDE' (TRANSI. 'TEMPS') ;
  243. LN1= 'DIME' IND1 ;
  244. ISOR0 = IND1 . LN1 ;
  245. TINIT= TRANSI.'TEMPS' . ISOR0 ;
  246. 'SINON' ;
  247. TRANSI. 'TEMPS' = TABLE ;
  248. TINIT=0.D0 ;
  249. TRANSI. 'TEMPS'. 0 = TINIT ;
  250. ISOR0= 0 ;
  251. LN1=1 ;
  252. 'FINSI' ;
  253. * TEMPS_FINAL
  254. 'SI' ( 'EXISTE' TRANSI 'TEMPS_FINAL' ) ;
  255. TFINAL = TRANSI . 'TEMPS_FINAL' ;
  256. SI ( TFINAL &lt;EG TINIT ) ;
  257. 'ERREUR'
  258. ('CHAI' ' TEMPS_FINAL incorrect TEMPS INITIAL=' TINIT ) ;
  259. 'QUITTER' CHITRNSP ;
  260. 'FINSI' ;
  261. EPS0= DELTAT*0.1 ;
  262. NBTPS= 'ENTI' ((TFINAL -TINIT + EPS0 )/ DELTAT) ;
  263. SI ( 'NEG' (NBTPS*DELTAT) (TFINAL - TINIT) EPS0 ) ;
  264. 'ERREUR'
  265. ' TEMPS_FINAL n est pas un multiple du PAS_DE_TEMPS' ;
  266. 'QUITTER' CHITRNSP ;
  267. 'FINSI' ;
  268. 'SINON' ;
  269. 'ERREUR'
  270. 'Indice TEMPS_FINAL absent de la table de données.' ;
  271. 'QUITTER' CHITRNSP ;
  272. 'FINSI' ;
  273. * TEMPS_SAUVES
  274. 'SI' ( 'EXISTE' TRANSI 'TEMPS_SAUVES' ) ;
  275. TPSINI= TINIT ;
  276. ISOR= 1 ;
  277. TPSOR = ORDO (TRANSI . 'TEMPS_SAUVES') ;
  278. TEMS = 'EXTR' TPSOR 1 ;
  279. 'SI' ( TINIT 'EGA' TEMS EPS0 ) ;
  280. * SI LE TEMPS D'INITIALISATION EST DANS LA LISTE
  281. * ON L'ENLEVE CAR CE TEMPS LA EST SAUVE DE TOUTE MANIERE
  282. TPSOR= ENLE TPSOR 1 ;
  283. 'FINSI' ;
  284. LTPSOR= LECT ;
  285. DSOR = 'DIME' TPSOR ;
  286. 'REPETER' BOU3 NBTPS ;
  287. TEMS = 'EXTR' TPSOR ISOR ;
  288. TPSINI= TPSINI +DELTAT ; ;
  289. 'SI' ( TPSINI 'EGA' TEMS EPS0 ) ;
  290. LTPSOR = 'INSE' LTPSOR ISOR &BOU3 ;
  291. ISOR = ISOR+1 ;
  292. 'SI' ( ISOR > DSOR ) ;
  293. 'QUITTER' BOU3 ;
  294. 'FINSI' ;
  295. 'FINSI' ;
  296. 'FIN' BOU3 ;
  297. DLSOR = DIME LTPSOR ;
  298. 'SI' ((EXTR LTPSOR DLSOR) NEG NBTPS ) ;
  299. DLSOR= DLSOR+1 ;
  300. LTPSOR = 'INSE' LTPSOR DLSOR NBTPS ;
  301. 'MESS' ' LA LISTE TEMPS_SAUVES EST INCORRECTE' ;
  302. MESS 'indices des temps sauvegardés' ;
  303. list ltpsor ;
  304. 'FINSI' ;
  305. 'SINON' ;
  306. * MESS 'NBTPS ' NBTPS ;
  307. 'SI'( NBTPS 'EGA' 1 ) ;
  308. LTPSOR= 'LECT' 1 ;
  309. 'SINON' ;
  310. LTPSOR= 'LECT' 1 'PAS' 1 NBTPS ;
  311. 'FINSI' ;
  312. 'FINSI' ;
  313. * IL FAUT CONTROLER LES LONGUEURS DES TABLES
  314. * TAQU
  315. 'SI' ( 'EXISTE' TRANSI 'TAQU' ) ;
  316. LNN='DIME' (TRANSI. 'TAQU' ) ;
  317. 'SI' ('NEG' LN1 LNN) ;
  318. 'ERREUR' 'dimensions incohérentes entre TEMPS et TAQU ' ;
  319. 'QUITTER' CHITRNSP ;
  320. 'FINSI' ;
  321. TAQU0 = TRANSI . 'TAQU' . ISOR0 ;
  322. TAQU = TRANSI . 'TAQU' . ISOR0 ;
  323. 'SINON' ;
  324. 'ERREUR'
  325. 'Indice TAQU absent de la table de données.' ;
  326. 'QUITTER' CHITRNSP ;
  327. 'FINSI' ;
  328. * AQUE
  329. 'SI' ( 'EXISTE' TRANSI 'AQUE' ) ;
  330. LNN='DIME' (TRANSI. 'AQUE' ) ;
  331. 'SI' ('NEG' LN1 LNN) ;
  332. 'ERREUR' 'dimensions incohérentes entre TEMPS et AQUE ' ;
  333. 'QUITTER' CHITRNSP ;
  334. 'FINSI' ;
  335. 'SINON' ;
  336. 'SI' ( EGA ISOR0 0) ;
  337. TRANSI. 'AQUE'= TABLE ;
  338. 'SINON' ;
  339. 'ERREUR'
  340. 'Indice AQUE absent de la table de données.' ;
  341. 'QUITTER' CHITRNSP ;
  342. 'FINSI';
  343. 'FINSI' ;
  344. * FIXE
  345. 'SI' ( 'EXISTE' TRANSI 'FIXE' ) ;
  346. LNN='DIME' (TRANSI. 'FIXE' ) ;
  347. 'SI' ('NEG' LN1 LNN) ;
  348. 'ERREUR' 'dimensions incohérentes entre TEMPS et FIXE ' ;
  349. 'QUITTER' CHITRNSP ;
  350. 'FINSI' ;
  351. 'SINON' ;
  352. 'SI' ( EGA ISOR0 0) ;
  353. TRANSI. 'FIXE'= TABLE ;
  354. 'SINON' ;
  355. 'ERREUR'
  356. 'Indice FIXE absent de la table de données.' ;
  357. 'QUITTER' CHITRNSP ;
  358. 'FINSI';
  359. 'FINSI' ;
  360. * FLUX
  361. 'SI' ( 'EXISTE' TRANSI 'FLUX' ) ;
  362. LNN='DIME' (TRANSI. 'FLUX' ) ;
  363. 'SI' ('NEG' LN1 LNN) ;
  364. 'ERREUR' 'dimensions incohérentes entre TEMPS et FLUX ' ;
  365. 'QUITTER' CHITRNSP ;
  366. 'FINSI' ;
  367. 'SINON' ;
  368. 'SI' ( EGA ISOR0 0) ;
  369. TRANSI. 'FLUX'= TABLE ;
  370. * TRANSI. 'FLU2'= TABLE ;
  371. 'FINSI';
  372. 'FINSI' ;
  373. * parametres de CHIMI2
  374. TBPARM= TABLE ;
  375. TBPAR2= TABLE ;
  376. TBPAR2.'SOUSTYPE'='DONNEES_CHIMIQUES' ;
  377. *
  378. 'SI' ( 'EXISTE' TRANSI 'LOGC' ) ;
  379. LNN='DIME' (TRANSI. 'LOGC' ) ;
  380. 'SI' ('NEG' LN1 LNN) ;
  381. 'ERREUR' 'dimensions incohérentes entre TEMPS et LOGC ' ;
  382. 'QUITTER' CHITRNSP ;
  383. 'FINSI' ;
  384. TBPAR2.'LOGC' = TRANSI . 'LOGC' . ISOR0 ;
  385. CLOGC = TRANSI . 'LOGC' . ISOR0 ;
  386. 'SINON' ;
  387. 'ERREUR'
  388. 'Indice LOGC absent de la table de données.' ;
  389. 'QUITTER' CHITRNSP ;
  390. 'FINSI' ;
  391. 'SI' ( 'EXISTE' TRANSI 'TOT' ) ;
  392. LNN='DIME' (TRANSI. 'TOT' ) ;
  393. 'SI' ('NEG' LN1 LNN) ;
  394. 'ERREUR' 'dimensions incohérentes entre TEMPS et TOT ' ;
  395. 'QUITTER' CHITRNSP ;
  396. 'FINSI' ;
  397. TBPAR2.'TOT' = TRANSI . 'TOT' . ISOR0 ;
  398. TNC = TRANSI . 'TOT' . ISOR0 ;
  399. TT1= 'EXTR' TNC 'COMP' ;
  400. 'SINON' ;
  401. 'ERREUR'
  402. 'Indice TOT absent de la table de données.' ;
  403. 'QUITTER' CHITRNSP ;
  404. 'FINSI' ;
  405. 'SI' ( 'EXISTE' TRANSI 'EPS' ) ;
  406. TBPARM.'EPS' = TRANSI . 'EPS' ;
  407. 'FINSI' ;
  408. 'SI' ( 'EXISTE' TRANSI 'ITMAX' ) ;
  409. TBPARM.'ITMAX' = TRANSI . 'ITMAX' ;
  410. 'FINSI' ;
  411. 'SI' ( 'EXISTE' TRANSI 'ITERSOLI' ) ;
  412. TBPARM.'ITERSOLI' = TRANSI . 'ITERSOLI' ;
  413. 'FINSI' ;
  414. 'SI' ( 'EXISTE' TRANSI 'PRECPE' ) ;
  415. TBPARM.'PRECPE' = TRANSI . 'PRECPE' ;
  416. 'FINSI' ;
  417. 'SI' ( 'EXISTE' TRANSI 'NITERPE' ) ;
  418. TBPARM.'NITERPE' = TRANSI . 'NITERPE' ;
  419. 'FINSI' ;
  420. 'SI' ( 'EXISTE' TRANSI 'DELPE' ) ;
  421. TBPARM.'DELPE' = TRANSI . 'DELPE' ;
  422. 'FINSI' ;
  423. 'SI' ( 'EXISTE' TRANSI 'MDELPE' ) ;
  424. TBPARM.'MDELPE' = TRANSI . 'MDELPE' ;
  425. 'FINSI' ;
  426. 'SI' ( 'EXISTE' TRANSI 'NFI' ) ;
  427. TBPARM.'NFI' = TRANSI . 'NFI' ;
  428. 'FINSI' ;
  429. 'SI' ( 'EXISTE' TRANSI 'FION' ) ;
  430. LNN='DIME' (TRANSI. 'FION' ) ;
  431. 'SI' ('NEG' LN1 LNN) ;
  432. 'ERREUR' 'dimensions incohérentes entre TEMPS et FION ' ;
  433. 'QUITTER' CHITRNSP ;
  434. 'FINSI' ;
  435. TBPAR2.'FIONI' = TRANSI . 'FION' . ISOR0 ;
  436. CFIONI= TRANSI . 'FION' ;
  437. 'SINO' ;
  438. CFIONI= TNC -TNC ;
  439. 'FINSI' ;
  440. 'SI' ( 'EXISTE' TRANSI 'NTY4' ) ;
  441. LNN='DIME' (TRANSI. 'NTY4' ) ;
  442. 'SI' ('NEG' LN1 LNN) ;
  443. 'ERREUR' 'dimensions incohérentes entre TEMPS et NTY4 ' ;
  444. 'QUITTER' CHITRNSP ;
  445. 'FINSI' ;
  446. TBPAR2.'NTY4' = TRANSI . 'NTY4' . ISOR0 ;
  447. CNTY4 = TRANSI . 'NTY4' . ISOR0 ;
  448. ICTY4= 1 ;
  449. 'SINON' ;
  450. ICTY4= 0 ;
  451. 'FINSI' ;
  452. 'SI' ( 'EXISTE' TRANSI 'TEMPE' ) ;
  453. TBPAR2.'TEMPE' = TRANSI . 'TEMPE' ;
  454. TEMPERAT = TRANSI . 'TEMPE' ;
  455. 'FINSI' ;
  456. 'SI' ( 'EXISTE' TRANSI 'CLIM' ) ;
  457. TBPAR2.'CLIM' = TRANSI . 'CLIM' ;
  458. CCLIM= TRANSI . 'CLIM' ;
  459. 'FINSI' ;
  460. 'SI' ( 'EXISTE' TRANSI 'SORTIE' ) ;
  461. TBPARM.'SORTIE' = TRANSI . 'SORTIE' ;
  462. 'FINSI' ;
  463. 'SI' ( 'EXISTE' TRANSI 'IMPRIM' ) ;
  464. TBPARM.'IMPRIM' = TRANSI . 'IMPRIM' ;
  465. 'FINSI' ;
  466. *
  467. * ------------------------------------------------------------
  468. * DECROISSANCE
  469. * ------------------------------------------------------------
  470. *
  471. 'SI' ( 'EXISTE' TRANSI 'DECROISSANCE') ;
  472. TETDEC= TRANSI.'DECROISSANCE'.TETA ;
  473. * MESS ' TDEC ' ;
  474. TDEC= INDEX ( TRANSI. 'DECROISSANCE' ) ;
  475. NBDEC= DIME TDEC ;
  476. * MESS 'NBDEC ' ;
  477. *list nbdec ;
  478. NBDEC= NBDEC-1 ;
  479. *list nbdec ;
  480. *LIST TDEC ;
  481. TBDEC= TRANSI.'DECROISSANCE'. 1 ;
  482. MO1PERE MOPERE NPERE = NOCOMCHI TB1 'NUMCOMP' (TBDEC.PERE) ;
  483. LAMP= EXCO (TNC -TNC) MOPERE MOPERE ;
  484. MALAMP= 'EXTR' LAMP 'MAIL' ;
  485. * MESS 'LAMP ' ;
  486. * LIST LAMP ;
  487. LISMPERE= MOTS ;
  488. LISMFILS= MOTS ;
  489. 'REPE' BDECR NBDEC ;
  490. TBDEC= TRANSI.'DECROISSANCE'. &BDECR ;
  491. MO1PERE MOPERE NPERE = NOCOMCHI TB1 'NUMCOMP' (TBDEC.PERE) ;
  492. MO1FILS MOFILS NFILS = NOCOMCHI TB1 'NUMCOMP' (TBDEC.FILS) ;
  493. * LAMP=LAMP+( NOMC TBDEC.LAMBDA MOPERE ) ;
  494. LAMP= LAMP+('MANU' 'CHPO' MALAMP 1 MOPERE TBDEC.LAMBDA ) ;
  495. LISMPERE= 'INSE' LISMPERE &BDECR MOPERE ;
  496. LISMFILS= 'INSE' LISMFILS &BDECR MOFILS ;
  497. 'FIN' BDECR ;
  498. 'FINSI' ;
  499. * MESS ' LAMP apres chargement ' ;
  500. * LIST LAMP ;
  501. * MESS ' LISMPERE ' ;
  502. * LIST LISMPERE ;
  503. * MESS ' LISMFILS ' ;
  504. * LIST LISMFILS ;
  505. *
  506. *--------------------------------------------------------------------*
  507. * RECUPERATION DES CONDITIONS AUX LIMITES ET DES CHARGEMENTS *
  508. *--------------------------------------------------------------------*
  509. *
  510. * CL de type Dirichlet : BLOCAGE
  511. * TRACE_IMPOSE
  512. 'SI' ( 'EXISTE' TRANSI 'BLOCAGE' ) ;
  513. MATBLOC = TRANSI . 'BLOCAGE' ;
  514. 'SI' ( 'EXISTE' TRANSI 'TRACE_IMPOSE') ;
  515. CCHAIMP = TRANSI . 'TRACE_IMPOSE' ;
  516. 'SINON' ;
  517. 'ERREUR' 'Valeurs de traces de charge imposée absentes' ;
  518. 'QUITTER' CHITRNSP ;
  519. 'FINSI' ;
  520. 'FINSI' ;
  521. * FLUX_IMPOSE
  522. 'SI' ( 'EXISTE' TRANSI 'FLUX_IMPOSE') ;
  523. FLUIMPO = TRANSI . 'FLUX_IMPOSE' ;
  524. 'FINSI' ;
  525. * SOURCE
  526. 'SI' ( 'EXISTE' TRANSI 'SOURCE' ) ;
  527. CHASOUR = TRANSI . 'SOURCE' ;
  528. 'SINON' ;
  529. MOCOMP= 'EXTR' TT1 1 ;
  530. SOURC0= 'MANU' 'CHPO' CEHYTOT 1 MOCOMP 0.D0 ;
  531. 'REPE' BOU6 NBCOMP ;
  532. MOCOMP= 'EXTR' TT1 &BOU6 ;
  533. TERSC = 'MANU' 'CHPO' CEHYTOT 1 MOCOMP 0.D0 ;
  534. SOURC0= SOURC0 +TERSC ;
  535. 'FIN' BOU6 ;
  536. 'FINSI' ;
  537. * tersc1 source a utiliser dans le calcul de AF
  538. TERSC1 = 'MANU' 'CHPO' CEHYTOT 1 'SOUR' 0.D0 ;
  539. *
  540. *------------------------------------------- ------------------------*
  541. * INITIALISATION DE LA TABLE RESULTAT
  542. *--------------------------------------------------------------------*
  543. *
  544. 'SI' ( 'EXISTE' TRANSI 'SORTIE' ) ;
  545. NBSOR = DIME ( TRANSI . 'SORTIE' ) ;
  546. SI (EGA ISOR0 0) ;
  547. 'REPETER' BOU1 NBSOR ;
  548. MOSOR= 'EXTR' ( TRANSI . 'SORTIE' ) &BOU1 ;
  549. TRANSI . MOSOR = TABLE ;
  550. 'FIN' BOU1 ;
  551. 'SINON' ;
  552. 'REPETER' BOU2 NBSOR ;
  553. MOSOR= 'EXTR' ( TRANSI . 'SORTIE' ) &BOU2 ;
  554. 'SI' ( 'EXIS' TRANSI MOSOR) ;
  555. LNN='DIME' (TRANSI. MOSOR ) ;
  556. 'SI' ('NEG' LN1 LNN) ;
  557. MESERR = 'CHAI' 'dimensions incohérentes entre TEMPS et' MOSOR ;
  558. 'ERREUR' MESERR ;
  559. 'QUITTER' CHITRNSP ;
  560. 'FINSI' ;
  561. 'SINON' ;
  562. 'ERREUR'
  563. ( CHAI 'Indice ' MOSOR ' absent de la table de données.' ) ;
  564. 'QUITTER' CHITRNSP ;
  565. FINSI ;
  566. 'FIN' BOU2 ;
  567. 'FINSI' ;
  568. 'FINSI' ;
  569.  
  570. *--------------------------------------------------------------------*
  571. * CE QUI EST INDEPENDANT DU COMPOSANT ET DU TEMPS *
  572. *--------------------------------------------------------------------*
  573. *
  574. * on récupère les noms des reactifs
  575. *
  576. NBREA= 0 ;
  577. SI ( EXIS TB1 'IDEN' 'REAC') ;
  578. NOMREAC= MOTS ;
  579. NBREA=DIME TB1.IDEN.REAC ;
  580. REPETER BOUREA NBREA ;
  581. NUNU= EXTR ( TB1.IDEN.REAC ) &BOUREA ;
  582. NNCH NOM2 NUNU = NOCOMCHI TB1 'NUMCOMP' NUNU ;
  583. NOMREAC= NOMREAC ET ( MOTS NOM2 ) ;
  584. FIN BOUREA;
  585. * LIST NOMREAC ;
  586. FINSI ;
  587. *
  588. * on récupère les noms des non reactifs
  589. *
  590. NBNR= 0 ;
  591. SI ( EXIS TB1 'IDEN' 'PARF') ;
  592. NOMPARF= MOTS ;
  593. NBNR=DIME TB1.IDEN.PARF ;
  594. NBNR1= NBNR ;
  595. REPETER BOUNR NBNR1;
  596. NUNU= EXTR ( TB1.IDEN.PARF ) &BOUNR ;
  597. NNCH NOM2 NUNU = NOCOMCHI TB1 'NUMCOMP' NUNU ;
  598. *
  599. * les non reactifs intervenant dans les decroissances sont traités
  600. * comme des reactifs sinon les quantitées de matieres devenant non
  601. * reactives ne sont plus transportées
  602. 'SI' ( 'EXISTE' TRANSI 'DECROISSANCE') ;
  603. IREA= FAUX ;
  604. 'REPE' B2DECR NBDEC ;
  605. TBDEC= TRANSI.'DECROISSANCE'. &B2DECR ;
  606. 'SI' ('EGA' (TBDEC.'PERE') NUNU) ;
  607. IREA= VRAI ;
  608. 'QUITTER' B2DECR ;
  609. 'SINON' ;
  610. 'SI' ('EGA' (TBDEC.'FILS') NUNU) ;
  611. IREA= VRAI ;
  612. 'QUITTER' B2DECR ;
  613. 'FINSI' ;
  614. 'FINSI' ;
  615. 'FIN' B2DECR ;
  616. 'SI' IREA ;
  617. NBREA=NBREA+1 ;
  618. NBNR= NBNR-1 ;
  619. NOMREAC= NOMREAC ET ( MOTS NOM2 ) ;
  620. 'SINON' ;
  621. NOMPARF= NOMPARF ET ( MOTS NOM2 ) ;
  622. 'FINSI' ;
  623. 'SINON' ;
  624. NOMPARF= NOMPARF ET ( MOTS NOM2 ) ;
  625. 'FINSI' ;
  626. FIN BOUNR ;
  627. * LIST NOMPARF ;
  628. FINSI ;
  629. *
  630. *
  631. * Table utilisée par les operateurs MATP, SMTP, HYBP et HDEBI
  632. *
  633. TAB = 'TABLE' ;
  634. TAB.'SOUSTYPE' = 'DARCY_TRANSITOIRE' ;
  635. TAB.'THETA' = TETA ;
  636. TAB.'THETA_CONVECTION'= TETA ;
  637. TAB.'SURF' = EMSURF ;
  638. TAB.'PAS' = DELTAT ;
  639. TAB.'TRACE'= MANU CHPO FACHYTOT 1 TH 0.D0 ;
  640. TAB.'CHARGE'= MANU CHPO CEHYTOT 1 H 0.D0 ;
  641. *
  642. * Initialisations du calcul
  643. *
  644. MASHYB = 'MHYB' MODHYB MAT1 ;
  645. MC SMTR = 'SMTP' MODHYB MASHYB TAB TERSC1 QFACE ;
  646. MF = 'MATP' MODHYB MASHYB TAB ;
  647. AF = MF ET MC ;
  648. *
  649. *
  650. TB3= CHI2 TB1 TBPAR2 TBPARM ;
  651. *
  652. *
  653. CAQU=TB3.AQUE ;
  654. CAQU0=CAQU ;
  655. CFIX0=TB3.FIXE ;
  656. CFIXE=TB3.FIXE ;
  657. CLOGC= TB3.LOGC ;
  658. FLU00= TAQU -TAQU ;
  659. FLU01= FLU00 ;
  660. *
  661. * Les coefficients
  662. *
  663. COEMC= COEMC * XVOLU ;
  664. PETID= DMTD MODHYB MASHYB ;
  665. ALFA= (TETA* PETID) +(COEMC/DELTAT ) ;
  666. ALFA= ALFA ** (-1) ;
  667. COEF1=ALFA*COEMC/DELTAT ;
  668. COEF2= ALFA* PETID*(1. - TETA) ;
  669. COEF3= ALFA*(1. - TETA) ;
  670. COEF4= 1. - (ALFA * TETA * PETID ) ;
  671. COEF5= ALFA*TETA*PETID ;
  672. *
  673. * Indice ISOR0 de la table resulat
  674. *
  675. TMPS= TINIT ;
  676. TRANSI . 'TEMPS' . ISOR0 = TMPS ;
  677. TRANSI . 'TOT' . ISOR0 = TNC ;
  678. TRANSI . 'AQUE' . ISOR0 = CAQU ;
  679. TRANSI . 'FIXE' . ISOR0 = CFIXE ;
  680. TRANSI . 'TAQU' . ISOR0 = TAQU ;
  681. TRANSI . 'LOGC' . ISOR0 = CLOGC ;
  682. TRANSI . 'FLUX' . ISOR0 = 'HDEB' MODHYB MASHYB CAQU TAQU
  683. QFACE ;
  684. * 'MESS' ' FLUX 0' ;
  685. * LIST ( TRANSI . 'FLUX' . ISOR0 ) ;
  686. 'SI' ( 'EXISTE' TRANSI 'SORTIE' ) ;
  687. 'REPETER' BOU4 NBSOR ;
  688. MOSOR= 'EXTR' ( TRANSI . 'SORTIE' ) &BOU4 ;
  689. TRANSI . MOSOR . ISOR0 = TB3. MOSOR ;
  690. 'FIN' BOU4 ;
  691. 'SI' ( 'EXISTE' TRANSI 'PREC' ) ;
  692. CPRECIP= TB3.'PREC' ;
  693. 'FINSI' ;
  694. 'SI' ( 'EXISTE' TRANSI 'FION' ) ;
  695. CFIONI= TB3.'FION' ;
  696. 'FINSI' ;
  697. 'SI' ( 'EXISTE' TRANSI 'TYP6' ) ;
  698. CTYP6= TB3.'TYP6' ;
  699. 'FINSI' ;
  700. 'SI' ( 'EXISTE' TRANSI 'TYP5' ) ;
  701. CTYP5= TB3.'TYP5' ;
  702. 'FINSI' ;
  703. 'SI' ( 'EXISTE' TRANSI 'TYP3' ) ;
  704. CTYP3= TB3.'TYP3' ;
  705. 'FINSI' ;
  706. 'SI' ( 'EXISTE' TRANSI 'NTY4' ) ;
  707. CNTY4= TB3.'NTY4' ;
  708. ICTY4= 1 ;
  709. 'FINSI' ;
  710. 'SI' ( 'EXISTE' TRANSI 'SURF' ) ;
  711. CSURF= TB3.'SURF' ;
  712. 'FINSI' ;
  713. 'SI' ( 'EXISTE' TRANSI 'SOLU' ) ;
  714. CSOLU= TB3.'SOLU' ;
  715. 'FINSI' ;
  716. 'FINSI' ;
  717. *
  718. * -------------------------------------------------------------------
  719. * Boucle sur le temps
  720. * -------------------------------------------------------------------
  721. *
  722. ISOR=1 ;
  723. ITERCUM= 0 ;
  724. NPAFLUX= 0 ;
  725. REPETER BOUTMP NBTPS ;
  726. NUSOR= 'EXTR' LTPSOR ISOR ;
  727. TMPS= TMPS+DELTAT ;
  728. TNC1= TNC ;
  729. 'SI' ( 'EXISTE' TRANSI 'SOURCE' ) ;
  730. SOURC= TIRE CHASOUR TMPS ;
  731. 'SINON' ;
  732. SOURC= SOURC0 ;
  733. 'FINSI' ;
  734. 'SI' ( 'EXISTE' TRANSI 'BLOCAGE' ) ;
  735. CHAIMP= TIRE CCHAIMP TMPS ;
  736. CHAIMP= 'CHAN' 'ATTRIBUT' CHAIMP 'NATURE' 'DISCRET' ;
  737. 'FINSI' ;
  738. 'SI' ( 'EXISTE' TRANSI 'FLUX_IMPOSE' ) ;
  739. FLUIMP= TIRE FLUIMPO TMPS ;
  740. FLUIMP= 'CHAN' 'ATTRIBUT' FLUIMP 'NATURE' 'DISCRET' ;
  741. 'FINSI' ;
  742. TOTO= TAQU ;
  743. * FLU2= TOTO - TOTO ;
  744. DOMERR= CEHYTOT ;
  745. *
  746. * ---------------------------
  747. * Transport des non réactifs
  748. * ---------------------------
  749. *
  750. SI (NBNR > 0 ) ;
  751. *
  752. I=0 ;
  753. REPETER BLOC1 NBNR ;
  754. I= I + 1 ;
  755. MOCOMP= EXTR NOMPARF I ;
  756. CONC= EXCO MOCOMP TOTO MOCOMP ;
  757. CHA2= EXCO MOCOMP TNC MOCOMP ;
  758. TSOUR= EXCO MOCOMP SOURC 'SOUR' ;
  759. TOTO= TOTO - CONC ;
  760. TNC = TNC - CHA2 ;
  761. *
  762. * = Conditions initiales =
  763. *
  764. TFHYB = NOMC 'TH' CONC ;
  765. TCHYB = 'HYBP' MODHYB MASHYB TFHYB ;
  766. TAB.'TRACE' = TFHYB ;
  767. TAB.'CHARGE' = TCHYB ;
  768. *
  769. * = VALEURS imposées =
  770. *
  771. *
  772. RIGS SMTR = 'SMTP' MODHYB MASHYB TAB TSOUR QFACE ;
  773. *
  774. 'SI' ('EXISTE' TRANSI 'BLOCAGE') ;
  775. CLIAB= EXCO MOCOMP CHAIMP 'H' ;
  776. EEBAS = 'DEPI' MATBLOC CLIAB ;
  777. AFF = AF 'ET' MATBLOC ;
  778. SMTR = SMTR 'ET' EEBAS ;
  779. 'SINON' ;
  780. AFF =AF ;
  781. 'FINSI' ;
  782. 'SI' ('EXISTE' TRANSI 'FLUX_IMPOSE') ;
  783. FLUIMPC= EXCO MOCOMP FLUIMP 'FLUX' ;
  784. SMTR = SMTR ET FLUIMPC ;
  785. 'FINSI' ;
  786.  
  787. TP1 = 'RESO' AFF SMTR ;
  788. TP2 = 'EXCO' TP1 'TH' 'TH' ;
  789. CONC0 = 'NOMC' 'SCAL' TP2 ;
  790. CONC1 = 'NOMC' 'SCAL' TFHYB ;
  791. CONC2 = TETA *CONC0 + ((1.D0-TETA )*CONC1) ;
  792. CONC3 = (-1.D0) * CONC2 * QFACE ;
  793. TERSC2 = 'DIVU' MODHYB CONC3 MCHYB ;
  794. TERSC2 = 'NOMC' 'SOUR' TERSC2 ;
  795. TERSCE = TSOUR + TERSC2 ;
  796. CHA2 = 'HYBP' MODHYB MASHYB TP2 TAB TERSCE ;
  797. CONC= NOMC MOCOMP TP2 ;
  798. CHA2= NOMC MOCOMP CHA2 ;
  799. TOTO= TOTO+CONC ;
  800. TNC = TNC + CHA2 ;
  801. FIN BLOC1 ;
  802. TAQU= TOTO ;
  803. TAQU0=TAQU ;
  804. FINSI ;
  805. *
  806. *
  807. * ---------------------------
  808. * Transport des réactifs
  809. * ---------------------------
  810. *
  811. AAS1= BMTD MODHYB MASHYB (COEF1*TNC) ;
  812. ABS1= BMTD MODHYB MASHYB (ALFA*SOURC) ;
  813. ACS1= BMTD MODHYB MASHYB ( COEF2 * CAQU0) ;
  814. ADS1=DMMU MODHYB MASHYB QFACE TAQU0 ;
  815. AES1= BMTD MODHYB MASHYB (COEF3*ADS1) ;
  816. AS1 = ACS1 - ABS1 - AAS1 - AES1 ;
  817. AT1=(COEF1*TNC) - (ALFA*(1.-TETA)*PETID*CAQU0) +(COEF3*ADS1) ;
  818. AT1=AT1+ (ALFA * SOURC ) ;
  819. CFION2=CFIONI;
  820. CLOGC2=CLOGC ;
  821. CAQU2=CAQU ;
  822. 'SI' ( 'EXISTE' TRANSI 'CLIM' ) ;
  823. CCLIM2=CCLIM ;
  824. 'FINSI' ;
  825. 'SI' ( 'EXISTE' TRANSI 'TEMPE' ) ;
  826. TEMPERA2=TEMPERAT ;
  827. 'FINSI' ;
  828. CFIXE= CFIX0 ;
  829. CFIX2=CFIXE ;
  830. TAQU = TAQU0 ;
  831. * -------------
  832. * Couplage
  833. * -------------
  834. ITECO= 0 ;
  835. REPETER BLOC2 ITERC ;
  836. ITECO= ITECO+ 1 ;
  837. AS2 = BMTD MODHYB MASHYB ( COEF4 * CFIXE) ;
  838. AS = AS1 +AS2 ;
  839. ABT2= COEF5*CFIXE ;
  840. *
  841. *
  842. * Résolution composante par composante
  843. *
  844. TNC0=TNC ;
  845. REPETER BLOC4 NBREA ;
  846. MOCOMP= EXTR NOMREAC &BLOC4 ;
  847. * LIST MOCOMP ;
  848. *
  849. CONC0= EXCO MOCOMP TAQU MOCOMP ;
  850. TAQU = TAQU - CONC0 ;
  851. ASI = EXCO MOCOMP AS 'FLUX' ;
  852. 'SI' ('EXISTE' TRANSI 'BLOCAGE' ) ;
  853. CLIAB= EXCO MOCOMP CHAIMP 'H' ;
  854. EEBAS = 'DEPI' MATBLOC CLIAB ;
  855. AFF = AF 'ET' MATBLOC ;
  856. ASS = ASI ET EEBAS ;
  857. 'SINON' ;
  858. ASS = ASI ;
  859. AFF= AF ;
  860. 'FINSI' ;
  861. 'SI' ('EXISTE' TRANSI 'FLUX_IMPOSE' ) ;
  862. FLUIMPC=EXCO MOCOMP FLUIMP 'FLUX' ;
  863. ASS = ASS ET FLUIMPC ;
  864. 'FINSI' ;
  865. CONC1= 'RESOU' AFF ASS ;
  866. CONC0= EXCO CONC1 'TH' MOCOMP ;
  867. TAQU = TAQU + CONC0 ;
  868. LAT1=EXCOM MOCOMP AT1 MOCOMP ;
  869. EABT2=EXCO MOCOMP ABT2 MOCOMP ;
  870. AAT2= DMMU MODHYB MASHYB QFACE CONC0 ;
  871. AT2= EABT2 + (ALFA*TETA*AAT2 );
  872. TNL=EXCO MOCOMP TNC MOCOMP ;
  873. TNC=TNC -TNL ;
  874. TNC= TNC +AT2 +LAT1 ;
  875. FIN BLOC4 ;
  876. *
  877. * Prise en compte de la décroissance
  878. *
  879. 'SI' ( 'EXISTE' TRANSI 'DECROISSANCE') ;
  880. * mess ' avant decroissance ' ;
  881. * list tnc ;
  882. TNDEC=(TETDEC*TNC)+((1.-TETDEC)*TNC1) ;
  883. TNDEC= EXCO TNDEC LISMPERE LISMPERE ;
  884. TTPERE= LAMP*TNDEC LISMPERE LISMPERE LISMPERE ;
  885. TTFILS=NOMC TTPERE LISMPERE LISMFILS 'NATU' 'DISCRET' ;
  886. TNC=TNC+(DELTAT*(TTFILS-TTPERE)) ;
  887. * mess ' apres decroissance ' ;
  888. * list tnc ;
  889. 'FINSI' ;
  890. *
  891. * Convergence sur TNC
  892. *
  893. * NBCOMP nombre de composantes de CTOT
  894. DIFTN=ABS(TNC-TNC0) ;
  895. EPSTN0=EPSS*((ABS TNC )+(MASQ TNC EGALE 0. ) ) ;
  896. MAMA0= MASQ DIFTN SUPERIEUR 'SOMME' EPSTN0 ;
  897. * MESS 'mama0 ' ; LIST MAMA0 ;
  898. SI ( MAMA0 EGA 0 ) ;
  899. MESS ' on a convergé ' ;
  900. QUITTER BLOC2 ;
  901. FINSI ;
  902. EPSTN=EPSS*0.001*((ABS TNC )+(MASQ TNC EGALE 0. ) ) ;
  903. MAMA= MASQ DIFTN SUPERIEUR EPSTN ;
  904. II=1 ;
  905. MOCOMP= EXTR TT1 II ;
  906. BB= EXCO MOCOMP MAMA ;
  907. NBC1= NBCOMP-1 ;
  908. SI ( NBC1 NEG 0 ) ;
  909. REPETER BLOC3 NBC1 ;
  910. II=II+1 ;
  911. MOCOMP= EXTR TT1 II ;
  912. CC= EXCO MOCOMP MAMA ;
  913. BB=BB+CC ;
  914. FIN BLOC3 ;
  915. FINSI ;
  916. DOMERR= BB POIN SUPERIEUR 0. ;
  917. * OPTION DONN 5 ;
  918. CFION2= REDU DOMERR CFIONI ;
  919. CLOGC2= REDU DOMERR CLOGC ;
  920. CAQU2= REDU DOMERR CAQU ;
  921. CFIX2= REDU DOMERR CFIXE ;
  922. TTNC= REDU DOMERR TNC ;
  923. TBPAR2.FIONI= CFION2 ;
  924. TBPAR2.LOGC= CLOGC2 ;
  925. TBPAR2.TOT= TTNC ;
  926. 'SI' ( 'EXISTE' TRANSI 'CLIM' ) ;
  927. CCLIM2= REDU DOMERR CCLIM ;
  928. TBPAR2.CLIM= CCLIM2 ;
  929. 'FINSI' ;
  930. 'SI' ( 'EXISTE' TRANSI 'TEMPE' ) ;
  931. TEMPERA2= REDU DOMERR TEMPERAT ;
  932. TBPAR2.'TEMPE'= TEMPERA2 ;
  933. 'FINSI' ;
  934. 'SI' ( ICTY4 'EGA' 1 ) ;
  935. CPPP = REDU DOMERR CNTY4 ;
  936. TBPAR2.'NTY4'= CPPP ;
  937. 'FINSI' ;
  938. * on va calculer chimi2 sur un sous maillage et on garde dans CCAQU
  939. * ce qui ne bougera pas
  940. CCFIXE= CFIXE -CFIX2 ;
  941. CCAQU= CAQU -CAQU2 ;
  942. CCLOGC= CLOGC -CLOGC2 ;
  943. *
  944. *
  945. TB3= CHI2 TB1 TBPAR2 TBPARM ;
  946. *
  947. *
  948. CAQU= CCAQU + TB3.AQUE ;
  949. CFIXE= CCFIXE + TB3.FIXE ;
  950. CLOGC= CCLOGC+TB3.LOGC ;
  951. 'SI' ( 'EXISTE' TRANSI 'PREC' ) ;
  952. CPPP='REDU' DOMERR CPRECIP ;
  953. CPRECIP= CPRECIP -CPPP + TB3.'PREC' ;
  954. 'FINSI' ;
  955. 'SI' ( 'EXISTE' TRANSI 'FION' ) ;
  956. CPPP='REDU' DOMERR CFIONI ;
  957. CFIONI= CFIONI - CPPP + TB3.'FION' ;
  958. 'FINSI' ;
  959. 'SI' ( 'EXISTE' TRANSI 'TYP6' ) ;
  960. CPPP='REDU' DOMERR CTYP6 ;
  961. CTYP6= CTYP6 - CPPP + TB3.'TYP6' ;
  962. 'FINSI' ;
  963. 'SI' ( 'EXISTE' TRANSI 'TYP5' ) ;
  964. CPPP='REDU' DOMERR CTYP5 ;
  965. CTYP5= CTYP5 -CPPP + TB3.'TYP5' ;
  966. 'FINSI' ;
  967. 'SI' ( 'EXISTE' TRANSI 'TYP3' ) ;
  968. CPPP='REDU' DOMERR CTYP3 ;
  969. CTYP3= CTYP3 -CPPP +TB3.'TYP3' ;
  970. 'FINSI' ;
  971. 'SI' ( 'EXISTE' TRANSI 'NTY4' ) ;
  972. CPPP='REDU' DOMERR CNTY4 ;
  973. CNTY4= CNTY4 -CPPP + TB3.'NTY4' ;
  974. 'FINSI' ;
  975. 'SI' ( 'EXISTE' TRANSI 'SURF' ) ;
  976. CPPP='REDU' DOMERR CSURF ;
  977. CSURF= CSURF -CPPP +TB3.'SURF' ;
  978. 'FINSI' ;
  979. 'SI' ( 'EXISTE' TRANSI 'SOLU' ) ;
  980. CPPP='REDU' DOMERR CSOLU ;
  981. CSOLU= CSOLU -CPPP +TB3.'SOLU' ;
  982. 'FINSI' ;
  983. CAQU0=CAQU ;
  984. CFIX0= CFIXE ;
  985. *
  986. FIN BLOC2 ;
  987. * ------------
  988. *
  989. CAQU0=CAQU ;
  990. CFIX0= CFIXE ;
  991. ITERCUM=ITERCUM+ ITECO ;
  992. MESS ' Iterations ' ITECO ITERCUM ;
  993. TAQU0=TAQU ;
  994. * Calcul du flux
  995. NPAFLUX= NPAFLUX+1 ;
  996. FLUPA= FLU01+('HDEB' MODHYB MASHYB CAQU TAQU QFACE ) ;
  997. 'OUBL' FLU01 ;
  998. SI( EXIS TB1 'IDEN' 'IMMO') ;
  999. NBIMMO=DIME TB1.IDEN.IMMO ;
  1000. REPE BOUIMMO NBIMMO ;
  1001. NUNU= EXTR( TB1.IDEN.IMMO) &BOUIMMO ;
  1002. NNCH NOM2 NUNU = NOCOMCHI TB1 'NUMCOMP' NUNU ;
  1003. FLU03= EXCO NOM2 FLUPA NOM2 ;
  1004. FLUPA = FLUPA- FLU03 ;
  1005. FIN BOUIMMO ;
  1006. FINSI ;
  1007. FLU01= FLUPA ;
  1008. SI( NUSOR 'EGA' &BOUTMP ) ;
  1009. ISOR2=ISOR0+ISOR ;
  1010. TRANSI. 'TEMPS' . ISOR2 = TMPS ;
  1011. TRANSI.TOT . ISOR2 = TNC ;
  1012. TRANSI.AQUE . ISOR2 = CAQU ;
  1013. TRANSI.FIXE . ISOR2 = CFIXE;
  1014. TRANSI.'TAQU' . ISOR2 = TAQU;
  1015. TRANSI.'LOGC' . ISOR2 = CLOGC ;
  1016. TRANSI . 'FLUX' . ISOR2 = FLUPA / NPAFLUX ;
  1017. * TRANSI . 'FLU2' . ISOR2 = FLU2 ;
  1018. 'SI' ( 'EXISTE' TRANSI 'PREC' ) ;
  1019. TRANSI.'PREC' . ISOR2 = CPRECIP ;
  1020. 'FINSI' ;
  1021. 'SI' ( 'EXISTE' TRANSI 'FION' ) ;
  1022. TRANSI.'FION' . ISOR2 = CFIONI ;
  1023. 'FINSI' ;
  1024. 'SI' ( 'EXISTE' TRANSI 'TYP6' ) ;
  1025. TRANSI.'TYP6' . ISOR2 = CTYP6 ;
  1026. 'FINSI' ;
  1027. 'SI' ( 'EXISTE' TRANSI 'TYP5' ) ;
  1028. TRANSI.'TYP5' . ISOR2 = CTYP5 ;
  1029. 'FINSI' ;
  1030. 'SI' ( 'EXISTE' TRANSI 'TYP3' ) ;
  1031. TRANSI.'TYP3' . ISOR2 = CTYP3 ;
  1032. 'FINSI' ;
  1033. 'SI' ( 'EXISTE' TRANSI 'NTY4' ) ;
  1034. TRANSI.'NTY4' . ISOR2 = CNTY4 ;
  1035. 'FINSI' ;
  1036. 'SI' ( 'EXISTE' TRANSI 'SURF' ) ;
  1037. TRANSI.'SURF' . ISOR2 = CSURF ;
  1038. 'FINSI' ;
  1039. 'SI' ( 'EXISTE' TRANSI 'SOLU' ) ;
  1040. TRANSI.'SOLU' . ISOR2 =CSOLU ;
  1041. 'FINSI' ;
  1042. FLU01=FLU00 ;
  1043. NPAFLUX= 0 ;
  1044. ISOR=ISOR+1 ;
  1045. 'FINSI' ;
  1046. MENAGE ;
  1047. FIN BOUTMP ;
  1048. *
  1049. 'FINP' TRANSI ;
  1050.  
  1051.  
  1052.  
  1053.  

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