CCT and TTT diagrams
How Phases builds a continuous-cooling transformation diagram, how to read the start and finish curves, and what you can and cannot control.
You have a grade and a process, and you need to know where the transformation boundaries sit: how slowly you can cool before ferrite appears, how fast you have to cool to reach full martensite, and roughly what hardness each of those choices lands on. That is the question a CCT diagram answers, and it is what run_transformation_diagram produces in Phases.
The diagram is not looked up from a handbook. Phases runs a separate phase-transformation simulation at every cooling rate you ask for, detects where each phase starts and stops changing, and assembles those points into one chart.
A worked example#
Name the material and ask:
Generate a CCT diagram for DP600 and find the critical cooling rate for full martensite.
If you want to control the sweep, say so in the same message:
Generate a CCT diagram for EN13261 from 860 °C to 20 °C at 0.1, 1, 10, 50 and 100 °C/s
When you specify parameters, the agent normally shows a CCT Diagram Configuration card first — a material picker, a comma-separated Rates (°C/s) field, Start Temp (°C) and Final Temp (°C), and a Generate CCT Diagram button. Nothing runs until you submit it. There is no default grade: asking for "a CCT diagram" with no material gets you a question back, not a run.
While the sweep runs you see one progress line per rate — CCT rate 2/5: 1 C/s, then CCT rate 2/5 finished: 1 C/s — followed by Aggregating CCT results..., Uploading CCT diagram..., and CCT diagram ready for 5/5 rates.
Reading the diagram#
This is where most misreadings happen, so read this section before you read your first plot.
- Axes. Time in seconds on a logarithmic x-axis, temperature in °C on the y-axis. The log axis is why a 0.1 °C/s curve and a 100 °C/s curve fit on one chart, and why the visual spacing between rates is not proportional to time.
- Grey lines are the cooling schedules themselves, each annotated at its end with its rate, for example
10 C/s. They are straight linear ramps from your start temperature to your final temperature — no soak, no heating segment. - Dashed lines with downward triangles are transformation starts, labelled with the phase initial plus
s:Fs,Ps,Bs,Ms. - Solid lines with upward triangles are transformation finishes, labelled with the phase initial plus
e:Fe,Pe,Be,Me,Ae. Austenite start points are deliberately not drawn, since the run begins fully austenitic. - Colors are fixed per phase: ferrite blue, pearlite green, bainite orange, martensite red, austenite purple.
- Upper-right box: predicted hardness per cooling rate, one monospaced line per rate in the form
<rate> °C/s = <value> HV. It only appears when the solver returned hardness values for those rates. - Lower-left box: the material label, its chemistry laid out four elements per row, and a
Final phases (%):section giving the ferrite/pearlite/bainite/martensite/austenite split at the end of each cooling curve.
Two points about the "nose". The classic C-curve nose is the shortest time at which a diffusional transformation begins; on this plot you infer it from where the Fs/Ps/Bs marker chains bend leftmost. Because Phases only plots the rates you asked for, the nose is resolved exactly as finely as your rate list — a five-rate sweep gives you five points per curve, not a smooth envelope. No Ac1, Ac3, or other critical-temperature lines are drawn on the plot. If you see a horizontal boundary, it is a marker chain, not an equilibrium line.
Start and finish are detected numerically, not by eye. A start is the first timeline point where a phase fraction has moved more than one percentage point from its initial value; a finish is the earliest point after which the fraction stops changing to within a very tight tolerance — a plateau, not a fixed 99% threshold.
What you control#
| Parameter | Default | Notes |
|---|---|---|
| Material | none | Mandatory. A built-in grade, a workspace material, an active session material, or a confirmed custom chemistry. |
| Cooling rates (°C/s) | 0.1, 1, 10, 50, 100 | Must be positive. The card and the simulator panel accept at most 10. |
| Start temperature | 860 °C | Card and panel accept 600–1200 °C. |
| Final temperature | 20 °C | Card and panel accept 0–500 °C. Must be below the start temperature. |
| Initial phase fractions | 100% austenite | Overridable, but see the limit below. |
There is no adaptive rate selection. Phases runs exactly the rates you supply, in the order you supply them — one simulation per rate. It does not add extra rates around a transformation nose, and it does not refine a bracket for you. If you want the nose resolved, you add the rates yourself; that iterative narrowing is exactly what find the critical cooling rate walks through.
What is automatic is the integration time step. For each rate the workflow picks roughly one step per degree of cooling, clamped between 0.1 s and 10 s. You cannot set it from chat — the tool has no time-step parameter.
CCT versus TTT#
TTT is not implemented. Asking for a TTT or isothermal diagram returns an explicit unsupported status with the message "TTT transformation diagrams are not implemented yet." Only continuous cooling runs today. If you see the simulator referred to as a CCT/TTT generator elsewhere in the product, treat that as a forward-looking name.
There is also a second thing people mean by "CCT". A CCT diagram is a predicted phase-boundary map. A Gleeble CCT dilatometry test is a simulated measurement — the length-change signal a physical dilatometer would record for one cooling cycle. Those are different tools; see virtual Gleeble. If your wording is ambiguous, the agent asks which one you want.
What you get back#
The sweep produces one run version regardless of how many rates it contains, holding:
- the CCT diagram as a PNG,
- a CSV of the detected boundaries, with one row per phase per cooling rate and the columns
cooling_rate,phase,start_time,start_temp,end_time,end_temp, - the exact material card used for every rate,
- a material-resolution record describing how that card was chosen.
The four are written as one bundle. If any of them fails to persist, the tool reports an artifact-persistence error and the run is recorded as artifact_persistence_failed — a partial diagram is never reported as a completed run. The diagram comes back as a link in the conversation; the CSV is stored but its URL is not returned in chat, so retrieve it from the run's artifacts — see sessions, runs and artifacts.
For a newly completed durable run, the strict cct-results/v2 result card also retains and displays each successful tested rate with its predicted hardness and final ferrite, pearlite, bainite, martensite and austenite fractions. Its hardenability indicator is the lowest tested rate with at least 90% final martensite. On the same tested grid and 90% criterion, a lower threshold rate means the material retained at least 90% martensite under slower cooling and therefore indicates greater hardenability. This is a sampled threshold, not an interpolated critical cooling rate or an opaque ranking. Use the same rate grid, thermal endpoints and initial condition before comparing materials. Historical sparse cct-results/v1 results remain valid and replay with their rate-coverage view; v1 never contains the v2 per-rate fields.
If a single rate fails, the sweep continues and that rate carries an error instead of a hardness value. Only a sweep where every rate failed aborts.
Using it to choose a quench#
Read the per-rate result rows or the final-phase box, not the curves, when you are choosing a process. They tell you directly what fraction of martensite each rate produced, and the hardness values tell you what bulk hardness that mixture implies. Bracket from there: if 10 °C/s gives you 60% martensite and 50 °C/s gives you 100%, re-run with rates between them.
Two cautions when you translate that into shop-floor language:
- A cooling rate is not a quench medium. Phases models a numerical rate, not water, oil, or air. It does not know your section thickness, agitation, or heat-transfer coefficient, and it will not label a rate as a particular quenchant unless you supply that mapping yourself.
- Predicted hardness is bulk, mixture hardness — a rule-of-mixtures value over the phase fractions. It is not the hardness of any individual phase, and it is not a toughness, quench-cracking, or preheat prediction. Phases will not make those claims from composition and phase fractions alone.
Limits worth knowing#
- The austenitic start is imposed, not simulated. Every rate begins from a forced 100% austenite state. Phases does not simulate your heating and soak, does not calculate this material's Ac3, and does not verify that your start temperature is above it. A completed run is never evidence that austenitization would have completed in reality.
- Equilibrium temperatures are shared across grades. In the material cards Ae1 is fixed at 724 °C and Ae3 at 829 °C with no composition dependence. They are accurate for 22MnB5, so the true Ae3 is roughly 41 °C higher for DC04 and roughly 49 °C lower for EN13261.
- Low-carbon hardenability is over-predicted. The V&V record notes that DC04 and HC260LA (about 0.08% C) form more martensite than they should during weld-HAZ cooling, which is a limitation of the shared kinetics parameters rather than a solver fault.
- A material must resolve two capabilities — a base card and transformation kinetics — before the sweep starts. If either is unavailable the run fails with "Required material physics is unavailable for CCT." Which materials resolve which capabilities is set out in the capability matrix.
- Custom chemistry needs a verified template. A composition with no active verified structural template is refused. Where no published kinetics model applies to your chemistry, CCT falls back to the template card's authored kinetics and reports it as a preserved source; that is a documented fallback, not calibrated physics for your composition. See your own chemistry.
- A queued run is not a finished run. If your workspace routes the sweep to background execution, an acceptance message is an acceptance message — no phase fractions or conclusions are reported until it completes.
The hardness model behind the boxes on the plot is validated against published literature ranges — for example 22MnB5 at 100 °C/s predicts 515 HV against a literature band of 440–530. Read how we validate and known limits before you use a number in a specification. If a sweep is refused or a diagram does not look like you expected, common problems covers the usual causes.
