Opérateur CHI1
                                             DATE     98/12/28
  
   Opérateur CHI1
   --------------
       TAB2 = CHI1 TAB1 'COMP' VAL1 < 'LOGK' VAL2 > <'ENTH' VAL3 >    ;

        Objet
       -------
       Le but est de calculer la spéciation d'une eau, en tout point
       d'un domaine à partir de la donnée des concentrations analytiques
       de chaque composant chimique du système. Le calcul se fait en
       deux temps à l'aide des opérateurs CHI1 et CHI2.
       CHI1 rassemble toutes les données relatives à un système chimique,
       et CHI2 effectue la spéciation.
        La terminologie est celle de Mineql.

          Toutes les concentrations sont données en moles par litre.

       Commentaires
       ------------
       TAB1 est une TABLE indicée par les mots:
            'IDEN'  <'CHXMX'>  <'BDD'>  <'CLIM'>  <'NVCOMP'>
            <'NVESP'> <'ECHANGE'>  <'TEMPERATURE'>

       TAB1.IDEN est un objet de type LISTENTI contenant les
             identifiants (dans la base de données),des composants chimi
             ques à utiliser.

       TAB1.CHXMX est un objet de type LISTENTI contenant les identifi
             ants des minéraux à retenir. A défaut on conserve tous les
             minéraux dont les composants sont dans TAB1.IDEN.

       TAB1.BDD  contient un mot servant à préciser le format de la base
             de données. 'STRASBG' ou 'MINEQL' .
             'MINEQL' correspond à la base de données standard de Mineql.
             'STRASBG' correspond à la base de données issue de Kindis.
             Les formats sont décrits dans le rapport DMT/94/597.
             L'option par défaut est 'MINEQL'.

       TAB1.CLIM  est une TABLE servant à définir les contraintes chimi
             ques. Cette TABLE est indicée par des mots tous facultatifs.
             <'TYP3'> <'COMP3'> <'TYP4'>  <'TYP5'> <'TYP6'>

             TAB1.CLIM.TYP3 est un objet de type LISTENTI contenant les
                  identifiants des espèces dont on veut imposer l'activi
                  té.

             TAB1.CLIM.COMP3  est un objet de type LISTENTI contenant
                  pour chacune des espèces de TAB1.CLIM.TYP3 l'identifi
                  ant du composant immobile . Si TAB1.CLIM.TYP3 ne
                  contient que des espèces simples cette donnée est 
                  inutile.

             TAB1.CLIM.TYP4 est un objet de type LISTENTI contenant les
                  identifiants des espèces précipitées.

             TAB1.CLIM.TYP5 est un objet de type LISTENTI contenant les
                  identifiants des espèces en solution, pouvant être
                  précipités.

             TAB1.CLIM.TYP6 est un objet de type LISTENTI contenant les
                  identifiants des espèces non prises en compte.

       TAB1.NVCOMP  est une TABLE permettant de rajouter des composants
            (ne figurant pas dans la base de données). Pour n composants
             , cette TABLE sera indicée par des nombres de 1 à n.
             Pour le i ieme composant à rajouter TAB1.NVCOMP.i sera une
             TABLE indicée par les mots:  'IDEN' 'NOM' 'CHARGE'
             TAB1.NVCOMP.i.IDEN est un entier identifiant du nouveau
                       composant.
             TAB1.NVCOMP.i.NOM est un mot nom de ce composant
             TAB1.NVCOMP.i.CHARGE  est un entier charge de l'espèce
                       simple associée.

       TAB1.NVESP est une TABLE permettant de rajouter ou de modifier 
             des espèces.Pour n espèces, cette TABLE sera indicée par
             des nombres, de 1 à n.
             Pour la i ieme espèce à rajouter TAB1.NVESP.i sera une
             TABLE indicée par les mots:
                  'IDEN' 'LOGK' <'ITYP'> <'COMP'> <'STOECH'>

             TAB1.NVESP.i.IDEN est un entier identifiant de l'espèce

             TAB1.NVESP.i.LOGK est un réel logk de l'espèce

             TAB1.NVESP.i.ITYP entier type de l'espèce
                               2   complexe en solution
                               3   activité fixée
                               4   minéraux précipités
                               5   minéraux dissous
                               6   non pris en compte dans le calcul

             TAB1.NVESP.i.COMP objet LISTENTI contenant les identifiants
                              des composants de l'espèce. Le nombre de
                              ces identifiants doit être inférieur à 4
                              pour une base de donnée de type MINEQL
                              et inférieur à 8 pour une base de donnée
                              de type STRASBG.

             TAB1.NVESP.i.STOECH    objet LISTREEL coefficient
                              stoechiomètrique correspondant à chacun 
                              de ces composants.
       
       TAB1.NVSOSO est une TABLE permettant d'ajouter des solutions
             solides (qui ne figurent pas encore dans les bases de 
             données). Pour n solutions solides, cette TABLE sera indicée 
             par des nombres, de 1 à n.
             Pour la i ieme solution solide à ajouter TAB1.NVSOSO.i sera 
             une TABLE indicée par les mots:
                      'IDEN' <'ITYP'> 'SOLID' <'FRACTIO'>

             TAB1.NVSOSO.i.IDEN est un entier identifiant de la solution 
                              solide

             TAB1.NVSOSO.i.ITYP entier type de la solution solide
                               3  activité fixée
                               4  solutions solides précipitées
                               5  solutions solides dissoutes
                               6  non pris en compte dans le calcul
                         Pour les types 3 et 4, il faut obligatoirement
                         donner les fractions molaires des poles des
                         solutions solides; pour les types 5 et 6, ce 
                         n'est pas obligatoire.   

              TAB.1.NVSOSO.i.SOLID objet LISTENTI contenant les 
                         identifiants des poles mineraux purs de la
                         solution solide. Le nombre de ces poles doit
                         etre inférieur à 36. Ces poles sont mis 
                         automatiquement en type 6 (ils servent au calcul,
                         mais n'ont pas d'existance physique).
               
              TAB1.NVSOSO.i.FRACTIO objet LISTREEL contenant les fractions
                         molaires correspondant à chacun des poles.
                         (Si la solution solide est mise en type 3 ou 4, 
                         l'opérateur chi1 a besoin des fractions molaires 
                         pour calculer les coefficients stoechiométriques
                         ainsi que le logK de la solution solide. 
                         Si la solution solide est mise en type 5 ou 6, 
                         l'opérateur chi2 calculera lui meme les fractions 
                         molaires et le reste).

       TAB1.ECHANGE objet de type LISTENTI contenant les identifiants 
             des sites de surface par échange ionique.
             L'espèce simple associée sera mise automatiquement en 
             type 6 (sert au calcul mais n'a pas d'existence physique) .
             Soient les deux epèces échangeables c1b et c2b telles que
             n1 * c1b + n2 * c2b = ns ( nombre total de sites ) liées
             par le coefficient de selectivité 
                                k12=(c1b/c1)**n2*(c2/c2b)**n1 .
             On définira deux espèces c1b et c2b dont les constantes
             de formation seront  k1=c1b/c1*(cidx)**n1 et
             k2=c2b/c2*(cidx)**n2  (avec cidx concentration de l'espèce
             simple associée au site) telles que k12=(k1)**n2/(k2)**n1.
             Le coefficient d'activité des espèces de surface est prise
             égale à 1

       TAB1.TEMPERATURE mot 'OUI'  'NON' ou entier (1 ou 2).
              'NON' on ne tient pas compte de la température. C'est 
              l'option par défaut.
            - Cas de la base STRASBG.
              Si 'OUI' on prendra en compte les effets thermiques sur 
              le logk, par interpolation de données tabulées.
            - Cas de la base MINEQL.
               1 ou 'OUI' on utilise la première approximation d'Ulich
                    K(T)=K0+f(H(T)-H(T0))

               2 on utilise la deuxième approximation d'Ulich 
                    K(T)=K0+f((H(T)-H(T0)),(Cp(T)-Cp(T0)))

       COMP est un mot-clé

       VAL1  est l'adresse du fichier de composants de la
             base de données. Cette adresse peut être, soit une chaine 
             de caractères (le nom du fichier), soit un entier (l'unité
             de lecture). Dans le cas ou l'on donne le nom du fichier, 
             le code lui affecte la première unité de lecture disponible
             à partir de 80. Cette unité sera libérée à la sortie de
             l'opérateur.

       LOGK  est un mot-clé

       VAL2  est l'adresse du fichier de logk de la base de données.
             Cette adresse peut être,soit une chaine de caractères
             (le nom du fichier), soit un entier (l'unité de lecture).
             Dans le cas ou l'on donne le nom du fichier, le code lui
             affecte la deuxième unité de lecture disponible à partir de
             80. Cette unité sera libérée à la sortie de l'opérateur.
             Dans le cas où les composants et les logk sont sur le mème
             fichier il est inutile de préciser 'LOGK' VAL2, toutefois
             si ces données figurent,le code reconnaitra que les
             fichiers ont le mème nom et lira en séquence.

       ENTH  est un mot-clé

       VAL3  est l'adresse du fichier de la base de données,
             permettant de prendre en compte les effets thermiques.
             Cette adresse peut être,soit une chaine de caractères 
             (le nom du fichier),soit un entier (l'unité de lecture).
             Dans le cas où l'on donne le nom du fichier, le code 
             lui affecte la troisieme unité de lecture disponible à
             partir de 80. Cette unité sera libérée à la sortie de 
             l'opérateur.
             Dans le cas où ces données et les logk sont sur le mème
             fichier il est inutile de préciser 'ENTH' VAL3, toutefois
             si VAL2 et VAL3 sont identiques,le code lira en séquence.




       TAB2 est une TABLE contenant le système chimique. Cette TABLE a
            pour sous type CHIMI1, et elle est indicée par les mots:
                    'DESCHI' 'IDEN' <'REDOX'>  <'TEMPE'>

       TAB2.DESCHI est une TABLE contenant la description du système
             chimique. Elle est indicée par les mots:
            'IDX' 'NOM' 'CHARGE' 'IDY' 'NN' 'MATRICEA' 'LOGK' 'IDSURF'
            <'IDZ' 'MATRICEF' 'IDP'>
 
             TAB2.DESCHI.IDX  objet LISTENTI contenant les identifiants
                   des composants retenus
      
             TAB2.DESCHI.NOM  objet LISTMOTS contenant les noms de ces
                   composants.
      
             TAB2.DESCHI.CHARGE objet LISTENTI contenant la charge de
                   ces composants.
      
             TAB2.DESCHI.IDY objet LISTENTI contenant les identifiants 
                   des espèces retenues.
      
             TAB2.DESCHI.NN objet LISTENTI de 6 valeurs contenant le
                   nombre d'espèces de chaque type c'est à dire:
                    nombre d'espèces simples en solution (type 1)
                    nombre de complexes en solution (type 2)
                    nombre d'espèces à activité fixée (type 3)
                    nombre de minéraux précipités (type 4)
                    nombre de minéraux précipitables en solution(type 5)
                    nombre d'espèces non prises en compte dans le calcul
                    (type 6)
      
             TAB2.DESCHI.MATRICEA objet LISTREEL matrice contenant les 
                   coefficients stoechiométriques de chaque espèce.
      
             TAB2.DESCHI.LOGK  objet LISTREEL valeur pour chaque espèce
                   de la constante de formation logk.
      
             TAB2.DESCHI.IDSURF objet LISTENTI  nature des especes de 
                   type 2.
                   0 en solution ,1 échange ionique (fixée) ,2 adsorbée

             TAB2.DESCHI.IDZ objet LISTENTI contenant les identifiants 
                   des solutions solides retenues.

             TAB2.DESCHI.IDP objet LISTENTI contenant les identifiants 
                   des poles de solutions solides retenus.

             TAB2.DESCHI.MATRICEF objet LISTREEL matricie contenant les 
                   fractions molaires de chaque solution solide

       TAB2.IDEN est une TABLE indicée par les mots:
             'COMP' 'SOLU' 'NOMSOLU' <'PRECI' 'NOMPRECI'>
             <'SURF' 'NOMSURF'>  <'TYP3' 'NOMTYP3'> <IMP3>
             <'TYP6' 'NOMTYP6'>  <'PARF'> <'REAC'>  <'IMMO'>
             <'SOSO' 'NOMSOSO' 'POLE' 'NOMPOLE'>

             TAB2.IDEN.COMP objet de type LISTENTI entiers servant à
                   décrire la nature des composants.
                   1 conservatifs, 2 réactifs, 3 immobiles.
      
             TAB2.IDEN.SOLU objet LISTENTI identifiants des espèces en
                   solution
      
             TAB2.IDEN.NOMSOLU objet LISTMOTS noms attribués par le code
                   à ces espèces en solution. Ces noms ont 4 caractères
                   dont le premier est W suivi éventuellement de 0 ou 00
                   et du numéro d'ordre dans la liste TAB2.DESCHI.IDY de
                   l'identifiant concerné.
      
             TAB2.IDEN.PRECI objet LISTENTI identifiants des espèces 
                   précipités potentiels.
      
             TAB2.IDEN.NOMPRECI objet LISTMOTS noms attribués par le 
                   code à ces espèces. Ces noms ont 4 caractères dont le
                   premier est W suivi éventuellement de 0 ou 00 et du
                   numéro d'ordre dans la liste  TAB2.DESCHI.IDY  de
                   l'identifiant concerné.
      
             TAB2.IDEN.SURF objet LISTENTI identifiants des espèces de 
                   surface.
      
             TAB2.IDEN.NOMSURF objet LISTMOTS noms attribués par le code 
                   à ces espèces.
      
             TAB2.IDEN.TYP3 objet LISTENTI identifiants des espèces dont
                   l activité est imposée(mème liste que TAB1.CLIM.TYP3)
      
             TAB2.IDEN.NOMTYP3 objet LISTMOTS noms attribués par le code
                   à ces espèces.
      
             TAB2.IDEN.IMP3 objet LISTENTI identifiants des espèces de
                   type 3. (activité imposée, redox).
      
             TAB2.IDEN.TYP6  objet LISTENTI identifiants des espèces non
                   prises en compte dans le calcul.
      
             TAB2.IDEN.NOMTYP6  objet LISTMOTS noms attribués par le code
                   à ces espèces.
      
             TAB2.IDEN.PARF objet LISTENTI identifiants des composants 
                   non réactifs
      
             TAB2.IDEN.REAC objet LISTENTI identifiants des composants
                   réactifs
      
             TAB2.IDEN.IMMO objet LISTENTI identifiants des composants
                   non transportés( par exemple:composant de surface,
                   composant associé à une espèce à activité imposée )

             TAB2.IDEN.SOSO objet LISTENTI identifiants des solutions 
                   solides.

             TAB2.IDEN.NOMSOSO objet LISTMOTS noms attribués par le code a
                   ces solutions solides.

             TAB2.IDEN.POLE objet LISTENTI identifiant des poles de 
                   solutions solides.

             TAB2.IDEN.NOMPOLE objet LISTMOTS noms attribués par le code a
                   ces poles de solutions solides.

       TAB2.REDOX objet TABLE contenant les données relatives aux redox.
             Cette TABLE est indicée par les mots: 'I1' 'I2' 'A1' 'A2'

             TAB2.REDOX.I1  objet LISTENTI identifiant du composant
                   mobile
      
             TAB2.REDOX.I2 objet LISTENTI identifiant du composant lié 
                   au composant mobile.
      
             TAB2.REDOX.A1 objet LISTREEL coefficient stoechiométrique
                   de l'électron e-
      
             TAB2.REDOX.A2 objet LISTREEL coefficient stoechiométrique
                   du proton H+

       TAB2.TEMPE est une TABLE contenant les données relatives à la
               température pour les espèces selectionnées. Elle est
               indicée par les mots:
               'DELTAH' 'DELCP' 'APPROX'  pour la base MINEQL
               'COEF' 'LOGK' 'TMIN' 'TMAX' 'NVT' 'NUMT' pour la base
                 STRASBG

             TAB2.TEMPE.DELTAH objet LISTREEL. Variation d'enthalpie

             TAB2.TEMPE.DELCP objet LISTREEL. Variation de capacité
                   calorifique

             TAB2.TEMPE.APPROX entier (1 ou 2) type d'approximation.

             TAB2.TEMPE.COEF objet LISTREEL.Coefficients d'interpolation.
                   Pour chaque espèce retenue,il y a 4 valeurs pour 
                   chacune des 8 températures de référence.

             TAB2.TEMPE.LOGK objet LISTREEL. Valeurs des Logk aux
                   températures de référence ( 8 valeurs pour chaque
                   espèce).

             TAB2.TEMPE.TMIN objet LISTREEL. Pour chaque espèce retenue,
                   température minimale pour laquelle l'espèce existe.

             TAB2.TEMPE.TMAX objet LISTREEL. Pour chaque espèce retenue,
                   température maximale pour laquelle l'espèce existe.

             TAB2.TEMPE.NVT objet LISTENTI. Pour chaque espèce retenue,
                    nombre de températures disponibles.

             TAB2.TEMPE.NUMT objet LISTENTI. Pour chaque espèce retenue,
                    identifiant de l'espèce.