How we validate
The physical models behind Phases, how each was calibrated, the data they were checked against, and how far you can take the numbers.
You are about to put a predicted hardness or a nugget diameter into a report, and you need to know what stands behind it. This page describes the models Phases actually evaluates, the data each was fitted and checked against, and where the validation record is written down.
Phases runs numerical solvers, not language-model estimates. The physics lives in compiled code and in per-grade material cards; the chat agent only configures runs and reports what came back.
The three model layers#
Every simulator in the product — heat treatment, CCT, resistance spot welding and V-Gleeble — sits on the same transformation model. What differs is the thermal history driving it.
Phase transformation kinetics. The model is a Kirkaldy-Venugopalan type rate equation, chosen over pure JMAK because it separates the transformation rate into physically meaningful factors rather than one fitted curve. For the diffusion-controlled phases (ferrite, pearlite, bainite):
dx/dt = FG x FC x FT x FXMICRO(xp, NX) x FE
FG = 2^(0.1 x ASTM) grain size
FC = f(composition) from the card's composition curves
FT = |Tcrit - T|^NT x exp(-Q/(R x T)) temperature driving force
FXMICRO = xp^(NX(1-xp)) x (1-xp)^(NX x xp) JMAK nucleation geometry
FE = 1 / (1 - eps)^2 strain acceleration
Martensite is not diffusion-controlled. It uses the athermal Koistinen-Marburger equation, dX_M = (1 - exp(-a x (Ms - T))) x X_available, with a = 0.013.
Critical temperatures. Ae1 is fixed at 997 K (724 °C) and Ae3 at 1102 K (829 °C) in every material card, with no composition dependence. Bainite start is implicit in a critical-temperature curve whose first point is about 651 K (~378 °C).
Martensite start is the one temperature that is partly composition-aware, and it is worth being precise about how. Every card carries the same baseline Ms of 550 °C on its martensite critical-temperature curve, and that curve is what the Koistinen-Marburger solver reads. On top of it, the card's composition-correction curves apply per-grade offsets, which after the 2026-04 data repair produce effective values such as 532 °C for DC06, 499 °C for DC04, 459 °C for DP600 and 397 °C for 22MnB5. The correction is real but partial: it does not rewrite the shared baseline, so Ms is not a per-chemistry calculation. The reference correlation used as a check is Andrews (1965), Ms = 539 - 423C - 30.4Mn - 17.7Ni - 12.1Cr - 7.5Mo, which spans roughly 323 °C to 530 °C across the catalog.
Hardness. Vickers hardness is computed in Fortran from the phase fractions, the composition and the local cooling rate, using a hybrid of three published correlations — Maynier (1978), Kasuya-Yurioka (1993) and Krauss (2005). Martensite and bainite each branch at 0.12 wt% carbon; ferrite and pearlite share one relation. The cooling rate is converted to °C/h, floored at 1 °C/h, and entered as log10(Vr).
The constituents are then mixed: HV = (x_F + x_P)HV_FP + x_B HV_B + x_M HV_M. Austenite contributes nothing to this rule. Floors are enforced at 60 HV for ferrite+pearlite, 150 HV for bainite and 50 HV for the total. The equations themselves, with their stated validity ranges and sources, are set out on hardness validation.
What was calibrated, and what was not#
The April 2026 calibration pass made six changes. Three were data repairs to the material cards: composition curves written in the wrong column widths, so the parser read every element as zero; per-grade room-temperature ferrite and pearlite baselines; and corrupted bainite and martensite equilibrium flags on the DP grades.
Two were kinetics parameters. The ferrite activation energy dropped from 1.208x10^5 to 1.000x10^5 J/mol and the pearlite activation energy from 1.500x10^5 to 1.050x10^5 J/mol. Both original values had been calibrated for 22MnB5 boron steel and incorrectly shared with every other grade, suppressing ferrite nucleation by roughly 300x. The sixth change added the Krauss branch below 0.12 %C, because Kasuya-Yurioka returns 294 HV at zero carbon.
Deliberately unchanged: the bainite activation energy (1.500x10^5 J/mol), the Koistinen-Marburger coefficient (1.300x10^-2), the ASTM grain size (7.200), the JMAK exponent (0.7312), the temperature exponent (2.0733) and the base Ms. Every grade still shares those. That is a real constraint on accuracy and it is listed in known limits.
The validation record#
Hardness — 25 of 25 literature cases pass. Twenty-five cases covering 14 grades were run at two cooling rates, 0.01 °C/s (expect ferrite + pearlite) and 100 °C/s (expect martensite), and compared against published ranges from EN standards, OEM datasheets and academic literature. The criterion was model HV inside the published range, or within 15 % for a near miss. Result: 19 inside range, 6 near miss, 0 failures. The full per-case table is on hardness validation.
The recorded conclusion is worth stating plainly: the hardness equations were already well calibrated across 0.02–0.40 %C. The pre-tuning mismatches came from the transformation model returning wrong phase fractions, not from the hardness formulas.
Spot welding — nugget diameter against a standard. RSW is calibrated against the AWS D8.1M / DVS 2902 acceptance criterion, d = 5 x sqrt(t) mm minimum with 5.5 x sqrt(t) as the nominal qualification target, where t is the thinner sheet. Twenty-two calibrated templates ship: 17 symmetric single-grade cases and 5 dissimilar joints. In the thermal-only set all 17 symmetric cases ran without error with nuggets within one mesh step of target, and all 5 dissimilar cases landed inside their target range. With the experimental mechanical path enabled, 11 of 17 land inside the range and the remaining 6 are within one mesh step. Details and caveats are on RSW validation.
Cross-mode literature comparison. A separate V&V run on 2026-04-06 executed all 17 grades in 7 simulation modes — 119 simulations — against published data. Martensite-start and bainite-start temperatures came within about ±20 °C for most grades: 22MnB5 Ms 397 °C against 375–410, DC04 Ms 499 °C against 480–510, DP780 Ms 430 °C against 400–430. Isothermal holds at 700 °C were rated good or reasonable for every grade checked, and 22MnB5 hot stamping is recorded as correctly predicting roughly 500 HV martensite. Satoh restrained-cooling peak stresses were rated good or acceptable, with DP780 and EN13261 sitting at or just above the top of their expected ranges. The same run recorded several of the known limits, including systematically high flow stress above 1000 °C and over-predicted martensite in low-carbon weld HAZ cycles.
How to read a Phases number#
Four rules the product applies to itself, and that you should apply when quoting a result:
- Predicted hardness is bulk, mixture hardness. It is a rule-of-mixtures value over the phase fractions. It is not the intrinsic hardness of an individual phase.
- Imposed inputs are not solver findings. A CCT run starts from 100 % austenite because the run imposes it, not because the model proved austenitization completed.
- A cooling rate is not a quench medium. Phases does not model water, oil or air quenching. It models the rate you gave it.
- The nearest-grade distance badge is not an accuracy score. It measures how close a chemistry sits to a catalog template. See your own chemistry.
The standing caveat#
Do not present Phases output as validated engineering data without review. These are numerical simulations and, like any model, they depend on input assumptions and on the quality of the material data behind them. Where the record shows a model is off — and it does in several documented places — that is on known limits, which is the page to read before a decision, not after.
