Click an element, then a second one, to load that binary system.
Reading the corpus index…
GibbScope computes a binary phase diagram from a thermodynamic (.tdb) database and redraws it as the assessed parameters are changed. It also overlays experimental data on the diagram and fits the parameters to these data. The engine is written in Rust and compiled to WebAssembly, so every calculation runs and stays in the browser.
A database can be loaded from Example system, from a file on disk (Drop a .tdb file or browse), or by choosing a pair of elements in the Systems tab, which lists every assessment of that pair in the SGTE collection of binary datasets.
GibbScope plots the phase diagram and, when Gibbs energy curves is on, the Gibbs energy curves at a selected temperature below it, on a shared composition axis. The features of the two plots are as follows.
R-K Parameters has one slider for the A coefficient (in J/mol) of each Redlich–Kister term and one for the Gibbs energy (in J per formula unit) of each line compound. Each slider shows the change from the assessed value, so 0 corresponds to the published database, and Reset returns all sliders to 0. An interaction slider spans ±25 % of the assessed coefficient (at least ±5000 J/mol), and a compound slider spans ±10 000 J. An exact value can be typed into the box beside a slider. The diagram is recomputed in the background, typically within a second, so the page stays responsive while a slider is dragged.
Compare with draws another assessment of the same system in gray beneath the current one, in place of the original diagram. The comparison can be a database from the collection or a dropped .tdb file, and a database that lists the same elements in the opposite order is mirrored. Loading a comparison closes the energy panel.
Drop experimental data loads measured points from a file in the format described below. The points are drawn with error bars, and Misfit reports the weighted RMS distance between the points and the diagram, in units of each point's uncertainty. Color: Source switches the coloring of the points between their source and their residual, which shows the direction in which each point pulls the model. Points hides the markers without changing the misfit, whereas unticking a source in the data list removes it from both the misfit and the fit.
Experimental data loaded for one system stays with that system. When another database is loaded for the same pair, the data is kept; for the same pair in the opposite order, it is mirrored; and for a different pair, it is set aside, neither drawn nor scored, until Remove or Keep is chosen.
To fit, tick fit beside each parameter to be freed and press Fit unlocked parameters. A Nelder–Mead search then minimizes the misfit over these parameters, starting from the current slider values and staying within the slider ranges. The misfit covers the entire temperature range regardless of the zoom. The result can be reviewed and then kept with Accept or discarded with Revert.
GibbScope reads experimental data from .csv, .tsv, or
.json files with a header row and one row per measurement. Columns
can appear in any order, and only x and T are
required. Comma, tab, and semicolon delimiters are detected, and lines
starting with # or $ are comments. A row that
cannot be read is reported with its row number and the reason, while the
rest of the file still loads.
| Column | Meaning |
|---|---|
x (required) | Mole fraction of the second element the database names, e.g., Cu in an Ag–Cu file. A header of x (at%) or x (wt%) converts the values on import; wt% needs the database loaded first, for the atomic masses. A header of x(Ag) names the element: values for the first element are mirrored onto the second, and an element not in the database is refused. Also accepted: composition, x_B, mole_fraction. |
T (required) | Temperature in kelvin, or in Celsius with the header T (C) or T_C. Also accepted: temp, temperature. |
kind | The type of measurement: boundary (default), tie_left, tie_right, invariant, or single_phase. liquidus, solidus, and solvus are read as boundary, and each reaction name in the table below (eutectic, monotectic, metatectic, monotectoid, eutectoid, syntectic, peritectic, peritectoid, polymorphic, allotropic, other) as invariant. The kind sets the marker shape and the misfit row. An invariant point is measured to the composition of the nearest participating phase at the reaction temperature, not to the reaction line, so a thermal arrest recorded at the overall composition of an alloy appears off in x even when its temperature matches. |
x_err | Uncertainty in composition, in the unit of the x column (e.g., 0.5 under x (at%) is 0.005). It is drawn as an error bar and scales the misfit. Default 0.01. Also accepted: dx, sigma_x. |
T_err | Uncertainty in temperature. Default 10 K. Also accepted: dT, sigma_T. |
phase | The phase to which the point belongs, e.g., FCC_A1. The point is then scored against that phase only. |
weight | Relative weight in the misfit. Default 1. |
source | Dataset label, used for colors and for showing or hiding points, so that one file can hold several studies. Default: the file name. |
# Ag-Cu, digitized from Smith 1985 x,T,kind,x_err,T_err,phase,source 0.399,1052.2,invariant,0.005,1.0,LIQUID,Smith 1985 0.141,1052.2,tie_left,0.006,1.0,FCC_A1,Smith 1985 0.950,1052.2,tie_right,0.006,1.0,FCC_A1,Smith 1985
A JSON file holds the same records, either as an array or as
{"points": […]}.
.pop
GibbScope reads a PARROT .pop file directly. Load the
database first: the element names and phase abbreviations in the file are
matched against it, so X(FCC,CR) becomes x(Ni) on a
Cr–Ni axis and LIQ becomes LIQUID. Rows of
TABLE-HEAD blocks that give one composition and one
temperature become points, with the :σ value as the
error bar and the SET-WEIGHT lines providing the weights and,
through their trailing comments, the sources.
Everything else is refused with a reason and line numbers. In a typical
PARROT file, this is most of the file, since enthalpies (HMR),
activities (ACR), and chemical potentials are not points on a
phase diagram.
ZPF datasets
ESPEI datasets with output ZPF are also read
directly, again with the database loaded first. In each
values row, a single measured composition is a boundary point,
and two measured compositions are the ends of a tie line; a
null marks a phase that was present but not measured. The
dataset's reference becomes the source and its
weight the weight. Since ZPF datasets carry no uncertainties,
the defaults (0.01 and 10 K) apply. Other outputs, such as
HM_FORM and HM_MIX, are refused, as is a dataset
marked disabled, and a phase name that is not in the database
is reported.
Thermo-Calc .EXP (DATAPLOT) is not read and has to be converted
to the columns above.
The address bar records the current view, so a copied link reproduces it. Experimental data is not part of the link; a session file stores it.
After clicking a plot or moving to it with Tab, the following keys are available.
| Key | Action |
|---|---|
| ↑ ↓ | move the isotherm one slider step (energy panel open) |
| Page Up / Page Down | move it ten steps |
| ← → | move the crosshair along the isotherm by 1 % of the visible range |
| Home / End | move the crosshair to the edge of the window |
| Shift + arrow | pan |
| + / − | zoom about the crosshair, or the center of the window |
| 0 | reset the view |
| Escape | clear the crosshair |
With the energy panel closed, the temperature cannot be changed: the slider and the isotherm are hidden, and ↑ / ↓ scroll the page.
Each solution phase φ is a substitutional solution of the two elements, described by SGTE unary reference energies, a Redlich–Kister excess term, and the Inden–Hillert–Jarl magnetic term:
A and B are the two elements in alphabetical order, regardless of the order in which a parameter is written. This order sets the sign of the odd-order terms and follows the convention of pycalphad and Thermo-Calc. A line compound has a fixed composition and a single Gibbs energy per formula unit.
At each temperature, GibbScope constructs the lower convex hull of the G(x) curves of all phases, each solution phase sampled at 1001 compositions and refined around common tangents. It scans the temperature range in 200 equal steps and, wherever the set of stable phases changes within a step, bisects the step to 0.5 K and reports an invariant reaction. The temperature axis extends from the bottom of the database's declared range to just above the highest temperature at which a solid is stable within that range.
A reaction is named after the phase that disappears or forms on cooling and the two phases on either side of it. L stands for any phase that the database calls a liquid, and a subscript marks one phase at two compositions. A reaction is tagged extrapolated when one of its phases is beyond the temperature range declared for it in the database.
| Name | On cooling |
|---|---|
| eutectic | L → α + β |
| monotectic | L1 → α + L2 |
| metatectic | β → α + L |
| monotectoid | α1 → α2 + β |
| eutectoid | γ → α + β |
| syntectic | L1 + L2 → α |
| peritectic | L + α → β |
| peritectoid | α + β → γ |
| polymorphic | a compound changes its structure at a fixed composition, between two neighboring phases |
| allotropic | an element changes its structure at the edge of the axis, and neither form dissolves more of the other element than the other form does. Otherwise, the reaction takes one of the names above; e.g., in Ga–Pu, the β → α transformation of plutonium is a peritectoid because only α dissolves gallium |
| other | none of the above, such as a liquid forming on cooling. Such a reaction is often, but not always, an extrapolation, so its tag is worth checking |
GibbScope grades every phase declared in a database, and a database takes the grade of its worst phase. The grade appears in the figure caption, in the fidelity panel, and in the Systems table.
A phase is drawn with physics dropped for one of the following reasons.
| Reason | What is missing |
|---|---|
| associate species | a compound species, such as an associate. The phase is computed as a plain substitutional solution without it |
| unreadable terms | part of the phase's energy, given in a form that the parser does not implement or as a call to a function that the database does not define |
| parameter type | a PARAMETER type that the engine does not implement. At present, this is the third-generation Einstein heat capacity (THETA, LNTHETAn, THETAFn, GD), which carries most of the phase's temperature dependence |
| magnetic setup | magnetic data that cannot be evaluated: a Curie temperature without a MAGNETIC type definition, a third-generation Néel model, or a parameter given twice |
A phase is left off the diagram for one of the following reasons.
| Reason | Why |
|---|---|
| gas | the engine does not model a gas phase |
| multiple sublattices | the phase requires the compound energy formalism. This includes ordered phases such as B2_BCC and L12_FCC, and the ionic liquid |
| interstitial sublattice | the phase mixes an element with vacancies on a separate sublattice, which two mole fractions cannot describe |
| non-element species | the constituents of the phase are not the two elements, so its composition is not a mole fraction of them |
| no end members | the database does not give the Gibbs energy of the phase at both pure elements |
Phases that the database excludes with REJECT_PHASE are listed
separately. A term that the engine cannot evaluate is always reported and
never treated as zero.
The known limitations are as follows.
tie_left and
tie_right points are scored in the same way as
boundary points. GibbScope offers neither a driving-force
(ZPF) objective nor uncertainty estimates for the fitted parameters; a
full assessment calls for PARROT or ESPEI.
Each file begins with a $ comment block that gives the
reference for the assessment and often the assessor's notes on it, such
as “the hcp interaction could be problematic”. GibbScope shows
these lines in the Database section of the
interface.
The experimental data loaded with four of the preloaded examples are from the following sources.
The header of each data file lists the tables the points were taken from and the points that were left out.
Application code © 2026 Arizona Board of Regents
on behalf of the University of Arizona. Licensed for non-commercial
educational and research use only; commercial use requires a license from
the University — inquiries to
Tech Launch Arizona.
This is a summary; see the full LICENSE in the repository.
The WebAssembly module contains open-source Rust libraries under permissive licenses, mostly MIT and Apache 2.0. Their notices are in LICENSES.md.
Loading...