IGL

Isotope Geochemistry Language, a text format for isotopic process models



Describes IGL 0.5. Page revision 1.0, 2026-08-07. Definitions revision 1.

Block reference

Every block IGL defines. This page is generated from the same definitions the checker uses, so a statement listed here is one your model can use, and one that is missing is one you will be told about (IG210).

They are in the order they have to appear in a file, so you can read down this page and write down your model at the same time.


META

core profile · takes no name

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

StatementKindValueNeeded?Notes
authorassignationtextoptional
dateassignationa dateoptional
versionassignationa version numberoptional
languageassignationa version numberrecommended
descriptionassignationtext in quotesoptional
licenseassignationtextoptional
referenceassignationtextoptional

DATABASE

core profile · takes no name

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

StatementKindValueNeeded?Notes
fileassignationa file pathrequiredrepeatable

UNITS

core profile · takes no name

Default units applied where a statement omits one.

StatementKindValueNeeded?Notes
concentrationassignationa nameoptional
timeassignationa nameoptional
temperatureassignationa nameoptional
deltaassignationa nameoptional
volumeassignationa nameoptional
massassignationa nameoptional
pressureassignationa nameoptional

CONDITIONS

core profile · takes no name · can declare parameters of its own

Model wide temperature, pressure and pH.

StatementKindValueNeeded?Notes
temperatureassignationnumber, temperatureoptional
pressureassignationnumber, pressureoptional
pHassignationnumber, dimensionlessoptional
Ehassignationnumber, potentialoptional
ionic_strengthassignationnumber, molalityoptional

STANDARD

core profile · takes no name

Reference standards overriding IGDB for this model.

StatementKindValueNeeded?Notes
standardref_valuenumberoptionalrepeatable · takes ratio · takes uncertainty

PHREEQC

extended profile · takes a name · can appear more than once · declares a Backend other blocks can refer to

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

StatementKindValueNeeded?Notes
input_fileassignationa file pathrequiredwritten input file
databaseassignationa file pathoptional
modeassignationone of a listoptionalone of oneshot, series · default oneshot
exportassignationtext in quotesoptionalrepeatable · 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.

StatementKindValueNeeded?Notes
speciesassignationa speciesrequiredrepeatable

ISOTOPES

core profile · takes no name

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

StatementKindValueNeeded?Notes
modeassignationone of a listoptionalone of absolute, relative · default absolute
ratioassignationan isotope ratiorequiredrepeatable · takes standard

LAW

extended profile · takes a name · can appear more than once · declares a Law other blocks can refer to · takes an indented formula

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

SOLUTION

extended profile · takes a name · can appear more than once

Held in reserve. The name belongs to IGL but what goes inside it has not been decided. You can write this block; nothing in it is checked, nothing reads it, and the tools report IG011 so you are not left guessing.

RESERVOIR

core profile · takes a name · can appear more than once · declares a Reservoir other blocks can refer to · can declare parameters of its own

Physical compartment. Species concentrations and isotopic compositions.

StatementKindValueNeeded?Notes
volumeassignationnumber, volumeoptional
massassignationnumber, massoptional
temperatureassignationnumber, temperatureoptional

INITIAL

extended profile · takes no name

Held in reserve. The name belongs to IGL but what goes inside it has not been decided. You can write this block; nothing in it is checked, nothing reads it, and the tools report IG011 so you are not left guessing.

PROCESS

core profile · takes a name · can appear more than once · declares a Process other blocks can refer to · can declare parameters of its own

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

StatementKindValueNeeded?Notes
typeassignationone of a listrequiredone 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
contextassignationone of a listoptionalone of pyrometallurgy, hydrometallurgy, natural, biotic
regimeassignationone of a listoptionalone 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 · takes a name · can appear more than once · extends Process

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

StatementKindValueNeeded?Notes
isotopeassignationan isotope ratiorequired
alphaassignationnumber, dimensionlessoptionalone of the mode group
epsilonassignationnumber, deltaoptionalone of the mode group
lawlaw_bodyoptionalone of the mode group
law_fileassignationa file pathoptionalwritten law file · one of the mode group
phaseassignationnumber, deltaoptional

KINETICS

core profile · takes a name · can appear more than once · extends Process

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

StatementKindValueNeeded?Notes
rateassignationone of a listrequiredone of zero_order, first_order, second_order, monod
constantassignationnumber, rate_constantoptional
half_saturationassignationnumber, molalityoptional

SAMPLE

identification profile · takes a name · can appear more than once · declares a Sample other blocks can refer to

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

StatementKindValueNeeded?Notes
elementassignationa namerequired
uncertaintyassignationnumber, deltaoptional
materialassignationtextoptional
noteassignationtext in quotesoptional
serieslistnumberoptional

MODEL

core profile · takes a name · declares a Model other blocks can refer to

Simulation boundaries, process ordering and stopping condition.

StatementKindValueNeeded?Notes
reservoirslistreference to Reservoiroptionaldefault all
processeslistreference to Processoptionaldefault all
stepassignationnumber, timeoptional
progressassignationone of a listoptionalone of time, extent · default time
untilconditionoptional

IDENTIFY

identification profile · takes a name · can appear more than once · declares a Identification other blocks can refer to

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

StatementKindValueNeeded?Notes
sourcereferencereference to Samplerequired
productreferencereference to Samplerequired
modeassignationone of a listrequiredone of single, chain, rayleigh, hybrid
candidateslistone of a listoptionalone of reduction, oxidation, dissolution, precipitation, adsorption, evaporation, exchange, diffusion, mixing, uptake, ligand_exchange · default all
contextassignationone of a listoptionalone of pyrometallurgy, hydrometallurgy, natural, biotic
regimeassignationone of a listoptionalone of equilibrium, kinetic
max_chainassignationnumber, dimensionlessoptional
toleranceassignationnumber, deltaoptional
topassignationnumber, dimensionlessoptional
extentassignationnumber, dimensionlessoptional0.0 to 1.0

DATASET

extended profile · takes a name · can appear more than once · declares a Dataset other blocks can refer to

Held in reserve. The name belongs to IGL but what goes inside it has not been decided. You can write this block; nothing in it is checked, nothing reads it, and the tools report IG011 so you are not left guessing.

OUTPUT

core profile · takes no name

State variables recorded during the run.

StatementKindValueNeeded?Notes
variablereferencereference to anyrequireda qualified path · repeatable
everyassignationnumber, timeoptional

PLOT

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

Held in reserve. The name belongs to IGL but what goes inside it has not been decided. You can write this block; nothing in it is checked, nothing reads it, and the tools report IG011 so you are not left guessing.

REPORT

extended profile · takes no name

Held in reserve. The name belongs to IGL but what goes inside it has not been decided. You can write this block; nothing in it is checked, nothing reads it, and the tools report IG011 so you are not left guessing.

EXPORT

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

Result serialisation. May repeat, once per output format.

StatementKindValueNeeded?Notes
formatassignationone of a listrequiredone of isof, csv, json
fileassignationa file pathrequired

ADSORPTION

extended profile · takes a name · can appear more than once · a shorthand for PROCESS

Shorthand for PROCESS with type adsorption plus its FRACTIONATION.

StatementKindValueNeeded?Notes
sorbentreferencereference to Speciesrequired
reactantreferencereference to Speciesrequired
isotopeassignationan isotope ratiorequired
alphaassignationnumber, dimensionlessoptionalone of the mode group
epsilonassignationnumber, deltaoptionalone of the mode group
extentassignationnumber, dimensionlessoptional0.0 to 1.0
regimeassignationone of a listoptionalone of equilibrium, kinetic

EXCHANGE

extended profile · takes a name · can appear more than once · a shorthand for PROCESS

Shorthand for PROCESS with type exchange plus its FRACTIONATION.

StatementKindValueNeeded?Notes
phase_areferencereference to Speciesrequired
phase_breferencereference to Speciesrequired
isotopeassignationan isotope ratiorequired
alphaassignationtextoptionalone of the mode group
epsilonassignationnumber, deltaoptionalone of the mode group
extentassignationnumber, dimensionlessoptional0.0 to 1.0
regimeassignationone of a listoptionalone of equilibrium, kinetic

FIT

extended profile · takes no name

Held in reserve. The name belongs to IGL but what goes inside it has not been decided. You can write this block; nothing in it is checked, nothing reads it, and the tools report IG011 so you are not left guessing.

MONTE_CARLO

extended profile · takes no name

Held in reserve. The name belongs to IGL but what goes inside it has not been decided. You can write this block; nothing in it is checked, nothing reads it, and the tools report IG011 so you are not left guessing.

RAYLEIGH

extended profile · takes a name · can appear more than once · a shorthand for PROCESS

Shorthand for open system Rayleigh distillation.

StatementKindValueNeeded?Notes
reservoirreferencereference to Reservoirrequired
isotopeassignationan isotope ratiorequired
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

Held in reserve. The name belongs to IGL but what goes inside it has not been decided. You can write this block; nothing in it is checked, nothing reads it, and the tools report IG011 so you are not left guessing.

TITLE

core profile · takes no name

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