New runs record their solver version from 4 October 2026 (older saved runs carry none); it is shown on the Reports page and in exported PDFs. If a saved model gives different numbers after a re-run, the entries below say what changed, which models it affects and roughly by how much. The physics itself is described on the methodology page and checked on the validation page.
For the Water preset the liquid solver takes its density and viscosity from the IAPWS-IF97 water formulation at one reference temperature and pressure. Models supplied from a tank or from a flow-rate source used to evaluate that state at 22.064 MPa, water's critical pressure, chosen so the formulation always returned a liquid. Liquid water is slightly compressible, so those runs used water about 1 % denser than it is at ordinary pressures (998.2 kg/m³ at 20 °C and 1 atm, 1008 kg/m³ at 22 MPa), with viscosity off by up to 2 %. The reference pressure is now taken from the model itself — the fluid node's own pressure, else the highest pressure boundary, else 1 atm — or set directly with a new "Property reference pressure" field on the fluid node. Every liquid run now reports the temperature, pressure, density and viscosity it used, and how the pressure was chosen, in the solver briefing and the exports.
Which models see different results
- Water models supplied from a tank or a flow-rate source (most water models): reported pressures fall by about 1 %, viscosity moves by up to 2 %, and flows on head-driven lines are essentially unchanged (density cancels in the head balance). A 100 ft water tank now reads 298.4 kPa at its base, as it should, where it read 301.3 kPa.
- Water models supplied from a pressure source: unchanged — the source's own absolute pressure was already the reference.
- Hot water with no boundary holding it liquid (for example a vented tank above 100 °C): the properties are evaluated at saturation pressure plus 0.2 MPa, the run is labelled an assumed liquid state and carries a warning, and the existing check of the solved pressures against the saturation curve still reports where the water would flash. Set the property reference pressure if the operating pressure is known.
- Other liquids and all gas runs: unchanged. Liquid runs now carry the fluid basis in the run record (convergence.fluidBasis).
Technical details
Changes
- The liquid solver's water reference pressure is inferred from the boundaries (fluid node's own pressure, else the highest pressure boundary, else 1 atm) or set on the fluid node; the editor and the API no longer send a reference of their own.
- The fluid basis — temperature, absolute pressure, density, viscosity and how the pressure was chosen (set, inferred, assumed, or as entered) — is reported on every liquid run.
- A new warning names runs whose water properties were evaluated at an assumed liquid state.
Remaining approximations
- The liquid solver uses one density and one viscosity for the whole network; the inferred pressure is a convention, not necessarily representative of every pipe. Water density moves about 0.045 % per MPa, so this matters only on very high-pressure or very hot systems — where the property reference pressure field is the right tool.
The liquid (incompressible) solver now starts its iteration with each pipe's flow pointing the way the pipe network's head ordering says it runs, on lines whose control valves are all flow control valves. It used to start every pipe at the setpoint in the direction the pipe was drawn, so a pipe drawn against the flow began on the wrong side of its flow equation: a water line at 6 → 3 bar(g) through a 100 mm flow control valve with one pipe drawn backwards ran to the iteration limit and reported no steady state at both 1 and 10 L/s, while the same line drawn forward solved in one iteration. Heads carry elevation, so a line that flows downhill against a higher downstream pressure is ordered correctly too. Four drawings of the same line now converge to the same pressures, flows and valve coefficient in the same number of iterations.
Which models see different results
- Liquid runs with a flow control valve whose inlet or outlet pipe is drawn against the flow: previously reported as not converging at the iteration limit, they now hold the setpoint. Measured on water, 6 → 3 bar(g), 100 mm, at 1 and 10 L/s: every drawing gives the forward drawing's result in the same iteration count.
- Only the sign of a pipe's starting flow can change, never its magnitude or the starting heads, so a line drawn with the flow starts exactly as before. Measured unchanged: the 163-case liquid acceptance and regulator corpus, the published validation cases and the templates. On a looped network with a flow control valve the head ordering can differ from the solved flow direction on some pipe, which changes that run's iteration path, not its answer. Lines with a pump, a pressure regulator or a prescribed flow keep their previous starting point entirely.
- Gas runs are unchanged.
Technical details
Changes
- On liquid networks whose only control valves are flow control valves, the starting flow of every pipe takes its direction from a pipes-only head ordering of the network (each fitting a zero-resistance junction); magnitudes and starting heads are unchanged.
A flow control valve's inlet is now the pipe attached to its inlet port, whichever direction that pipe was drawn in. Both gas solvers used to take the first pipe drawn toward the valve as the inlet, so a valve with its outlet pipe drawn back toward it (or its inlet pipe drawn away from it) could be asked to pass its setpoint against the pressure drive: the isothermal solver then reported the valve released wide open at many times its setpoint, and the adiabatic solver reported no steady state. The starting point of the iteration is also signed by the network's pressure ordering on flow-control-valve lines, as it already was for plain fittings, so a pipe drawn against the flow starts on the right side of its flow equation. Four drawings of the same line (forward, inlet pipe reversed, outlet pipe reversed, both reversed) now converge to the same pressures, temperatures, flow magnitudes and valve coefficient in the same number of iterations, on both solvers.
Which models see different results
- Isothermal, adiabatic and diabatic runs with a flow control valve whose inlet or outlet pipe is drawn against the flow direction (dragged from the far end to the valve, or from the valve's port outward): the valve now holds its setpoint where it was previously reported released wide open (isothermal) or the run failed (adiabatic, diabatic). Measured on air, 6 → 3 bar(g), 100 mm, setpoint 0.1 m³/s: every drawing now gives 0.1204 kg/s at valve coefficient 3.44, the forward drawing's result.
- The measured benchmarks are unchanged: the 144-case flow-control-valve benchmark on each gas solver and the 360-case regulator benchmark on each compressible solver agree with the previous release in every reported digit. A forward-drawn flow-control-valve line whose flow runs downhill against a higher downstream pressure (gravity, not pressure, drives it) starts its iteration from the opposite flow sign, because the starting-point ordering carries no gravity term: it reaches the same answer by a different path (a 1,000 m air drop against 10 kPa: 8 iterations instead of 6, identical pressures, flow and valve coefficient) and may differ in the last digits.
- Liquid runs: the same inlet-port rule applies; a conventionally drawn valve is unchanged.
Technical details
Changes
- A control valve's inlet pipe is the one attached to its inlet port, read from the drawing's port names; models saved without port names keep the previous rule.
- On lines whose only control valves are flow control valves, the iteration's starting flows take their direction from the pressure ordering of the pipe network, so a reversed-drawn pipe starts with the physical sign. Regulator lines, pumps, blowers and prescribed-flow boundaries keep their own starting points.
When a pressure-reducing or back-pressure regulator holds its setpoint on the adiabatic and diabatic solvers, the solver finds the valve opening by repeatedly solving the network with the valve at a trial opening. Those trial solves used an approximate sensitivity of the valve's pressure drop to the flow and to the gas state at the valve; they now use the exact one, the same the rest of the solver already carried for plain valves and fittings. In the 360-case regulator benchmark the previously successful cases agree within one part in ten thousand, the trial solves need about 40 % of the previous iteration count (27,407 → 11,084), the benchmark runs about five times faster (141 s → 27 s), and two deep back-pressure cases that previously reported no steady state now hold their setpoint.
Which models see different results
- Adiabatic and diabatic runs with a pressure-reducing or back-pressure regulator: in the 360-case regulator benchmark every previously successful case agrees with the previous release within one part in ten thousand in held pressure, flow and valve coefficient, and the benchmark as a whole solves about five times faster.
- Back-pressure regulators holding a setpoint close to the supply pressure on a deep expansion (the benchmark's methane 5:1 line with the setpoint at 90 % of supply, either way the valve is drawn) previously failed to converge; they now hold the setpoint. A fixed valve at the reported valve coefficient reproduces the same flow and port pressures, so the new result is the physical steady state, not a numerical artefact.
- Isothermal, incompressible and every run without a regulator are unchanged.
Technical details
Changes
- Reporting only, added 11 October: every converged gas run (isothermal, adiabatic, diabatic) now carries the same acceptance diagnostics the liquid solver has reported since 7 October — the largest remaining local mass imbalance in kg/s, momentum imbalance as an equivalent pressure in Pa, energy imbalance as an equivalent temperature in K, each control-valve setpoint error, and for every held pressure regulator the distance from its setpoint against the regulator iteration's stopping tolerance (0.1 % of the setpoint, at least 1 Pa). The Reports header, the solver briefing and the PDF, CSV and XLSX exports say "Converged using relaxed tolerances" when the final state is within the relaxed figures but not the tight ones, and name the limiting equation. Converged answers, the success or failure of a run and the regulator tolerances are unchanged; the diagnostics are read off the final state after the solve.
- The regulator iteration's trial solves carry the exact derivative of the valve's pressure drop with respect to the flow, the valve-inlet pressure and the valve-inlet temperature (through the connection state), where before they held it fixed during each trial solve.
- If a trial solve fails with the exact derivative, the solver still retries it once with the previous approximate treatment before judging the trial. No previously successful case was lost in the measured 360-case sweep.
Remaining approximations
- The friction factor's dependence on flow stays frozen in the solver's derivatives (a convergence detail; converged answers are unaffected).
The adiabatic and diabatic solvers used to carry one static temperature per junction and charge every pipe leaving it with its own kinetic energy against that shared value. Where two legs left a tee at different speeds, the slow leg inherited part of the fast leg's temperature drop; and at any fitting whose outlet gas moves faster or sits at a lower pressure than its inlet, the inlet-side pipe end was reported at the outlet-side state. The energy unknown at each junction is now its mixed stagnation enthalpy, and each pipe end has its own static temperature, computed from the enthalpy the stream brought, the pressure at that pipe end and the gas speed there.
Which models see different results
- Adiabatic and diabatic runs with a tee or junction whose legs leave at different speeds: the slow leg's downstream temperatures rise to their physical value. Measured on an air header (6 bar(a), 300 mm) splitting into a 100 mm orifice leg at 5 bar(a) and a 100 mm branch at 1.2 bar(a): the slow leg's sink read 289.6 K and now reads 300.4 K; with both sinks at 5.9 bar(a), where every velocity is below Mach 0.17, it read 299.0 K and now reads 300.04 K. Flows on such networks move by a few tenths of a percent through the changed densities.
- Adiabatic and diabatic runs with a plain fitting (valve, orifice, reducer, elbow, flow meter) or a regulator on a real gas: the pipe downstream of the fitting now starts at the fitting's OUTLET state — its own pressure and velocity — so its inlet temperature shows the Joule–Thomson cooling at the outlet pressure where the next junction used to show it. Measured: methane 300 K, 70 → 20 bar across a Kv 400 valve, the downstream pipe starts at 274.1 K (the valve node stays 300.0 K, its inlet); the line's flow changes by less than 0.04 %.
- Adiabatic runs with a diameter change in a series line: the incoming pipe end is reported at its own, slower state (300.0 K on a 300 → 100 mm change at 6 → 5 bar(a)) and the outgoing end at its faster one (289.2 K at 8.4 kg/s), where one shared value (the outgoing one) used to stand for both.
- Finely segmented pipes discharging near sonic speed: a pressure field that dips below the choked exit pressure inside the line (an interior supersonic stretch the equations can satisfy but the flow cannot reach) is now repaired before the result is accepted; the 32-segment benchmark duct refines monotonically to the same limit as before.
- Every published validation case (single pipes with one leg per junction) reproduces its previous result to about one part in ten million; the templates are unchanged; every isothermal and liquid run is unchanged.
Technical details
Changes
- The energy balance at a junction is the exact mixing rule: the mass-weighted stagnation enthalpy of the arriving streams (each less the heat its pipe lost) equals the stagnation enthalpy of every leaving stream. Kinetic energy no longer appears in the junction balance; it appears where it belongs, in each pipe end's own static state.
- A pipe end's static temperature solves h(P, T) + G²/(2ρ²) = h₀ for that end's actual pressure (after a one-sided fitting loss, or the frozen choked exit pressure) and mass flux, with the same real-gas enthalpy, ideal-gas or IAPWS-IF97 property model the rest of the solver uses; the derivatives of every momentum row through those states are analytic (implicit function theorem), including the fitting-loss and heat-exchange chains, manual-K tee losses, and the orifice's Reynolds-number dependence.
- Reported temperatures: a node's `temperature` is the static temperature of the connection whose pressure the node pressure represents (plain fittings, back-pressure valves, single-inlet junctions and sinks: the inlet; pressure-reducing valves: the outlet; flow-control valves: a consistent virtual state at the midpoint pressure; a junction where several streams meet: the mass-weighted mean of the arriving connections); pipe `temperatureIn` / `temperatureOut` are the two pipe-end states; where a node's connections differ by more than 0.05 K the node also carries `connectionTemperatures` per pipe, and the results table lists them. Node density follows the reported state; a node's volumetric flows in and out are each summed at their own connection's pressure and temperature (a methane valve 70 → 20 bar now reports 2.2 m³/s entering and 7.6 m³/s leaving the same 115 kg/s). Heat exchange along a pipe is evaluated from the pipe's own inlet pressure, so a valve's pressure drop is no longer counted a second time in the downstream pipe's heat exchange (the pipe's own pressure loss still cools a real gas by the Joule–Thomson effect).
- Validated against the ideal-gas closed form of conserved stagnation enthalpy, an independent Fanno march of each pipe of the mixed tee (exit pressures within 0.5 % of the drop, temperatures within 0.1 K), and a per-node energy audit on unrounded solver states (imbalance below one part in a million, including a heated junction, a three-leg junction, CO₂ and steam).
Remaining approximations
- A junction's reported temperature is one of its connection temperatures; a thermometer in a plenum would read close to the stagnation value, which is not exposed in this release.
- The friction factor's dependence on flow stays frozen in the solver's derivatives (a convergence detail; converged answers are unaffected).
- Lines whose resistance sits in a single valve or orifice now start the iteration from a flow the component can pass; a pressure-reducing regulator on a deep gas expansion is retried from a fresh start when a warm start fails. Both change how the solver gets to the answer, not the answer.
The adiabatic and diabatic solvers' starting point treated any network of four pipes or fewer as a single series line and put the first pipe's flow estimate on every pipe. A small header with a branch tee — a 100 mm branch off a 300 mm header — therefore started with the header's flow in the branch, far past sonic, and the solve did not converge from there whatever the branch's discharge pressure. A network is now a series line only when no junction joins three or more pipes; otherwise each pipe starts from the estimate for its own diameter and length.
Which models see different results
- Adiabatic and diabatic runs on small branched networks (a tee or junction with three or more pipes and no pump, blower, control valve or prescribed flow) that previously reported no steady state: measured on air at 6 bar(a) through a 300 mm header into a 100 mm orifice leg (5 bar(a)) and a 100 mm branch (1.2 to 4.5 bar(a)), the run now converges in 4 to 8 iterations whichever way the pipes are drawn, with the branch choked at a discharge pressure of 3.0 bar(a) and unchoked at 3.1 bar(a), and agrees with the isothermal solver within 2 % on the orifice leg and 10 % on the choked branch (the two solvers choke at different Mach numbers).
- Series lines (every internal junction joins exactly two pipes), networks with a prescribed flow or a flow-control valve, and every isothermal and liquid run start from exactly the same point as before and are unchanged.
Technical details
Changes
- The series test is topological rather than a pipe count: no internal node with three or more open pipes. A branched, pressure-driven network seeds each pipe at A·√(2ρΔP/(fL/D)) for its own area, length and diameter, the same estimate the first pipe always received.
Remaining approximations
- At a junction whose legs leave at very different speeds, the energy balance carries a single static temperature for the junction, so the slow leg inherits part of the fast leg's kinetic-energy deficit: in the measured case the sink on the slow 300 mm leg reads about 10 K cold while total energy is conserved. The error scales with the kinetic energy of the fast leg and is not confined to high speeds: with both sinks at 5.9 bar(a), every velocity below Mach 0.17, the slow sink still reads 299.0 K where conserved upstream stagnation enthalpy gives 300.0 K.
Two convergence changes to the gas solvers. The starting point of a solve now takes each pipe's flow direction from the pressure ordering of the network rather than from the direction the pipe was drawn, so a reversed-drawn passive network follows the forward drawing's solution exactly instead of failing or landing on a second root. And the isothermal solver now applies the post-solve repair the adiabatic solver has used since August when a converged result puts a fitting's outlet below the pressure one pipe downstream — the signature of a non-physical high-flow root — instead of rejecting the run.
Which models see different results
- Gas networks of pipes and passive fittings (orifice, valve, reducer, elbow, flow meter, custom K, tee; no pump, blower, control valve or prescribed flow) with at least one pipe drawn against its flow. Measured: CO₂ 40 → 5 bar across a 30 mm orifice and a methane Kv valve 70 → 20 bar did not converge when drawn against the flow and now solve in the same 4 and 12 iterations as the forward drawing; a near-sonic air line (6 → 4 bar through a wide-open gate valve at its automatic K in a 300 mm line) that converged to a second, supersonic root when drawn against the flow (156 kg/s, pipe Mach 1.23 — unchanged by the 2026.10.09 release) now gives the forward answer, 100.3 kg/s with the discharge choked. Forward-drawn networks start from exactly the same point as before and are unchanged.
- Isothermal runs with an orifice or other K-factor fitting that were rejected as over capacity although the geometry is mild: a 100 mm orifice in a 300 mm air line at 6 → 5 bar (29.4 kg/s root, outlet below vacuum) now gives 5.37 kg/s, matching the adiabatic solver within 0.1 %; a 60 mm orifice at 6 → 2 bar likewise. Runs that already converged on the physical root are unchanged.
- Every liquid run, every control-valve, pump and blower network, the published validation cases and the templates are unchanged.
Technical details
Changes
- The passive pressure-squared ordering that already seeded pipes-only networks now also signs the flow of networks with passive fittings, treating each fitting as a zero-resistance junction for the ordering only; flow magnitudes and pressure seeds are untouched, so a forward drawing's starting point is byte-identical and a reversed drawing is the exact mirror of the forward solve.
- The isothermal repair re-solves from the two-sided loss allocation and, failing that, from displaced flows, and only then reports the capacity error. It leaves alone any fitting upstream of a discharge that is choked at the isothermal limit, where pressure legitimately stops falling along the duct and the choking treatment governs; a fitting on a sibling branch of the same network is still checked.
Remaining approximations
- Very small orifices on a strongly non-ideal gas (a 20 mm bore in a 300 mm CO₂ line, β = 0.07) can still fail to converge on the isothermal solver in either drawing direction; the adiabatic solver solves them.
- The starting-point direction comes from a pipes-only pressure ordering that ignores elevation, so a gas line driven against its pressure gradient by static head alone starts with the wrong sign and relies on the solver to turn it.
- The adiabatic solver does not yet converge a tee network with one branch discharging choked (the isothermal solver does); this predates both changes.
In the isothermal, adiabatic and diabatic solvers an orifice plate, K-factor valve, reducer, elbow, flow meter or custom K-factor component now applies the same pressure loss whichever way its pipes were drawn. Before, when the solved flow ran against the drawing direction of such a component, its loss was applied with the wrong sign — the fitting acted as a pressure gain — so the adiabatic solver reported no steady state and the isothermal solver could converge to a wrong flow. A valve specified by Kv or Cv, a control valve and a tee were unaffected; so was every forward-drawn element and every liquid run.
Which models see different results
- Gas runs in which the flow through an orifice, K-factor valve, reducer, elbow, flow meter or custom K component runs against the direction its pipes were drawn — a reversed pipe arrow, or a loop or header whose flow direction turned out opposite to the sketch. Runs that previously failed with no steady state can now solve, and isothermal runs that converged on a wrong flow now apply the loss correctly (where the reversed drawing converged on a different root for other reasons — see the 2026.10.10 release — the result is unchanged by this release).
- Every run whose flow follows the drawing direction through all such components is unchanged to the last digit, as is every run with only Kv/Cv valves, control valves and tees, and every liquid run. The published validation cases and the templates are unchanged.
Technical details
Changes
- A fitting's loss is now computed as a magnitude from the flow through it, K·ṁ²/(2ρA²), and the solver applies it against the flow direction at the fitting's downstream pipe end; the loss used to be computed as K·ṁ|ṁ|/(2ρA²), which already carried the flow sign, so the solver's own direction handling applied it a second time.
- Measured: forward and reversed drawings of an air orifice (60 mm bore in a 300 mm line, 6 → 5 bar), a wide-open gate valve at its automatic K (6 → 5.5 bar), a 300 → 150 mm reducer, a K = 50 elbow, a methane orifice (70 → 50 bar) and a methane reducer now agree to the last reported digit in mass flow, fitting inlet and outlet pressure and outlet temperature on both gas solvers.
Remaining approximations
- A reversed-drawn fitting on a strongly non-ideal gas across a large pressure ratio (CO₂ 40 → 5 bar across a 30 mm orifice, or a methane Kv valve 70 → 20 bar) may still fail to converge; the forward drawing of the same line solves. This is a convergence limit of the reversed starting point, present before this change and the same for Kv valves, which were never affected by the sign. Redraw the pipes in the flow direction.
- Near-sonic isothermal runs can have more than one mathematical root; a reversed drawing may land on a different one from the forward drawing (one of them with a pipe Mach number above the isothermal limit). Use the adiabatic solver for such lines.
Where the adiabatic and diabatic solvers integrate density along a pipe, the temperature at each integration point now satisfies the pipe's own steady energy balance — enthalpy plus kinetic energy equals the upstream stagnation enthalpy less the heat lost to that point — instead of being interpolated between the pipe ends. A single long pipe on a strongly non-ideal gas now gives the same flow as the pipe split into many segments.
Which models see different results
- Adiabatic or diabatic runs on strongly non-ideal gases across large pressure spans, modelled as one or a few long pipes: flows fall by up to a few percent. Measured example — CO₂ at 350 K, 150 → 80 bar through 10 km of 100 mm pipe: the single-pipe flow was 3.1 % above an independent numerical integration of the same equations and is now within 0.001 %; the same pipe cooled to a 10 °C ambient (340 K, 90 → 70 bar, 2 km) moved from +2.0 % to +0.01 %. Networks already split into short segments change by 0.2 % or less.
- Diabatic runs on ideal gases (air and the other near-ideal presets): only the kinetic-energy term entered the path there, so the change scales with the gas velocity — below 0.01 % on the measured 300 mm pipes at a few metres per second, about 0.7 % on a 50 mm air duct at 350 K dropping 5 → 1.5 bar over 50 m with light heat exchange.
- Adiabatic runs on near-ideal gases without heat exchange, steam (which keeps the previous temperature path), every isothermal run and every liquid run are unchanged.
Technical details
Changes
- At each Gauss point of the along-pipe density integral the temperature solves h(P, T) + G²/(2ρ²) = h₀,up − q(s), with h₀,up the upstream stagnation enthalpy, G the mass flux and q(s) the heat lost per unit mass up to that point under the same exchange profile the pipe's heat term integrates. For an ideal gas without heat exchange this is the Fanno static temperature; for a real gas it carries the Joule–Thomson cooling along the pipe.
- The integral's derivatives are exact through the implicit function theorem, including a new mass-flow term through the kinetic energy and the dependence of the heat profile on the upstream state and on the mass flow, which were previously frozen.
- Measured on a near-ideal Fanno duct (methane-like, 5 → 1.5 bar, 50 m): the along-pipe integral now reads +0.007 % against the independent integration where the previous temperature path read +1.1 %, so the earlier restriction keeping near-ideal gases on the two-point form is no longer needed for accuracy; it is kept only so those results stay byte-identical.
- Real-gas pipes take the 12-point integration rule directly instead of a 5-point rule with a refinement test, now that every point carries an energy solve.
Remaining approximations
- Pressure is still taken linear in position between the pipe ends; the residue on a heated air pipe at one segment is +0.5 % in flow, unchanged, and vanishes with refinement.
- The heat profile along a real-gas pipe takes its Joule–Thomson cooling as uniform in position; a CO₂ pipe entering at ambient and dropping 20 → 10 bar reads 0.9 K warm at the outlet as a single pipe, 0.06 K in four segments.
- The compressibility factor's dependence on the mean temperature stays frozen in the solver's derivatives (a convergence detail; converged answers are unaffected).
- Each integration point is now a small energy solve, so the along-pipe evaluation does more work per pipe; the Peng–Robinson cubic is solved analytically at the same time (identical roots to rounding), which more than pays for it — a single dense-CO₂ pipe solves in about 14 ms instead of 21 ms, a cooled one in 31 ms instead of 40 ms. Networks of many real-gas pipes with control valves run at two to three times their previous time.
The adiabatic and diabatic solvers now carry a real-gas enthalpy h(P, T) for every fluid with Peng–Robinson critical properties: an ideal-gas part that varies with temperature plus the Peng–Robinson departure. A pressure drop across a valve, regulator, orifice or along a pipe therefore changes the gas temperature — cooling for the measured gases at the measured conditions, warming where the Joule–Thomson coefficient is negative — as it does in practice; with the previous h = Cp·T a 70-to-4 bar methane letdown showed no temperature change at all.
Which models see different results
- Adiabatic or diabatic runs on methane, natural gas, CO₂, ethane, propane, butane, ethylene, ammonia, hydrogen sulphide, sulphur dioxide and the refrigerant presets: temperatures downstream of every pressure drop change (they fall for all of these gases at ordinary line conditions). Accuracy has been measured only for the five cases below; the other presets carry the same property model unmeasured. Measured against NIST isenthalpic data at 300 K — methane 70 → 4 bar: −33.2 K (NIST −29.7 K); methane 150 → 50 bar: −37.1 K (−36.4 K); CO₂ 40 → 5 bar: −47.5 K (−46.9 K); ethane 30 → 5 bar: −36.6 K (−36.5 K); propane 10 → 2 bar at 320 K: −12.0 K (−12.9 K). The solver reproduces its own property model's isenthalpic outlet to better than 0.05 K; the differences above are the property model's.
- Mass flows on those runs move with the colder gas (denser, and slightly less viscous under the solver's μ ∝ T^0.7 model): a few percent across large pressure spans, less than 0.1 % where the drop is small.
- Diabatic runs on those gases: a pipe entering at ambient that drops pressure now exchanges heat, because the gas moves away from ambient along it (below ambient for the measured gases); before, that heat exchange was identically zero.
- Air, nitrogen, oxygen, hydrogen, helium, argon, neon, carbon monoxide, custom gases, steam (IAPWS-IF97 already real) and every isothermal or liquid run are unchanged.
Technical details
Changes
- Enthalpy per unit mass is h(P, T) = h_ig(T) + h_dep(T, P)/M with the Peng–Robinson departure h_dep = RT(Z − 1) + (T·da/dT − a)/(2√2·b)·ln[(Z + (1 + √2)B)/(Z + (1 − √2)B)] from the same critical properties and Z the momentum equations already use. Valves, regulators and orifices need nothing special: their node energy balance is isenthalpic once h depends on P.
- The ideal-gas part uses a temperature-dependent Cp(T) table for methane, CO₂, ethane, propane, butane, ethylene, ammonia, hydrogen sulphide and sulphur dioxide, each checked against an independent reference (NIST Shomate or literature Cp points, within 0.4 % over 300–400 K). Natural gas (a pseudo-component) and the refrigerant presets keep the constant Cp from γ for the ideal part until a reference validates their tables.
- The energy equations' Jacobian carries the real-gas terms exactly: h(P, T) on the mass-flow columns, the real Cp(P, T) on the temperature columns and new pressure columns for ∂h/∂P, verified against central differences on forward, reversed and terminal-sink rows.
- Heat exchange along a real-gas pipe integrates the energy balance with the Joule–Thomson cooling as a distributed source: Q = ṁ·Cp·[(T_in − T_ambient)·E + ΔT_JT·(E/NTU − 1)], E = 1 − e^−NTU, ΔT_JT = μ_JT·ΔP. It is the previous form when ΔT_JT = 0 and lets a pipe entering at ambient take in the whole JT cooling at large NTU. Measured against an independent coupled march on CO₂ entering at 15 °C, 20 → 10 bar, 2 km of 100 mm pipe: outlet within 0.9 K as a single pipe, 0.06 K in four segments.
- Real-gas runs start from an isenthalpic temperature estimate and a mass-flow estimate capped at the capacity of the most restrictive valve or orifice, which the strongly non-linear energy equations need; ideal-gas runs keep their previous starting point.
- A valve, regulator or orifice whose outlet falls below 0 °C after the expansion now carries a conditional advisory stating the solved temperature and that, if free water is present, hydrate formation or freezing may be a risk — which depends on water content, pressure and composition and can occur above 0 °C.
Remaining approximations
- The Peng–Robinson departure is the model's main uncertainty: at low reduced pressure it understates methane's enthalpy departure by 12–16 %, which is the 3.5 K excess cooling in the 70 → 4 bar case above; CO₂ and ethane are within 1 % of NIST, propane 8 % (partly cancelled by its ideal part). No benchmark exists for the natural-gas pseudo-component, so its uncertainty is not characterised. Hydrogen's inversion behaviour is out of scope (hydrogen is treated as ideal).
- Along a dense real-gas pipe the density quadrature still takes the temperature linear in position between the pipe ends; with Joule–Thomson cooling the temperature follows the pressure, which falls faster toward the outlet, so a single long pipe at high density over-predicts flow — 3.1 % for CO₂ at 350 K, 150 → 80 bar through 10 km of 100 mm pipe — converging to 0.2 % in four segments. An energy-consistent temperature path is the planned follow-up.
- The distributed-source heat form takes the JT cooling as uniform along the pipe; the true cooling concentrates toward the outlet (0.9 K on the benchmark above as one pipe).
- Deep-choke Kv valves at pressure ratios above about 5:1 remain outside the adiabatic solver's convergence envelope, with or without real-gas enthalpy; an orifice at the same conditions solves.
Four changes to how the gas solvers integrate along a pipe. Heat exchange with the surroundings now follows the exact solution of the steady-flow energy balance instead of a mean-temperature approximation; real gases integrate density across the pressure span instead of using one compressibility factor; and a pipe drawn against its flow direction now solves to the same answer as one drawn with it.
Which models see different results
- Diabatic runs (ambient temperature set with a pipe heat-transfer coefficient): outlet temperatures change once the pipe's NTU = U·πDL/(ṁ·Cp) exceeds about 0.5, always toward ambient. Measured example — air entering at 350 K into a 15 °C ambient, 1,000 m of 300 mm pipe: 2 K at NTU 1 and 24 K at NTU 4. The shift scales with the inlet-to-ambient temperature difference, so a smaller difference moves less. Mass flows move by less than 1 % in these examples.
- Isothermal and adiabatic runs on strongly non-ideal gases (CO₂, refrigerants, ammonia, heavy hydrocarbons) across large pressure spans: flow changes of several percent are possible near a fluid's critical region. Measured example — CO₂ at 313 K, 150 to 50 bar through 10 km of 100 mm pipe: single-pipe flow moves about 8 %. The natural-gas cases on the validation page move by 0.1 % or less; air, nitrogen, oxygen, hydrogen, helium and custom gases are unchanged.
- Gas networks containing a pipe whose arrow points against the actual flow: results now equal the conventionally drawn network. Measured example — a 50 m, 50 mm air pipe from 6 to 1.5 bar differed by 15 % between the two drawings.
Technical details
Changes
- Heat loss or gain per pipe is Q = ṁ·Cp·(T_in − T_ambient)·(1 − e^−NTU), the integrated form of ṁ·Cp·dT/dx = −U·πD·(T − T_ambient). Outlet temperature relaxes toward ambient and cannot cross it, and for a given mass flow the outlet temperature no longer depends on how the pipe is split into segments (the mass flow itself can still show a small segment dependence — see remaining approximations). The published diabatic validation case now references this integrated balance (400.0 K, reproduced to 0.1 K).
- For fluids with Peng–Robinson critical properties on Colebrook pipes, the isothermal momentum balance evaluates 2·R·T·∫ρ dP by Gauss–Legendre quadrature (5 points, 12 where the compressibility factor varies strongly) and takes the acceleration term on the density ratio. A single mean-pressure Z is exact only while Z is near-linear across the pipe. Measured against an independent numerical integration of the same property models: 0.01 % on the CO₂ example above.
- The adiabatic and diabatic solvers walk the same integral along a temperature path — linear between the pipe ends for an adiabatic pipe, the exponential heat-exchange profile for a diabatic one — for non-ideal gases and for any pipe with heat exchange; ideal gases without heat exchange keep the previous endpoint form, so published Fanno cases are unchanged. Measured against an independent integration of the coupled momentum and energy equations: within 0.15 % for the dense CO₂ example and 0.1 % for the cooled air example above.
- The acceleration term in both gas momentum equations scales with ṁ², as the physics requires, rather than with the signed ṁ|ṁ| of wall friction. Reversing a drawn pipe now changes only the sign of its mass flow.
- Reported pressure-loss breakdowns (friction, acceleration, elevation, components) for adiabatic pipes now replay the same terms the solver used, including the sonic exit pressure of a choked pipe, so they sum to the end-to-end drop.
Remaining approximations
- The along-pipe temperature path carries no kinetic temperature drop, so for near-ideal gases at high Mach number the previous endpoint form remains in use; an energy-consistent path is planned.
- The coupled flow calculation still carries approximations beyond the heat balance: dense CO₂ with strong cooling in a single long pipe shows 0.7 % more flow when split into four segments (330 K CO₂, 90 to 60 bar, 2 km of 100 mm pipe cooled to 10 °C ambient); splitting the pipe removes it.
- Steam keeps a single IAPWS-IF97 compressibility factor per pipe, and the Weymouth and Panhandle equations keep their own standard forms.
The flow-control valve's reported Kv is now the IEC 60534 sizing value a real valve would need at the solved conditions; adiabatic ducts carry a viscosity that follows the gas temperature; and fixed-flow gas networks start from a pressure-consistent estimate so high-ratio vent lines converge.
Which models see different results
- Reports and exports of flow-control valves: the displayed Kv is the sizing Kv from the valve's true inlet pressure and actual drop, with choking (x ≤ Fk·xT) and liquid cavitation limits applied. It can differ from the previously displayed value by 15–20 % on choked gas service and more on deep choking.
- Adiabatic gas runs: viscosity now follows the gas temperature, so as a duct cools on expansion the Reynolds number rises and the friction factor falls; exit pressures of near-sonic ducts move by up to about 2 % (Oosthuizen Example 9.3 on the validation page).
- Relief and vent lines at high pressure ratios that previously reported non-convergence now solve.
Technical details
Changes
- FCV sizing Kv from the true inlet state (IEC 60534-2-1), rated valves still report their rated value.
- Gas viscosity scales with (T/T_ref)^0.7 along adiabatic pipes for non-water gases.
- Pressure-driven seeding of fixed-flow gas networks from the boundary pressures.
Pipes carry a list of fittings whose Crane TP-410 loss coefficients fold into the pipe's own resistance as f·L/D + ΣK, and a pipe can carry a fixed Darcy friction factor to reproduce a reference calculation's stated basis.
Which models see different results
- Models that enter fittings on pipes: fitting losses now follow the Crane basis of the pipe velocity rather than a point loss at a node (Crane Example 7-21 reproduced to about 1 %).
- Models with a user-specified friction factor on Darcy–Weisbach pipes.
Technical details
Changes
- Fittings list per pipe with Crane TP-410 K = n·f_T; EPANET minor losses import as a custom fitting.
- Fixed Darcy friction factor per pipe (Darcy–Weisbach only); the calculation trace labels it as user-specified.
In the adiabatic solver a plain valve, orifice, reducer, flowmeter or custom component now places its whole pressure drop on its downstream pipe, so its node pressure is its true inlet pressure for the IEC 60534 and ISO 5167 relations.
Which models see different results
- Adiabatic runs with plain gas valves at absolute pressure ratios above about 1.5: the previous mid-component basis read the drop 7–25 % low and could report choking that does not occur. Adiabatic and isothermal results now agree to 0.1 % across ratios from 1.2 to 3.5.
Technical details
Changes
- One-sided pressure-drop allocation for plain drop components in the adiabatic solver, matching the isothermal solver.
- Spurious over-capacity roots are rejected by a post-solve component outlet-pressure audit and repaired by a re-solve.
PRV and BPV regulators in adiabatic runs are now solved by the same Kv-throttling iteration as the isothermal solver, so mass is conserved through the regulator and its setpoint is enforced where physically achievable.
Which models see different results
- Adiabatic runs containing a PRV or BPV: regulator throughput and downstream results change wherever the previous treatment did not conserve mass at the regulator.
Technical details
Changes
- Regulators are internal nodes with a solved Kv; a setpoint that cannot be held is released to the natural state with a warning, and a rated maximum Kv is honoured as a fixed restriction.
Gas pipes can use the Weymouth or Panhandle A/B equations with a per-pipe efficiency factor, alongside the default General Flow equation (Colebrook–White with real-gas Z).
Which models see different results
- Only models that select one of the new equations.
Technical details
Changes
- Flow-equation selector for gas networks; efficiency factor E per pipe; validated against Menon's worked examples to within 0.1 %.
The compressibility factor Z from the Peng–Robinson equation of state now enters the gas momentum equation itself (friction and acceleration scaled by Z, static head by 1/Z), not only the auxiliary density, and choked gas valves follow a capacity plateau near the true choked flow.
Which models see different results
- Isothermal and adiabatic runs on non-ideal gases at high pressure: a natural-gas transmission case moved from 7 % low to 1 % high against its reference. Near-ideal gases are unchanged.
- Choked gas valves in isothermal runs: predicted flow past the choke point moved from up to 14 % high to within about 2 %.
Technical details
Changes
- Average-pipe-pressure Z per edge in both compressible momentum residuals.
- Asymptotic choked-flow capacity for IEC 60534 gas valves.
In the isothermal solver a plain valve, orifice or reducer places its whole pressure drop on its downstream pipe, so the IEC 60534 inlet pressure P1 is exact. A fixed valve at a back-pressure valve's reported Kv now reproduces the regulated pressure exactly.
Which models see different results
- Isothermal runs with plain gas valves, orifices or reducers at significant pressure drop: component inlet and outlet pressures and the resulting flows change slightly; flow-control valves are unaffected.
Technical details
Changes
- One-sided pressure-drop allocation for plain drop components in the isothermal solver.