Télécharger inichimi.procedur

Retour à la liste

Numérotation des lignes :

  1. * INICHIMI PROCEDUR JC220346 12/09/12 21:15:07 7501
  2. DEBPROC INICHIMI TTB1/OBJET BBD1/MOT BBD2/MOT TTB2/OBJET TTB3/OBJET
  3. G1/MAILLAGE ;
  4. ********************************************************************
  5. * initialisation des données de CHI1 et CHI2 avec des constantes
  6. * sur le maillage G1
  7. ********************************************************************
  8. 'SI' ('EXIS' BBD1) ;
  9. BASE1= BBD1 ;
  10. 'SINON' ;
  11. 'MESS' 'Entrez l adresse du fichier composants de la base de données';
  12. OBTE BASE1*MOT ;
  13. FINSI ;
  14. 'SI' ('EXIS' BBD2) ;
  15. BASE2= BBD2 ;
  16. 'SINON' ;
  17. 'MESS' 'Entrez l adresse du fichier LOGK de la base de données';
  18. OBTE BASE2*MOT ;
  19. FINSI ;
  20. *
  21. * On trie les objets
  22. ILTB1= VRAI ;
  23. ILTB2= VRAI ;
  24. ILTB3= VRAI ;
  25. 'SI' ('EXIS' TTB1 ) ;
  26. 'SI' ('EGA' (TTB1. 'CLASSE') 'DONCHI1 ') ;
  27. TB2=TTB1 ;
  28. ILTB1=FAUX ;
  29. 'SINON' ;
  30. 'SI' ('EGA' (TTB1. 'CLASSE') 'DONCHI2 ') ;
  31. TBC2=TTB1 ;
  32. ILTB2=FAUX ;
  33. 'SINON' ;
  34. 'SI' ('EGA' (TTB1. 'CLASSE') 'PARMCHI2') ;
  35. TBPAR2=TTB1 ;
  36. ILTB3=FAUX ;
  37. 'SINON' ;
  38. 'MESS' 'L objet ne convient pas' ;
  39. 'FINSI' ;
  40. 'FINSI' ;
  41. 'FINSI' ;
  42. 'FINSI' ;
  43. 'SI' ('EXIS' TTB2 ) ;
  44. 'SI' ('EGA' (TTB2. 'CLASSE') 'DONCHI1 ') ;
  45. TB2=TTB2 ;
  46. ILTB1=FAUX ;
  47. 'SINON' ;
  48. 'SI' ('EGA' (TTB2. 'CLASSE') 'DONCHI2 ') ;
  49. TBC2=TTB2 ;
  50. ILTB2=FAUX ;
  51. 'SINON' ;
  52. 'SI' ('EGA' (TTB2. 'CLASSE') 'PARMCHI2') ;
  53. TBPAR2=TTB2 ;
  54. ILTB3=FAUX ;
  55. 'SINON' ;
  56. 'MESS' 'L objet ne convient pas' ;
  57. 'FINSI' ;
  58. 'FINSI' ;
  59. 'FINSI' ;
  60. 'FINSI' ;
  61. 'SI' ('EXIS' TTB3 ) ;
  62. 'SI' ('EGA' (TTB3. 'CLASSE') 'DONCHI1 ') ;
  63. TB2=TTB3 ;
  64. ILTB1=FAUX ;
  65. 'SINON' ;
  66. 'SI' ('EGA' (TTB3. 'CLASSE') 'DONCHI2 ') ;
  67. TBC2=TTB3 ;
  68. ILTB2=FAUX ;
  69. 'SINON' ;
  70. 'SI' ('EGA' (TTB3. 'CLASSE') 'PARMCHI2') ;
  71. TBPAR2=TTB3 ;
  72. ILTB3=FAUX ;
  73. 'SINON' ;
  74. 'MESS' 'L objet ne convient pas' ;
  75. 'FINSI' ;
  76. 'FINSI' ;
  77. 'FINSI' ;
  78. 'FINSI' ;
  79. *
  80. *
  81. 'SI' ILTB1;
  82. TB2= OBJET DONCHI1 ;
  83. 'MESS' 'Entrez la liste des composants ' ;
  84. OBTE LICOMP*LISTENTI ;
  85. TB2%GIDEN LICOMP ;
  86. FINSI ;
  87. INICHI1 TB2 BASE1 BASE2 ;
  88. 'MESS''Voulez vous afficher le contenu actuel de l objet CHIMI1 ?' ;
  89. 'OBTE' IAFFI ;
  90. SI(EGA IAFFI 'QUIT') ;
  91. QUITTER INICHIMI ;
  92. FINSI ;
  93. TB3='CHI1' TB2 'COMP' BASE1 'LOGK' BASE2 ;
  94. 'SI' ('EGA' IAFFI 'OUI') ;
  95. IMPCHI1 TB3 'TB3' ;
  96. 'FINS' ;
  97. *
  98. * OBJET PARMCHI2
  99. SI ILTB3 ;
  100. TBPAR2= OBJET PARMCHI2 ;
  101. TBPAR2%GITMAX 95 ;
  102. TBPAR2%GEPS 1.D-4 ;
  103. FINSI ;
  104. TBPAR2%GIMPRIM (LECT 1) ;
  105. *TBPAR2%GSORTIE (MOTS 'PREC' 'TYP3' 'SOLU' 'FION') ;
  106. TBPAR2%GSORTIE (MOTS 'SOLU' 'FION') ;
  107. *
  108. *
  109. * OBJET DONCHI2
  110. LICOMP= TB2%ACCES GIDEN ;
  111. NBCOMP=DIME LICOMP ;
  112. *LIST LICOMP ;
  113. LITOT= LICOMP ;
  114. IITOT= VRAI ;
  115. SI ( ILTB2) ;
  116. TBC2=OBJET DONCHI2 ;
  117. SI (NON (EXIS G1)) ;
  118. OPTION DIME 2 ;
  119. G1 = MANU POI1 ( 0. 0. ) ;
  120. FINSI ;
  121. NUTOT= 'EXTR' LICOMP 1 ;
  122. MO4 MO3 NU2 = NOCOMCHI TB3 'NUMCOMP' NUTOT ;
  123. CTOT= MANU CHPO G1 1 MO3 0. ;
  124. CLGC= MANU CHPO G1 1 MO3 0. ;
  125. TBC2=OBJET DONCHI2 ;
  126. REPE BBCOMP NBCOMP ;
  127. NUTOT= 'EXTR' LICOMP &BBCOMP ;
  128. MO4 MO3 NU2 = NOCOMCHI TB3 'NUMCOMP' NUTOT ;
  129. CTOT1= MANU CHPO G1 1 MO3 0. ;
  130. CLGC1 = MANU CHPO G1 1 MO3 0. ;
  131. CTOT=CTOT+CTOT1 ;
  132. CLGC= CLGC+CLGC1 ;
  133. FIN BBCOMP ;
  134. SINON ;
  135. SI (EGA (TYPE (TBC2%ACCES GTOT)) 'CHPOINT ') ;
  136. mess '(TBC2%ACCES GTOT))= CHPOINT ' ;
  137. SI (EGA (TYPE (TBC2%ACCES GLOGC)) 'LOGIQUE ') ;
  138. CLOGC= (TBC2%ACCES GTOT) -(TBC2%ACCES GTOT) ;
  139. TBC2%GLOGC CLOGC ;
  140. FINSI ;
  141. G1= EXTR ( TBC2.TOT) MAIL ;
  142. INICHI2 TB3 TBC2 ;
  143. IITOT= FAUX ;
  144. FINSI ;
  145. FINSI ;
  146. *
  147. 'SI' IITOT ;
  148. * LOGC ;
  149. 'REPE' BOULGC NBCOMP ;
  150. NULGC= 'EXTR' LICOMP &BOULGC ;
  151. MO4 MO3 NU2 = NOCOMCHI TB3 'NUMCOMP' NULGC ;
  152. 'MESS' ' Entrez LOGC de ' NULGC MO4 ;
  153. 'OBTE' VLGC*FLOTTANT ;
  154. 'SI' ('EGA' VLGC ('MOT' 'NON')) ;
  155. VLGC= 0. ;
  156. 'FINS' ;
  157. CLGC1= MANU CHPO G1 1 MO3 VLGC ;
  158. CLGC= CLGC+CLGC1 ;
  159. 'FIN' BOULGC ;
  160. * LIST CLGC ;
  161. REPE BLGC1 ;
  162. NTAB CLGC 'TITR' ' VALEURS DE LOGC' ;
  163. LIMOT= EXTR CLGC 'COMP' ;
  164. MOLGC= 'MENU' 'POUR MODIFIER UNE VALEUR CLIQUER SUR SON NOM ' LIMOT ;
  165. 'SI' ('EGA' MOLGC 'Quitter' ) ;
  166. 'QUIT' BLGC1 ;
  167. 'FINS' ;
  168. MO4 MO3 NU2 = NOCOMCHI TB3 'NOMINT' MOLGC ;
  169. 'MESS' ' Entrez LOGC de ' NU2 MO4 ;
  170. 'OBTE' VLGC*FLOTTANT ;
  171. 'SI' ('NON' ('EGA' VLGC ('MOT' 'NON')) ) ;
  172. CLGC1= MANU CHPO G1 1 MO3 VLGC ;
  173. CLGC2= EXCO MO3 CLGC MO3 ;
  174. CLGC= CLGC+CLGC1- CLGC2 ;
  175. 'FINS' ;
  176. FIN BLGC1 ;
  177. TBC2%GLOGC CLGC ;
  178. * DEFINITION DES CONCENTRATIONS TOTALES
  179. *
  180. NLICLIM= 0 ;
  181. LICLIM='LECT' ;
  182. LICOMP3='LECT' ;
  183. 'SI' ('EXIS' TB2 'CLIM' ) ;
  184. 'SI' ('EXIS' (TB2.CLIM) 'TYP3' ) ;
  185. LICLIM= TB2.CLIM.TYP3*1 ;
  186. LICOMP3= TB2.CLIM.TYP3*1 ;
  187. LITOT=LICOMP 'SAUF' LICLIM ;
  188. 'SI' ('EXIS' (TB2.CLIM) 'COMP3' ) ;
  189. LITOT= LICOMP 'SAUF' TB2.CLIM.COMP3 ;
  190. 'FINSI' ;
  191. * MESS ' LITOT' ; LIST LITOT ;
  192. NLICLIM= DIME LICLIM ;
  193. * 'MESS' ' NOMBRE D ACTIVITE IMPOSE ' NLICLIM ;
  194. NUCLIM= 'EXTR' LICLIM 1 ;
  195. MO1 NU1 = NOESPCHI TB3 NUCLIM ;
  196. CCLIM= MANU CHPO G1 1 MO1 0. ;
  197. TB00= OBJET DONCHI1 ;
  198. TB00%GIDEN (TB2%ACCES GIDEN) ;
  199. TB0= CHI1 TB00 COMP BASE1 LOGK BASE2 ;
  200. SI (EXIS TB0.IDEN PRECI) ;
  201. NBTYP5= DIME ( TB0.IDEN.PRECI) ;
  202. FINSI ;
  203. 'REPE' BOUCLIM NLICLIM ;
  204. LIRACTI= VRAI ;
  205. NUCLIM= 'EXTR' LICLIM &BOUCLIM ;
  206. SI (EXIS TB0.IDEN PRECI) ;
  207. ICTYP5= DIME ( TB0.IDEN.PRECI SAUF (LECT NUCLIM)) ;
  208. SI (NON (EGA ICTYP5 NBTYP5)) ;
  209. LIRACTI=FAUX ;
  210. FINSI ;
  211. FINSI ;
  212. MO1 NU1 = NOESPCHI TB3 NUCLIM ;
  213. SI LIRACTI ;
  214. 'MESS' ' Entrez l activité de ' NU1 ' son nom local est ' MO1 ;
  215. 'OBTE' VCLIM*FLOTTANT ;
  216. SINON ;
  217. VCLIM=0. ;
  218. FINSI ;
  219. CCLI1= MANU CHPO G1 1 MO1 VCLIM ;
  220. CCLIM= CCLIM +CCLI1 ;
  221. CIMP3= NUCLIM ;
  222. SI (EXIS (TB2.CLIM) COMP3 ) ;
  223. CIMP3='EXTR' (TB2.CLIM.COMP3) &BOUCLIM ;
  224. LICOMP3= (TB2.CLIM.COMP3)*1 ;
  225. FINSI ;
  226. MO4 MO3 NU2 = NOCOMCHI TB3 'NUMCOMP' CIMP3 ;
  227. CTOT1= MANU CHPO G1 1 MO3 0. ;
  228. CTOT= CTOT+CTOT1 ;
  229. 'FIN' BOUCLIM ;
  230. * LIST CCLIM ;
  231. TBC2%GCLIM CCLIM ;
  232. 'FINSI' ;
  233. 'FINSI' ;
  234. *
  235. * cas ou l'on fixe la concentration de certains minéraux
  236. 'MESS' 'Voulez vous fixer la concentration de certains minéraux ?' ;
  237. OBTE IMODII ;
  238. SI(EGA IMODII 'QUIT') ;
  239. QUITTER INICHIMI ;
  240. FINSI ;
  241. SI (EGA IMODII 'OUI') ;
  242. MESS 'Entrez la liste de ces espèces ' ;
  243. OBTE LIESPCF0*LISTENTI ;
  244. NESPCF=DIME LIESPCF0 ;
  245. NBESP= DIME ( TB3.DESCHI.IDY) ;
  246. NBCOMP= DIME ( TB3.DESCHI.IDX) ;
  247. * on contruit une liste de nombre de composant par espèce
  248. * on va garder l'indice de chaque espèce dans IDY pour faciliter
  249. * les recherches dans MATRICEA
  250. LLL1= LECT NESPCF*0 ;
  251. L1DY= LECT NESPCF*0 ;
  252. REPE BSPCF1 NESPCF ;
  253. NUNU= EXTR LIESPCF0 &BSPCF1 ;
  254. NBCC1=0 ;
  255. REPE BOUESP NBESP ;
  256. NUMESP= EXTR ( TB3.DESCHI.IDY) &BOUESP ;
  257. SI (EGA NUNU NUMESP) ;
  258. IIND1= &BOUESP ;
  259. QUITTER BOUESP ;
  260. FINSI ;
  261. FIN BOUESP ;
  262. REMP L1DY &BSPCF1 IIND1 ;
  263. REPE BOUCOMP NBCOMP ;
  264. NUAAA= NBESP*(&BOUCOMP - 1) + IIND1 ;
  265. AAA= EXTR (TB3.DESCHI.MATRICEA) NUAAA ;
  266. SI ( NEG AAA 0. ) ;
  267. NBCC1= NBCC1+1 ;
  268. FINSI ;
  269. FIN BOUCOMP;
  270. REMP LLL1 &BSPCF1 NBCC1 ;
  271. FIN BSPCF1 ;
  272. LIESPCF= LIESPCF0 * 1 ;
  273. LLL2= ORDO (LLL1 * 1) ;
  274. LLDY= LECT NESPCF*0 ;
  275. REPE BSPCF2 NESPCF ;
  276. ILL2= EXTR LLL2 &BSPCF2 ;
  277. REPE BSPCF3 NESPCF ;
  278. ILL3= EXTR LLL1 &BSPCF3 ;
  279. SI ( EGA ILL2 ILL3) ;
  280. REMP LIESPCF &BSPCF2 (EXTR LIESPCF0 &BSPCF3) ;
  281. REMP LLDY &BSPCF2 (EXTR L1DY &BSPCF3) ;
  282. REMP LLL1 &BSPCF3 0 ;
  283. QUITTER BSPCF3 ;
  284. FINSI ;
  285. FIN BSPCF3 ;
  286. FIN BSPCF2 ;
  287. 'OUBL' LLL1 ;
  288. 'OUBL' L1DY ;
  289. 'OUBL' LIESPCF0 ;
  290. II2= NLICLIM*1 ;
  291. 'REPE' BOUCLI3 NESPCF ;
  292. ILL3= EXTR LIESPCF &BOUCLI3 ;
  293. IIND1=EXTR LLDY &BOUCLI3 ;
  294. REPE BOUC11 NBCOMP ;
  295. NUAAA= NBESP*(&BOUC11 - 1) + IIND1 ;
  296. AAA= EXTR (TB3.DESCHI.MATRICEA) NUAAA ;
  297. SI ( NEG AAA 0. ) ;
  298. IDX1= EXTR ( TB3.DESCHI.IDX) &BOUC11 ;
  299. SI ( 'EGA' (DIME LICOMP3) 0) ;
  300. QUITTER BOUC11 ;
  301. FINSI ;
  302. II3= DIME ( LICOMP3 'SAUF' (LECT IDX1));
  303. SI (EGA II2 II3) ;
  304. QUITTER BOUC11 ;
  305. SINON ;
  306. IDX1= 0 ;
  307. FINSI ;
  308. FINSI ;
  309. FIN BOUC11 ;
  310. SI ( EGA IDX1 0) ;
  311. MESS 'Tous les composants de ' ILL3 'sont déja fixés' ;
  312. SINON ;
  313. II2= II2 + 1 ;
  314. LICLIM= INSE LICLIM II2 ILL3 ;
  315. LICOMP3= INSE LICOMP3 II2 IDX1 ;
  316. FINSI ;
  317. FIN BOUCLI3 ;
  318. *MESS ' LICLIM' ; LIST LICLIM ;
  319. *MESS ' LICOMP3 ' ; LIST LICOMP3 ;
  320. * on va recalculer chi1 avec les nouvelles contraintes
  321. TBB2= OBJET DONCHI1 ;
  322. TBB2%GIDEN (TB2%ACCES GIDEN);
  323. TBB2%GBDD (TB2%ACCES GBDD);
  324. * l'opération qui suit ne marche pas car par les methodes on accede au
  325. * contenu .Lorsque le contenu est NON on cherche a executer l'opérateur
  326. * NON. Je n'ai pas trouvé le moyen de preciser qu'il s'agit d'un mot.
  327. *TBB2%GTEMPERA (TB2%ACCES GTEMPERA);
  328. TBB2%GTEMPERA TB2.TEMPERATURE ;
  329. TBB2%GCLIM TYP3 LICLIM ;
  330. TBB2%GCLIM COMP3 LICOMP3 ;
  331. SI (EXIS TB2 CHXMX) ;
  332. TBB2%GCHXMX (TB2%ACCES GCHXMX);
  333. FINSI ;
  334. SI (EXIS TB2 CLIM) ;
  335. SI (EXIS (TB2.CLIM) 'TYP6' ) ;
  336. TBB2%GCLIM TYP6 (TB2%ACCES GCLIM TYP6);
  337. FINSI ;
  338. SI (EXIS (TB2.CLIM) 'TYP5' ) ;
  339. TBB2%GCLIM TYP5 (TB2%ACCES GCLIM TYP5);
  340. FINSI ;
  341. SI (EXIS (TB2.CLIM) 'TYP4' ) ;
  342. TBB2%GCLIM TYP4 (TB2%ACCES GCLIM TYP4);
  343. FINSI ;
  344. FINSI ;
  345. SI (EXIS TB2 NVCOMP) ;
  346. TBB2%GNVCOMP ( TB2%ACCES GNVCOMP) ;
  347. FINSI ;
  348. SI (EXIS TB2 NVESP) ;
  349. TBB2%GNVESP ( TB2%ACCES GNVESP ) ;
  350. FINSI ;
  351. SI (EXIS TB2 NVSOSO) ;
  352. TBB2%GNVSOSO ( TB2%ACCES GNVSOSO) ;
  353. FINSI ;
  354. SI (EXIS TB2 ECHANGE) ;
  355. TBB2%GECHANGE (TB2%ACCES GECHANGE) ;
  356. FINSI ;
  357. TB3= CHI1 TBB2 COMP BASE1 LOGK BASE2 ;
  358. LVESPC= PROG ;
  359. SI (EGA NLICLIM 0);
  360. NUCLIM= 'EXTR' LICLIM 1 ;
  361. MO1 NU1 = NOESPCHI TB3 NUCLIM ;
  362. CCLIM= MANU CHPO G1 1 MO1 0. ;
  363. FINSI ;
  364. II3= II2- NLICLIM ;
  365. REPE BOUCLI4 II3 ;
  366. IESPCF= EXTR LICLIM (&BOUCLI4 + NLICLIM) ;
  367. CIMP3= EXTR LICOMP3 (&BOUCLI4 + NLICLIM) ;
  368. 'MESS' 'Entrez la quantité voulue de ' IESPCF ;
  369. OBTE VESPCF*FLOTTANT ;
  370. LVESPC=INSE LVESPC &BOUCLI4 VESPCF ;
  371. MO4 MO3 NU2 = NOCOMCHI TB3 'NUMCOMP' CIMP3 ;
  372. MO1 NU1 = NOESPCHI TB3 IESPCF ;
  373. CTOT1= MANU CHPO G1 1 MO3 0. ;
  374. CTOT= CTOT+CTOT1 ;
  375. CCLI1= MANU CHPO G1 1 MO1 0. ;
  376. CCLIM= CCLIM+CCLI1 ;
  377. FIN BOUCLI4 ;
  378. LITOT= LICOMP SAUF LICOMP3 ;
  379. NLITOT= DIME LITOT ;
  380. SI (NEG NLITOT 0) ;
  381. 'REPE' BOUTOT NLITOT ;
  382. NUTOT= 'EXTR' LITOT &BOUTOT ;
  383. MO4 MO3 NU2 = NOCOMCHI TB3 'NUMCOMP' NUTOT ;
  384. 'MESS' ' Entrez la concentration totale de ' NUTOT MO4 ;
  385. 'OBTE' VTOT*FLOTTANT ;
  386. 'SI' ('EGA' VTOT ('MOT' 'NON')) ;
  387. VTOT= 0. ;
  388. 'FINS' ;
  389. CTOT1= MANU CHPO G1 1 MO3 VTOT ;
  390. CTOT= CTOT+CTOT1 ;
  391. 'FIN' BOUTOT ;
  392. FINSI ;
  393. * LIST CTOT ;
  394. *
  395. REPE BCTOT ;
  396. NTAB CTOT TITR 'CONCENTRATION TOTALE' ;
  397. LIMOT= EXTR CTOT 'COMP' ;
  398. MOTOT= 'MENU' 'POUR MODIFIER UNE VALEUR CLIQUER SUR SON NOM ' LIMOT ;
  399. 'SI' ('EGA' MOTOT 'Quitter' ) ;
  400. 'QUIT' BCTOT ;
  401. 'FINS' ;
  402. MO4 MO3 NU2 = NOCOMCHI TB3 'NOMINT' MOTOT ;
  403. 'MESS' ' Entrez la concentration totale de ' NU2 MO4 ;
  404. 'OBTE' VTOT*FLOTTANT ;
  405. 'SI' ('NON' ('EGA' VTOT ('MOT' 'NON'))) ;
  406. CTOT1= MANU CHPO G1 1 MO3 VTOT ;
  407. CTOT2= EXCO MO3 CTOT MO3 ;
  408. CTOT= CTOT+CTOT1 -CTOT2 ;
  409. 'FINS' ;
  410. FIN BCTOT ;
  411. *
  412. TBC2%GTOT CTOT ;
  413. * LIST TB3.IDEN.NOMTYP3 ;
  414. * LIST CCLIM ;
  415. SI (EXIS TBC2.CLIM) ;
  416. CCGCLIM= COPI (TBC2%ACCES GCLIM) ;
  417. FINSI ;
  418. TBC2%GCLIM CCLIM ;
  419. *LIST TBC2 ;
  420. * Prise en compte des quantités de minéraux demandées
  421. MESS 'Voulez vous vérifier la neutralité électrique ?' ;
  422. 'OBTE' ISUITE ;
  423. SI (EGA ISUITE 'OUI' ) ;
  424. IERR = ELECNEUT TB3 TBC2 TBPAR2 ;
  425. 'SI' IERR ;
  426. IER1 = ELECNEUT TB3 TBC2 TBPAR2 ;
  427. 'FINS' ;
  428. FINSI ;
  429. * TB4 = SPECHI2 TB3 TBC2 TBPAR2 ;
  430. 'MESS''Voulez afficher les speciations ?' ;
  431. 'OBTE' ISPECI ;
  432. IIMPI= VALE 'IMPI' ;
  433. IIMP1= VALE 'IMPI' ;
  434. SI (EGA ISPECI 'OUI' ) ;
  435. IIMP1= 1 ;
  436. 'FINSI' ;
  437. OPTION IMPI IIMP1 ;
  438. TB4 = CHI2 TB3 TBC2 TBPAR2 ;
  439. OPTION IMPI IIMPI ;
  440. *
  441. NIDX= DIME(TB3.DESCHI.IDX) ;
  442. NIDY= DIME(TB3.DESCHI.IDY) ;
  443. REPE BOUCLI5 II3 ;
  444. NUCLIM= EXTR LICLIM (&BOUCLI5 + NLICLIM) ;
  445. NUCOMP3= EXTR LICOMP3 (&BOUCLI5 + NLICLIM) ;
  446. MO3 MO1 NU1= NOCOMCHI TB3 'NUMCOMP' NUCOMP3;
  447. TOT00= EXCO MO1 (TBC2%ACCES GTOT) MO1 ;
  448. TOT1= EXCO MO1(TB4.AQUE + TB4.FIXE ) MO1 ;
  449. TOT2=( TBC2%ACCES GTOT) -TOT00 + TOT1 ;
  450. TBC2%GTOT TOT2 ;
  451. FIN BOUCLI5 ;
  452. REPE BOUCLI6 II3 ;
  453. NUCLIM= EXTR LICLIM (&BOUCLI6 + NLICLIM) ;
  454. CONC0= EXTR LVESPC &BOUCLI6 ;
  455. CONC1= MANU CHPO G1 1 SCAL CONC0 ;
  456. REPE BDY2 NIDY ;
  457. NUNU1= EXTR (TB3.DESCHI.IDY) &BDY2 ;
  458. SI(EGA NUCLIM NUNU1) ;
  459. NUDY= &BDY2 ;
  460. QUITTER BDY2 ;
  461. FINSI ;
  462. FIN BDY2 ;
  463. REPE BDX2 NIDX ;
  464. IIDX= EXTR (TB3.DESCHI.IDX) &BDX2 ;
  465. MO3 MO1 NU1= NOCOMCHI TB3 'NUMCOMP' IIDX ;
  466. CONCX= NOMC MO1 CONC1 ;
  467. NUAA= NIDY*(&BDX2-1)+NUDY ;
  468. AAA= EXTR(TB3.DESCHI.MATRICEA) NUAA ;
  469. TOTO=(TBC2%ACCES GTOT)+ (AAA* CONCX) ;
  470. TBC2%GTOT TOTO ;
  471. FIN BDX2;
  472. FIN BOUCLI6 ;
  473. TB3= CHI1 TB2 COMP BASE1 LOGK BASE2 ;
  474. SI (EXIS TB2 CLIM ) ;
  475. SI (EXIS (TB2.CLIM) 'TYP3') ;
  476. TBC2%GCLIM CCGCLIM ;
  477. * LIST TB3.IDEN.NOMTYP3 ;
  478. * LIST (TBC2%ACCES GCLIM) ;
  479. SINON ;
  480. TBC2%OUBLIER CLIM ;
  481. FINSI ;
  482. FINSI ;
  483. * ========= fin du cas ou l'on fixe la concentration des minéraux
  484. SINON ;
  485. NLITOT= DIME LITOT ;
  486. SI (NEG NLITOT 0) ;
  487. 'REPE' BOUTOT NLITOT ;
  488. NUTOT= 'EXTR' LITOT &BOUTOT ;
  489. MO4 MO3 NU2 = NOCOMCHI TB3 'NUMCOMP' NUTOT ;
  490. 'MESS' ' Entrez la concentration totale de ' NUTOT MO4 ;
  491. 'OBTE' VTOT*FLOTTANT ;
  492. 'SI' ('EGA' VTOT ('MOT' 'NON')) ;
  493. VTOT= 0. ;
  494. 'FINS' ;
  495. CTOT1= MANU CHPO G1 1 MO3 VTOT ;
  496. CTOT= CTOT+CTOT1 ;
  497. 'FIN' BOUTOT ;
  498. FINSI ;
  499. * LIST CTOT ;
  500. *
  501. REPE BCTOT2 ;
  502. NTAB CTOT TITR 'CONCENTRATION TOTALE' ;
  503. LIMOT= EXTR CTOT 'COMP' ;
  504. MOTOT= 'MENU' 'POUR MODIFIER UNE VALEUR CLIQUER SUR SON NOM ' LIMOT ;
  505. 'SI' ('EGA' MOTOT 'Quitter' ) ;
  506. 'QUIT' BCTOT2 ;
  507. 'FINS' ;
  508. MO4 MO3 NU2 = NOCOMCHI TB3 'NOMINT' MOTOT ;
  509. 'MESS' ' Entrez la concentration totale de ' NU2 MO4 ;
  510. 'OBTE' VTOT*FLOTTANT ;
  511. 'SI' ('NON' ('EGA' VTOT ('MOT' 'NON'))) ;
  512. CTOT1= MANU CHPO G1 1 MO3 VTOT ;
  513. CTOT2= EXCO MO3 CTOT MO3 ;
  514. CTOT= CTOT+CTOT1 -CTOT2 ;
  515. 'FINS' ;
  516. FIN BCTOT2 ;
  517. *
  518. TBC2%GTOT CTOT ;
  519. *OUBLIE TBB2 ;
  520. * =================== fin de la lecture des concentrations totales
  521. FINSI ;
  522. FINSI ;
  523. *
  524. *
  525. * ================ boucle infinie
  526. 'REPE' BOUINF ;
  527. *
  528. MESS 'Voulez vous vérifier la neutralité électrique ?' ;
  529. 'OBTE' ISUITE ;
  530. SI (EGA ISUITE 'QUIT' ) ;
  531. QUITTER BOUINF ;
  532. FINSI ;
  533. SI (EGA ISUITE 'OUI' ) ;
  534. IERR = ELECNEUT TB3 TBC2 TBPAR2 ;
  535. 'SI' IERR ;
  536. IER1 = ELECNEUT TB3 TBC2 TBPAR2 ;
  537. 'FINS' ;
  538. FINSI ;
  539. * TB4 = SPECHI2 TB3 TBC2 TBPAR2 ;
  540. 'MESS''Voulez afficher les speciations ?' ;
  541. 'OBTE' ISPECI ;
  542. IIMPI= VALE 'IMPI' ;
  543. IIMP1= VALE 'IMPI' ;
  544. SI (EGA ISPECI 'OUI' ) ;
  545. IIMP1= 1 ;
  546. 'FINSI' ;
  547. OPTION IMPI IIMP1 ;
  548. TB4 = CHI2 TB3 TBC2 TBPAR2 ;
  549. OPTION IMPI IIMPI ;
  550. *
  551. * =========== on prend en compte le dernier LOGC calculé
  552. TBC2%GLOGC (TB4.LOGC) ;
  553. * ==========
  554. * ========== cas ou il y a des contraintes
  555. SI (EXIS TB2 CLIM ) ;
  556. SI (EXIS (TB2.CLIM ) 'TYP3');
  557. MESS 'Voulez vous que les contraintes fixées soient prises en compte'
  558. ' dans les valeurs des totaux ?' ;
  559. 'OBTE' ICCT ;
  560. SI(EGA ICCT 'QUIT') ;
  561. QUITTER BOUINF ;
  562. FINSI ;
  563. 'SI' ('EGA' ICCT 'OUI') ;
  564. NLICLIM=DIME(TB2.CLIM.TYP3) ;
  565. TB00= OBJET DONCHI1 ;
  566. TB00%GIDEN (TB2%ACCES GIDEN) ;
  567. TB0= CHI1 TB00 COMP BASE1 LOGK BASE2 ;
  568. SI (EXIS TB0.IDEN PRECI) ;
  569. NBTYP5= DIME ( TB0.IDEN.PRECI) ;
  570. FINSI ;
  571. NIDX= DIME(TB3.DESCHI.IDX) ;
  572. NIDY= DIME(TB3.DESCHI.IDY) ;
  573. * mess 'VALEUR INITIALE DE TOT ' ; LIST ( TBC2%ACCES GTOT) ;
  574. * MESS ' TB4 AQUE ' ; LIST TB4.AQUE ;
  575. * MESS ' TB4 FIXE ' ; LIST TB4.FIXE ;
  576. IP99=FAUX ;
  577. REPE BBCLIM NLICLIM ;
  578. NUCLIM=EXTR (TB2.CLIM.TYP3) &BBCLIM ;
  579. SI (NUCLIM < 201) ;
  580. MO3 MO1 NU1= NOCOMCHI TB3 'NUMCOMP' NUCLIM ;
  581. TOT00= EXCO MO1 (TBC2%ACCES GTOT) MO1 ;
  582. TOT1= EXCO MO1(TB4.AQUE + TB4.FIXE ) MO1 ;
  583. TOT2=( TBC2%ACCES GTOT) -TOT00 + TOT1 ;
  584. TBC2%GTOT TOT2 ;
  585. SI (EGA NUCLIM 99) ;
  586. IP99=VRAI ;
  587. FINSI ;
  588. SINON ;
  589. NUCOMP3=EXTR (TB2.CLIM.COMP3) &BBCLIM ;
  590. MO3 MO1 NU1= NOCOMCHI TB3 'NUMCOMP' NUCOMP3;
  591. TOT00= EXCO MO1 (TBC2%ACCES GTOT) MO1 ;
  592. TOT1= EXCO MO1(TB4.AQUE + TB4.FIXE ) MO1 ;
  593. TOT2=( TBC2%ACCES GTOT) -TOT00 + TOT1 ;
  594. TBC2%GTOT TOT2 ;
  595. FINSI ;
  596. FIN BBCLIM ;
  597. * MO1 NU1 = NOESPCHI TB3 NUCLIM ;
  598. REPE B2CLIM NLICLIM ;
  599. NUCLIM=EXTR (TB2.CLIM.TYP3) &B2CLIM ;
  600. SI (EXIS TB0.IDEN PRECI) ;
  601. ICTYP5= DIME ( TB0.IDEN.PRECI SAUF (LECT NUCLIM)) ;
  602. SI (NON (EGA ICTYP5 NBTYP5)) ;
  603. MESS ' Entrez la quantité de minéral voulu pour ' NUCLIM ;
  604. OBTE CONC0*FLOTTANT ;
  605. CONC1= MANU CHPO G1 1 SCAL CONC0 ;
  606. REPE BDY NIDY ;
  607. NUNU1= EXTR (TB3.DESCHI.IDY) &BDY ;
  608. SI(EGA NUCLIM NUNU1) ;
  609. NUDY= &BDY ;
  610. QUITTER BDY ;
  611. FINSI ;
  612. FIN BDY ;
  613. REPE BDX NIDX ;
  614. IIDX= EXTR (TB3.DESCHI.IDX) &BDX ;
  615. MO3 MO1 NU1= NOCOMCHI TB3 'NUMCOMP' IIDX ;
  616. CONCX= NOMC MO1 CONC1 ;
  617. NUAA= NIDY*(&BDX-1)+NUDY ;
  618. AAA= EXTR(TB3.DESCHI.MATRICEA) NUAA ;
  619. TOTO=(TBC2%ACCES GTOT)+ (AAA* CONCX) ;
  620. TBC2%GTOT TOTO ;
  621. FIN BDX ;
  622. FINSI ;
  623. FINSI ;
  624. FIN B2CLIM ;
  625. * mess 'VALEUR FINALE DE TOT ' ; LIST ( TBC2%ACCES GTOT) ;
  626. SI (EXIS (TB2.CLIM) COMP3 ) ;
  627. TB2.CLIM%OUBLIER COMP3 ;
  628. FINSI ;
  629. TB2.CLIM%OUBLIER TYP3 ;
  630. TBC2%OUBLIER CLIM ;
  631. IDET= VRAI ;
  632. SI IP99 ;
  633. SI(EXIS(TB2.CLIM) TYP6) ;
  634. LILI= INSE (TB2.CLIM.TYP6) 1 99 ;
  635. TB2%GCLIM TYP6 LILI ;
  636. SINON ;
  637. TB2%GCLIM TYP6 (LECT 99) ;
  638. FINSI ;
  639. FINSI ;
  640. SI (EXIS (TB2.CLIM) TYP4);
  641. IDET= FAUX ;
  642. FINSI ;
  643. SI (EXIS (TB2.CLIM) TYP5);
  644. IDET= FAUX ;
  645. FINSI ;
  646. SI (EXIS (TB2.CLIM) TYP6);
  647. IDET= FAUX ;
  648. FINSI ;
  649. SI IDET ;
  650. TB2%OUBLIER CLIM ;
  651. FINSI ;
  652. ******
  653. MESS 'Voulez vous afficher l activité de certaines espèces ?' ;
  654. 'OBTE' ISUITE ;
  655. SI(EGA ISUITE 'QUIT') ;
  656. QUITTER BOUINF ;
  657. FINSI ;
  658. SI (EGA ISUITE 'OUI' ) ;
  659. 'MESS' ' entrez la liste de ces espèces' ;
  660. OBTE LICALA*LISTENTI ;
  661. CHPACT= CALACTIV TB3 TB4 LICALA;
  662.  
  663. NTAB CHPACT TITR 'Activité' ;
  664. FINSI ;
  665. ******
  666. 'MESS''Voulez vous afficher le contenu actuel de l objet CHIMI1 ?' ;
  667. 'OBTE' IAFFI ;
  668. TB3='CHI1' TB2 'COMP' BASE1 'LOGK' BASE2 ;
  669. 'SI' ('EGA' IAFFI 'OUI') ;
  670. IMPCHI1 TB3 'TB3' ;
  671. 'FINS' ;
  672. SI(EGA IAFFI 'QUIT') ;
  673. QUITTER BOUINF ;
  674. FINSI ;
  675. *TB4 = SPECHI2 TB3 TBC2 TBPAR2 ;
  676. **
  677. 'MESS''Voulez afficher les speciations ?' ;
  678. 'OBTE' ISPECI ;
  679. IIMPI= VALE 'IMPI' ;
  680. IIMP1= VALE 'IMPI' ;
  681. SI (EGA ISPECI 'OUI' ) ;
  682. IIMP1= 1 ;
  683. 'FINSI' ;
  684. OPTION IMPI IIMP1 ;
  685. TB4 = CHI2 TB3 TBC2 TBPAR2 ;
  686. OPTION IMPI IIMPI ;
  687. **
  688. ******
  689. MESS 'Voulez vous afficher l activité de certaines espèces ?' ;
  690. 'OBTE' ISUITE ;
  691. SI(EGA ISUITE 'QUIT') ;
  692. QUITTER BOUINF ;
  693. FINSI ;
  694. SI (EGA ISUITE 'OUI' ) ;
  695. 'MESS' ' entrez la liste de ces espèces' ;
  696. OBTE LICALA*LISTENTI ;
  697. CHPACT= CALACTIV TB3 TB4 LICALA;
  698. NTAB CHPACT TITR 'Activité' ;
  699. FINSI ;
  700. ******
  701. MESS 'Voulez vous vérifier la neutralité électrique ? ' ;
  702. 'OBTE' ISUITE ;
  703. SI(EGA ISUITE 'QUIT') ;
  704. QUITTER BOUINF ;
  705. FINSI ;
  706. SI (EGA ISUITE 'OUI' ) ;
  707. IERR = ELECNEUT TB3 TBC2 TBPAR2 ;
  708. 'SI' IERR ;
  709. IER1 = ELECNEUT TB3 TBC2 TBPAR2 ;
  710. FINSI
  711. *TB4 = SPECHI2 TB3 TBC2 TBPAR2 ;
  712. **
  713. 'MESS''Voulez afficher les speciations ?' ;
  714. 'OBTE' ISPECI ;
  715. IIMPI= VALE 'IMPI' ;
  716. IIMP1= VALE 'IMPI' ;
  717. SI (EGA ISPECI 'OUI' ) ;
  718. IIMP1= 1 ;
  719. 'FINSI' ;
  720. OPTION IMPI IIMP1 ;
  721. TB4 = CHI2 TB3 TBC2 TBPAR2 ;
  722. OPTION IMPI IIMPI ;
  723. **
  724. ******
  725. MESS 'Voulez vous afficher l activité de certaines espèces ?' ;
  726. 'OBTE' ISUITE ;
  727. SI(EGA ISUITE 'QUIT') ;
  728. QUITTER BOUINF ;
  729. FINSI ;
  730. SI (EGA ISUITE 'OUI' ) ;
  731. 'MESS' ' entrez la liste de ces espèces' ;
  732. OBTE LICALA*LISTENTI ;
  733. CHPACT= CALACTIV TB3 TB4 LICALA;
  734. NTAB CHPACT TITR 'Activité' ;
  735. FINSI ;
  736. ******
  737. FINSI ;
  738. FINSI ;
  739. FINSI ;
  740. *LIST TBC2 ;
  741. *INICHI2 TB3 TBC2 ;
  742. *TB4 = SPECHI2 TB3 TBC2 TBPAR2 ;
  743. 'MESS''Voulez afficher les speciations ?' ;
  744. 'OBTE' ISPECI ;
  745. IIMPI= VALE 'IMPI' ;
  746. IIMP1= VALE 'IMPI' ;
  747. SI (EGA ISPECI 'OUI' ) ;
  748. IIMP1= 1 ;
  749. 'FINSI' ;
  750. OPTION IMPI IIMP1 ;
  751. TB4 = CHI2 TB3 TBC2 TBPAR2 ;
  752. OPTION IMPI IIMPI ;
  753. 'MESS''Voulez vous modifier DONCHI1 ? ' ;
  754. 'OBTE' ISUITE ;
  755. SI(EGA ISUITE 'QUIT') ;
  756. QUITTER BOUINF ;
  757. FINSI ;
  758. SI (EGA ISUITE 'OUI' ) ;
  759. INICHI1 TB2 BASE1 BASE2 ;
  760. *LIST LICOMP ;
  761. 'MESS''Voulez vous afficher le contenu actuel de l objet CHIMI1 ?' ;
  762. 'OBTE' IAFFI ;
  763. TB3='CHI1' TB2 'COMP' BASE1 'LOGK' BASE2 ;
  764. 'SI' ('EGA' IAFFI 'OUI') ;
  765. IMPCHI1 TB3 'TB3' ;
  766. 'FINS' ;
  767. 'FINSI' ;
  768. SI(EGA IAFFI 'QUIT') ;
  769. QUITTER BOUINF ;
  770. FINSI ;
  771. *LIST TBC2 ;
  772. INICHI2 TB3 TBC2 ;
  773. *TB4 = SPECHI2 TB3 TBC2 TBPAR2 ;
  774. 'MESS''Voulez afficher les speciations ?' ;
  775. 'OBTE' ISPECI ;
  776. IIMPI= VALE 'IMPI' ;
  777. IIMP1= VALE 'IMPI' ;
  778. SI (EGA ISPECI 'OUI' ) ;
  779. IIMP1= 1 ;
  780. 'FINSI' ;
  781. OPTION IMPI IIMP1 ;
  782. TB4 = CHI2 TB3 TBC2 TBPAR2 ;
  783. OPTION IMPI IIMPI ;
  784. 'MESS''Voulez vous arreter le calcul ?' ;
  785. 'OBTE' ISUITE ;
  786. SI (EGA ISUITE 'OUI' ) ;
  787. 'QUITTER' BOUINF ;
  788. 'FINSI' ;
  789. SI(EGA ISUITE 'QUIT') ;
  790. QUITTER BOUINF ;
  791. FINSI ;
  792. FINSI ;
  793. 'FIN' BOUINF ;
  794. FINP TB2 TB3 TBC2 ;
  795.  
  796.  
  797.  
  798.  

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