Antranova Engineering AB

h–s (Mollier) Diagram Simulator

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

AntraSIM0050
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

About & Licence

h–s (Mollier) 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

Theory & Method

h–s (Mollier) Diagram Simulator · AntraSIM v1.1.0

Theory & Method

h–s (Mollier) Diagram Simulator · AntraSIM-0050 · 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.81e-9 in the region 1 table and 2.87e−9 over T1–T4), the region-boundary consistency reported in the release, and an independent implementation on 1152 single-phase states (largest relative deviation of the specific volume 4.43e−13, of the enthalpy 2.53e−10 kJ/kg absolute). 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 simulation, and the twelve process examples of §6 are illustrations computed by the same solvers, not plant data.

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 §8. Every number in the tables and in the text of §5, §6 and §8 was produced by the code of this release when the document was built; none was typed by hand.

1. Physical Background

Intuition An h–s diagram (Mollier diagram) plots specific enthalpy against specific entropy. Enthalpy is the quantity that a steady stream of fluid carries with it, so in this diagram energy transfers are vertical distances: the work of an adiabatic turbine or pump and the heat of an isobaric heater or condenser are read as differences in height. Entropy grows whenever a process is irreversible, so an ideal (reversible, adiabatic) machine is a vertical line and every real machine leans to the right. A throttling valve does neither work nor heat exchange: enthalpy stays constant and the state moves horizontally to the right. The bell-shaped curve is the boundary between liquid, the two-phase mixture inside it and vapour; the left branch is saturated liquid (x = 0), the right branch saturated vapour (x = 1).

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 h–s plane→process interpretation between points

The geometry of the diagram follows from the fundamental relation of a simple compressible substance,

dh=Tds+vdp

At constant pressure it gives the slope of an isobar in the (s, h) plane, and along an isentrope it gives the enthalpy change of a pump or an ideal turbine:

(∂h∂s)p=T,(∂h∂p)s=v,Δhs=∫12vdp

Isobars therefore rise from left to right and become steeper with temperature. Inside the dome pressure and temperature are tied to each other, so an isobar is a straight line with the constant slope Tsat(p), and an isotherm inside the dome coincides with the isobar. In the vapour at low pressure the enthalpy hardly depends on pressure (ideal-gas behaviour), so isotherms become nearly horizontal there. The quality of a mixture is the position of the state on the straight isobar between the saturation points (lever rule, §3).

Engineering interpretation The specific work of an adiabatic machine is w = −Δh, the heat of an isobaric exchanger q = Δh (first law for steady flow, §3). The isentropic efficiency of a turbine is the ratio of two vertical distances taken from the same inlet point: the actual drop Δh and the isentropic drop Δhs. The horizontal displacement of the actual end state from the isentropic one is the entropy generated in the machine. A steam-cycle sketch on the diagram is therefore a direct picture of the energy balance, in contrast to the T–s diagram in which heat is an area; the price is that the mean temperature of heat addition is not visible as an area but as the slope of the chord that joins two states of an isobar.

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 (§10). The enthalpy and entropy scales use the reference of the release (saturated liquid at the triple point: u = s = 0).

2. Assessment of the Source Models

Changes in v1.0.1 and v1.1.0 Version 1.0.1 restyled the application to the AntraSIM family standard (light theme, layout, dialogs, keyboard control, IC save and load), added the eleven process examples of §6 and the verification tests T12 and T18–T22 (T1–T11 and T13–T17 replace the “Verify IF97” button of v1.0.0, which checked 30 reference values and an (h, s) inversion sweep that excluded liquid states and reported no pass or fail per test). Version 1.1.0 adds independent process paths (several paths in one diagram, each with its own name, colour, line style and visibility; the first point of a new path is never connected to an earlier path), a complete settings export and import that carries all paths, the twelfth example (6.12, two throttling paths), the correction of the disappearing curves (A-19, test T23) and 0.2 bar and 2 bar in the default isobars (18 entries, a 1-2-5 sequence from 0.05 bar to 1000 bar). The IC schema is now 2 (schema 1, one list of state points, is converted to “Path 1”); the thermodynamic model, the isoline construction and the solvers are unchanged. The findings A-1 to A-19 below were made when v1.0.1 and v1.1.0 were prepared.

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, with the T–s Diagram Simulator v1.0.2 (whose kernel is the same code with the correction A-4) 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 and code disagree, the executable model is implemented.

IDFinding in v1.0.0Size (from this implementation)Resolution
A-1Property kernel (regions 1–4) against the published verification values of the release.max relative deviation 2.81e-9 (region 1), 2.10e-9 (region 2), 2.10e-9 (region 3), 2.87e-9 (region 4 and B23) (T1–T4).Retained unchanged. The kernel is the audited kernel of the T–s Diagram Simulator v1.0.2, which differs from the v1.0.0 kernel of this tool only in A-4 and A-16.
A-2Consistency of regions 2/3 and 1/3 at the region boundaries (not tested in v1.0.0).2/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). 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: 3.80e-2 kJ/kg, 6.24e-2 J/(kg K), 1.00e-2 % (Prague values 0.2, 0.2, 0.05).Retained; new test T8.
A-4A state given exactly on the saturation line by (p, h), (p, s) or (h, s) is not found: the two-phase test compares with round-off-sensitive equality. The click solver of the diagram, (h, s), is affected in the same way.17 of 48 boundary states (12 temperatures × x = 0, 1 × (p, h), (p, s)) and 9 of 24 with (h, s) returned no state.Corrected. A relative tolerance of 1e-9 assigns such states to the saturation boundary; see A-16 for the second part of the same defect (T12).
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.4: up to 0.16 kJ/kg at Tc − T = 2.1 K and 6.4 / 3.7 kJ/kg (liquid / vapour) at 0.6 K. Effect on the plotted dome below 0.010 kJ/(kg·K), invisible on the diagram.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: a WARNING is shown for every point defined by (T, s) below about 4 °C.
A-7A basis change in the table silently moved the point: a single-phase state changed to (p, x) or (T, x) was put on the saturation line, a two-phase state changed to (p, T) became saturated liquid.Deviation of the state by construction (not representable).The move is reported in the table editor. T13 excludes these non-representable conversions and checks all others.
A-8Pressures above 100 MPa entered in (p, h) or (p, s) were silently reduced to 100 MPa by the solver.The input (200 MPa, 3000 kJ/kg) returned a state at 1000 bar.Input limits: pressure 1e-4 … 1000 bar for every basis; out-of-range input is marked and rejected (T18). The kernel keeps its clamp; it is not reachable from the interface.
A-9Point names were inserted unescaped into innerHTML and attribute values (state card, table); a name or 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 (the document-stream write method, a pattern that antivirus heuristics flag).—Built with DOM APIs; the identical editor stays in the page.
A-11CSV import applied a file partially (rows that could not be read or resolved were skipped and only counted), a number followed by text was accepted (“500x” is read as 500), and the isoline lists dropped entries that are not numbers without a message.parseFloat(“500x”) = 500; the list “1, x, 3” became [1, 3].Strict parser; the whole file is rejected on any error with line-numbered messages, lists with a non-number are marked invalid (T17, T18). 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 line); a WARNING is shown for points below 0 °C.
A-14The click basis (h, s) determines the pressure only weakly in the compressed-liquid corner (h and s of liquid hardly depend on p); no warning was given.Round-trip error of the pressure in the liquid region 8.40e-6 relative (elsewhere 1.81e-8); h and s are reproduced to 1e-5 kJ/kg.Retained; a WARNING recommends (p, T) or (p, x) for points in the compressed-liquid corner (T10).
A-15The isoline sets needed a “Rebuild isolines” button.Default build 20 ms (Node 22).Rebuilt automatically after every valid change (debounced); the button is removed.
A-16New in this audit. Even with the tolerance of A-4, a state within about 1 µK of the saturation line on the single-phase side (2 to 10 parts per billion of h or s) fell into a gap between the saturation test and the search bracket and returned no state. Saturated liquid at 450 K in (h, s) is an example.Sweep of 4476 saturation states (274 … 646.5 K in steps of 0.5 K, x = 0, 1, (p, h), (p, s), (h, s)): v1.0.0 1410 failures, with A-4 only 58, this release 0.Corrected in the single-phase search of the (p, h) and (p, s) solvers: a state in the gap is returned at the bracket end (temperature error below 1 µK). This is the only other change of the numerical kernel (T12). The T–s Diagram Simulator v1.0.2 has the same defect.
A-17New in this audit. The saturated liquid and vapour jump at Tc − 1 K, where the formulation changes from the equilibrium densities of region 3 to the saturated-density correlation alone.Liquid: Δsf = 7.01 J/(kg·K), Δhf = 4.51 kJ/kg, Δvf = 0.87 %; vapour: 6.56 J/(kg·K), 4.23 kJ/kg, 0.72 %.Retained and documented (this is the origin of the large deviations of A-5 very close to Tc); measured in T19. It is below the width of a line on every axis range that shows the dome. The dome-ordering test excludes this one grid step.
A-18No Input Configuration (IC) could be saved or loaded, the CSV export carried no configuration, and the export file names had no application id, version or time stamp. There was no Theory & Method, no verification dialog with criteria and no About dialog with licence terms of the family.—IC schema 1 (transactional load, explicit migrations, unit suffixes; schema 2 since v1.1.0), CSV with # metadata and the full IC as one line, file names AntraSIM-0050_HS_DiagramSimulator_<kind>_<time>.<ext>, this document, the verification suite (T1–T24) and the About & Licence dialog (T16, T17).
A-19Curves whose end points lie far outside the plotting window were dropped instead of clipped: the dome part of a low-pressure isobar is one straight segment from the saturated liquid (s = 0.5 kJ/(kg·K) at 0.05 bar) to the saturated vapour, and when the axis range was narrowed (buttons “Mollier” and “Wet steam”, then a higher s min and h min) the point outside the window was discarded together with the whole segment, so the isobars disappeared in the wet-steam region. Any other curve with a segment that ends far outside the window is affected in the same way. The drawing routine of v1.0.0 discards points more than 2000 px outside the window; the version delivered as 1.0.1 used 1500 px.In the window 5.5 … 9 kJ/(kg·K) × 1800 … 3000 kJ/kg the dome parts of the low-pressure isobars vanished (see the reproduction in the delivery note).Segment-wise clipping of every curve to the window (Liang–Barsky), also for the placement of the isoline labels; the root cause is the filter that removed every point outside a fixed margin, together with the segment that starts or ends at it. Test T23 checks 520 curve × window combinations: no curve that crosses the window is dropped, no point lies outside it.

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, h) 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 seven bases; the solver of Table 4.1 completes the state. A click in the diagram creates a point in the basis (h, s) — the coordinates of the plot — and 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 T and the saturation and B23 lines)
p, xp as abovex 0 … 1saturation + lever rule (p below pc)
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 up to Tc)
T, sT 0 … 800 °Cs −1 … 15 kJ/(kg·K)dome test, then scan and bisection in p (not unique below about 4 °C, A-6)
h, sh −10 … 4500 kJ/kgs −1 … 15 kJ/(kg·K)nested search in ln p (pressure weakly determined in compressed liquid, A-14)

Limits are those of the fields; a state outside the IAPWS-IF97 range is rejected with a message. Up to 200 points in up to 12 process paths; point names 1–16 characters, path names 1–48 characters. The points of a path are ordered: segment i connects point i to point i + 1 of the same path (a loop is not closed automatically; a cycle is closed by repeating its first point). There is never a segment between two paths.

Display inputs Axis range (h −1000 … 6000 kJ/kg, s −2 … 20 kJ/(kg·K), spans ≥ 10 kJ/kg and ≥ 0.1 kJ/(kg·K)), the layers, the isobar list (≤ 40 entries, 0.005 … 1000 bar), the isotherm list (≤ 40 entries, 0.01 … 800 °C) 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. Isotherms are drawn in the single-phase regions only; inside the dome an isotherm is the isobar of the same temperature.

Input Configuration (IC) and CSV The settings file (“Export settings” and “Import settings”; an Input Configuration, IC) is a JSON file (format “AntraSIM-input-configuration”, schemaVersion 2, application id AntraSIM-0050) with unit suffixes in every key (enthalpyMin_kJ_per_kg, entropyMax_kJ_per_kgK, temperatures_C, …). It stores the layers, the axis range (with the name of the preset, Standard, Mollier, Wet steam or Critical, when the range equals one), the isobar, isotherm and isochore lists, the add-point inputs and paths: for every path its name, color (#rrggbb), lineStyle (solid, dashed or dotted), visible and the ordered statePoints (basis and two values, not the derived states), followed by activePath (the selected path, or null) and drawing (whether the next point extends it). Loading is all-or-nothing, including the resolution of every point and the check of every path; a rejected file changes nothing and the message names the reasons. Schema 1 (versions 1.0.x: one list of state points) is converted to a single path named “Path 1”; missing optional fields (colour, line style, visibility, selected path, drawing state) get defaults. The process examples of §6 do not change the schema. The CSV is semicolon-separated with ASCII column names name;basis;value1;value2;h [kJ/kg];…;region;path (the last column names the path), # metadata lines and the full IC as one # line; on import name, basis, the two values and the path name are read (comma or semicolon delimiter, decimal comma with semicolons), files written by v1.0.x are accepted (also files with only h and s columns). The points are appended: every path name in the file creates a new path (an existing name gets the suffix “(2)”), rows without a path name extend the path in progress or form one new path, and the whole file is rejected on any error.

Process paths A path is drawn by clicking in the diagram, by “Add point by state” or by pressing New path. While a path is in progress every new point extends it; Finish path ends it, and the next point then starts a new path with a new colour, so that two paths can never be joined by accident. The list “Process paths” names the path in progress, selects a path (its segments and cycle totals appear in the right-hand panel and its line is drawn thicker), continues drawing a finished path (✎), hides or shows it, changes its line style and deletes it; a path is renamed in place and coloured with the colour field. A single point is deleted in the state-point table, all paths by “Delete all paths” (the axis range, the layers and the isoline lists stay). Hidden paths are neither drawn nor hit by the pointer; a PNG export contains every visible path, its points and a legend. Selecting a point of another path selects that path and ends the drawing of the previous one.

Reference configuration Layers as in v1.0.0 (isochores off), axis 0 … 4000 kJ/kg and 0 … 9.5 kJ/(kg·K), the isotherm and isochore defaults of v1.0.0 and the isobar default of v1.0.0 with 0.2 bar and 2 bar added (18 entries), an empty point list. “Restore defaults” restores all of it. The axis presets of v1.0.0 (Standard, Mollier, Wet steam, Critical) are kept. The Rankine demo and the process examples of §6 are not part of the reference configuration; loading one replaces the state 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 vertical lines; if “True process paths” is on, isenthalpic, isobaric and isothermal segments follow the horizontal line of constant enthalpy through the intermediate pressures, 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 Over all segments of the selected 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 (T14, T21). For open chains the totals have no meaning; the examples of §6 that are single processes say so in the Messages panel.

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, T500.000070–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, qin = 3266.5 kJ/kg and ηth = 35.84 % for a plain subcritical Rankine cycle, with an exhaust quality of 0.865. The turbine drop is the vertical distance between points 3 and 4, the pump step 1→2 is almost invisible on the diagram.

6. Process Examples

Intuition An h–s diagram becomes useful when you read a whole process in it. The twelve examples below are ready-made chains of state points (one process path each, two paths in 6.12) that can be loaded from Process examples in the left panel. Each one isolates one idea: how a turbine expansion line and its isentropic efficiency look in the diagram, how a Rankine cycle and its reheat variant are drawn with vertical distances as work and heat, why pumping a liquid costs so much less than compressing a vapour, why several stages recover more than one, how wetness develops in a wet-steam expansion, why a supercritical boiler has no boiling line, how a throttling calorimeter measures wetness, what a turbine bypass costs, how a geothermal flash produces steam from hot water, where hot water starts to boil when it is suddenly depressurised, and how two throttling processes from different pressures end at very different outlet temperatures (6.12, the only example with two independent paths). Loading an example replaces all paths and the axis range; the layers, isoline sets and add-point inputs are kept and the IC schema (2) is not changed by the examples. Every point remains editable in the table (§4), 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 (§1) ties the diagram to the enthalpy change; the steady-flow first law q − w = Δh (§3) turns enthalpy differences into heat and work; and the second law says that entropy can only be generated, never destroyed.

work out (move down along an isentrope)→irreversibility (drift to the right)→heat added (move up along an isobar)→heat rejected (move down along the condenser isobar)

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−∫δqT ≥0,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:

ηis=hin−houthin−hout,s⟺hout=hin−ηis(hin−hout,s)

The turbine examples use ηis = 0.88 (0.85 per stage in 6.5). 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.2, 6.3, 6.4); the other examples are single processes or chains and say so in the Messages panel. The segments and the totals in the right-hand panel always belong to the selected path. Two families are deliberately not included because the diagram represents one stream only: a turbine with moisture separator and feedwater preheaters (bled and mixed streams) and a two-stream steam generator; they are left for a later version.

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; in the h–s plane it is the ratio of the two vertical distances that are drawn.

6.1 Steam turbine expansion line

Intuition Steam that expands in a turbine gives off enthalpy as work. An ideal turbine would move the state straight down along a vertical line; a real one ends higher and to the right, because friction and mixing generate entropy and turn part of the work back into heat. The whole idea of the isentropic efficiency is visible as two vertical distances.

Physical mechanism Steam of 40 bar and 450 °C (1) expands adiabatically to 5 bar. The isentropic end state 2s has the entropy of the inlet; the actual end state 2 lies on the same 5 bar isobar at a higher enthalpy. The chord 1→2 is a straight line in the diagram, not the real path of the steam; the real path is unknown between the end points, only the end points are fixed.

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, T40450450.0040–3330.996.9383polytropic
2p, h52863.22203.425–2863.227.0765isobaric
2sp, s56.93833174.135–2799.436.9383isentropic
1′p, T40450450.0040–3330.996.9383—

Mathematical formulation The isentropic efficiency of a turbine and the entropy generated by the expansion:

ηis=h1−h2h1−h2s=ΔhΔhs,sgen=s2−s1 ≥0

Engineering interpretation The isentropic drop is Δhs = 531.56 kJ/kg (vertical distance 1→2s), the actual drop Δh = 467.77 kJ/kg, so ηis = 0.8800. The exhaust is superheated at 203.4 °C, the entropy generated is 0.1382 kJ/(kg·K) and the exergy destroyed 41.2 kJ/kg. The lost part of the isentropic drop, 63.79 kJ/kg, is the vertical distance 2s→2 along the exit isobar; it is not lost as energy but returned to the steam as internal heat.

Table 6.2 — Effect of the isentropic efficiency (40 bar / 450 °C to 5 bar), generated from the code.

ηis [–]Δh [kJ/kg]h2 [kJ/kg]T2 [°C]sgen [kJ/(kg·K)]ed [kJ/kg]
0.80425.22905.7223.50.225667.3
0.85451.82879.2210.90.171451.1
0.88467.82863.2203.40.138241.2
0.92489.02842.0193.50.093127.8
1.00531.62799.4174.1−0.0000−0.0

Try this Set point 2 to basis (p, h) with 5 bar and 2905.7 kJ/kg (ηis = 0.80): the segment panel reports 80 % and the point moves to the right, further from the isentrope. Assumptions and limitations Adiabatic, steady, one stream; the efficiency is an input, not a result of a blade model.

6.2 Rankine cycle

Intuition The steam cycle in the Mollier diagram has a very simple reading: the pump is a tiny vertical step, the boiler a long climb up the boiler isobar, the turbine a long drop that leans to the right, and the condenser a short slide down the condenser isobar. Heat and work are all vertical distances.

Physical mechanism The condensate (1, saturated liquid at 0.05 bar) is pumped almost without heating (2). The boiler heats it at 100 bar through boiling to steam of 500 °C (3), the turbine expands it adiabatically with ηis = 0.88 to the condenser pressure (4), and the condenser removes heat at constant pressure and temperature until the liquid is saturated again (1′ = 1).

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, x0.05032.880.050.0000137.770.4763isentropic
2p, s1000.47625433.12100–147.790.4763isobaric
3p, T100500500.00100–3375.066.5993polytropic
4p, h0.052175.1932.880.050.84092175.197.1340isobaric + isothermal (phase change)
1′p, x0.05032.880.050.0000137.770.4763—

Mathematical formulation Pump work follows from the fundamental relation with a constant specific volume of the liquid; heat and work of the other steps follow from the first law. Because the boiler process is isobaric, the heat added can also be written as an integral over the entropy, and the mean temperature of heat addition is the slope of the chord 2→3:

wp=h2−h1≈v1(p2−p1),qin=h3−h2=∫23Tds=Tm(s3−s2),qout=h4−h1=T1(s4−s1)
ηth=wt−wpqin=1−qoutqin,Tm=h3−h2s3−s2

Engineering interpretation The pump takes 10.03 kJ/kg (the approximation v1Δp gives 10.05 kJ/kg), the turbine delivers 1199.9 kJ/kg, the boiler needs 3227.3 kJ/kg and the condenser rejects 2037.4 kJ/kg: wnet = 1189.8 kJ/kg and ηth = 36.87 %. The exhaust quality is 0.841. The mean temperature of heat addition is only 253.9 °C, although the steam leaves the boiler at 500 °C; the liquid is heated at rising temperature (2→3 starts at 33.1 °C). With the condenser at 32.9 °C the Carnot efficiency between these two mean temperatures would be 41.94 %; the remainder is mostly the loss from turbine irreversibility.

Table 6.4 — Effect of the boiler pressure (500 °C, 0.05 bar, ηis = 0.88), generated from the code.

pboiler [bar]ηth [%]wnet [kJ/kg]xexhaust [–]
4034.061125.50.8991
7035.841170.70.8649
10036.871189.80.8409
15037.871195.90.8097
20038.411184.40.7837

Higher boiler pressure raises the efficiency (a higher mean temperature of heat addition) and dries the exhaust less: the exhaust gets wetter, which is the reason for reheat (6.4).

Table 6.5 — Effect of the boiler temperature (100 bar, 0.05 bar, ηis = 0.88), generated from the code.

Tboiler [°C]ηth [%]wnet [kJ/kg]xexhaust [–]
40035.571049.20.7843
45036.221120.80.8146
50036.871189.80.8409
55037.531258.60.8648
60038.191328.30.8872

Try this Change point 3 to 550 °C, add a point (p, s) at 0.05 bar with the entropy of point 3, and set point 4 by the recipe of the introduction; the cycle totals then reproduce the 550 °C row of Table 6.5. Assumptions and limitations No pressure drop, no feed heating, isentropic pump; single-stage expansion with a constant efficiency.

6.3 Pump work against compressor work

Intuition Why do power plants condense the steam before raising the pressure? Because raising the pressure of a liquid is cheap and raising the pressure of a vapour is expensive. In the diagram the two steps have the same form, a vertical line, but very different lengths.

Physical mechanism Along an isentrope the enthalpy change is ∫v dp. A liquid has a specific volume of about 1 litre per kg and hardly changes it under compression; a vapour at 1 bar occupies about 1.7 m³/kg. The example is an ideal cycle between 1 bar and 20 bar: the pump lifts saturated liquid (1→2), the boiler heats it at 20 bar to the entropy of saturated vapour at 1 bar (2→3), the isentropic expansion 3→4 is the same vertical line that a compressor would have to climb backwards, and the condenser closes the cycle.

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, x1099.6110.0000417.441.3026isentropic
2p, s201.3025699.7420–419.421.3026isobaric
3p, s207.35881474.2420–3411.337.3588isentropic
4p, x1199.6111.00002674.957.3588isobaric + isothermal (phase change)
1′p, x1099.6110.0000417.441.3026—

Mathematical formulation With v1 and v4 the specific volumes of saturated liquid and saturated vapour at 1 bar:

wp=∫12vdp≈v1(p2−p1),wc=∫43vdp=h3−h4,wcwp~v4v1

Engineering interpretation The pump needs 1.98 kJ/kg (v1Δp = 1.98 kJ/kg); compressing the same mass as vapour along 4→3 takes 736.4 kJ/kg, 372 times as much. The ratio is smaller than v4/v1 = 1624 because the vapour volume shrinks during compression. The cycle as a whole reaches ηth = 24.55 % and its back-work ratio is only 0.27 %. The result explains why the steam cycle condenses before it pumps and why a gas cycle, which compresses a gas, gives away a large part of its turbine work.

Try this Change the pressure of points 2 and 3 to 40 bar (basis p, s): the pump step grows in proportion to Δp, the vapour step grows less than proportionally, and the ratio falls. Assumptions and limitations Ideal machines; the cycle is not a plant proposal (the turbine exhausts to a state that is not the condenser state of an ordinary plant).

6.4 Rankine cycle with reheat

Intuition Expanding steam in a turbine moves the state down and slightly to the right; if the pressure is high, the state ends in the wet region, where droplets erode the blades. Reheat takes the steam out of the turbine part-way, heats it again to the original temperature and returns it: the second expansion starts far from the dome and ends much drier.

Physical mechanism The condensate (1) is pumped to 160 bar (2), heated to 540 °C (3) and expanded in the high-pressure turbine to 40 bar (4). The reheater heats the steam at constant pressure back to 540 °C (5), the low-pressure turbine expands it to 0.05 bar (6) and the condenser closes the cycle. In the diagram the reheater is a second climb along an isobar; the two turbine steps are two separate leaning lines.

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, x0.05032.880.050.0000137.770.4763isentropic
2p, s1600.47625433.27160–153.790.4763isobaric
3p, T160540540.00160–3412.126.4494polytropic
4p, h403059.52336.6240–3059.526.5294isobaric
5p, T40540540.0040–3537.347.2073polytropic
6p, h0.052358.3932.880.050.91652358.397.7326isobaric + isothermal (phase change)
1′p, x0.05032.880.050.0000137.770.4763—

Mathematical formulation Heat and work are sums over the two expansions and the two heat additions:

qin=(h3−h2)+(h5−h4),wt=(h3−h4)+(h5−h6),ηth=wt−wpqin

Engineering interpretation The exhaust quality is 0.9165 against 0.8260 without reheat; the efficiency is 40.56 % against 38.57 %, and wnet = 1515.5 kJ/kg. The efficiency gain is small compared with the drier exhaust, which is the main reason for reheat; it comes from adding part of the heat at a higher mean temperature.

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

preheat [bar]ηth [%]wnet [kJ/kg]xexhaust [–]
none38.571256.80.8260
539.821648.7superheated
1040.291621.60.9920
2040.591581.00.9550
4040.561515.50.9165
6040.321461.30.8927
8040.011413.70.8748

The efficiency has a flat maximum at an intermediate reheat pressure (here at 20 bar in the tested set); a high reheat pressure leaves little steam to reheat, a low one returns too little of the heat at high temperature. Try this Change points 4 and 5 to a reheat pressure of 20 bar (point 4 by the recipe of the introduction, point 5 as (p, T) = 20 bar, 540 °C) and compare the totals with the row of Table 6.8. Assumptions and limitations No pressure drop in the reheater and its piping, isentropic pump, the same efficiency for both turbines.

6.5 Reheat factor of a multistage turbine

Intuition A multistage turbine with a stage efficiency of 85 % is more efficient as a whole than 85 %. The heat that a stage turns back into the steam through friction is not lost: the next stage expands the warmer steam and gets a little of it back as work.

Physical mechanism Constant-pressure lines fan out in the h–s plane: the vertical distance between two given isobars is larger at a larger entropy, because (∂h/∂p)s = v and the steam is more voluminous when it is warmer. Each stage ends to the right of the isentrope of its inlet, so the next stage starts where the isobars are further apart and has a larger isentropic drop available. The example has four stages of 85 % between 100 bar / 540 °C and 0.05 bar (exit pressures 15, 2, 0.3 and 0.05 bar). Point 5s is the isentropic end state of the whole expansion.

Table 6.9 — Points of the reheat-factor example (generated from the code).

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, T100540540.00100–3476.876.7277polytropic
2p, h153014.31289.2815–3014.316.8777polytropic
3p, h22669.14120.2120.98312669.147.0325polytropic
4p, h0.32417.4569.100.30.91132417.457.1623polytropic
5p, h0.052218.932.880.050.85892218.907.2768isobaric + isothermal (phase change)
5sp, s0.056.7277332.880.050.78962050.876.7277isentropic
1′p, T100540540.00100–3476.876.7277—

Mathematical formulation With Δhs,i the isentropic drop of stage i from its own inlet state and Δhs the isentropic drop of the whole expansion:

RF=∑iΔhs,iΔhs >1,ηo=ΔhΔhs=∑iηisΔhs,iΔhs=ηisRF

Engineering interpretation The overall isentropic drop (vertical distance 1→5s) is 1426.0 kJ/kg; the stage drops add up to 1480.0 kJ/kg, so RF = 1.0378 and the overall efficiency is 0.8822 against the stage efficiency 0.85. The exhaust quality is 0.8589.

Table 6.10 — Effect of the number of stages (equal pressure ratio per stage, 100 bar / 540 °C to 0.05 bar, ηis = 0.85 per stage), generated from the code.

StagesRF [–]ηo [%]xexhaust [–]
11.000085.000.8778
21.021986.860.8669
41.037988.220.8589
81.045788.880.8550
161.049589.200.8531

One stage has RF = 1 by definition; the factor grows with the number of stages and saturates. Try this Move point 3 to a different pressure (recipe of the introduction) and read the stage efficiencies in the segment panel: they stay at 0.85 while the overall Δh/Δhs does not. Assumptions and limitations Equal stage efficiency, no bleed, no leaving loss; the cycle totals do not apply.

6.6 Wet-steam expansion

Intuition Steam that starts as saturated vapour and expands in a turbine immediately enters the two-phase region: it condenses while it expands. The quality lines cut across the expansion line and show how wet the steam becomes.

Physical mechanism Saturated vapour of 70 bar (1) expands to 0.05 bar with ηis = 0.88 (2). Point 3 is saturated vapour at the exhaust pressure, the state that a separator and a reheater would have to reach; the distance 2→3 is the drying that has not taken place. The friction of the real expansion generates heat that evaporates part of the liquid, so the actual exhaust (2) is drier than the isentropic one.

Table 6.11 — Points of the wet-steam example (generated from the code).

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, x701285.83701.00002772.575.8146polytropic
2p, h0.051891.5832.880.050.72381891.586.2072isobaric + isothermal (phase change)
3p, x0.05132.880.051.00002560.778.3939—

Mathematical formulation The quality at the exhaust follows from the lever rule at the exhaust pressure with the enthalpy of the actual end state:

h2=h1−ηis(h1−h2s),x2=h2−hf(p2)hg(p2)−hf(p2)

Engineering interpretation The turbine drop is 881.0 kJ/kg; the exhaust quality is 0.7238 (27.6 % liquid by mass), against 0.6742 for the isentropic expansion. A moisture content of this size is far beyond what a steam turbine blade tolerates (values of the order of 10–15 % are often quoted as the limit; a rule of thumb that is not modelled here), which is why saturated-steam turbines use moisture separators between stages.

Table 6.12 — Exhaust quality as a function of the isentropic efficiency (saturated vapour 70 bar to 0.05 bar), generated from the code.

ηis [–]xexhaust [–]moisture [%]
0.800.756924.3
0.880.723827.6
0.950.694930.5
1.000.674232.6

Try this Set point 2 to (p, h) = 0.05 bar with the enthalpy of another ηis and watch the quality in the Selected-state panel. Assumptions and limitations Equilibrium two-phase states; droplet lag and subcooling of the vapour in a real turbine are not represented; cycle totals do not apply.

6.7 Supercritical boiler

Intuition Above the critical pressure (220.64 bar) water never boils: as it is heated, its density falls continuously and it turns from liquid-like to gas-like without a plateau. In the h–s diagram the isobar has no straight section inside the dome, because it never enters it.

Physical mechanism Heating at 250 bar from 300 °C (1) to 600 °C (4) passes the pseudo-critical temperature (2), where the specific heat has a sharp maximum. The specific volume rises from 0.00135 to 0.0141 m³/kg along the way. The enthalpy still changes smoothly, but in a narrow temperature range it changes fast.

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, T250300300.00250–1331.063.1915isobaric
2p, T250384.87384.87250–2151.214.4955isobaric
3p, T250500500.00250–3165.925.9642isobaric
4p, T250600600.00250–3493.696.3638—

Mathematical formulation Because the process is isobaric, the heat added is the enthalpy difference and can also be written with the entropy; the pseudo-critical temperature is the maximum of the specific heat:

q=h4−h1=∫14Tds=Tm(s4−s1),cp=(∂h∂T)p,Tpc: maxTcp

Engineering interpretation The heat added is 2162.6 kJ/kg at a mean temperature of 408.6 °C; the pseudo-critical point of 250 bar lies at 384.87 °C, where ∂h/∂T = 71.1 kJ/(kg·K). Table 6.14 shows how the maximum flattens and moves with pressure; Table 6.15 counts the two-phase states met by a scan of the isobar between 300 °C and 600 °C: below the critical pressure the isobar crosses the dome, above it never.

Table 6.14 — Pseudo-critical temperature and maximum of ∂h/∂T, generated from the code.

p [bar]Tpc [°C](∂h/∂T)max [kJ/(kg·K)]
250384.8771.1
300402.0726.7
400431.3313.2

Table 6.15 — Two-phase states met by a scan of 301 states on the isobar between 300 °C and 600 °C, generated from the code.

p [bar]crosses the dometwo-phase states
150yes134
200yes79
250no0
300no0

Try this Change all four points to 150 bar: the boiling line appears as a straight section of the isobar and the cycle-like reading of the heat addition changes from a curve to a chord with a plateau. Assumptions and limitations The states lie in regions 1, 2 and 3; cp is not provided in region 3 and is obtained by a central difference of the enthalpy (0.01 K); the cycle totals do not apply.

6.8 Throttling calorimeter

Intuition You cannot see how wet steam in a pipe is. A throttling calorimeter measures it by letting a small sample of the steam expand through a valve into the atmosphere: if the steam is only slightly wet, it comes out dry and even superheated, and its temperature tells the wetness.

Physical mechanism Throttling in a well-insulated valve does no work and exchanges no heat, so the enthalpy is conserved: the state moves horizontally to the right (1→2), and the entropy rises because the process is irreversible. The wet steam of 10 bar (1, x = 0.97) ends at 1 bar with a temperature above the saturation temperature (2). The distance 2→3 down to the saturated-vapour line is the superheat that proves that the state is measurable.

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, x100.97179.89100.97002716.696.4516isenthalpic (throttling)
2p, h12716.69120.041–2716.697.4678isobaric
3p, x1199.6111.00002674.957.3588—

Mathematical formulation The energy balance q − w = Δh with q = w = 0 gives constant enthalpy; the wetness follows from the lever rule at the upstream pressure:

h2=h1=hf(p1)+x1hfg(p1),x1=h2−hf(p1)hfg(p1)

Engineering interpretation For steam of 10 bar (hf = 762.7 kJ/kg, hg = 2777.1 kJ/kg) and x = 0.97 the enthalpy is 2716.7 kJ/kg. After the valve the steam has 120.04 °C, 20.4 K above the saturation temperature of 1 bar (99.61 °C). The method fails when the steam is so wet that the throttled state is still saturated: the lower limit is x = 0.9493 for these pressures.

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

x1 [–]h [kJ/kg]T2 [°C]superheat [K]
0.902575.799.610.0
0.942656.399.610.0
0.972716.7120.0420.4
0.992757.0140.1440.5

Try this Change point 1 to x = 0.94 and read its enthalpy in the Selected-state panel (2656.3 kJ/kg); enter that value for point 2 (basis p, h, 1 bar) and read the temperature (99.61 °C). Assumptions and limitations Adiabatic, negligible kinetic energy; the cycle totals do not apply.

6.9 Turbine bypass and desuperheating

Intuition When a turbine trips, the boiler cannot stop at once. The steam is sent past the turbine through a valve to the condenser. The valve wastes all the work that the turbine would have produced: a long horizontal line in the Mollier diagram, from the high-pressure isobar to the condenser isobar at the same enthalpy.

Physical mechanism Fresh steam of 70 bar / 500 °C (1) is throttled to the condenser pressure of 0.05 bar (2); the enthalpy is unchanged, the pressure drops by a factor 1400 and the temperature by only a few tens of kelvin, because steam at low pressure behaves almost like an ideal gas and an ideal gas does not change its temperature in a throttle. A desuperheater then cools the steam by water injection to saturated vapour (3) and the condenser condenses it (4).

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, T70500500.0070–3411.256.7997isenthalpic (throttling)
2p, h0.053411.25462.950.05–3411.2510.1156isobaric
3p, x0.05132.880.051.00002560.778.3939isobaric + isothermal (phase change)
4p, x0.05032.880.050.0000137.770.4763—

Mathematical formulation The valve is isenthalpic and adiabatic; its entropy generation is the horizontal distance 1→2. The mass of injection water per kg of steam follows from an energy balance over the desuperheater, with the injection water taken as saturated liquid at the condenser pressure (assumption):

h2=h1,ed=T0(s2−s1),r=m˙wm˙s=h2−h3h3−hw

Engineering interpretation The throttle lowers the temperature only from 500 °C to 463.0 °C, while the entropy grows by 3.316 kJ/(kg·K) and 988.6 kJ/kg of exergy is destroyed; the isentropic drop that a turbine could have used between the same pressures would be 1338.3 kJ/kg. The desuperheater needs 0.351 kg of water (saturated liquid at 32.9 °C, 137.8 kJ/kg) per kg of steam.

Table 6.19 — Effect of the downstream pressure (70 bar / 500 °C, h constant), generated from the code.

p2 [bar]T2 [°C]Δs [kJ/(kg·K)]ed [kJ/kg]Δhs [kJ/kg]
10468.60.875260.8532.6
1463.51.934576.5944.7
0.05463.03.316988.61338.3

Try this Change point 2 to another downstream pressure (basis p, h, keep the enthalpy of point 1): the horizontal line is the same, only its end moves. Assumptions and limitations Adiabatic valve, injection water state assumed; the cycle totals do not apply.

6.10 Flash of hot water

Intuition Hot water from a geothermal well is under high pressure and cannot boil. If its pressure is released in a valve, part of it turns to steam: the steam can drive a turbine and the rest, the brine, is separated. The h–s diagram shows the fraction directly, because the mixture lies on a straight line between the two saturated states.

Physical mechanism The well fluid is saturated liquid at 250 °C (1). The flash valve is a throttle, so the state moves horizontally into the dome at the separator pressure of 5 bar (2). The separator splits the mixture into saturated liquid (3) and saturated vapour (4), which lie on the 5 bar isobar on both sides of point 2. In the h–s plane this isobar is a straight line, so point 2 divides it in the ratio of the vapour fraction.

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1T, x2500250.0039.7590.00001085.692.7934isenthalpic (throttling)
2p, h51085.69151.8450.21131085.692.9089isobaric + isothermal (phase change)
3p, x50151.8450.0000640.191.8606isobaric + isothermal (phase change)
4p, x51151.8451.00002748.116.8206—

Mathematical formulation The energy balance across the valve is a mixture balance of the two products; because the isobar inside the dome is straight, the same fraction follows from the entropy (lever rule in both coordinates):

h1=(1−x)h3+xh4,x=h1−h3h4−h3=s2−s3s4−s3

Engineering interpretation Here h1 = 1085.7 kJ/kg, hf(5 bar) = 640.2 kJ/kg and hg(5 bar) = 2748.1 kJ/kg, so x = 0.2113 from the enthalpies and 0.2113 from the entropies: 21.1 % of the well fluid becomes steam at 151.8 °C. The valve generates 0.1155 kJ/(kg·K) of entropy.

Table 6.21 — Effect of the separator pressure (well fluid saturated liquid at 250 °C), generated from the code.

pseparator [bar]Tsat [°C]vapour fraction [–]
199.60.2960
2120.20.2639
5151.80.2113
10179.90.1603
20212.40.0937

A lower separator pressure gives more steam of lower pressure; the best pressure for a plant depends on the turbine, which the example does not model. Try this Change points 2, 3 and 4 to another separator pressure (2 as (p, h) with the enthalpy of point 1, 3 and 4 as (p, x) with x = 0 and 1) and compare the fraction with Table 6.21. Assumptions and limitations Adiabatic valve and ideal separation; no dissolved gases; the cycle totals do not apply.

6.11 Depressurisation (blowdown) of hot water

Intuition Water at 325 °C and 155 bar (typical of a pressurised-water primary circuit) is liquid, but far hotter than the boiling temperature of the low pressures that it may be released to. When the pressure falls suddenly, the water starts to boil at some pressure and a large part of it flashes to steam.

Physical mechanism With no time for heat exchange and no work, the enthalpy stays constant: the state moves horizontally. Point 1 is the initial state; the horizontal line meets the saturated-liquid line at point 2, where flashing starts; point 3 is the final state at 1 bar inside the dome. The onset pressure lies far below the initial pressure because subcooled liquid can be depressurised a long way before it reaches saturation.

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

PointBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point
1p, T155325325.00155–1484.253.4758isenthalpic (throttling)
2p, h118.2571484.25323.56118.260.00001484.253.4851isenthalpic (throttling)
3p, h11484.2599.6110.47261484.254.1645—

Mathematical formulation The onset pressure is the root of the saturated-liquid enthalpy, and the vapour fraction after onset follows from the lever rule:

hf(ponset)=h1,x(p)=h1−hf(p)hg(p)−hf(p)(p<ponset)

Engineering interpretation The initial liquid is subcooled by 19.8 K (saturation temperature of 155 bar 344.8 °C); flashing starts at 118.26 bar, where the temperature has fallen to 323.6 °C. At 1 bar the vapour fraction is 0.4726 and the temperature 99.6 °C.

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

p [bar]T [°C]x [–]
155325.0–
140324.4–
118.26323.60.0000
100311.00.0580
50263.90.2011
10179.90.3582
199.60.4726

Try this Change point 1 to 200 bar and 300 °C, read its enthalpy in the Selected-state panel and enter it for points 2 and 3 (basis p, h): the onset moves to a different pressure. Assumptions and limitations Equilibrium flashing; the delay of boiling (metastable superheated liquid) and choked flow in a real blowdown are not represented; the cycle totals do not apply.

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

Intuition A throttling valve lets the enthalpy stay where it is and lowers the pressure. Two identical valves that both discharge to 1 bar therefore end on the same horizontal line as their inlet states, and the higher the inlet enthalpy, the higher the outlet temperature. It is tempting to expect that steam from 155 bar leaves hotter than steam from 35 bar because it comes from a higher pressure. The diagram shows why this is wrong: the saturated vapour of 155 bar has less enthalpy than the saturated vapour of 35 bar, so its horizontal line ends closer to the dome.

Physical mechanism The specific enthalpy of saturated vapour has a maximum of 2803.3 kJ/kg near 30.8 bar and falls on both sides of it (Table 6.24a). The saturated vapour of 1 bar has 2674.9 kJ/kg. Saturated vapour of a pressure between 1 bar and about 125 bar has more enthalpy than that and leaves the valve superheated; above it, the steam leaves as wet steam at the saturation temperature of 1 bar. Path 1 (points 1 and 2) starts at 155 bar, path 2 (points 1b and 2b) at 35 bar; the two paths are independent, and no line connects point 2 to point 1b.

Table 6.24 — Points of the throttling comparison (generated from the code); the two paths are separate.

PointPathBasisValue 1Value 2T [°C]p [bar]x [–]h [kJ/kg]s [kJ/(kg·K)]Segment to next point (within the path)
1155 bar → 1 barp, x1551344.791551.00002596.225.2789isenthalpic (throttling)
2155 bar → 1 barp, h12596.2299.6110.96512596.227.1476—
1b35 bar → 1 barp, x351242.56351.00002802.746.1245isenthalpic (throttling)
2b35 bar → 1 barp, h12802.74163.191–2802.747.6755—

Mathematical formulation Both valves are adiabatic and do no work, so the enthalpy is conserved; the outlet state at 1 bar follows from the inlet enthalpy alone. For a wet outlet the quality follows from the lever rule at 1 bar:

h2=h1=hg(p1),x2=h2−hf(1bar)hg(1bar)−hf(1bar)  (h2<hg(1bar)),T2=T(1bar,h2)  (h2>hg(1bar))

Engineering interpretation From 155 bar the steam leaves as wet steam with x = 0.9651 at 99.61 °C (the entropy generated is 1.869 kJ/(kg·K)); from 35 bar it leaves superheated at 163.2 °C (1.551 kJ/(kg·K)). The outlet temperatures differ by 63.6 K in the opposite direction of the inlet pressures. The same reasoning limits the throttling calorimeter of 6.8 to steam that is not too wet.

Table 6.24a — Saturated vapour throttled to 1 bar as a function of the inlet pressure, generated from the code.

p1 [bar]hg(p1) [kJ/kg]T2 at 1 bar [°C]State at 1 bar
102777.1150.3superheated, +50.7 K
202798.4161.0superheated, +61.4 K
352802.7163.2superheated, +63.6 K
602784.6154.0superheated, +54.4 K
1002725.5124.4superheated, +24.8 K
1552596.299.6x = 0.9651
2002411.499.6x = 0.8833

How to build it in the application The comparison is loaded from the example list, but it can also be drawn by hand, which is the intended exercise: press New path (or simply click in the diagram), add point 1 as (p, x) = 155 bar, 1 and point 2 as (p, h) = 1 bar with the enthalpy of point 1; press Finish path; add point 1 as (p, x) = 35 bar, 1 and its outlet the same way. The new path starts at once, is coloured differently and is never connected to the first one. Each path can be renamed, hidden, shown, changed in line style or deleted on its own; the whole workspace, with both paths, is saved by Export settings.

Try this Hide path 1 and select path 2 to read its segment data alone; add a third path from 100 bar (Table 6.24a predicts a superheated outlet of 124.4 °C) and compare its outlet with the others. Assumptions and limitations Adiabatic valves, no kinetic energy change; equilibrium states; the cycle totals do not apply.

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 20 ms (Node 22, the build machine) and the (h, s) inversion, the solver behind every click and every drag, took on average 1.66 ms per call on a grid of 460 points (median 0.10 ms, 95th percentile 12.5 ms, maximum 14.4 ms; 128 of the points lie inside the range of the release, the others are rejected). The diagram stays responsive while dragging; no worker thread is used. The plot height follows the window height (at least 500 px).

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, A-17).

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), states in the 1 µK gap next to the saturation line are returned at the bracket end (A-16), 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; the inner step is the (p, s) solver, the outer step uses the secant from dh = v dp along an isentrope, with bisection as safeguard, because h rises monotonically with p at fixed s. The result is accepted if its enthalpy agrees with the input within 1e-4 relative + 1e-3 kJ/kg; a state beyond that is outside the range of the release.

Isolines Dome: 251 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: 91 points in the liquid, the two saturation end points (the isobar is straight in the dome), 170 points in the vapour (281 points above the critical pressure). Isotherms: 110 pressures in the vapour up to the saturation pressure, a pen lift across the dome, 130 pressures in the liquid (240 pressures above the critical temperature). Quality lines: the dome grid. Isochores: 301 temperatures. Validity boundary: the closed loop of the Tmin isotherm, the pmin isobar, the Tmax isotherm and the pmax isobar (487 vertices); T20 shows that it is the domain of the click solver. 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 vertical axis is h in kJ/kg and the horizontal axis s in kJ/(kg·K); the shaded areas are outside the range of the release (below 0.01 °C, above 800 °C, below 1e-4 bar and above 1000 bar), bounded by the validity loop. Every curve is clipped to the plotting window segment by segment before it is drawn (T23), so that a curve whose end points lie far outside the window stays visible where it crosses it. Isoline labels are placed on the visible part of the curve with a white halo. Process paths are drawn after the isolines: one polyline per pair of neighbouring points of the same path in the colour and line style of the path, a direction arrow in the middle of every segment, the markers and the point names in the colour of the path, and a path legend in the lower right corner of the plot when two or more paths are visible or when the diagram is exported. The PNG export renders the same routine at a fixed size with title, legend, configuration state and the time stamp of the file name.

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

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 failures that led to A-4 and A-16 were found by T12 and by a sweep of saturation states). The tests T1–T11 concern the property kernel and the solvers, T12–T13 the states and the change of basis, T14–T15 the process semantics and the regression of the Rankine demo, T16–T18 the IC, the CSV and the input validation, T19–T20 the isolines and the validity boundary, T21–T22 the process examples, T23 the clipping of the curves to the plotting window and T24 the independent process paths (workflow, independence of the edit operations, IC and CSV round trips that keep the paths apart, the throttling comparison). No criterion was relaxed to make a test pass without a diagnosis. Changes after a first run: T12 (the entropy tolerance 1e-9 → 1e-8 kJ/(kg·K), after the solver accuracy of about 2e-9 had been measured), T20 (the tolerance test moved to the p_max edge, where the solver clamps the pressure) and T23 (the straight-line criterion 1e-5 of h, after the inconsistency of the release at saturation, T11, had been identified as the cause of 2e-6). T16, T18 and T21 gained cases with v1.1.0 (paths, schema 2, the twelfth example).

Table 8.1 — Release verification suite (24 of 24 passed; generated from an actual run, 1003 ms in Node 22).

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, h_c and s_c of the dome; 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); h_c, s_c within 1e-8PASS1.74e-11; 6.16e-8; 2.34e-9
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) and (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 solver (h,s) → p, T, x (the click solver of the diagram): 120 single-phase states on the grid of T9 (liquid separately: h and s hardly depend on p there) and 40 two-phase states; (T,s) → p for T ≥ 20 °C (below about 4 °C the state is not unique)0 failures; |Δh| ≤ 1e-4 kJ/kg, |Δs| ≤ 1e-8; Δp/p ≤ 1e-6 and |ΔT| ≤ 1e-3 K outside the liquid, ≤ 1e-4 in the liquid; |Δx| ≤ 1e-6; (T,s): |Δs| ≤ 1e-9, Δp/p ≤ 1e-6PASS|Δh| 2.86e-6, |Δs| 4.72e-11; Δp/p 1.81e-8 (liquid 8.40e-6), |ΔT| 2.02e-6 K; |Δx| 1.57e-8; (T,s) 4.03e-13, 6.78e-11
T11Two-phase states: lever rule, (T,x) ≡ (p,x), recovery of x from (p,h) and (T,s), straight isobar of slope T_sat in the (s,h) plane; 10 saturation temperatures × 5 qualitieslever rule ≤ 1e-12; (T,x) ≡ (p,x) ≤ 1e-9; recovered x ≤ 1e-9; slope relation ≤ 1e-3 (relative to the enthalpy of vaporisation; measures the Gibbs inconsistency of the release at saturation)PASS50 states; 0, 1.54e-12, 2.01e-12, 1.11e-15; 5.27e-6
T12States exactly on the saturation lines x = 0 and x = 1 (12 temperatures) given by (p,h), (p,s) and (h,s) are found (finding A-4)0 failures; |Δh| ≤ 1e-6 kJ/kg, |Δs| ≤ 1e-8 kJ/(kg K)PASS72 states, 0 failures
T13Change of basis (pT, px, ph, ps, Tx, Ts, hs) reproduces the same state (9 states × 7 bases, non-representable conversions excluded)0 unresolved; combined relative deviation ≤ 1e-6PASS47 conversions, 0 unresolved; 3.27e-9
T14Process 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
T15Default-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
T16Input Configuration (schema 2): exact round trip incl. two paths (names, colours, line styles, visibility, order), state points (basis h,s), inactive settings, isotherm list, selected path and drawing state; 21 malformed files are rejected without a result; the migration of schema 1 (one list of points → “Path 1”) and the defaults of missing optional fields are verifiedround trip exact; all 21 malformed variants rejectedPASSround trip exact; 21 / 21 rejected; 1 migration(s)
T17State-point CSV: exact round trip, comma/semicolon delimiter, decimal comma, exponent notation, Unicode minus, header and # lines, files of v1.0.0, fallback to the h and s columns; 7 malformed files are rejected as a wholeround trip exact; all 7 malformed variants rejectedPASSround trip exact; 7 / 7 rejected
T18Configuration validation: reference case valid; inverted or too narrow axes, out-of-range isobars, isotherms, isochores, x, p (incl. p > 1000 bar in (p,h), finding A-8), an unresolvable (h,s) input, empty and over-long names, non-boolean layers, points without a path, more than 12 paths, malformed path colours, a missing selected path and points not grouped by path are rejected; list parserreference valid; 21 invalid variants rejected; list parser strictPASS21 / 21 rejected
T19Isoline construction: 45 curves (default isobars, isotherms, quality lines, three isochores) finite with ≥ 5 points (a NaN separates the two branches of an isotherm); dome ordered with s_f ≤ s_g; quality lines inside the dome; isobar slope (∂h/∂s)_p = T; isobar below the triple-point pressure without liquid part0 short or non-finite curves; 0 ordering violations; slope relation ≤ 1e-6; jump of the saturated liquid at T_c − 1 K (known, finding A-17): Δs_f ≤ 10 J/(kg K), Δv_f ≤ 1.5 %PASS0 short, 0 non-finite, 0 dome and 0 quality violations; slope 1.87e-9; jump of the saturated liquid at T_c − 1 K: Δs_f = 7.01 J/(kg K), Δh_f = 4.51 kJ/kg, Δv_f = 0.87 %
T20Validity boundary of the (s,h) plane (loop of the T_min isotherm, p_min isobar, T_max isotherm and p_max isobar): simple closed loop of 487 vertices; on 96 lines s = const the loop brackets exactly the states that the click solver (h,s) resolves (1 kJ/kg inside, 3 kJ/kg outside); acceptance tolerance of the solver at the p_max edge 1e-4 relative + 1e-3 kJ/kg (states within it are accepted, 4 times it are refused)0 crossings; 2 crossings on every line; 0 mismatches; tolerance as statedPASS0 crossings; 0 lines without 2 crossings; 0 / 480 mismatches; tolerance as stated
T21Process examples (12): every point resolves, each case is a valid configuration and has the documented segment types; closed-loop first law (Rankine, pump, reheat); q = ∫T ds along the boiler isobar; η_is as ratio of vertical distances; h constant in all throttling steps; lever-rule fractions (calorimeter, flash, blowdown) and the straight line f–2–g of the flash; x = 0 at the onset of flashing; reheat gives a drier exhaust than direct expansion; reheat factor above 1; actual exhaust of the wet-steam expansion drier than the isentropic one; pseudo-critical maximum, no boiling line at 250 bar and a boiling line at 150 bar0 unresolved, 0 deviations; invariants ≤ 1e-9 (q = ∫T ds ≤ 1e-4 relative); all inequalities holdPASS53 / 53 points, 0 type and 0 configuration deviations; 1.87e-11; ∫T ds 6.44e-7; RF = 1.0378, η_o = 0.8822
T22Example regression: key results of the 12 examples (Δh_s and Δh of the turbine, η_th, w_net, exhaust quality, reheat factor, T_pc, T after throttling, Δs of the bypass valve, flash fraction, onset pressure) 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)PASS3.79e-7
T23Clipping of the curves to the plotting window: no curve that crosses the window is dropped (0.05 bar isobar in the wet-steam window)0 dropped curves, 0 points outside the window; the 0.05 bar isobar in the window 5.5 … 9 × 1800 … 3000 is present and straight with slope T_sat to 1e-5 of h (the release is consistent at saturation only to about 1e-6 of h, T11)PASS520 curve × window combinations: 0 dropped, 0 outside; 0.05 bar isobar: 1 part, deviation from the line 2.36e-6
T24Independent process paths: start / finish / new path without a connecting segment, insertion into the selected path, independent deletion of a point, a path and all paths (the settings stay), rename, hide, colour and line style, the limit of 12 paths, IC and CSV round trips that keep the paths apart, and the throttling comparison 155 bar and 35 bar to 1 bar0 deviations in 12 checksPASS12 checks: 0 deviations; outlet at 1 bar: x = 0.9651 at 99.61 °C (from 155 bar), 163.19 °C superheated (from 35 bar)

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

PointT [°C]p [bar]h [kJ/kg]s [kJ/(kg·K)]
132.87548952380.05137.7651189890.4762537895051
233.045900440870144.7866774390.4762537895613
3500703411.250263826.799715110694
432.87548952380.052233.502602677.324515687831
1′32.87548952380.05137.7651189890.4762537895051
Cycle totalsstored value
qin [kJ/kg]3266.46358638
wnet [kJ/kg]1170.7261027
ηth [–]0.3584078229386

Table 8.3 — Example regression values (T22): key results of the process examples, stored to 7 significant digits.

ExampleStored key results
Turbine (6.1)Δhs [kJ/kg] = 531.559; Δh [kJ/kg] = 467.772; Δs [kJ/(kg·K)] = 0.138167
Rankine (6.2)ηth [–] = 0.368683; wnet [kJ/kg] = 1189.84; x4 [–] = 0.84087
Pump (6.3)wp [kJ/kg] = 1.98116; wc [kJ/kg] = 736.381; ηth [–] = 0.245462
Reheat (6.4)ηth [–] = 0.405637; wnet [kJ/kg] = 1515.52; x6 [–] = 0.916479
Reheat factor (6.5)RF [–] = 1.03784; ηo [–] = 0.882164; x5 [–] = 0.85891
Wet steam (6.6)x2 [–] = 0.723818; h2 [kJ/kg] = 1891.58
Supercritical (6.7)Tpc [°C] = 384.87; h2 [kJ/kg] = 2151.2
Calorimeter (6.8)T2 [°C] = 120.039; h1 [kJ/kg] = 2716.69
Bypass (6.9)T2 [°C] = 462.954; Δs [kJ/(kg·K)] = 3.31593
Flash (6.10)x2 [–] = 0.211346; h1 [kJ/kg] = 1085.69
Blowdown (6.11)ponset [bar] = 118.257; x3 [–] = 0.472562
Throttling comparison (6.12)x2 (from 155 bar) [–] = 0.965124; T2b (from 35 bar) [°C] = 163.194

Table 8.4 — 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. The grid has 48 temperatures (274 … 1072 K) × 28 pressures (1e-3 … 1000 bar, logarithmic); 192 single-phase states with a pressure below 611 Pa lie outside the range of the package and were not compared.

DomainStatesmax |Δv/v|max |Δh| [kJ/kg]max |Δs| [kJ/(kg·K)]
Region 1 (liquid)2402.44e−151.25e−124.94e−15
Region 2 (vapour)8806.66e−162.73e−123.55e−15
Region 3 (near-critical)324.43e−132.53e−104.05e−13
Saturation line, T ≤ 623.15 K (f and g)91.22e−144.55e−127.11e−15
Saturation line, T > 623.15 K (f and g)63.86e−22.11e13.26e−2

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 and A-17. The reference values of T1–T5 were taken over from the verification suite of the T–s Diagram Simulator v1.0.2; they were not compared again with the text of the release in this delivery (§11).

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.4 (§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)
Process examples (§6)pressures, temperatures, qualities and efficiencies stated in each notebar; °C; –; –assumptionSpecifications of the illustrations; every physical result is computed. Ambient temperature for exergy 298.15 K; efficiencies 0.88 (0.85 per stage in 6.5).points editable
Axis, isoline and preset defaultssee §4; isobars 0.05 … 1000 bar incl. 0.2 and 2 bar–assumptionDisplay defaults inherited from v1.0.0; 0.2 bar and 2 bar added in v1.1.0 for an even spacing of the isobars.yes
Limits of the workspace12 paths; 200 state points; names 16 / 48 characters–assumptionChosen so that the diagram and the table stay readable; not sourced.no

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

ConstantDefaultReasoningAssessment
Condenser pressure0.05 barSaturation temperature 32.9 °C, a typical water-cooled condenser.plausible, unchanged
Boiler outlet70 bar, 500 °CTypical of medium-pressure steam turbines; superheat of 214.2 K.plausible, unchanged
Turbine ηis0.88Typical for a multistage condensing turbine; exhaust quality 0.865 is above the 0.85 that is often quoted as a moisture limit (rule of thumb, not modelled).plausible, unchanged
PumpisentropicThe 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); seven state bases; isobars, isotherms, 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; twelve single-stream process examples.

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); branched process flows (bleed steam, feedwater preheaters, moisture separators with a separate drain, two-stream heat exchangers); regenerative cycle logic (the segment rules assume that isobaric segments are the only heat exchangers). The state (T, s) is not unique below about 4 °C (A-6); the pressure of a compressed-liquid state given by (h, s) is only weakly determined (A-14); 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 property kernel and all coefficient tables come from v1.0.0 (Antranova, 2026-09-17) and are identical to those of the T–s Diagram Simulator v1.0.2 apart from A-4 and A-16. The Python package iapws 1.5.5 served as an independent implementation (Table 8.4). The reference values of T1–T5 (Tables 5, 15, 33, 35 and 36 and the B23 check point of the release R7-97(2012)) and the boundary-consistency values of T7 are those of the verification suite of the T–s Diagram Simulator v1.0.2, in which, according to its documentation, they were compared with the text of the release.

What was not found The release itself was not consulted again in this delivery: the reference values were carried over, not re-read. 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 and A-17 quantify 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.4 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 and the specifications of the process examples are assumptions. (6) The reference values of T1–T5 and T7 were not compared with the release again in this delivery. (7) The rule-of-thumb moisture limit quoted in §6.6 and §9 is not sourced.

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). Source of the reference values (carried over from the T–s Diagram Simulator v1.0.2); not re-read in this delivery.
  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, h–s (Mollier) Diagram Simulator, version 1.0.0, released 2026-09-17 (source of the property kernel, the isoline construction and the interface behaviour).
  2. [A2] Antranova Engineering AB, T–s Diagram Simulator (AntraSIM-0060), version 1.0.2, released 2026-09-20 (source of the corrected kernel, the family layout and the pattern of the process examples).