IGL 0.5 · Référence
La référence du langage, version 0.5 : structure d'un fichier, notation, unités, blocs et leurs instructions, règles de calcul, bases de facteurs, diagnostics et fichiers produits. Chaque exemple de code de cette page est vérifié par le compilateur de référence. La spécification complète, avec les exemples acceptés et refusés de chaque bloc, est sur igl-lang.org/spec. Pour une présentation du langage et de ce qu'il calcule, voir Le langage IGL.
Un modèle est un fichier texte en UTF-8, d'extension .. Les fins de ligne LF et CRLF sont équivalentes. Deux règles de position, et seulement deux :
Un bloc se termine au prochain en-tête ou à la fin du fichier ; il n'y a pas de marque de fin. Un bloc nommé porte son nom sur la ligne d'en-tête (RESERVOIR Groundwater). Un commentaire commence par # et va jusqu'à la fin de la ligne, seul ou après une instruction.
RESERVOIR Groundwater # un compartiment nommé volume 1000 L temperature 12 C Cr(VI) 0.85 umol/kgw delta53Cr -0.2 permil
Les en-têtes et les clés ne distinguent pas les majuscules (PROCESS, process) ; les identifiants, si (Reduction et reduction sont deux noms). Par convention, une initiale minuscule marque un mot-clé ou une valeur énumérée (type, first_), une majuscule un nom choisi par l'auteur ou une espèce chimique (Groundwater, Cr(VI)). Un nom de bloc en minuscule est accepté avec l'avertissement IG010.
Il n'y a pas de mot réservé : un mot est un mot-clé par sa position. Les entités nommées partagent un seul espace de noms : un réservoir et un processus ne peuvent pas porter le même nom (IG102). Un bloc secondaire qui porte le nom d'une entité existante l'enrichit : FRACTIONATION Reduction s'attache au processus Reduction. L'ordre des blocs dans le fichier est libre, les références en avant sont permises.
Les caractères non ASCII sont admis dans les chaînes entre guillemets et dans les commentaires ; la ligne de TITLE n'est pas une chaîne et reste en ASCII. Ailleurs, seuls µ dans une unité (lu u) et ‰ comme unité (lu permil) sont acceptés et normalisés ; tout autre caractère non ASCII donne IG006.
| Forme | Exemple | Rôle |
|---|---|---|
| clé valeur [unité] | volume 1000 L | affectation statique |
| clé référence | location Groundwater | renvoi vers une entité |
| nom = expression [unité] | k_ | expression évaluée |
| espèce valeur [unité] | Cr(VI) 0.85 umol/kgw | concentration d'une espèce |
| clé [ liste ] | processes [ Reduction, Uptake ] | liste de références |
Le signe = est le seul qui fait passer une ligne en évaluation. Sans lui, aucune arithmétique n'est tentée.
Deux formes, et seulement deux :
<masse><Symbole>/<masse><Symbole>, par exemple 53Cr/52Cr, 18O/16O, 123Sb/121Sb ; l'isotope lourd au numérateur ;delta<masse><Symbole>, par exemple delta53Cr, delta123Sb.Les formes Cr53/52 ou Sb123 donnent IG103. Les deux symboles d'un rapport doivent être identiques :
FRACTIONATION Reduction isotope 53Cr/52Fe epsilon -3.5
Sortie de igl check pour un modèle qui contient ce bloc :
error[IG104]: mismatched element symbols across a ratio --> modele.igl:26:13 | 26 | isotope 53Cr/52Fe | ^^^^^^^^^ `Cr` and `Fe` are different elements 1 error(s)
Un lexème de rapport est reconnu avant toute arithmétique : 53Cr/52Cr n'est jamais une division. Dans un rapport, R est l'abondance de l'isotope écrit au numérateur sur celle de l'isotope écrit au dénominateur, et c'est cette grandeur que le moteur fait évoluer ; les δ sont convertis à l'entrée et recalculés à la sortie.
Chaque valeur dimensionnée porte son unité, ou reçoit celle du bloc UNITS. Une unité de la mauvaise dimension donne IG204 ; une unité omise là où plusieurs sont admissibles, IG205. Les unités sont converties vers l'unité canonique à l'abaissement : un moteur ne reçoit que des unités canoniques.
| Dimension | Unités admises | Canonique |
|---|---|---|
| Température | C, K, F | K |
| Temps | s, min, h, d, a (année julienne, 31 557 600 s) | s |
| Volume | L, mL, m^3 | L |
| Masse | kg, g, mg, ug | kg |
| Quantité | mol, mmol, umol, nmol | mol |
| Molalité | mol/kgw, mmol/kgw, umol/kgw | mol/kgw |
| Concentration massique | g/L, mg/L, ug/L, ng/L | mg/L |
| Constante de vitesse | 1/s, 1/min, 1/h, 1/d | 1/s |
| Pression | bar, atm, Pa, kPa | bar |
| Potentiel | mV, V | mV |
| Composition isotopique | permil (ou ‰) | permil |
| Sans dimension | aucune, ou 1 | 1 |
alpha est sans dimension ; epsilon et 1000ln_ sont en ‰ et l'unité peut être omise.
UNITS concentration umol/kgw time d temperature C delta permil
Les blocs se répartissent en trois profils. Le profil core est toujours accepté ; une implémentation peut prendre en charge l'identification sans la simulation, ou l'inverse. Un bloc d'un profil non pris en charge donne IG005, jamais un silence.
| Bloc | Nommé | Répétable | Profil | Rôle |
|---|---|---|---|---|
TITLE | non | non | core | titre lisible, une ligne |
META | non | non | core | auteur, date, version, language, description, licence, référence ; sans effet sur le calcul |
DATABASE | non | non | core | bases IGDB à charger, dans l'ordre ; les suivantes l'emportent |
UNITS | non | non | core | unités par défaut |
PARAMETERS | non | non | core | paramètres globaux et expressions |
SPECIES | non | non | core | espèces chimiques |
ISOTOPES | non | non | core | rapports suivis, et leur mode (absolu ou relatif) |
STANDARD | non | non | core | standards de référence, prioritaires sur les bases |
CONDITIONS | non | non | core | température, pression, pH, Eh, force ionique du modèle |
RESERVOIR | oui | oui | core | compartiment physique |
PROCESS | oui | oui | core | processus physique ou chimique |
FRACTIONATION | oui | oui | core | facteur de fractionnement d'un processus |
KINETICS | oui | oui | core | loi de vitesse d'un processus |
MODEL | oui | non | core | réservoirs et processus retenus, avancement, condition d'arrêt |
OUTPUT | non | non | core | grandeurs enregistrées |
EXPORT | non | oui | core | fichiers de résultats souhaités |
SAMPLE | oui | oui | identification | composition mesurée |
IDENTIFY | oui | oui | identification | recherche des processus qui expliquent un écart |
LAW | oui | oui | étendu | loi de fractionnement réutilisable |
PHREEQC | oui | oui | étendu | appel à PHREEQC |
RAYLEIGH, ADSORPTION, EXCHANGE | oui | oui | étendu | formes abrégées de PROCESS et FRACTIONATION |
SOLUTION, INITIAL, DATASET, FIT, MONTE_, SENSITIVITY, PLOT, REPORT | étendu | noms réservés, contenu non encore défini : avertissement IG011, aucun effet |
Un bloc unique écrit deux fois donne IG105. Les noms de blocs et de propriétés propres à une implémentation commencent par x_ ; les autres noms appartiennent à la spécification.
Les entités sont créées dans un ordre de dépendance fixe, indépendant de leur ordre dans le fichier : META, DATABASE, UNITS, CONDITIONS, STANDARD, PHREEQC, PARAMETERS, SPECIES, ISOTOPES, LAW, RESERVOIR, PROCESS, FRACTIONATION, KINETICS, SAMPLE, MODEL, IDENTIFY, OUTPUT, EXPORT.
Le bloc PARAMETERS déclare des paramètres globaux, lisibles partout. Une instruction parameter dans un PROCESS, un RESERVOIR ou CONDITIONS déclare un paramètre local au bloc, que l'on atteint de l'extérieur par un nom qualifié à deux composantes : Reduction.. Un paramètre peut en lire un autre ; une référence circulaire donne IG107. Un paramètre local qui masque un global est accepté avec l'avertissement IG108.
PARAMETERS k_base = 0.01 1/d eps_red = -1.6 permil T_ref = 25 C PROCESS Reduction type reduction reactant Cr(VI) product Cr(III) parameter rate_constant = 2 * k_base RESERVOIR Groundwater volume 1 L Cr(VI) 1 umol/kgw delta53Cr 0 permil
Opérateurs : +, -, *, /, ^. ^ est associatif à droite et lie plus fort que * et / ; le moins unaire est appliqué après la puissance : -T^2 vaut -(T^2). Les nombres acceptent la notation scientifique (1.5e-3).
| Fonction | Sens |
|---|---|
exp(x), ln(x), log10(x) | exponentielle, logarithmes népérien et décimal |
sqrt(x), abs(x) | racine carrée, valeur absolue |
pow(x, y) | x ^ y |
min(a, b), max(a, b) | minimum, maximum |
| Nom | Sens | Unité |
|---|---|---|
R | constante des gaz parfaits, 8,314462618 | J/mol/K |
T | température du réservoir englobant, sinon celle de CONDITIONS ; IG107 si aucune | K, toujours |
time | temps écoulé de la simulation | s |
T est en kelvins dans toute expression, quelle que soit l'unité de déclaration : les lois de fractionnement de la littérature sont écrites pour des kelvins.
SPECIES et ISOTOPESUne espèce s'écrit avec une majuscule initiale et peut contenir des parenthèses et des signes : Cr(VI), Fe2+, Sb(V)_. Une espèce est un pool redox : sa spéciation interne n'est pas suivie et ne fractionne pas.
ISOTOPES déclare les rapports suivis et leur standard. Avec mode relative, aucun standard n'est requis : les δ sont des écarts à l'origine du modèle et les résultats affichent l'unité permil (relative). Le mode par défaut est absolute ; un rapport sans standard résoluble, utilisé avec un δ, donne alors IG106.
ISOTOPES mode relative ratio 123Sb/121Sb SPECIES species Sb(V) species Sb(V)_ads
STANDARDUn standard se déclare par son nom, la valeur de son rapport, le rapport concerné et, en option, son incertitude. Un standard écrit dans le modèle l'emporte sur celui d'une base.
STANDARD standard NIST-SRM-979 0.11339 ratio 53Cr/52Cr uncertainty 0.00002 standard VSMOW 0.0020052 ratio 18O/16O
RESERVOIR| Instruction | Sens |
|---|---|
<espèce> valeur unité | concentration initiale d'une espèce |
delta<rapport> valeur permil | composition initiale |
volume, mass | taille du réservoir |
temperature | température locale, prioritaire sur CONDITIONS |
parameter | paramètre local |
CONDITIONSLes conditions du modèle : temperature, pressure, pH, Eh, ionic_. Elles fixent T dans les expressions, et servent à choisir dans les bases un facteur mesuré dans des conditions qui les contiennent.
CONDITIONS temperature 9.4 C pH 5.23 Eh 132 mV ionic_strength 0.01 mol/kgw
type est obligatoire et fixe les champs requis. Un processus agit dans un réservoir (location, déduit s'il n'y en a qu'un ; sinon IG211) ou déplace la matière d'un réservoir à un autre (from, into). Un produit identique au réactif donne IG214.
type | Requis |
|---|---|
reduction, oxidation, dissolution, precipitation, evaporation, diffusion, ligand_ | reactant, product |
adsorption, uptake | reactant, sorbent |
exchange | phase_, phase_ |
mixing | deux source ou plus, avec leur fraction ; product (un réservoir) |
Champs facultatifs, pour tous les types : location, from, into, extent, context, regime, law, et des parameter locaux.
extentIG305). Lu seulement quand le modèle avance par extent ; sous progress time, il est signalé par IG306.regimeequilibrium ou kinetic : comment le facteur a été mesuré. Il restreint le choix dans les bases et, avec equilibrium, fait appliquer la loi d'équilibre en système fermé ; sans lui, le moteur applique Rayleigh. Il ne se déduit jamais de la présence ou de l'absence de KINETICS.contextpyrometallurgy, hydrometallurgy, natural ou biotic : où le processus a lieu. Il restreint le choix dans les bases.Un processus est cinétique si un bloc KINETICS le nomme ; il n'y a pas d'instruction mechanism.
RESERVOIR Groundwater volume 1000 L Cr(VI) 0.85 umol/kgw delta53Cr -0.2 permil RESERVOIR Sediment mass 250 kg PROCESS Removal type precipitation reactant Cr(VI) product Cr(III) from Groundwater into Sediment extent 0.70 context natural regime kinetic
Les fractions des sources doivent sommer à 1 à 10−6 près (IG215). Le δ du mélange est pondéré par les quantités apportées, concentration fois fraction, et non par les fractions seules.
RESERVOIR UpstreamRiver volume 500 L Cr(VI) 0.2 umol/kgw delta53Cr 0.8 permil RESERVOIR IndustrialEffluent volume 100 L Cr(VI) 5 umol/kgw delta53Cr 0.1 permil RESERVOIR DownstreamRiver volume 600 L PROCESS SourceMixing type mixing source UpstreamRiver 0.55 source IndustrialEffluent 0.45 product DownstreamRiver
FRACTIONATION <Processus> s'attache au processus du même nom. isotope est requis ; le facteur se donne sous exactement une des formes alpha, epsilon, law ou law file (deux à la fois : IG213). α est défini produit sur réactif : α < 1 signifie un produit appauvri en isotope lourd. Aucune convention inversée n'est proposée.
ε et 1000 ln α ne se substituent jamais l'un à l'autre : leur écart dépasse 0,01 ‰ au-delà d'environ |ε| = 5 ‰.
FRACTIONATION Reduction isotope 53Cr/52Cr law 1000ln_alpha = 3.10 * (10 ^ 6 / T ^ 2) - 2.41 CONDITIONS temperature 15 C
Une loi a pour membre gauche alpha, epsilon ou 1000ln_, et lit les paramètres, T et time. law file "chemin. désigne une loi écrite dans un fichier séparé. Un bloc LAW (profil étendu) déclare une loi une fois pour plusieurs processus, qui la nomment par law ; un FRACTIONATION sur le même processus l'emporte pour le rapport qu'il nomme.
LAW HighTempCrLaw 1000ln_alpha = 3.10 * (10 ^ 6 / T ^ 2) - 2.41 PROCESS ThermalReduction type reduction reactant Cr(VI) product Cr(III) law HighTempCrLaw CONDITIONS temperature 850 C
Le fractionnement s'applique à la matière transférée par le processus. La loi dépend du régime : équilibre en système fermé si regime equilibrium et que le produit reste au contact, Rayleigh sinon. Avec F la fraction qui a réagi et f = 1 − F :
Un processus sans facteur écrit cherche le sien dans les bases déclarées (voir Bases de facteurs).
KINETICS <Processus> rend le processus cinétique. constant est un nombre avec son unité ou le nom d'un paramètre, dont l'unité est reprise.
rate | Constantes requises |
|---|---|
zero_, first_, second_ | constant |
monod | constant, half_ (molalité) |
KINETICS Reduction rate monod constant 0.01 1/d half_saturation 0.5 umol/kgw
MODEL : faire avancer le modèle| Instruction | Sens | Défaut |
|---|---|---|
progress | time (intégration dans le temps) ou extent (chaque processus consomme la fraction donnée par son extent) | time |
step | pas de temps | |
until | condition d'arrêt, requise sous progress time | |
reservoirs, processes | listes retenues ; la liste des processus fixe aussi leur ordre d'application dans un pas | toutes les entités déclarées |
Sous progress time, le dernier pas est raccourci pour tomber exactement sur la condition d'arrêt : step 10 d avec until time >= 365 d s'arrête à 365 jours et non à 370.
MODEL CrReduction reservoirs [ Groundwater ] processes [ Reduction ] step 0.5 d until time >= 365 d KINETICS Reduction rate first_order constant 0.003 1/d
La condition d'arrêt peut aussi porter sur une concentration : until Groundwater.. Un fichier contient un seul bloc MODEL ; les résultats nomment celui qui a été exécuté.
OUTPUT et EXPORTChaque ligne variable ajoute une colonne aux résultats ; every fixe l'intervalle d'enregistrement sous progress time. Les chemins admis :
| Chemin | Grandeur | Nature (kind) | Unité |
|---|---|---|---|
time | temps écoulé | time | s |
Réservoir. | quantité du pool | amount | mol/kgw ou mg/L |
Réservoir. | composition du pool | pool_ | permil |
Réservoir. | composition du réservoir entier, moyenne des pools pondérée par les quantités | composition | permil |
Réservoir. | part du pool initial qui reste, de 1 à 0 ; absente pour un pool initialement vide | fraction_ | 1 |
Réservoir. | part du pool initial qui en est partie | fraction_ | 1 |
nom, Bloc. | paramètre global ou local | parameter |
OUTPUT variable time variable Groundwater.Cr(VI).remaining variable Groundwater.Cr(VI).delta53Cr variable Groundwater.delta53Cr every 5 d
EXPORT déclare un fichier de résultats par format (isof, csv ou json) et son chemin. La déclaration est portée dans la représentation intermédiaire ; la commande igl run de l'implémentation de référence écrit pour l'instant le seul fichier de résultats JSON décrit plus bas, et pas encore les fichiers déclarés par EXPORT.
EXPORT format csv file "cr_plume.csv"
Une base IGDB est un fichier TOML, au format IGDB 1.1. Elle contient un en-tête ([database] : nom, version, version du format, licence), des éléments avec leurs abondances, des standards, des espèces et des facteurs de fractionnement. Chaque valeur numérique porte sa citation.
| Champ d'un facteur | Sens |
|---|---|
ratio, process | rapport et mécanisme (mêmes valeurs que PROCESS type) |
reactant, product, reactant_, product_ | les deux côtés de la réaction, et où chacun se trouve (aqueous, adsorbed, mineral, precipitate, vapour, melt, biomass, bulk, industrial) |
epsilon | alpha | law | la valeur, sous exactement une forme ; produit moins réactif |
delta_, delta_ | gamme mesurée, distincte de la valeur centrale |
uncertainty, uncertainty_ | incertitude et sa nature (standard, expanded_, range, unspecified) |
regime, equilibrium_, context | régime visé, équilibre effectivement atteint ou non, contexte |
temperature_ (K), ph_ | domaine de mesure |
oxidant_, time_, industrial_ | agent de la réaction, durée de l'expérience, opération industrielle |
isotope_ | mass_ (défaut) ou nuclear_ |
citation, doi, note | la source |
Un chemin avec séparateur ou absolu est pris tel quel, relatif au modèle. Un nom nu est cherché dans cet ordre : à côté du modèle, dans le dossier de la variable d'environnement IGL_, dans un dossier databases proche de l'exécutable. Aucun accès réseau n'a lieu.
IG212.Un STANDARD ou un FRACTIONATION du modèle l'emporte sur la base, sans diagnostic. Quand un facteur vient d'une base, les diagnostics des résultats citent l'entrée. Les facteurs de l'Atlas IsoFind sont publiés dans ce format sur la page Bases IGDB.
SAMPLE| Instruction | Sens |
|---|---|
element | élément mesuré (requis) |
delta<rapport> | composition mesurée |
uncertainty, uncertainty_ | incertitude analytique ; standard (un écart type) ou expanded_ (élargie, k = 2), qui est le défaut |
dispersion | écart type d'une population que l'échantillon représente ; combiné en quadrature avec l'incertitude |
material, note | description |
SAMPLE OreDeposits element Sb delta123Sb 0.38 permil uncertainty 0.04 permil uncertainty_kind standard dispersion 0.11 permil note "Moyenne de 14 mesures sur 3 gisements"
IDENTIFY| Instruction | Sens | Défaut |
|---|---|---|
source, product | les deux échantillons | requis |
mode | single, chain, rayleigh ; hybrid est réservé aux implémentations qui le définissent | requis |
candidates | mécanismes admis | tous |
context, regime | restrictions de la recherche | aucune |
product_ | product (ce qui s'est formé) ou residue (ce qui reste du réactif) | product |
extent | avancement connu ; refusé avec mode chain (IG213) | balayé de 0 à 1 |
coverage | facteur d'élargissement k | 2 |
tolerance | ajout à chaque borne de l'intervalle mesuré | 0 |
max_ | nombre maximal d'étapes d'une chaîne | 3 |
top | nombre d'explications listées ; toutes restent comptées | toutes |
SAMPLE Concentrate element Sb delta123Sb 0.42 permil uncertainty 0.05 permil SAMPLE Ingot element Sb delta123Sb 0.70 permil uncertainty 0.03 permil IDENTIFY SmeltingRoute source Concentrate product Ingot mode chain candidates [ reduction, evaporation ] context pyrometallurgy max_chain 3
expanded_k2 est divisée par deux) ; u = √(us² + up²) ; intervalle mesuré [Δm − k·u − t, Δm + k·u + t].CONDITIONS sont écartés avant la recherche, et listés avec la raison.discriminates vaut false dès que deux explications ou plus sont compatibles.IG307, et non un ensemble vide.| Instruction | Sens |
|---|---|
input file "…" | fichier d'entrée PHREEQC, qui reste exécutable seul (requis) |
database "…" | base thermodynamique PHREEQC ; à défaut, celle de la configuration du moteur |
mode | oneshot (défaut) : l'état final de PHREEQC, tenu pendant tout le calcul ; series : chaque état enregistré, lu au temps courant du modèle, sans interpolation |
export "colonne" to nom | lie une colonne de SELECTED_ à un paramètre global en lecture seule (IG110 si on l'affecte) |
PHREEQC calcule la spéciation dans un pool redox ; le moteur isotopique fait tous les transferts entre pools et toute la comptabilité isotopique. Un mode series se lit contre l'horloge du modèle et demande progress time (IG306 sinon) ; une lecture avant le premier état enregistré donne IG404. Sans PHREEQC disponible, IG401, sans calcul de remplacement ; c'est toujours le cas dans le navigateur. Le couplage pas à pas par PhreeqcRM n'est pas défini.
Trois blocs du profil étendu se déplient, à l'abaissement, en un PROCESS et un FRACTIONATION. Les deux écritures produisent le même graphe de modèle.
RAYLEIGH Distillation reservoir Groundwater isotope 53Cr/52Cr epsilon -1.6 reactant Cr(VI) product Cr(III)
RAYLEIGH décrit une distillation en système ouvert, dont le produit est retiré à mesure qu'il se forme : la loi de Rayleigh s'applique même avec un facteur d'équilibre. ADSORPTION (reactant, sorbent) et EXCHANGE (phase_, phase_) se déplient en PROCESS type adsorption et PROCESS type exchange.
Un diagnostic porte un code, une gravité, une position (fichier, ligne, colonne), l'extrait fautif souligné et, quand c'est possible, une correction suggérée : pour un nom inconnu, le nom déclaré le plus proche. Le compilateur ne s'arrête pas à la première erreur ; il reprend au bloc suivant et rapporte tout ce que le fichier permet. Les codes d'exécution (IG3xx, IG4xx) sont écrits dans le fichier de résultats, avec les lignes calculées avant l'erreur. igl explain IG104 donne l'explication d'un code, avec un exemple refusé et un exemple accepté.
Le bloc ci-dessous contient une erreur ; ses diagnostics s'affichent pendant la frappe.
| Code | Gravité | Sens |
|---|---|---|
| Syntaxe, IG0xx | ||
IG001 | erreur | jeton inattendu |
IG002 | erreur | chaîne non terminée |
IG003 | erreur | en-tête de bloc inconnu |
IG004 | erreur | instruction non indentée |
IG005 | erreur | bloc d'un profil non pris en charge |
IG006 | erreur | caractère non ASCII hors d'une position admise |
IG007 | erreur | expression mal formée |
IG008 | erreur | unité inconnue ou mal formée |
IG009 | erreur | bloc nommé sans identifiant |
IG010 | avertissement | identifiant de bloc sans majuscule initiale |
IG011 | avertissement | bloc que l'implémentation n'applique pas |
| Sémantique, IG1xx | ||
IG101 | erreur | référence à une entité non déclarée |
IG102 | erreur | nom en double dans l'espace de noms global |
IG103 | erreur | rapport isotopique mal formé ou inconnu |
IG104 | erreur | éléments différents de part et d'autre d'un rapport |
IG105 | erreur | doublon d'un bloc qui doit être unique |
IG106 | erreur | aucun standard de référence pour un rapport |
IG107 | erreur | symbole non résolu dans une expression |
IG108 | avertissement | symbole local qui masque un symbole global |
IG109 | erreur | nom qualifié mal formé |
IG110 | erreur | affectation d'un symbole en lecture seule |
| Validation, IG2xx | ||
IG201 | erreur | valeur hors du domaine admissible |
IG202 | erreur | valeur du mauvais type |
IG204 | erreur | unité incompatible avec la dimension attendue |
IG205 | erreur | unité omise alors que plusieurs sont admises |
IG210 | erreur | propriété inconnue pour ce bloc |
IG211 | erreur | propriété requise absente |
IG212 | avertissement | propriété recommandée absente |
IG213 | erreur | propriétés mutuellement exclusives présentes ensemble |
IG214 | erreur | configuration physiquement inadmissible |
IG215 | erreur | fractions de mélange dont la somme n'est pas 1 |
| Exécution, IG3xx | ||
IG301 | erreur | le solveur ne converge pas |
IG302 | erreur | instabilité numérique |
IG303 | erreur | division par zéro pendant l'évaluation |
IG304 | erreur | fraction restante négative |
IG305 | erreur | avancement hors de l'intervalle 0 à 1 |
IG306 | avertissement | instruction que l'avancement choisi ne lit pas |
IG307 | erreur | identification sans aucun facteur à consulter |
| Moteur externe, IG4xx | ||
IG401 | erreur | moteur externe requis indisponible |
IG402 | erreur | échec signalé par le moteur externe |
IG403 | erreur | délai de communication dépassé avec le moteur externe |
IG404 | erreur | lecture d'une série hors de ce qu'elle a enregistré |
*.iglir.json igl build. Le modèle après résolution, validation, conversion des unités et dépliage des formes abrégées, avec la provenance (chemin et empreinte SHA-256 du source). C'est le contrat entre le langage et un moteur ; elle est versionnée.*.results.json igl run. format_version ; engine (nom et version du code qui a calculé) ; model (version de la représentation intermédiaire, chemin et empreinte du source, bloc MODEL exécuté) ; backends si un moteur externe a été appelé ; columns, chacune avec son nom, sa nature, son unité canonique et ses références résolues en noms ; rows ; diagnostics ; identifications. Un lecteur ignore les champs qu'il ne connaît pas dans une même version majeure et refuse une version majeure qu'il n'implémente pas.*.igdb Un extrait de résultats, pour une colonne de composition :
{
"name": "Groundwater.Cr(VI).delta53Cr",
"kind": "pool_composition",
"unit": "permil",
"reservoir": "Groundwater",
"species": "Cr(VI)",
"isotope": "53Cr/52Cr"
}
L'implémentation de référence fournit la commande igl. Aucune version n'est encore publiée en téléchargement.
| Commande | Effet |
|---|---|
igl check <fichier>… | rapporte les diagnostics |
igl parse <fichier> | affiche l'arbre syntaxique (--json pour une sortie lisible par machine) |
igl build <fichier> | produit la représentation intermédiaire, à côté du source ou à -o |
igl run <modèle> [<résultats>] | exécute une représentation intermédiaire et écrit les résultats |
igl fmt <fichier>… | réécrit en forme canonique ; --check signale une différence sans réécrire |
igl explain <code> | explique un code de diagnostic |
check, parse et build prennent --profile core|identification|extended, core par défaut ; le profil core reste accepté quel que soit celui déclaré. Un modèle qui contient SAMPLE et IDENTIFY se construit donc avec --profile identification.
igl check --profile identification sb-smelting.igl igl build --profile identification sb-smelting.igl igl run sb-smelting.iglir.json
| Code de sortie | Sens |
|---|---|
| 0 | aucune erreur |
| 1 | le source contient des erreurs, ou fmt --check a trouvé une différence |
| 2 | invocation incorrecte, ou fichier illisible |
| 3 | défaut du programme : rien de ce qu'il a produit n'est fiable |
Variable d'environnement : IGL_, dossier où chercher les bases nommées sans chemin.
IsoFind réunit plusieurs services autour de la géochimie isotopique. L'Atlas rassemble des valeurs publiées sur les gisements, les sites contaminés et le fractionnement, consultables librement, avec plus de 4 100 fiches de référence en français et en anglais. Le logiciel IsoFind sert à travailler sur ses propres mesures, hors ligne. S'y ajoutent des outils en ligne gratuits, comme la conversion des standards, et deux formats ouverts, ISOF (Isotopic Secure Open Format) et IGL (Isotope Geochemistry Language).
All Rights Reserved by IsoFind