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.
| Statement | Kind | Value | Presence | Notes |
| author | assignation | text | optional | |
| date | assignation | date | optional | |
| version | assignation | version | optional | |
| language | assignation | version | recommended | |
| description | assignation | string | optional | |
| license | assignation | text | optional | |
| reference | assignation | text | optional | |
DATABASE
core profile · takes no name
IGDB files loaded before resolution, in order. Later entries override earlier ones.
| Statement | Kind | Value | Presence | Notes |
| file | assignation | path | required | repeatable |
UNITS
core profile · takes no name
Default units applied where a statement omits one.
| Statement | Kind | Value | Presence | Notes |
| concentration | assignation | identifier | optional | |
| time | assignation | identifier | optional | |
| temperature | assignation | identifier | optional | |
| delta | assignation | identifier | optional | |
| volume | assignation | identifier | optional | |
| mass | assignation | identifier | optional | |
| pressure | assignation | identifier | optional | |
CONDITIONS
core profile · takes no name · may declare its own parameters
Model wide temperature, pressure and pH.
| Statement | Kind | Value | Presence | Notes |
| temperature | assignation | number, temperature | optional | |
| pressure | assignation | number, pressure | optional | |
| pH | assignation | number, dimensionless | optional | |
| Eh | assignation | number, potential | optional | |
| ionic_strength | assignation | number, molality | optional | |
STANDARD
core profile · takes no name
Reference standards overriding IGDB for this model.
| Statement | Kind | Value | Presence | Notes |
| standard | ref_value | number | optional | repeatable · 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.
| Statement | Kind | Value | Presence | Notes |
| input_file | assignation | path | required | written input file |
| database | assignation | path | optional | |
| mode | assignation | enum | optional | one of oneshot, series · default oneshot |
| export | assignation | string | optional | repeatable · 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.
| Statement | Kind | Value | Presence | Notes |
| species | assignation | species | required | repeatable |
ISOTOPES
core profile · takes no name
Isotope systems the model tracks. Compositions belong to RESERVOIR, not here.
| Statement | Kind | Value | Presence | Notes |
| mode | assignation | enum | optional | one of absolute, relative · default absolute |
| ratio | assignation | ratio | required | repeatable · 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.
| Statement | Kind | Value | Presence | Notes |
| volume | assignation | number, volume | optional | |
| mass | assignation | number, mass | optional | |
| temperature | assignation | number, temperature | optional | |
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.
| Statement | Kind | Value | Presence | Notes |
| type | assignation | enum | required | one of reduction, oxidation, dissolution, precipitation, mixing, adsorption, exchange, evaporation, diffusion, uptake, ligand_exchange |
| from | reference | reference to Reservoir | optional | |
| into | reference | reference to Reservoir | optional | |
| extent | assignation | number, dimensionless | optional | 0.0 to 1.0 |
| context | assignation | enum | optional | one of pyrometallurgy, hydrometallurgy, natural, biotic |
| regime | assignation | enum | optional | one of equilibrium, kinetic |
| reactant | reference | reference to Species | optional | |
| product | reference | reference to any | optional | |
| source | ref_value | reference to Reservoir | optional | repeatable |
| sorbent | reference | reference to Species | optional | |
| phase_a | reference | reference to Species | optional | |
| phase_b | reference | reference to Species | optional | |
| location | reference | reference to Reservoir | optional | inferred when only one exists |
| law | reference | reference to Law | optional | |
FRACTIONATION
core profile · carries a name · may appear more than once · extends Process
Fractionation attached to a process. The identifier always names a Process.
| Statement | Kind | Value | Presence | Notes |
| isotope | assignation | ratio | required | |
| alpha | assignation | number, dimensionless | optional | one of the mode group |
| epsilon | assignation | number, delta | optional | one of the mode group |
| law | law_body | | optional | one of the mode group |
| law_file | assignation | path | optional | written law file · one of the mode group |
| phase | assignation | number, delta | optional | |
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.
| Statement | Kind | Value | Presence | Notes |
| rate | assignation | enum | required | one of zero_order, first_order, second_order, monod |
| constant | assignation | number, rate_constant | optional | |
| half_saturation | assignation | number, molality | optional | |
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.
| Statement | Kind | Value | Presence | Notes |
| element | assignation | identifier | required | |
| uncertainty | assignation | number, delta | optional | |
| material | assignation | text | optional | |
| note | assignation | string | optional | |
| series | list | number | optional | |
MODEL
core profile · carries a name · declares a Model others may name
Simulation boundaries, process ordering and stopping condition.
| Statement | Kind | Value | Presence | Notes |
| reservoirs | list | reference to Reservoir | optional | default all |
| processes | list | reference to Process | optional | default all |
| step | assignation | number, time | optional | |
| progress | assignation | enum | optional | one of time, extent · default time |
| until | condition | | optional | |
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.
| Statement | Kind | Value | Presence | Notes |
| source | reference | reference to Sample | required | |
| product | reference | reference to Sample | required | |
| mode | assignation | enum | required | one of single, chain, rayleigh, hybrid |
| candidates | list | enum | optional | one of reduction, oxidation, dissolution, precipitation, adsorption, evaporation, exchange, diffusion, mixing, uptake, ligand_exchange · default all |
| context | assignation | enum | optional | one of pyrometallurgy, hydrometallurgy, natural, biotic |
| regime | assignation | enum | optional | one of equilibrium, kinetic |
| max_chain | assignation | number, dimensionless | optional | |
| tolerance | assignation | number, delta | optional | |
| top | assignation | number, dimensionless | optional | |
| extent | assignation | number, dimensionless | optional | 0.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.
| Statement | Kind | Value | Presence | Notes |
| variable | reference | reference to any | required | a qualified path · repeatable |
| every | assignation | number, time | optional | |
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.
| Statement | Kind | Value | Presence | Notes |
| format | assignation | enum | required | one of isof, csv, json |
| file | assignation | path | required | |
ADSORPTION
extended profile · carries a name · may appear more than once · shorthand for PROCESS
Shorthand for PROCESS with type adsorption plus its FRACTIONATION.
| Statement | Kind | Value | Presence | Notes |
| sorbent | reference | reference to Species | required | |
| reactant | reference | reference to Species | required | |
| isotope | assignation | ratio | required | |
| alpha | assignation | number, dimensionless | optional | one of the mode group |
| epsilon | assignation | number, delta | optional | one of the mode group |
| extent | assignation | number, dimensionless | optional | 0.0 to 1.0 |
| regime | assignation | enum | optional | one 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.
| Statement | Kind | Value | Presence | Notes |
| phase_a | reference | reference to Species | required | |
| phase_b | reference | reference to Species | required | |
| isotope | assignation | ratio | required | |
| alpha | assignation | text | optional | one of the mode group |
| epsilon | assignation | number, delta | optional | one of the mode group |
| extent | assignation | number, dimensionless | optional | 0.0 to 1.0 |
| regime | assignation | enum | optional | one 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.
| Statement | Kind | Value | Presence | Notes |
| reservoir | reference | reference to Reservoir | required | |
| isotope | assignation | ratio | required | |
| reactant | reference | reference to Species | required | |
| product | reference | reference to Species | required | |
| alpha | assignation | number, dimensionless | optional | one of the mode group |
| epsilon | assignation | number, delta | optional | one of the mode group |
| extent | assignation | number, dimensionless | optional | 0.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.
Top of page