IGL

Isotope Geochemistry Language, a text format for isotopic process models



Describes IGL 0.5. Page revision 1.0, 2026-07-31. Schema revision 1.

Block reference

Every block the language defines, generated from the same registry the validator is generated from. A statement listed here is one the reference implementation accepts; one that is absent is one it refuses with IG210.

Blocks are listed in dependency order, which is the order they must appear in a model, so reading down this page and writing down a file are the same motion.


META

core profile · takes no name

Descriptive metadata. No effect on execution, recommended for reproducibility.

StatementKindValuePresenceNotes
authorassignationtextoptional
dateassignationdateoptional
versionassignationversionoptional
languageassignationversionrecommended
descriptionassignationstringoptional
licenseassignationtextoptional
referenceassignationtextoptional

DATABASE

core profile · takes no name

IGDB files loaded before resolution, in order. Later entries override earlier ones.

StatementKindValuePresenceNotes
fileassignationpathrequiredrepeatable

UNITS

core profile · takes no name

Default units applied where a statement omits one.

StatementKindValuePresenceNotes
concentrationassignationidentifieroptional
timeassignationidentifieroptional
temperatureassignationidentifieroptional
deltaassignationidentifieroptional
volumeassignationidentifieroptional
massassignationidentifieroptional
pressureassignationidentifieroptional

CONDITIONS

core profile · takes no name · may declare its own parameters

Model wide temperature, pressure and pH.

StatementKindValuePresenceNotes
temperatureassignationnumber, temperatureoptional
pressureassignationnumber, pressureoptional
pHassignationnumber, dimensionlessoptional
Ehassignationnumber, potentialoptional
ionic_strengthassignationnumber, molalityoptional

STANDARD

core profile · takes no name

Reference standards overriding IGDB for this model.

StatementKindValuePresenceNotes
standardref_valuenumberoptionalrepeatable · takes ratio · takes uncertainty

PHREEQC

extended profile · carries a name · may appear more than once · declares a Backend others may name

PHREEQC interoperation. The referenced file stays valid standalone PHREEQC input.

StatementKindValuePresenceNotes
input_fileassignationpathrequiredwritten input file
databaseassignationpathoptional
modeassignationenumoptionalone of oneshot, series · default oneshot
exportassignationstringoptionalrepeatable · takes to

PARAMETERS

core profile · takes no name

Global scalars and expressions. Every statement is an expression statement.

SPECIES

core profile · takes no name

Chemical species not supplied by IGDB.

StatementKindValuePresenceNotes
speciesassignationspeciesrequiredrepeatable

ISOTOPES

core profile · takes no name

Isotope systems the model tracks. Compositions belong to RESERVOIR, not here.

StatementKindValuePresenceNotes
modeassignationenumoptionalone of absolute, relative · default absolute
ratioassignationratiorequiredrepeatable · takes standard

LAW

extended profile · carries a name · may appear more than once · declares a Law others may name · takes an indented law

Reusable fractionation or rate law, referenced by name from several processes.

SOLUTION

extended profile · carries a name · may appear more than once

Reserved. The name belongs to the language and its statements are not defined yet. A model may write this block; nothing inside it is checked, nothing reads it, and an implementation reports IG011.

RESERVOIR

core profile · carries a name · may appear more than once · declares a Reservoir others may name · may declare its own parameters

Physical compartment. Species concentrations and isotopic compositions.

StatementKindValuePresenceNotes
volumeassignationnumber, volumeoptional
massassignationnumber, massoptional
temperatureassignationnumber, temperatureoptional

INITIAL

extended profile · takes no name

Reserved. The name belongs to the language and its statements are not defined yet. A model may write this block; nothing inside it is checked, nothing reads it, and an implementation reports IG011.

PROCESS

core profile · carries a name · may appear more than once · declares a Process others may name · may declare its own parameters

Central object. `type` discriminates which properties are required.

StatementKindValuePresenceNotes
typeassignationenumrequiredone of reduction, oxidation, dissolution, precipitation, mixing, adsorption, exchange, evaporation, diffusion, uptake, ligand_exchange
fromreferencereference to Reservoiroptional
intoreferencereference to Reservoiroptional
extentassignationnumber, dimensionlessoptional0.0 to 1.0
contextassignationenumoptionalone of pyrometallurgy, hydrometallurgy, natural, biotic
regimeassignationenumoptionalone of equilibrium, kinetic
reactantreferencereference to Speciesoptional
productreferencereference to anyoptional
sourceref_valuereference to Reservoiroptionalrepeatable
sorbentreferencereference to Speciesoptional
phase_areferencereference to Speciesoptional
phase_breferencereference to Speciesoptional
locationreferencereference to Reservoiroptionalinferred when only one exists
lawreferencereference to Lawoptional

FRACTIONATION

core profile · carries a name · may appear more than once · extends Process

Fractionation attached to a process. The identifier always names a Process.

StatementKindValuePresenceNotes
isotopeassignationratiorequired
alphaassignationnumber, dimensionlessoptionalone of the mode group
epsilonassignationnumber, deltaoptionalone of the mode group
lawlaw_bodyoptionalone of the mode group
law_fileassignationpathoptionalwritten law file · one of the mode group
phaseassignationnumber, deltaoptional

KINETICS

core profile · carries a name · may appear more than once · extends Process

Rate law attached to a process. Its presence is what makes the process kinetic.

StatementKindValuePresenceNotes
rateassignationenumrequiredone of zero_order, first_order, second_order, monod
constantassignationnumber, rate_constantoptional
half_saturationassignationnumber, molalityoptional

SAMPLE

identification profile · carries a name · may appear more than once · declares a Sample others may name

A measured composition, taken as the source or the product of an identification.

StatementKindValuePresenceNotes
elementassignationidentifierrequired
uncertaintyassignationnumber, deltaoptional
materialassignationtextoptional
noteassignationstringoptional
serieslistnumberoptional

MODEL

core profile · carries a name · declares a Model others may name

Simulation boundaries, process ordering and stopping condition.

StatementKindValuePresenceNotes
reservoirslistreference to Reservoiroptionaldefault all
processeslistreference to Processoptionaldefault all
stepassignationnumber, timeoptional
progressassignationenumoptionalone of time, extent · default time
untilconditionoptional

IDENTIFY

identification profile · carries a name · may appear more than once · declares a Identification others may name

Searches for the process or chain of processes that explains the gap between two samples.

StatementKindValuePresenceNotes
sourcereferencereference to Samplerequired
productreferencereference to Samplerequired
modeassignationenumrequiredone of single, chain, rayleigh, hybrid
candidateslistenumoptionalone of reduction, oxidation, dissolution, precipitation, adsorption, evaporation, exchange, diffusion, mixing, uptake, ligand_exchange · default all
contextassignationenumoptionalone of pyrometallurgy, hydrometallurgy, natural, biotic
regimeassignationenumoptionalone of equilibrium, kinetic
max_chainassignationnumber, dimensionlessoptional
toleranceassignationnumber, deltaoptional
topassignationnumber, dimensionlessoptional
extentassignationnumber, dimensionlessoptional0.0 to 1.0

DATASET

extended profile · carries a name · may appear more than once · declares a Dataset others may name

Reserved. The name belongs to the language and its statements are not defined yet. A model may write this block; nothing inside it is checked, nothing reads it, and an implementation reports IG011.

OUTPUT

core profile · takes no name

State variables recorded during the run.

StatementKindValuePresenceNotes
variablereferencereference to anyrequireda qualified path · repeatable
everyassignationnumber, timeoptional

PLOT

extended profile · takes no name · may appear more than once

Reserved. The name belongs to the language and its statements are not defined yet. A model may write this block; nothing inside it is checked, nothing reads it, and an implementation reports IG011.

REPORT

extended profile · takes no name

Reserved. The name belongs to the language and its statements are not defined yet. A model may write this block; nothing inside it is checked, nothing reads it, and an implementation reports IG011.

EXPORT

core profile · takes no name · may appear more than once

Result serialisation. May repeat, once per output format.

StatementKindValuePresenceNotes
formatassignationenumrequiredone of isof, csv, json
fileassignationpathrequired

ADSORPTION

extended profile · carries a name · may appear more than once · shorthand for PROCESS

Shorthand for PROCESS with type adsorption plus its FRACTIONATION.

StatementKindValuePresenceNotes
sorbentreferencereference to Speciesrequired
reactantreferencereference to Speciesrequired
isotopeassignationratiorequired
alphaassignationnumber, dimensionlessoptionalone of the mode group
epsilonassignationnumber, deltaoptionalone of the mode group
extentassignationnumber, dimensionlessoptional0.0 to 1.0
regimeassignationenumoptionalone of equilibrium, kinetic

EXCHANGE

extended profile · carries a name · may appear more than once · shorthand for PROCESS

Shorthand for PROCESS with type exchange plus its FRACTIONATION.

StatementKindValuePresenceNotes
phase_areferencereference to Speciesrequired
phase_breferencereference to Speciesrequired
isotopeassignationratiorequired
alphaassignationtextoptionalone of the mode group
epsilonassignationnumber, deltaoptionalone of the mode group
extentassignationnumber, dimensionlessoptional0.0 to 1.0
regimeassignationenumoptionalone of equilibrium, kinetic

FIT

extended profile · takes no name

Reserved. The name belongs to the language and its statements are not defined yet. A model may write this block; nothing inside it is checked, nothing reads it, and an implementation reports IG011.

MONTE_CARLO

extended profile · takes no name

Reserved. The name belongs to the language and its statements are not defined yet. A model may write this block; nothing inside it is checked, nothing reads it, and an implementation reports IG011.

RAYLEIGH

extended profile · carries a name · may appear more than once · shorthand for PROCESS

Shorthand for open system Rayleigh distillation.

StatementKindValuePresenceNotes
reservoirreferencereference to Reservoirrequired
isotopeassignationratiorequired
reactantreferencereference to Speciesrequired
productreferencereference to Speciesrequired
alphaassignationnumber, dimensionlessoptionalone of the mode group
epsilonassignationnumber, deltaoptionalone of the mode group
extentassignationnumber, dimensionlessoptional0.0 to 1.0

SENSITIVITY

extended profile · takes no name

Reserved. The name belongs to the language and its statements are not defined yet. A model may write this block; nothing inside it is checked, nothing reads it, and an implementation reports IG011.

TITLE

core profile · takes no name

Human readable model title. One content line, no statements.