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

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