Antranova Engineering AB

T–s Diagram Simulator

Water and steam · IAPWS-IF97 (regions 1–4) · interactive state points and process paths in the temperature–entropy plane

AntraSIM0060
Ready. Reference configuration
Click places a state point in the current path · drag a marker to move it · hover for the cursor readout · arrow keys move the cursor (Shift ×10), Enter places a point · legend chips toggle isoline sets
State point table

Theory & Method

T–s Diagram Simulator · AntraSIM v1.1.0

Theory & Method

T–s Diagram Simulator · AntraSIM-0060 · version 1.1.0 · build 2026-09-21. This document describes the model as implemented in the application. Where the source implementation (v1.0.0), the standard and the executable code disagree, §2 states which was implemented and why.

Model status. The property kernel reproduces every published verification value of the IAPWS-IF97 release that it implements (maximum relative deviation 2.9e-09), the region-boundary consistency reported in the release, and an independent implementation on a dense grid (946 single-phase states). The application is not validated against measured or plant data. The process classification and the cycle totals are rule-based interpretations of the state points, not a cycle model. Values that are assumptions or unverified are listed in §9 and §11. The tool is not safety-grade.

How to read this document. Each topic follows the progression Intuition → Physical mechanism → Mathematical formulation → Engineering interpretation → Assumptions and limitations. A newcomer can stop after the first two layers; an experienced engineer finds the equations, the solvers and the verification basis in the later layers and in §3–§8.

1. Physical Background

Intuition A T–s diagram plots temperature against entropy. Entropy is the property that stays constant in an ideal (reversible, adiabatic) turbine or pump and that grows whenever a process is irreversible. Heat added to a fluid moves its state to the right (entropy up), heat removed moves it to the left, and an ideal expansion is a vertical line. The bell-shaped curve is the boundary between liquid, the two-phase mixture inside it and vapour: on the left branch the water is just saturated liquid, on the right branch just saturated vapour, and they meet at the critical point.

Physical mechanism Water and steam are described by a fundamental equation for each region of the state space. A state is fixed by two independent properties; all other properties follow from the equation.

two properties (basis)→IAPWS-IF97 region and solver→T, p, h, s, v, u, x→point in the T–s plane→process interpretation between points

Engineering interpretation For an internally reversible process the area under the path is the specific heat transfer, q = ∫T ds. Isobars show where heat addition at constant pressure leads, isenthalps the throttling path, quality lines the moisture of a wet expansion, and the horizontal distance between the ideal (isentropic) and the actual end state of an adiabatic machine is its entropy generation. A steam-cycle sketch on the diagram gives immediate insight into turbine exhaust moisture, superheat and cycle efficiency.

Assumptions and limitations Pure water in equilibrium states; steady flow with negligible kinetic and potential energy for the process interpretation. Metastable states, mixtures and non-equilibrium phenomena are not represented (§11).

2. Assessment of the Source Models

Changes in v1.1.0 Version 1.1.0 (MINOR) adds independent process paths (several paths in one diagram, each with its own name, colour, line style and visibility; a line is never drawn between two paths), a complete settings export/import (the input configuration file now holds the whole workspace: IC schema 2, with an explicit, tested migration of schema 1 files and a path column in the CSV), the eighth process example (6.8, which needs two paths), the default isobars 0.2 bar and 2 bar, and the correction of the clipping of curves to the plotting window (A-16, test T21). The thermodynamic model, the solvers and the construction of the isolines are unchanged. Verification: T21 (clipping) and T22 (paths) are new; T15, T16, T17, T19 and T20 were extended. A separate, recommended kernel correction is reported in A-17 and not applied.

Changes in v1.0.2 Version 1.0.2 added the process examples of §6 (loaded from the left panel) and the verification tests T19 and T20; the diagram height follows the window height (no fixed upper limit), so that the plot reaches the bottom of a tall window. The property kernel, the solvers, the IC schema (1) and the CSV format were unchanged from v1.0.1; the findings A-1 to A-15 below were made when v1.0.1 was prepared and are still valid.

Rule The source is the application v1.0.0 (2026-09-17). Its executable code was read completely, its property kernel was compared with the standard and with an independent implementation, and every finding was given an identifier and a size computed by the present implementation. The kernel and the isoline construction are kept; the corrections are listed. Where text (theory reference of v1.0.0) and code disagree, the executable model is implemented.

IDFinding (A-1 … A-15 in v1.0.0, A-16 and A-17 in v1.0.2)Size (from this implementation)Resolution (A-1 … A-15 in v1.0.1, A-16 in v1.1.0)
A-1Property kernel (regions 1–4) against the published verification values of the release.max relative deviation 2.9e-09 over all tabulated values (T1–T4).Retained unchanged. Test extended from a subset of the tabulated properties to all that the kernel provides (v, h, u, s, cp; p for region 3).
A-2Consistency of regions 2/3 and 1/3 at the region boundaries (not tested in v1.0.0).2/3: 0.0181 %, 0.134 kJ/kg, 0.175 J/(kg·K); 1/3: 0.00357 %, 0.0306 kJ/kg, 0.0422 J/(kg·K). The release reports maxima of 0.018 %, 0.134, 0.177 and 0.004 %, 0.031, 0.042.Retained; the values reproduce the published maxima, which verifies the coefficient tables of regions 1, 2 and 3 as a whole (T7).
A-3The dome changes formulation at 623.15 K (regions 1/2 below, region 3 with saturated-density correlations above).Jump at 623.15 K: 0.038 kJ/kg, 0.0624 J/(kg·K), 0.01 % (Prague values 0.2, 0.2, 0.05).Retained; new test T8.
A-4A state given exactly on the saturation line by (p, h) or (p, s) is not found: the two-phase test compares with round-off-sensitive equality. A basis change of point 1 of the Rankine demo to (p, h) fails for this reason.14 of 48 boundary states (12 temperatures × x = 0, 1 × h, s) returned no state.Corrected. A relative tolerance of 1e-9 assigns such states to the saturation boundary (0 failures after the correction). This is the only change of the numerical kernel; everything else is unchanged (T11).
A-5Saturated properties close to the critical point differ from an independent IF97 implementation (Tc − T below about 4 K), because the phase-equilibrium densities of the flat region-3 loop are ill-conditioned.See Table 8.3: up to 0.26 kJ/kg at Tc − T = 3 K and 3.6 / 13.9 kJ/kg (liquid / vapour) at 0.2 K; Gibbs-energy inconsistency 0.013 kJ/kg (this code) against 0.003 kJ/kg (package), both far below 0.2 kJ/kg. Effect on the plotted dome below 0.03 kJ/(kg·K).Retained. The design (no refinement for Tc − T ≤ 1 K) is documented in §7; the difference is not an error of the plotted curve.
A-6The state (T, s) is not unique for liquid below about 4 °C (density maximum); the lowest-pressure root is returned.Entropy spread of the liquid at 1 °C over ps … 100 MPa: 0.0099 kJ/(kg·K).Retained (documented in v1.0.0). New in v1.0.1: a WARNING is shown for every point defined by (T, s) below about 4 °C.
A-7A basis change silently moved the point: single-phase state to (p, x) or (T, x) is put on the saturation line; two-phase state to (p, T) becomes saturated liquid.Deviation of the state by construction (not representable).The move is reported in the table editor. T12 excludes these non-representable conversions and checks all others (34 conversions, deviation ≤ 1e-6).
A-8Pressures above 100 MPa entered in (p, h) or (p, s) were silently reduced to 100 MPa by the solver (for example (200 MPa, 3000 kJ/kg) returned a state at 1000 bar).Silent change of the requested state.Input limits: pressure 1e-4 … 1000 bar for every basis; out-of-range input is marked and rejected (T17).
A-9Point names were inserted unescaped into innerHTML and attribute values; a CSV file could inject markup.Security and robustness defect.Names are 1–16 characters and are always written as text or escaped; validated in editor, CSV and IC.
A-10The pop-out table window was built by writing the raw document stream into a new window (a pattern that antivirus heuristics flag).—Built with DOM APIs; the identical editor stays in the page.
A-11CSV import applied a file partially: short rows were skipped silently and trailing text after a number was accepted.—Strict parser; the whole file is rejected on any error with line-numbered messages (T16). Files written by v1.0.0 are still accepted.
A-12An edit that could not be resolved left the point without a state; it disappeared from the plot.—Invalid edits are blocked and marked; the last valid state stays in force.
A-13The solver accepts temperatures down to Tt − 0.5 K = 272.66 K, below the lower limit 273.15 K of the standard.Extrapolation of up to 0.5 K.Retained (avoids rejecting clicks on the 0 °C axis); a WARNING is shown for points below 0 °C.
A-14The inversion (h, s) → (p, T) exists in the kernel but is not used by the interface (kept so that the kernel is shared with the h–s tool).—Retained and covered by the verification suite (T10).
A-15The isoline sets needed a “Rebuild isolines” button.Default build 50 ms; worst case (Δh = 25 kJ/kg) 240 ms.Rebuilt automatically after every valid change (debounced); the button is removed.
A-16Curves whose end points lie far outside the plotting window were dropped instead of clipped. The drawing routine discarded every point more than a fixed margin (1500 px, 6000 px vertically) outside the plot and dropped every segment that started or ended at such a point, even when the segment crossed the window. In the T–s plane the dome part of an isobar is one horizontal segment from sf to sg, so it vanishes as soon as the window is zoomed. Label placement considered only points inside the window and was affected in the same way.Reproduced in the delivered v1.0.2 (headless Chromium, 1500 × 950): in the window T 20–200 °C, s 6–7.5 kJ/(kg·K) the default isobars 0.05, 0.1 and 0.5 bar (3 of 6 that cross the window by ≥ 60 px) were not drawn; in the window T 30–120 °C, s 6.3–7.6 kJ/(kg·K) the default isobars 0.1 and 0.5 bar (2 of 3 that cross the window by ≥ 60 px) were not drawn; in the window T 20–90 °C, s 6.8–8.2 kJ/(kg·K) the default isobar 0.05 bar (1 of 3 that cross the window by ≥ 60 px) was not drawn. Emulated on all default curves (Δh = 200 kJ/kg, plot 684 px wide): in the first window 8 of 8 default isobars that cross the window lose their dome part and 4 disappear completely; isenthalps, quality lines, isochores and the dome curves are not affected in these windows.Corrected. A DOM-free data-space function clips every curve segment by segment (Liang–Barsky); it is used for all curve drawing and for label placement (visible parts resampled to ≤ 24 px steps). T21 tests 638 curve × window combinations (0 dropped) and the pixel run of the acceptance test checks that every default isobar crossing the window by ≥ 60 px is drawn.
A-17Recommended, separate correction — not applied. A state given by (p, h), (p, s) or (h, s) that lies within about 1 µK of the saturation line on the single-phase side (2–10 ppb of h or s) falls between the saturation test and the search bracket in fromP and returns no state. This was found while auditing the sibling h–s application, which shares the kernel.Measured on this kernel: a sweep of 4476 saturation states (274 … 646.5 K in 0.5 K steps, x = 0 and 1, solved with (p, h), (p, s) and (h, s)) gave 58 failures, for example saturated liquid at 299.5 K in (h, s). The tolerance introduced in v1.0.1 (A-4) covers states on the boundary itself, not this gap.The h–s application v1.1.0 corrects it (the state in the gap is returned at the bracket end, temperature error < 1 µK; 0 failures in the same sweep). It is not implemented here, because the kernel is unchanged in v1.1.0; it is recommended as a separate change with its own saturation-state sweep test, subject to the owner’s decision.

3. Governing Equations

Intuition IAPWS-IF97 covers the fluid states of water by four equations that join at agreed boundaries: compressed liquid (region 1), vapour (region 2), the dense near-critical fluid (region 3) and the saturation line (region 4). Each basic equation is a single “master function” from which every thermodynamic property follows by differentiation.

Mathematical formulation Region 1 (liquid) is a Gibbs free energy in dimensionless form, with π = p/16.53 MPa and τ = 1386 K/T (34 terms, coefficients ni, Ii, Ji of the release):

γ(π,τ)=gRT=∑i=134ni(7.1−π)Ii(τ−1.222)Ji

Properties follow from γ and its derivatives (subscripts denote partial derivatives), with R = 0.461526 kJ/(kg·K):

v=RTpπγπ,h=RTτγτ,s=R(τγτ−γ),u=RT(τγτ−πγπ),cp=−Rτ2γττ

Region 2 (vapour) is the sum of an ideal-gas part and a residual part with π = p/1 MPa and τ = 540 K/T (9 and 43 terms):

γ=γ∘+γr,γ∘=lnπ+∑i=19ni∘τJi∘,γr=∑i=143niπIi(τ−0.5)Ji

with the same property relations as in region 1 (γπ = 1/π + γrπ). Region 3 is a Helmholtz free energy in density and temperature, with δ = ρ/ρc (ρc = 322 kg/m³) and τ = Tc/T (Tc = 647.096 K):

ϕ(δ,τ)=fRT=n1lnδ+∑i=240niδIiτJi
p=ρRTδϕδ,h=RT(τϕτ+δϕδ),s=R(τϕτ−ϕ),u=RTτϕτ

Region 4 is the saturation line. With ϑ = T + n9/(T − n10), A = ϑ² + n1ϑ + n2, B = n3ϑ² + n4ϑ + n5 and C = n6ϑ² + n7ϑ + n8 (temperature in K, pressure in MPa):

ps(T)=[2C−B+B2−4AC]4

The inverse Ts(p) is the closed-form solution of the same quadratic. The boundary between regions 2 and 3 above 623.15 K is the B23 line:

pB23(T)=n1+n2T+n3T2

Inside the dome a state is a mixture of the saturated liquid (subscript f) and saturated vapour (subscript g) at the same ps and T; any specific property y ∈ {v, h, s, u} obeys the lever rule:

y=yf+x(yg−yf),x=s−sfsg−sf
RegionTemperaturePressureEquation
1 compressed liquid273.15 K … 623.15 Kps(T) … 100 MPaGibbs, γ(π, τ)
2 vapour273.15 K … 1073.15 Kup to ps(T), pB23(T) or 100 MPaGibbs, γ° + γr
3 near-critical623.15 K … B23 lineB23 line … 100 MPaHelmholtz, φ(δ, τ)
4 saturation273.15 K … Tcps(T)quadratic in ϑ
5 high temperature1073.15 K … 2273.15 Kup to 50 MPanot implemented

Process interpretation For steady flow with negligible kinetic and potential energy the first law per unit mass is q − w = Δh, where w is the work delivered by the fluid. An adiabatic machine has w = −Δh, a throttle Δh = 0, an isobaric heat exchanger q = Δh. Isentropic efficiencies are η = Δh/Δhs for a turbine and η = Δhs/Δh for a pump or compressor, with Δhs from the isentropic end state at the exit pressure.

Engineering interpretation The coordinates (s, T) of every plotted curve come from these equations only; nothing is fitted to the picture. Assumptions and limitations The coefficient tables are those of the release and are not reproduced here; see §9 and §11 for their evidence class.

4. Inputs and Operating Conditions

State definition A state point is entered in one of six bases; the solver of Table 4.1 completes the state. A click in the diagram creates a point in the basis (T, s); dragging a marker keeps this basis. Values are typed in the units of the field; a decimal comma, exponent notation and the Unicode minus sign are accepted.

Table 4.1 — State bases, field limits and solvers.

BasisValue 1Value 2Solver
p, Tp 1e-4 … 1000 barT 0 … 800 °Cdirect (region selection by ps, B23)
p, xp as abovex 0 … 1saturation + lever rule
p, hp as aboveh −10 … 4500 kJ/kgdome test, then bisection in T
p, sp as aboves −1 … 15 kJ/(kg·K)dome test, then bisection in T
T, xT 0 … 800 °Cx 0 … 1saturation + lever rule
T, sT 0 … 800 °Cs −1 … 15 kJ/(kg·K)dome test, then pressure scan and bisection

Limits are those of the fields; a state outside the IAPWS-IF97 range is rejected with a message. Up to 200 points, names of 1–16 characters. The points are the ordered path: segment i connects point i to point i + 1 (the loop is not closed automatically).

Display inputs Axis range (T −100 … 2000 °C, s −2 … 20 kJ/(kg·K), spans ≥ 1 K and ≥ 0.1 kJ/(kg·K)), the layers, the isobar list (≤ 40 entries, 0.005 … 1000 bar; the default list has 18 entries, a 1-2-5 sequence 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10 bar and then 20 … 1000 bar), the enthalpy step (25 … 1000 kJ/kg; isenthalps from the first multiple above 200 kJ/kg up to 4000 kJ/kg) and the isochore list (≤ 40 entries, 1e-4 … 1e4 m³/kg). Invalid input is marked with text and aria-invalid, never triggers a calculation, and the last valid diagram stays visible.

Process paths The diagram holds up to 12 independent process paths (up to 200 state points in total; point names 1–16 characters, path names 1–48 characters). Workflow. The first click or “Add point” creates “Path 1” and the following points extend it; “Finish path” ends it, and the next click, “Add point” or Enter starts a new path that is never connected to the earlier one; “New path” does the same explicitly. Default point names are unique across paths (1, 2, 3 / 1b, 2b / 1c, 2c). Path list. Each row has a colour input, an editable name, the point count, a line-style button (solid → dashed → dotted), an eye (hide/show), ✎ (continue drawing this path) and ✕ (delete the path); “Delete all paths” removes all paths and points but keeps axis range, layers, isoline lists and add-point inputs. Clicking a row only selects the path; it never makes the next click extend it. Selection. Selecting a point (marker or table row) selects its path and ends the drawing of another path; loading an example or the demo, or importing settings, never leaves a path “in progress” unless the file says so. Hidden paths are neither drawn nor hit-tested and their state card is not shown, but they stay in the settings file and the CSV. “Process segments” and “Cycle totals” always refer to the active path. A segment exists only between two neighbouring points of the same path; the drawing, the segment classification and the exports all use the same rule. Colours are assigned automatically from a twelve-colour palette and the PNG export always contains the path legend.

Settings file (IC schema 2) and CSV “Export settings” writes a JSON file (format “AntraSIM-input-configuration”, schemaVersion 2, application id AntraSIM-0060) with unit suffixes in every key. It holds the whole workspace: layers, axisRange (temperatureMin_C, temperatureMax_C, entropyMin_kJ_per_kgK, entropyMax_kJ_per_kgK and the informational viewPreset, the name of the preset that the range equals or null; it is ignored on import), isolines, newPoint, the list paths (each with name, visible, color, lineStyle and statePoints of basis and two values, never the derived states), activePath and drawing. The order of the paths and of the points defines geometry and drawing order and is reproduced exactly. “Import settings” is all-or-nothing (parse → identify → migrate → structural checks → temporary configuration → validation including the resolution of every point); on any error the current state, table, isolines and status stay unchanged and up to eight reasons are listed. Optional fields that are missing get defaults (colour from the palette by index, lineStyle “solid”, visible true, activePath none, drawing false). Migration. One explicit migration is registered: schema 1 → 2 turns the flat point list of a v1.0.x file into one path “Path 1” (no path if the list is empty), with no active path and nothing being drawn; all files written by v1.0.x still load, and the message says that the file was converted. Any other schema is rejected with a message naming the supported schemas. The CSV is semicolon-separated with ASCII column names name;basis;value1;value2;T [C];p [bar];x [-];h [kJ/kg];s [kJ/kgK];v [m3/kg];u [kJ/kg];region;path; the last column holds the path name (semicolons and line breaks replaced by a space), # metadata lines carry the traceability and the full schema-2 settings as one # line. On import (comma or semicolon delimiter, decimal comma with semicolons) name, basis, the two values and the path name are read; every named group becomes a new path (an existing name gets “ (2)”, “ (3)”, …), rows without a path name extend the path in progress if there is one and otherwise form one new path; the whole file is rejected on any error, or if 200 points or 12 paths would be exceeded. Files with 12 columns (v1.0.x and the h–s application) still load.

Reference configuration Layers as in v1.0.0 (isochores off), axis 0 … 400 °C and 0 … 9.5 kJ/(kg·K), the isobar list of 18 entries (v1.0.0 list plus 0.2 bar and 2 bar), the enthalpy-step and isochore defaults of v1.0.0, no paths and no points. “Restore defaults” restores all of it. The Rankine demo and the process examples of §6 are not part of the reference configuration; loading one replaces all paths and points and the axis range and makes the configuration “modified”.

5. Calculated Quantities

State properties T, p, x, h, s, u, v, ρ = 1/v, cp (regions 1 and 2 only), Tsat(p) and the region. Enthalpy and entropy use the reference of the release (saturated liquid at the triple point: u = s = 0).

Segment classification A segment between two points is classified from Δs, Δp, ΔT and Δh with the tolerances |Δs| < 5e-3 kJ/(kg·K), |Δp|/pmax < 3e-3, |ΔT| < 0.15 K, |Δh| < 0.5 kJ/kg (assumptions, §9): no change, isentropic, isenthalpic (throttling), isobaric + isothermal (phase change), isobaric, isothermal, otherwise polytropic. Isentropic segments are drawn as vertical lines; if “True process paths” is on, isenthalpic, isobaric and isothermal segments follow the isenthalp, the isobar (through Δh at constant p) or the isotherm; a polytropic segment is a straight line in the diagram, not a real process path.

Cycle totals Segments and cycle totals belong to the selected path (headline Path “name” in the right-hand panels); a segment exists only between two neighbouring points of the same path. Over all segments of the path: isobaric segments carry heat (qin for Δh > 0, qout otherwise); every other non-throttling segment carries work (wout for Δh < 0, win otherwise); wnet = wout − win and ηth = wnet/qin. For a closed loop the first law requires qin − qout = wnet; this is a verified invariant (T13).

Table 5.1 — Rankine demo (0.05 bar, 70 bar, 500 °C, turbine ηis = 0.88, isentropic pump), generated from the code.

PointBasisT [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]RegSegment to next point
1p, x32.87550.050.0000137.770.47634isentropic
2p, s33.045970–144.790.47631isobaric
3p, T50070–3411.256.79972polytropic
4p, h32.87550.050.86492233.507.32454isobaric + isothermal (phase change)
1'p, x32.87550.050.0000137.770.47634—

Engineering interpretation The demo gives wnet = 1170.7 kJ/kg and ηth = 35.84 % for a plain subcritical Rankine cycle, with an exhaust quality of 0.865.

6. Process Examples

Intuition A T–s diagram becomes useful when you read a whole process in it. The eight examples below are ready-made chains of state points that can be loaded from Process examples in the left panel. Each one isolates one idea: how reheat dries the steam, why a supercritical boiler has no boiling plateau, how a throttling calorimeter measures wetness, what a bypass valve costs, how a geothermal flash produces steam from hot water, what happens to hot water when it is suddenly depressurised, why the Carnot cycle is a reference and not a plant, and — with two independent paths in one diagram — why saturated steam from a much higher pressure leaves a throttle wetter than steam from a moderate pressure. Loading an example replaces all paths (one path per example, two in 6.8), the state points and the axis range; the layers, isoline sets and add-point inputs are kept. Examples add no stored field of their own: the schema 2 of the settings file (§4) comes from the process paths, not from the examples. Loading an example ends drawing, so the next click starts a new path instead of extending the example. Every point remains editable in the table (§4) and keeps its path, so each example is also a starting point for “what if” changes.

Physical mechanism Three relations are used in every example. Along any reversible path the fundamental relation dh = T ds + v dp ties the diagram (T, s) to the enthalpy change; the steady-flow first law q − w = Δh (§3) converts enthalpy differences into heat and work; and the second law says that entropy can only be generated, never destroyed.

heat added→entropy up (move right)→work out (move down along an isentrope)→heat rejected (move left)

Mathematical formulation Special cases of the fundamental relation and the second law, with the symbols of §3:

Δhs=∫12vdp(isentropic),q=Δh=∫12Tds(isobaric),Δh=0(throttling)
sgen=Δs−∫12δqT ≥ 0,sgen=Δs  (adiabatic),ed=T0sgen

Here sgen is the entropy generated per kg [kJ/(kg·K)] and ed the exergy destroyed per kg [kJ/kg] for an ambient temperature T0; T0 = 298.15 K is used wherever a number is quoted (an assumption). The real machines are described by isentropic efficiencies; for an expansion the actual end enthalpy follows from the isentropic one, whose state is found from the same entropy at the exit pressure:

hout=hin−ηis(hin−hout,s),s(pout,hout,s)=sin

All examples use ηis = 0.88 for turbines (0.85 in the geothermal example). Inside the dome the state is fixed by the enthalpy through the lever rule of §3, x = (h − hf)/(hg − hf). Assumptions and limitations Steady flow, no kinetic or potential energy, no pressure drop in heat exchangers, no heat loss; all numbers are illustrations from the solvers of §7, not plant data. The cycle totals of the right-hand panel are meaningful only for the closed cycles (6.1, 6.2, 6.7); the other examples are single processes and say so in the Messages panel.

How to explore The points are independent inputs: editing one point does not move the others. When a change should propagate (for example a new turbine efficiency), the dependent point must be edited as well. The recipe for an expansion end state is: add a point with basis (p, s) at the exit pressure and the entropy of the inlet, read its enthalpy hout,s in the Selected-state panel, compute hout with the equation above and enter it as the value of the exit point (basis p, h). The segment panel then reports the isentropic efficiency of the step as a check.

6.1 Rankine cycle with reheat

Intuition Expanding steam in a turbine moves the state down and slightly to the right. If the expansion starts at high pressure the path enters the wet region early and the last stages of the turbine receive droplets, which erode the blades. Reheat stops the expansion half-way, sends the steam back to the boiler, heats it again at the lower pressure, and lets it finish the expansion much drier.

Physical mechanism The condensate (1) is pumped almost without heating (2), heated, boiled and superheated at 160 bar (2→3), expanded in the high-pressure turbine to 40 bar (3→4), reheated at constant pressure to 540 °C (4→5), expanded in the low-pressure turbine to the condenser pressure (5→6), and condensed (6→1′). In the diagram the reheat is a second horizontal-ish rise to the right at 40 bar, and the LP expansion ends much closer to the saturated-vapour line.

Table 6.1 — Points of the reheat example (generated from the code).

PointPathState given (basis, values)T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Step to the next point
1Rankine cycle with reheatp, x = 0.05, 032.8750.050.0000137.80.4763Pump: isentropic compression of the liquid (Δh ≈ v Δp)
2Rankine cycle with reheatp, s = 160, 0.47625433.27160–153.80.4763Boiler: isobaric heating, boiling and superheating
3Rankine cycle with reheatp, T = 160, 540540160–3412.16.4494HP turbine: expansion with ηis = 0.88
4Rankine cycle with reheatp, h = 40, 3059.52336.6240–3059.56.5294Reheater: isobaric heating back to 540 °C
5Rankine cycle with reheatp, T = 40, 54054040–3537.37.2073LP turbine: expansion with ηis = 0.88 into the dome
6Rankine cycle with reheatp, h = 0.05, 2358.3932.8750.050.91652358.47.7326Condenser: isobaric and isothermal condensation
1'Rankine cycle with reheatp, x = 0.05, 032.8750.050.0000137.80.4763—

Mathematical formulation Pump work follows from the fundamental relation with ds = 0; heat added is the sum of both heating steps; work is the sum of both turbine steps; the net work per kg of steam and the efficiency follow:

wp=h2−h1≈v1(p2−p1),qin=(h3−h2)+(h5−h4),wt=(h3−h4)+(h5−h6)
wnet=wt−wp,ηth=wnetqin,qout=h6−h1,qin−qout=wnet

Engineering interpretation The pump takes 16.02 kJ/kg (the approximation v1Δp gives 16.08), the boiler 3258.3 kJ/kg and the reheater 477.8 kJ/kg; the HP turbine delivers 352.6 kJ/kg and the LP turbine 1178.9 kJ/kg. The net work is 1515.5 kJ/kg and ηth = 40.56 %. The same boiler without reheat (direct expansion 160 bar → 0.05 bar) gives ηth = 38.57 % and an exhaust quality of only 0.826 (17 % liquid); with reheat the exhaust quality is 0.916. Reheat therefore buys about 2.0 percentage points of efficiency and a drier turbine exhaust. The gain exists because the reheat heat is added at a high mean temperature.

Table 6.2 — Effect of the reheat pressure (boiler 160 bar / 540 °C, reheat to 540 °C, condenser 0.05 bar, ηis = 0.88), generated from the code.

Reheat pressure [bar]ηth [%]Exhaust quality x [–]
1040.290.992
2040.590.955
3040.630.933
4040.560.916
6040.320.893
8040.010.875

The efficiency has a flat maximum at an intermediate reheat pressure (here about 20 % of the boiler pressure; a common engineering rule of thumb is 20–25 %), while the exhaust quality improves steadily as the reheat pressure falls. Try this Test another turbine efficiency, for example ηis = 0.80: enter h4 = h3 − 0.80 (h3 − 3011.4) as the enthalpy of point 4 and h6 = h5 − 0.80 (h5 − 2197.6) as that of point 6 (the isentropic enthalpies 3011.4 and 2197.6 kJ/kg are those of this example) and read how ηth and the exhaust quality fall.

6.2 Supercritical Rankine cycle

Intuition Above the critical pressure (220.64 bar) water never boils: as it is heated it changes gradually from a dense liquid-like fluid to a light gas-like fluid, with no horizontal boiling line in the T–s diagram. A supercritical boiler can therefore be heated to a higher mean temperature, which raises the efficiency.

Physical mechanism Heating at 250 bar from 33.5 °C to 600 °C (2→3) passes the pseudo-critical temperature, where the specific heat has a sharp maximum (the slope (∂h/∂T)p peaks at about 71 kJ/(kg·K) near 385 °C; it is evaluated from the enthalpy because region 3 does not provide cp) and the isobar in the diagram bends steeply. The expansion 3→4 then ends inside the dome at the condenser pressure.

Table 6.3 — Points of the supercritical example (generated from the code).

PointPathState given (basis, values)T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Step to the next point
1Supercritical Rankine cyclep, x = 0.05, 032.8750.050.0000137.80.4763Pump: isentropic compression
2Supercritical Rankine cyclep, s = 250, 0.47625433.5250–162.80.4763Boiler: isobaric heating without boiling (above pc)
3Supercritical Rankine cyclep, T = 250, 600600250–3493.76.3638Turbine: expansion with ηis = 0.88
4Supercritical Rankine cyclep, h = 0.05, 2126.0132.8750.050.82062126.06.9733Condenser: isobaric and isothermal condensation
1'Supercritical Rankine cyclep, x = 0.05, 032.8750.050.0000137.80.4763—

Mathematical formulation Because heat is added at varying temperature, the relevant temperature is the mean temperature of heat addition. For an ideal cycle (isentropic pump and turbine, rejection at the condenser temperature TC) the efficiency is exactly the Carnot expression with Tm in place of the source temperature:

Tm=qins3−s2=h3−h2s3−s2,ηideal=1−TCTm

Engineering interpretation The mean temperature of heat addition is Tm = 292.6 °C, so the ideal cycle reaches 45.9 %; with the real turbine (ηis = 0.88) the cycle gives ηth = 40.31 % and wnet = 1342.7 kJ/kg. The price is wet exhaust: the quality is only 0.821 (17.9 % liquid), which is why supercritical plants use reheat (compare 6.1: 40.56 % with reheat at a lower boiler pressure). Try this Set the temperature of point 3 to 500 °C, recompute the turbine exit as described under How to explore and compare ηth and the exhaust quality with the 600 °C case; then set the pressure of points 2 and 3 to 150 bar and see that the isobar 2→3 now crosses the dome as a horizontal boiling line.

Assumptions and limitations Above the critical pressure the states lie in regions 1, 3 and 2 of the release; near the pseudo-critical line the specific heat is not provided in region 3 (§5), and properties change steeply, so small input changes move the point visibly.

6.3 Throttling calorimeter

Intuition You cannot see how wet steam in a pipe is. A throttling calorimeter measures it: a small sample is throttled to a low pressure, where the steam becomes slightly superheated; temperature and pressure of that dry steam are easy to measure, and from them the original wetness follows.

Physical mechanism Throttling in a well-insulated valve does no work and exchanges no heat, so the enthalpy is unchanged. The entropy rises (the process is irreversible), the pressure falls, and the state moves in the diagram along an isenthalp from the wet region (1) to the superheated region (2) at the lower pressure.

Table 6.4 — Points of the calorimeter example (generated from the code).

PointPathState given (basis, values)T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Step to the next point
1Throttling calorimeterp, x = 10, 0.97179.89100.97002716.76.4516Valve: throttling, h constant, entropy rises
2Throttling calorimeterp, h = 1, 2716.69120.041–2716.77.4678Superheat margin over the saturated vapour at the measuring pressure
3Throttling calorimeterp, x = 1, 199.60611.00002674.97.3588—

Mathematical formulation The energy balance q − w = Δh with q = w = 0 gives h1 = h2. Point 2 is fixed by the measured (p2, T2); the wetness then follows from the lever rule at the pipe pressure. The limit of the method is the quality at which the throttled steam is just saturated:

h1=h2=h(p2,T2),x1=h2−hf(p1)hfg(p1),xmin=hg(p2)−hf(p1)hfg(p1)

Engineering interpretation For steam of 10 bar (hf = 762.7 kJ/kg, hfg = 2014.4 kJ/kg) with x = 0.97 the enthalpy is 2716.7 kJ/kg; throttled to 1 bar the steam has 120.0 °C, a superheat of 20.4 K over the saturation temperature of 99.6 °C (point 3). Conversely a reading of T2 = 120 °C at 1 bar means x1 = 0.970. The method works only if the steam is at least 0.949 dry at 10 bar; wetter steam stays saturated after the valve and the temperature no longer tells the wetness. The sensitivity is dx/dT2 ≈ cp/hfg = 0.0010 per K, so a thermometer error of 1 K corresponds to a wetness error of about 0.1 percentage points. The entropy rises by 1.016 kJ/(kg·K) in the valve.

Table 6.5 — Wetness read from the temperature after the valve (10 bar → 1 bar), generated from the code.

Temperature after the valve at 1 bar [°C]Wetness read: x [–] at 10 bar
1100.960
1150.965
1200.970
1250.975
1400.990

Try this Change point 1 to x = 0.94; its enthalpy is 2656.3 kJ/kg. Enter that enthalpy as the value of point 2 (basis p, h): the point falls inside the dome (x2 = 0.992) and no superheat can be read, so the method fails for this wetness.

6.4 Turbine bypass to the condenser

Intuition When a turbine trips, the boiler cannot stop at once. The steam is sent past the turbine through a bypass valve to the condenser. The valve wastes the expansion work, and the hot, low-pressure steam that leaves it must be cooled before it can enter the condenser.

Physical mechanism The valve is an isenthalpic throttle (1→2): the pressure falls from 70 bar to 0.05 bar but the temperature falls only slightly, because the enthalpy of steam depends mainly on temperature and hardly on pressure. The result is strongly superheated low-pressure steam. Spraying condensate into it (2→3) evaporates the water and cools the steam to saturation; the condenser then removes the latent heat (3→4).

Table 6.6 — Points of the bypass example (generated from the code).

PointPathState given (basis, values)T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Step to the next point
1Turbine bypass to the condenserp, T = 70, 50050070–3411.36.7997Bypass valve: throttling, h constant
2Turbine bypass to the condenserp, h = 0.05, 3411.25462.950.05–3411.310.1156Desuperheater: isobaric cooling by water injection (state of the mixture)
3Turbine bypass to the condenserp, x = 0.05, 132.8750.051.00002560.88.3939Condenser: isobaric and isothermal condensation
4Turbine bypass to the condenserp, x = 0.05, 032.8750.050.0000137.80.4763—

Mathematical formulation Throttle, desuperheater mass and energy balance (steam flow ṁs, injected water flow ṁw with enthalpy hw) and condenser duty:

h2=h1,m˙sh2+m˙whw=(m˙s+m˙w)h3 ⇒ m˙wm˙s=h2−h3h3−hw,qc=h3−h4

Engineering interpretation The throttle lowers the temperature only from 500 °C to 463.0 °C (37.0 K) while the pressure falls by a factor of 1400 and the specific volume grows from 0.0482 to 67.9 m³/kg. The entropy rises by 3.316 kJ/(kg·K), so with T0 = 298.15 K about 989 kJ/kg of exergy is destroyed: the whole expansion work that a turbine would have delivered is lost. Cooling to saturated vapour with condensate of 137.8 kJ/kg needs 0.351 kg of water per kg of steam (850 kJ/kg is removed), and the condenser rejects 2423 kJ/kg. In the diagram the desuperheater is an isobar on which the temperature falls by 430 K at nearly constant pressure. Assumptions and limitations The specific values on segments 2→3 refer to the flowing mixture of steam and injected water; the plotted path is the state of that mixture, not the state of the original steam alone.

6.5 Single-flash geothermal plant

Intuition Hot water from a geothermal well is under high pressure and cannot boil. When the pressure is released in a valve, part of the water suddenly turns to steam (“flashes”), which can drive a turbine. The rest remains hot liquid and is returned to the ground.

Physical mechanism The well fluid is saturated liquid at 250 °C (1). The flash valve (1→2) is isenthalpic: the pressure falls to the separator pressure of 5 bar, and the state moves inside the dome to a mixture with a vapour fraction x. The separator splits the mixture; the plotted step 2→3 is the vapour fraction only, moving along the isobar and isotherm to saturated vapour. The turbine (3→4) expands the steam to 0.1 bar and the condenser (4→5) returns saturated liquid.

Table 6.7 — Points of the flash example (generated from the code).

PointPathState given (basis, values)T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Step to the next point
1Single-flash geothermal plantT, x = 250, 025039.7590.00001085.72.7934Flash valve: throttling into the dome, h constant
2Single-flash geothermal plantp, h = 5, 1085.69151.8450.21131085.72.9089Separator: the vapour fraction moves along the isobar/isotherm to x = 1
3Single-flash geothermal plantp, x = 5, 1151.8451.00002748.16.8206Turbine: expansion with ηis = 0.85
4Single-flash geothermal plantp, h = 0.1, 2248.445.8080.10.85972248.47.0971Condenser: condensation of the exhaust
5Single-flash geothermal plantp, x = 0.1, 045.8080.10.0000191.80.6492—

Mathematical formulation The energy balance across the valve is a mixture balance, so the vapour fraction is the lever rule at the separator pressure; the turbine work per kg of well fluid is the vapour fraction times the specific turbine work:

h1=h2=(1−x)hf(p2)+xhg(p2) ⇒ x=h1−hf(p2)hg(p2)−hf(p2),wwell=x(h3−h4)

Engineering interpretation Here h1 = 1085.7 kJ/kg, hf(5 bar) = 640.2 kJ/kg and hg(5 bar) = 2748.1 kJ/kg give x = 0.211: only about one fifth of the well fluid becomes steam, and 78.9 % is rejected as brine. The turbine delivers 499.7 kJ per kg of steam (ηis = 0.85, exhaust quality 0.860), which is 105.6 kJ per kg of well fluid. The separator pressure is a trade-off: a lower pressure flashes more steam but each kg of steam does less work.

Table 6.8 — Effect of the separator pressure (turbine exit 0.1 bar, ηis = 0.85), generated from the code.

Separator pressure [bar]Vapour fraction x [–]Turbine work [kJ/kg steam]Work [kJ/kg well fluid]
10.296291.686.3
20.264381.1100.6
30.242433.6105.1
50.211499.7105.6
80.178560.099.7
120.145611.188.4
200.094673.063.1

The specific work per kg of well fluid has a maximum near 5 bar in this example. Try this Change the pressure of points 2 and 3 to 2 bar and to 12 bar and read the flash fraction of point 2 (Table 6.8): point 2 keeps its enthalpy, so it stays a valid throttling end state; the turbine exit (point 4) keeps its enthalpy, so use Table 6.8 for the work. Assumptions and limitations The cycle totals of the right-hand panel are not applicable, because the separation 2→3 is a mass split, not a heat transfer; use the work of the segment 3→4 and the fraction x. Dissolved gases, scaling and the pressure drop in the well are not represented.

6.6 Depressurisation (blowdown) of hot water

Intuition Water at 325 °C and 155 bar (typical of a pressurised-water reactor) is liquid because the pressure is high. If a pipe breaks, the pressure falls in a fraction of a second, the water can no longer stay liquid and a large part of it turns to steam. That is why a leak from a hot pressurised system produces so much steam.

Physical mechanism With no time for heat exchange and no work, the enthalpy stays constant, so the state moves along an isenthalp. First the liquid stays liquid while the pressure falls (1→2) until it meets the saturated-liquid line, where the pressure is the saturation pressure belonging to that enthalpy (the onset of flashing). Below that pressure the state lies inside the dome (2→3), and more and more of the liquid evaporates as the pressure falls further.

Table 6.9 — Points of the blowdown example (generated from the code).

PointPathState given (basis, values)T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Step to the next point
1Depressurisation (blowdown) of hot waterp, T = 155, 325325155–1484.33.4758Depressurisation of the subcooled liquid, h constant, until flashing starts
2Depressurisation (blowdown) of hot waterp, h = 118.257, 1484.25323.56118.260.00001484.33.4851Depressurisation inside the dome, h constant, x rises
3Depressurisation (blowdown) of hot waterp, h = 1, 1484.2599.60610.47261484.34.1645—

Mathematical formulation The onset pressure is the root of hf(pon) = h1. Below it the vapour fraction follows from the lever rule at the current pressure, and the volume ratio follows from the mixture volume:

hf(pon)=h1,x(p)=h1−hf(p)hg(p)−hf(p),v(p)=vf(p)+x(p)(vg(p)−vf(p))

Engineering interpretation The initial liquid is subcooled by 19.8 K (saturation temperature 344.8 °C at 155 bar), and h1 = 1484.3 kJ/kg. Flashing starts at 118.3 bar, only a little below the initial pressure. At 1 bar the mixture has x = 0.473 (47.3 % of the mass is steam) at 99.6 °C, and the specific volume has grown from 0.00150 to 0.801 m³/kg, a factor of about 534. The enormous volume increase is what pressurises a containment during a loss-of-coolant accident.

Table 6.10 — Vapour fraction along the isenthalp during the depressurisation, generated from the code.

Pressure [bar]Saturation temperature [°C]Vapour fraction x [–]
100311.00.058
60275.60.172
30233.90.265
10179.90.358
3133.50.427
199.60.473

Try this Change point 1 to 200 bar and 300 °C, read its enthalpy in the Selected-state panel and enter that enthalpy as the value of point 3 (1 bar): the flash fraction at 1 bar falls because the water carries less enthalpy. Assumptions and limitations Real blowdown is a transient with critical (choked) flow, non-equilibrium boiling delay and heat from the metal walls; only the equilibrium end states of the isenthalpic idealisation are shown.

6.7 Carnot vapour cycle (reference)

Intuition The Carnot cycle is the best cycle that any heat engine can achieve between two fixed temperatures. In the T–s diagram it is a rectangle: heat is added at the highest temperature and rejected at the lowest, and expansion and compression are vertical lines. It is the yardstick against which every real cycle is measured.

Physical mechanism Between 300 °C and 40 °C the working fluid boils at constant temperature (1→2, along the isobar and isotherm inside the dome), expands isentropically (2→3), condenses partially at constant temperature (3→4) and is compressed isentropically back to saturated liquid (4→1). The heat added and rejected are areas under the top and bottom lines of the rectangle.

Table 6.11 — Points of the Carnot example (generated from the code).

PointPathState given (basis, values)T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Step to the next point
1Carnot vapour cycle (reference)T, x = 300, 030085.8770.00001344.83.2547Isothermal boiling (reversible heat addition at TH)
2Carnot vapour cycle (reference)T, x = 300, 130085.8771.00002749.65.7058Isentropic expansion to TL
3Carnot vapour cycle (reference)T, s = 40, 5.70576400.0738440.66811775.05.7058Isothermal condensation (reversible heat rejection at TL)
4Carnot vapour cycle (reference)T, s = 40, 3.25474400.0738440.34911007.53.2547Isentropic compression back to saturated liquid
1'Carnot vapour cycle (reference)T, x = 300, 030085.8770.00001344.83.2547—

Mathematical formulation Because both heat transfers are isothermal, the heat is the temperature times the entropy change; the work is the enclosed area:

qin=TH(s2−s1),qout=TL(s3−s4),wnet=qin−qout=(TH−TL)Δs,ηC=wnetqin=1−TLTH

Engineering interpretation With Δs = 2.451 kJ/(kg·K), qin = 1404.8 kJ/kg (equal to the latent heat at 300 °C), qout = 767.5 kJ/kg and wnet = 637.3 kJ/kg, the efficiency is 45.36 %, equal to 1 − 313.15/573.15 = 45.36 % within the consistency of the release (Table 8.1, T19). Why is it not built? The compression starts from a wet mixture (x = 0.35) that a pump cannot handle, the turbine exhaust is very wet (x = 0.67), and the compression work is a large part of the turbine work: the back-work ratio is 35 %, against 0.6 % in the Rankine demo where the pump handles liquid. In the Rankine cycle the liquid is heated at rising temperature (2→3 in the demo), so the mean temperature of heat addition is only 243 °C instead of the source temperature; this is the origin of the efficiency gap (35.8 % for the Rankine demo, whose Carnot limit between 500 °C and 32.9 °C is 60.4 %).

Try this Change the temperature of points 3 and 4 (basis T, s) to 100 °C or 20 °C and see how the rectangle and the efficiency change. Assumptions and limitations The cycle is reversible and lies fully inside the dome; it is a reference, not a design.

6.8 Throttling comparison: saturated steam from 155 bar and 35 bar to 1 bar

Intuition Two identical valves let saturated steam down to atmospheric pressure. One is fed with steam of 155 bar, the other with steam of 35 bar. One might expect the steam from the higher pressure to leave hotter and drier, because it starts with more energy. It does the opposite: the steam from 155 bar leaves wet at 99.6 °C, the steam from 35 bar leaves superheated at 163.2 °C. This example shows both processes in one diagram as two independent paths that are not connected to each other, so that they can be compared directly.

Physical mechanism An adiabatic throttle does no work and exchanges no heat, so the specific enthalpy is unchanged and the state moves along an isenthalp to the lower pressure. What matters is therefore the enthalpy of the starting steam, and the enthalpy of saturated vapour hg(p) is not a monotonic function of pressure: it rises to a maximum of 2803.3 kJ/kg near 30.8 bar and then falls. Steam of 155 bar (2596.2 kJ/kg) has less enthalpy than saturated vapour of 1 bar (2674.9 kJ/kg), so after the valve it cannot be dry; steam of 35 bar (2802.7 kJ/kg) has more, so it leaves superheated. The crossover pressure at which saturated vapour has exactly the enthalpy of saturated vapour of 1 bar is 124.8 bar; steam saturated at a higher pressure always leaves a throttle to 1 bar wet.

Table 6.12 — Points of the throttling comparison (generated from the code); the two paths are drawn in different colours and are not connected.

PointPathState given (basis, values)T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Step to the next point
1155 bar → 1 barp, x = 155, 1344.791551.00002596.25.2789Valve: throttling from saturated vapour of 155 bar to 1 bar, h constant (leaves wet)
2155 bar → 1 barp, h = 1, 2596.2299.60610.96512596.27.1476—
1b35 bar → 1 barp, x = 35, 1242.56351.00002802.76.1245Valve: throttling from saturated vapour of 35 bar to 1 bar, h constant (leaves superheated)
2b35 bar → 1 barp, h = 1, 2802.74163.191–2802.77.6755—

Mathematical formulation With q = w = 0 the energy balance gives h2 = h1 = hg(p1). The outlet state at p2 follows from the enthalpy: inside the dome by the lever rule, above the saturated-vapour line from the temperature that belongs to (p2, h2). The irreversibility of the valve is the entropy generated:

h2=h1=hg(p1),x2=h1−hf(p2)hfg(p2)  (h1<hg(p2)),T2=T(p2,h1)  (h1≥hg(p2))
sgen=s(p2,h1)−s(p1,h1)>0,ed=T0sgen

Engineering interpretation Path “155 bar → 1 bar”: saturated vapour of 344.8 °C and s = 5.2789 kJ/(kg·K) leaves at 1 bar with x2 = 0.9651 at the saturation temperature 99.61 °C and s = 7.1476 kJ/(kg·K). Path “35 bar → 1 bar”: saturated vapour of 242.6 °C and s = 6.1245 kJ/(kg·K) leaves superheated at 163.19 °C (63.6 K above the saturation temperature) with s = 7.6755 kJ/(kg·K). The entropy generated is 1.8687 and 1.5510 kJ/(kg·K), which with T0 = 298.15 K corresponds to 557 and 462 kJ/kg of exergy destroyed: the larger the pressure ratio the larger the loss. The T–s reading. Because the state moves along an isenthalp, the path is a curve in the T–s plane (the “True process paths” option reconstructs it): both curves run to the right (entropy is generated) and down (the temperature falls); the first ends on the 1 bar isobar inside the dome, exactly on the horizontal boiling line, the second ends on the 1 bar isobar above the saturated-vapour line. The outlet markers of both paths lie on the 1 bar isobar.

Table 6.13 — Saturated vapour of various pressures throttled to 1 bar (generated from the code).

Saturated vapour of p₁ [bar]hg(p₁) = h [kJ/kg]Outlet at 1 bar: T [°C]Outlet: x [–] or superheat [K]Entropy generated [kJ/(kg·K)]
102777.1150.27+50.7 K1.0309
202798.4160.99+61.4 K1.3264
352802.7163.19+63.6 K1.5510
602784.6154.02+54.4 K1.7434
1002725.5124.40+24.8 K1.8742
1552596.299.61x = 0.96511.8687
2002411.499.61x = 0.88331.7218

How to build it in the application Use “Add point by state” or click in the diagram. (1) The first point starts Path 1: basis (p, x) = 155 bar, 1. (2) Read its enthalpy in the Selected-state panel and add a second point with basis (p, h) = 1 bar and that enthalpy. (3) Press Finish path. (4) Add a point with basis (p, x) = 35 bar, 1: it starts a new path (Path 2) that is not connected to Path 1. (5) Add the outlet (1 bar, its enthalpy). The path list now shows both paths; rename them, change the colour or the line style, or hide one with the eye. Try this Delete Path 2 with ✕ and build a third path from saturated vapour of 10 bar or of 200 bar and compare the outlet with Table 6.13; or hide Path 1 and export the PNG: only the visible path and its legend entry are in the picture.

Assumptions and limitations Adiabatic, work-free throttling in steady flow at equilibrium; kinetic energy of the flow and a possible choking of the valve are not represented. The cycle totals of the right-hand panel are not meaningful for a single throttling path.

7. Numerical Method

Approach No time-stepping. Every state is a direct evaluation or a one-dimensional root search on the basic equations; every input change triggers an immediate recalculation. The default isoline set is built in about 50 ms (worst case 240 ms for Δh = 25 kJ/kg) and the (T, s) inversion runs about 27 000 evaluations per second (Node 22, the build machine); the diagram stays responsive while dragging.

Kernel Power tables replace Math.pow in the region 1, 2 and 3 sums. Region 3 density is found from p(ρ, T) by bracketed bisection with the bracket confined to 0.5 < ρ < 800 kg/m³ (tolerance 1e-10 kg/m³, at most 80 iterations); the equation has a spurious root above about 950 kg/m³, and an unconfined bracket returns a false liquid density. Saturated densities near and above 623.15 K come from the saturation correlations of the supplementary release and are refined against the region-3 equation only while Tc − T > 1 K and within 5 % of the correlation, because the subcritical loop is too flat to refine closer in (A-5).

Inverse solvers (p, h) and (p, s): at fixed p both increase monotonically with T; the dome is tested first (with a tolerance of 1e-9 relative, A-4), otherwise 60 bisection steps in T down to 1e-8 K. (T, s): inside the dome the lever rule; outside, a 48-point scan in p (logarithmic on the vapour side) finds the first sign change of s(p) − s, then up to 90 bisection steps. A scan is needed because (∂s/∂p)T = −(∂v/∂T)p changes sign at the density maximum, so s(p) is not monotone for liquid below about 4 °C (A-6). (T, v): dome test, then bisection in ln p. (h, s): nested search in ln p with a secant update from dh = v dp along an isentrope and bisection as safeguard.

Isolines Dome: 321 temperatures on a power law up to Tc − 1 K, then 120 points logarithmic in Tc − T down to 1 mK, so that the nose closes tightly on the critical point. Isobars: 110 points in the liquid, the two saturation end points, 150 points in the vapour (300 points above the critical pressure). Isenthalps: 65 pressures, logarithmic from 5e-4 to 100 MPa. Quality lines: the dome grid. Isochores: 141 temperatures. The curves are rebuilt only for the set that changed; isochores only while their layer is on.

Rendering One canvas for the diagram and a separate overlay for the cursor, redrawn with every base redraw. The left axis is T in °C and the right axis T in K (correct for every axis range); the shaded areas are outside the range of the release (below 0.01 °C, above 800 °C, above 1000 bar), the dashed line is Tc. Isoline labels are placed on the curve with a white halo. Every curve is clipped to the window segment by segment in data space (Liang–Barsky), never clamped and never discarded by an end-point test; for labels the visible parts are resampled to steps of at most 24 px so that even a two-point straight dome segment can carry one (A-16, T21). Each visible path is drawn as its own polyline in its colour and line style (the active path slightly thicker) with a direction arrow, and its markers and point names in the same colour; hidden paths are not drawn. A path legend (line sample and name of every visible path) appears in the lower right corner from two visible paths and always in the PNG export. The PNG export renders the same routine at a fixed size with title, layer legend, path legend, the number of state points and paths, the configuration state and UTC time.

Assumptions and limitations Bisection tolerances are far below the resolution of any plot; the accuracy of the solvers is measured in T9 and T10.

8. Verification and Numerical Accuracy

Scope Verification shows that the equations are solved correctly and that published reference values are reproduced; it is not validation against measurements. The suite runs in the application (footer → Verification) and in Node. A failing test is a finding: diagnose the cause, do not adjust the criterion (the failure that led to A-4 was found by T11). T21 tests the clipping of every default curve family in four presets and seven zoomed windows, T22 the path operations, limits and round trips; T15 to T17, T19 and T20 were extended for schema 2, the path column and the eighth example.

Table 8.1 — Release verification suite (22 of 22 passed; generated from an actual run).

IDTestCriterionResultMeasured
T1Region 1 (Table 5 of R7-97): v, h, u, s, c_p at 300 K/3 MPa, 300 K/80 MPa, 500 K/3 MPamax relative deviation ≤ 1e-8 (tabulated to 9 digits)PASS2.81e-9 (15 values)
T2Region 2 (Table 15 of R7-97): v, h, u, s, c_p at 300 K/0.0035 MPa, 700 K/0.0035 MPa, 700 K/30 MPamax relative deviation ≤ 1e-8PASS2.10e-9 (15 values)
T3Region 3 (Table 33 of R7-97): p, h, u, s at (650 K, 500 kg/m³), (650 K, 200 kg/m³), (750 K, 500 kg/m³)max relative deviation ≤ 1e-8 (c_p and w are not provided by the region-3 kernel)PASS2.10e-9 (12 values)
T4Region 4 and B23 (Tables 35, 36 and the B23 point of R7-97): p_s(300, 500, 600 K), T_s(0.1, 1, 10 MPa), p_B23(623.15 K)max relative deviation ≤ 1e-8PASS2.87e-9 (7 values)
T5Reference constants: critical point (ρ_c, T_c) gives p_c; p_s(T_c) = p_c; T_s(p_c) = T_c; triple point p_s(273.16 K) = 611.657 Pa with s = u = 0 for saturated liquidrelative deviation ≤ 1e-6; |s|, |u|/T_t ≤ 1e-6 kJ/(kg K)PASS1.74e-11; 6.16e-8
T6Region-3 density solver: p(ρ, T) back-substitution on a 41 × 21 grid of (p, T) states above the B23 line0 unresolved, 0 inconsistent (relative ≤ 1e-6)PASS861 states: 0 unresolved, 0 inconsistent
T7Boundary consistency: regions 2/3 along the B23 line and regions 1/3 along the 623.15 K isothermΔv ≤ 0.05 %, Δh ≤ 0.2 kJ/kg, Δs ≤ 0.2 J/(kg K) (Prague values)PASS2/3: 1.81e-2 %, 1.34e-1 kJ/kg, 1.75e-1 J/(kg K); 1/3: 3.57e-3 %, 3.06e-2 kJ/kg, 4.22e-2 J/(kg K)
T8Dome continuity at 623.15 K (change of formulation from regions 1/2 to region 3 with saturated-density correlations)Δh ≤ 0.2 kJ/kg, Δs ≤ 0.2 J/(kg K), Δv ≤ 0.05 % between 623.15 K and 623.1501 KPASS3.80e-2 kJ/kg, 6.24e-2 J/(kg K), 1.00e-2 %
T9Inverse solvers (p,h), (p,s) → T on a single-phase grid across regions 1, 2 and 30 failures; max |ΔT| ≤ 1e-6 KPASS120 states, 0 failures; 4.13e-9 K, 4.13e-9 K
T10Inverse solvers (T,s) → p (T ≥ 20 °C; below about 4 °C the state is not unique) and (h,s) → p, T on the same gridmax |Δs| ≤ 1e-9 kJ/(kg K); relative Δp ≤ 1e-6 for (T,s); Δp/p ≤ 1e-5 and |ΔT| ≤ 1e-3 K for (h,s)PASS4.03e-13 kJ/(kg K), 6.78e-11; 8.40e-6, 2.02e-6 K
T11Two-phase states: lever rule, (T,x) ≡ (p,x), recovery of x from (p,h) and (T,s), 10 saturation temperatures × 5 qualitieslever rule ≤ 1e-12; (T,x) ≡ (p,x) ≤ 1e-9; recovered x ≤ 1e-9PASS50 states; 0, 1.54e-12, 2.01e-12, 1.11e-15
T12Change of basis (pT, px, ph, ps, Tx, Ts) reproduces the same state (8 states × 6 bases)0 unresolved; combined relative deviation ≤ 1e-6PASS34 conversions, 0 unresolved; 1.18e-10
T13Process semantics on the Rankine demo (0.05 bar, 70 bar, 500 °C, η_is = 0.88): segment types 1→2 isentropic, 2→3 isobaric, 3→4 polytropic, 4→1′ isobaric + isothermal; a zero-length segment is “no change”; first-law balance q_in − q_out = w_nettypes as stated; |q_in − q_out − w_net| ≤ 1e-9 kJ/kgPASSisentropic | isobaric | polytropic | isobaric + isothermal (phase change); 2.27e-13 kJ/kg
T14Default-case regression: Rankine-demo states (T, p, h, s) and cycle totals (q_in, w_net, η_th) against the stored valuescombined relative deviation ≤ 1e-9PASS4.44e-13
T15Input Configuration (schema 2): exact round trip with two paths (colour, style, visibility, active, drawing) and the resolved states; geometry order; 23 malformed files are rejected without a result; migration schema 1 → 2 (one path, empty list, defaults of missing optional fields, exactly one registered migration)round trip exact; all 23 malformed variants rejected; migration cases as statedPASSround trip exact; 23 / 23 rejected; migration ok
T16State-point CSV with the path column: exact round trip, path partition and names, append to an existing workspace ((2) suffixes), rows without a path name (extend the path in progress / one new path), 12-column files of v1.0.x, delimiters, decimal comma, exponent notation, Unicode minus, header and # lines, fallback to T/p columns, limits (201 points, 13 paths); 8 malformed files are rejected as a wholeround trip exact; all 8 malformed variants rejectedPASSround trip exact; 8 / 8 rejected
T17Configuration validation: reference case and the two-path example valid; inverted axes, out-of-range Δh, isobars, isochores, x, p, empty and over-long names, non-boolean layers, points without or with an out-of-range path, ungrouped points, 13 paths, bad path name/colour/style/visibility, active/drawing inconsistencies, paths not a list are rejected; list parserreference valid; 22 invalid variants rejected; list parser strictPASS22 / 22 rejected
T18Isoline construction: 51 curves (default isobars, isenthalps, quality lines, three isochores) finite with ≥ 5 points; dome ordered with s_f ≤ s_g; quality lines inside the dome; Δh = 50 and 33.3 kJ/kg give 77 and 114 isenthalps0 short or non-finite curves; 0 ordering violations; counts ceil-consistentPASS0 short, 0 non-finite, 0 dome and 0 quality violations
T19Process examples (8): every point resolves and each case (applyCase) is a valid configuration; documented segment types per path; closed-loop first law (reheat, supercritical, Carnot); h constant in all throttling steps incl. both paths of 6.8; lever-rule fractions of calorimeter, flash, blowdown and 6.8; x = 0 at the onset of flashing; reheat gives a drier exhaust than direct expansion; Carnot η = 1 − T_C/T_H0 unresolved, 0 deviations; invariants ≤ 1e-9; Carnot η within 1e-5 (Gibbs inconsistency of the release at saturation, ≤ 0.012 kJ/kg)PASS36 / 36 points, 0 deviations; 2.81e-12; Carnot 5.69e-7
T20Example regression: key results of the eight examples (η_th, w_net, exhaust quality, T after throttling, flash fraction, onset pressure, wet outlet fraction and superheated outlet temperature of 6.8) against stored values (4–6 significant digits)max relative deviation ≤ 1e-3 (stored to 4–6 digits; a change of the kernel would move them by far more)PASS2.19e-4
T21Curve clipping: 638 curve × window combinations (isobars, isenthalps, quality lines, isochores, dome curves × 4 presets and 7 zoomed windows incl. the wet-steam window); the lowest default isobar in the wet-steam window is one horizontal part at T_sat; synthetic segment with both ends far outside0 dropped curves (a curve with any point of a 200-fold subdivision inside is kept), 0 clipped points outside (1e-9 of the window), 0.05 bar isobar horizontal within 1e-6PASS0 dropped, 0 outside, 0 false; horizontal true; synthetic true
T22Independent process paths: workflow (add, finish, add), selectPath + add keeps contiguity, startPath, independent deletion and re-indexing, clearPaths keeps the settings, setPathProp and its rejections, 12 paths / 200 points limits, IC round trip, CSV round trip of the partition, and the throttling comparison (6.8)all 9 groups pass; every check can failPASS0 failed checks

Table 8.2 — Default-case regression values (Rankine demo), stored in the suite and printed from the same run (T14).

PointT [°C]p [bar]h [kJ/kg]s [kJ/(kg·K)]
132.875489523760.05137.76511898850.4762537895051
233.0459004408170144.78667743910.4762537895613
3500703411.2502638226.799715110694
432.875489523760.052233.5026026677.324515687831
1'32.875489523760.05137.76511898850.4762537895051
Cycle totals
qin, qout [kJ/kg]3266.4635863832095.737483679
wout, win [kJ/kg]1177.7476611547.021558450606
wnet [kJ/kg], ηth [–]1170.7261027040.3584078229386

Table 8.3 — Independent cross-check against the open-source Python package iapws 1.5.5 (a separate implementation of IAPWS-IF97), performed at build time and not part of the in-app suite.

DomainStatesmax |Δv/v|max |Δh| [kJ/kg]max |Δs| [kJ/(kg·K)]
Region 1 (liquid)3297.3e-158.9e-121.5e-14
Region 2 (vapour)5706.7e-161.8e-123.6e-15
Region 3 (near-critical)475.0e-132.5e-104.3e-13
Saturation line, T ≤ 623.15 K (f and g)123.6e-143.2e-115.1e-14
Saturation line, T > 623.15 K (f and g)92.5e-021.4e+012.1e-02

Interpretation The agreement in the single-phase regions is at round-off level because both implementations evaluate the same basic equations; it confirms the coefficient tables and the region logic over the whole plotted domain. It does not validate the model of water. The near-critical saturation differences are explained in A-5.

9. Model Parameters and Constants

Evidence classes: externally sourced derived assumption not verified.

ParameterValueUnitClassBasisEditable
R0.461526kJ/(kg·K)externally sourcedRelease §3, Eq. (1).no
Tc, pc, ρc647.096; 22.064; 322K; MPa; kg/m³externally sourcedRelease §3, Eqs. (2)–(4).no
hc, sc2087.54685; 4.412021kJ/kg; kJ/(kg·K)derivedRegion-3 equation at (ρc, Tc); used for the critical point of the dome.no
Coefficients of regions 1–4, B23tables of the release–externally sourcedTranscribed in v1.0.0; verified indirectly by T1–T8 and Table 8.3 (§11).no
Saturated-density correlations6 + 6 coefficients–not verifiedSupplementary release on saturation properties; the coefficients were not re-checked against the primary document (§11). Used only near the critical point and as start values.no
Validity limits273.16 K − 0.5 K … 1073.15 K; 1e-5 … 100 MPaK; MPaderivedRange of the release (regions 1–4); 0.5 K tolerance below the lower limit (A-13).no
Classification tolerances5e-3; 3e-3; 0.15; 0.5kJ/(kg·K); –; K; kJ/kgassumptionChosen in v1.0.0 so that hand-placed points on a line count as on that line; not sourced.no
Rankine demo0.05; 70; 500; 0.88bar; bar; °C; –assumptionIllustrative reference case, see the reasonableness check below.no (points editable)
Axis, isoline and Δh defaultssee §4–assumptionDisplay defaults inherited from v1.0.0; the default isobar list was completed to a 1-2-5 sequence (0.2 bar and 2 bar added in v1.1.0).yes
Workspace limits12; 200; 16; 48paths; points; characters (point); characters (path)assumptionChosen to keep the diagram, the path list and the table readable; not derived from the model.no

Reasonableness check of the Rankine demo (stated reference case: subcritical steam cycle without reheat or regeneration).

ConstantPrevious valueNew defaultReasoningAssessment
Condenser pressure0.05 bar0.05 barSaturation temperature 32.9 °C, a typical water-cooled condenser.plausible, unchanged
Boiler outlet70 bar, 500 °C70 bar, 500 °CTypical of medium-pressure steam turbines; superheat of 214.2 K.plausible, unchanged
Turbine ηis0.880.88Typical for a multistage condensing turbine; exhaust quality 0.865 is above the usual 0.85 moisture limit.plausible, unchanged
PumpisentropicisentropicThe pump work is 7.02 kJ/kg, about 0.6 % of the turbine work; the simplification is immaterial for the cycle picture.simplification, stated
ηth—35.84 %Consistent with a Rankine cycle of this pressure level without reheat or feed heating.plausible

10. Model Scope and Limitations

Represented Water and steam in equilibrium states over regions 1–4 of the release (0 °C to 800 °C, up to 100 MPa); six state bases; isobars, isenthalps, quality lines and isochores; steady-flow first-law interpretation of straight and reconstructed process segments; entropy generation of adiabatic segments; cycle totals for isobaric heat and work segments.

Not represented Region 5 (above 800 °C) and the metastable-vapour equation; metastable liquid beyond the extrapolation of regions 1 and 3; other fluids, heavy water, mixtures, humid air; kinetic and potential energy; non-adiabatic machines with heat loss; real machine characteristics; uncertainty estimates of the release (tolerance regions of its Figs. 3–6 are not evaluated); regenerative or reheat cycle logic (the segment rules assume that isobaric segments are the only heat exchangers); branched flows — a process path is one stream, so extraction steam, moisture separators with a drain flow, mixing and mass fractions are not represented (a turbine with moisture separator and preheaters is a candidate for a later version). The workspace is limited to 12 paths and 200 state points. The state (T, s) is not unique below about 4 °C (A-6); cp is not provided in region 3 and in the two-phase region. Do not hide the limitations: results of safety, regulatory or contractual significance shall be checked against an independent property source.

11. Data Provenance and Open Points

What was found The IAPWS release R7-97(2012) was consulted in full at iapws.org in this delivery: reference constants (§3), the B23 coefficients and check point (§4), the region ranges and equations (§5–9), the verification tables 5, 15, 33, 35, 36, the boundary consistency values (Tables 43, 44) and the reference list. All reference values of the suite were compared with that text. The property kernel and all coefficient tables come from v1.0.0 (Antranova, 2026-09-17); the Python package iapws 1.5.5 served as independent implementation.

What was not found The supplementary release on saturation properties (cited as [12] in the release) was not obtained; the coefficients of the saturated-density correlations could therefore not be checked against it. The coefficient tables of the release were compared with the code only through reference values, boundary consistency and the cross-check, not digit by digit.

Unverified items (1) The six + six coefficients of the saturated-density correlations (effect confined to T > 623.15 K; A-5 quantifies the consequence). (2) The digit-by-digit transcription of the basic-equation coefficients — indirectly verified: a wrong digit would show in T1–T8 and Table 8.3 unless it changed the property by less than the round-off level. (3) The classification tolerances of §5. (4) The 0.5 K temperature tolerance (A-13). (5) The Rankine demo values are assumptions.

12. References

External standards and reports

  1. [1] IAPWS, Revised Release on the IAPWS Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam, IAPWS R7-97(2012), Lucerne, Switzerland, August 2007 (revision of region 5). Consulted in full.
  2. [2] Wagner, W., Cooper, J. R., Dittmann, A., Kijima, J., Kretzschmar, H.-J., Kruse, A., Mareš, R., Oguchi, K., Sato, H., Stöcker, I., Šifner, O., Takaishi, Y., Tanishita, I., Trübenbach, J., Willkommen, Th., The IAPWS Industrial Formulation 1997 for the Thermodynamic Properties of Water and Steam, J. Eng. Gas Turbines & Power 122, 150–182 (2000). Further reading — not consulted (cited in [1]).
  3. [3] IAPWS, Revised Supplementary Release on Saturation Properties of Ordinary Water Substance (1992). Further reading — not consulted (cited as [12] in [1]; source of the saturated-density correlations used near the critical point, attribution taken from the v1.0.0 documentation).
  4. [4] Python package iapws 1.5.5 (implementation of IAPWS-IF97), used only as an independent implementation at build time. Used as a program; source not audited.

Antranova model basis

  1. [A1] Antranova Engineering AB, T–s Diagram Simulator, version 1.0.0, released 2026-09-17 (source of the property kernel, the isoline construction and the interface behaviour).

About & Licence

T–s Diagram Simulator

AntraSIM simulator family · Antranova Engineering AB

Licence.
Software origin and intellectual property. This tool — the IAPWS-IF97 implementation, the inverse solvers, the isoline construction and the user interface — is the original software work of Antranova Engineering AB, developed on its own equipment and time. It contains no employer, client or third-party confidential material and no plant-specific data. Antranova does not claim ownership of physical laws, the published IAPWS-IF97 formulation and its data, published correlations or other generally known engineering methods; the formulation is a published international standard that is freely implementable.
Engineering-use disclaimer. Provided for engineering guidance, analysis and training. Results requiring safety, regulatory, contractual or operational significance shall be independently verified against an independent property source. The process classification and the cycle totals are rule-based interpretations of the state points; the tool is not validated against measured or plant data and is not safety-grade.

Verification suite

Not run.

Runs the release verification set in this browser using the same property and solver code as the simulator. It does not alter the current case. Software verification and numerical accuracy only — this is not physical validation. See Theory & Method §8.

IDTestAcceptance criterionResultMeasured