Resources · Validation

Does it reproduce the books it cites?

The tables below are rendered at build time from the validation note that ships with the product, without editing. Every worked example runs as a test on every commit; a red result blocks the merge. Known failures are recorded with the reason quantified and are held to an anchor so a change in the size of the miss is itself caught.

1. Worked-example suite (runs on every commit; red blocks merge)

#CaseSourcePublishedinferTICError
01Glass-lined jacketed reactor scaled 0.2→1.2 m³, CEPCI 1991→1996PTW 5th ed., Example 6-2, pp.243–244$27,850$27,8010.18 % (book rounds index values)
02CS shell-and-tube exchanger, 400 m², Jan 2010 USGCT&S 3rd ed., Example 7.2, p.252$99,600$99,5830.02 %
03Adipic acid ISBL, 400 kMTA (880 MMlb/y), Jan 2006 USGCT&S 3rd ed., Example 7.8, p.274$206.5 MM$206.5 MM< 0.05 %
04CS floating-head shell-and-tube exchanger, 100 m², 100 barg, bare-module cost, 2016 (CEPCI 542)Turton 5th ed., Example 7.11, PDF p.223 (e-book, no print page)$134,000$135,724+1.3 % — known failure: the book reads C_p^0(2001) = $25,000 off Figure 7.4; the Table A.1 correlation gives $25,328 (+1.3 %). F_P = 1.383, F_BM = 3.925 and the 542/397 escalation reproduce the book; with the chart-read $25,000 the same chain gives $133,967 (−0.02 %)
05By-product recovery modification in 304 SS — column shell (46,685 kg) and 50 sieve trays, U-tube exchanger 60 m², kettle reboiler 110 m², horizontal drum (636 kg), 50 m³ tank, five pumps with motors — installed ISBL by Hand's method, Jan 2010 USGCT&S 3rd ed., Example 7.3, pp.260–261$4,058,550$4,057,109−0.04 % (book rounds each purchased cost). Three factors the example itself states ride in library_overlay.hand, cited to p.261: trays 1 (internals carry no installation factor), drivers 4 (motor added to the pump before the pump factor), warehouse spare 1; shell masses entered as printed (the engine has no wall-thickness step, and the book's own π·3·30·0.02·8000 evaluates to 45,239 kg, not the 46,685 kg it uses — flagged in the file)
06Fixed-capital investment by percentage of delivered-equipment cost — Table 6-9 solid-fluid column with the example's instrumentation (43 % of E) and buildings (15 % of E) modifications, E = $100,000PTW 5th ed., Example 6-3, pp.251–252$431,000$431,0000.00 %. All twelve printed percentages of E ride in factors.user_values (user_percent is Σ pct of E, the book's basis); allowances 0; total = D + I. The engine's direct also reads $431,000 rather than the book's D = $305,000 because the indirect items are percentages of E, not of D (the Allowances fields take percentages of direct) — noted in the file
07Power factor applied to plant/capacity ratio, Eq. 6-9 with x = 0.6: the Example 6-1 plant ($436,000, 1990) at twice the capacity in 1998, Marshall & Swift all-industry index 915 → 1062PTW 5th ed., Example 6-5, p.257 (Eq. 6-9 p.254; Table 6-2 p.238)$767,000$766,866−0.02 % (book rounds the index values 915.1 / 1061.9). class5_capacity with the example's own FCI and exponent as overlay records; the M&S values ride in index_snapshot. The example's other three results — x = 0.7 ($822,000, same chain) and the two Eq. 6-10 results ($1,126,000 / $1,191,000: direct cost scaled, indirect unscaled, times a labour-rate × productivity factor from Table 6-12) — are not fixtured; Eq. 6-10 is not expressible in the engine (no direct/indirect split of a Class 5 reference cost, no labour location factor), recorded in the file's notes.exclusions
08Heat exchanger of 500 m² purchased for $25,000 in 1996, updated to 2016 on the CEPCI 382 → 542 (Eq. 7.4)Turton 5th ed., Example 7.6(c), PDF p.214 (Table 7.4 pp.213–214; e-book, no print page)$35,471$35,4710.00 %. One quote row (FR-06) escalated (FR-08); the book's Table 7.4 values 382 / 542 ride in index_snapshot (cepci.json stores 381.7 / 541.7), key purchased_equipment. Parts (a) and (b) — the 2011 M&S ($35,642) and 2011 CEPCI ($38,351) results — are the same chain with other index values, checked by hand, recorded in the file's notes.exclusions
0930,000 tonne/y isopropanol plant, $23 million in 1996, scaled to 50,000 tonne/y in 2016 by the six-tenths rule and the CEPCI 382 → 542Turton 5th ed., Example 7.7, PDF p.216 (six-tenths rule §7.2.3 p.215; Table 7.4 p.213)$44,354,000$44,337,685−0.04 % (book rounds the two corrections to 1.359 and 1.419). class5_capacity with the example's own plant cost and the 0.6 exponent as overlay records (the 07 pattern); Turton states no validity ratio for the rule on a whole plant, so the overlay exponent's valid_ratio is the example's own 1 → 5/3, cited in the record
10Lang-factor capital cost of a major expansion to a fluid processing plant, total purchased equipment cost $6,800,000, F_Lang = 4.74 (Table 7.7, Eq. 7.5)Turton 5th ed., Example 7.8, PDF p.216$32,232,000$32,232,0000.00 %. One quote row carrying Σ C_p,i; factors.method: "lang" with basis.plant_type naming the library row lang1948_fluids (4.74 from T&S §7.6.1 quoting Lang 1948 — the same primary source and value as Turton's Table 7.7, which is not itself transcribed). The example states no year: quote and basis both dated 2016 (the chapter's basis) so the index ratio is 1
11SS tower 3 m diameter × 30 m tall at 20 barg with 40 SS sieve trays, bare-module cost 2016 (CEPCI 542): Eq. 7.10/A.2 vessel pressure factor, F_M 3.11 (Fig. A.8), trays at C_p^0·N·F_BM·f_q with F_BM 1.83 (Fig. A.9), f_q = 1Turton 5th ed., Example 7.13, PDF pp.227–228 (e-book, no print page)$7,488,200$7,194,921−3.9 % — known failure: the book prints F_P = [(20+1)·3/((2)[(944)(0.9) − 0.6(20+1)]) + 0.00315]/0.0063 = 6.47 — P + 1 substituted into an equation whose text (PDF pp.222 and 1297) defines P in barg; at the stated 20 barg the equation gives 6.185, F_BM 37.26 (book 38.87), tower $6,738,275 (book $7,031,400). Trays reproduce ($456,646 vs $456,770). With P + 1 the same chain gives $7,490,279 (+0.03 %)
12Plant expansion, seven lines from Table E7.14(a): floating-head condenser 170 m² CS 5 barg, floating-head reboiler 205 m² SS tube/CS shell 18 barg, double-pipe cooler 10 m² CS, two 5 kW CS centrifugal pumps, CS column 2.1 m × 23 m at 5 barg with 32 SS sieve trays, horizontal CS reflux drum 1.8 m × 6 m at 5 barg; Σ bare-module cost 2016Turton 5th ed., Example 7.14, PDF pp.228–230$1,088,100$1,056,760−2.9 % — known failure, the same (P + 1) reading on the two vessel lines: printed F_P 1.681 (T-101) and 1.513 (V-101) are the equation at 6 bar, 1.484 and 1.344 at the stated 5.0 barg. Every other line reproduces within the book's rounding (E-101 $32,977 vs 33,000 and F_P = 1.000 at the 5 barg piece boundary; E-102 F_P 1.062; pumps F_BM 3.98; trays $131,432 vs 131,200). With P + 1 on both vessels: $1,088,381 (+0.03 %). Eq. 7.15 C_TM and Eq. 7.16 C_GR are not fixtured (the book's own C_TM differs between its two lines, $1,284,000 vs $1,276,700)

Second reads: examples 08–12 are second-pass checked (2026-09-21) against PyMuPDF 200 dpi renders of the owner's Turton 5th ed., read independently of the first pass's pypdf text layer — every statement input, index value, exponent, factor, printed intermediate and total matches (0 corrected, 0 unreadable; each file carries a checked block, rows in docs/transcription-log.md). The two known failures (11 and 12) stand: the render confirms the book substitutes (P + 1) into Eq. 7.10 while its text defines P in barg. Examples 01–07 and the TEA/back-test cases keep their earlier status.

Intermediate-value checks (packages/library/test/textbook-checks.test.ts): Turton Example 7.11 pressure factor at 100 barg = 1.383 (reproduced exactly from the transcribed Table A.2 coefficients); Example 7.10 Cp0 = $25,328 by equation vs $25,000 read from the chart by the book (1.3 %, chart rounding).

TEA worked examples (Phase 4, FR-28/FR-31):

#CaseSourceWhat it provesinferTICError
tea-01LCOH cash-flow build-up (hydrogen SMR case)OpenPyTEA-published worked LCOH caseknown failure, −4.7 %: computeTea's NPV/cash-flow chain against a third-party LCOH tooltea.lcop 3.7324296969383304quantified, see below
tea-02NPV cash-flow build-upTurton 5th ed., Chapter 10 exampleknown failure, +42.8 % (residual after the reference-point gap is closed by npv_reference: "project_start", matching the book's own time-0 convention): three treatment differences outside TeaBasis — land purchase/recovery, the loss-year tax credit, and taxed salvage — quantified to the cent in the filetea.npv 24445572.894993633quantified, see below
tea-03NPV cash-flow build-up, MACRS 5-yearT&S 3rd ed., Examples 9.1 / 9.4, pp.315, 320known failure, −5.3 %: the book pays each year's tax the following year (so year 10's tax falls outside the horizon); the engine pays it in-year. The gap is the book's own tax stream re-discounted: 138.68 + 43.83 − 36.11 = $146.40 MM, the printed figure, to the cent. npv_reference: "startup" here because the book's year 0 is both project start and start-up (the whole $100 MM at discount factor 1)tea.npv 138683835.8273631quantified, see below

All three known failures are recorded with the reason quantified in the example file, not silently accepted: tea-01 misses the published LCOH by −4.7 % (the OpenPyTEA case and computeTea diverge on a modelling convention the file names); tea-02, once npv_reference: "project_start" matches Turton's own discounting zero point (start of construction), still misses the book's NPV by +42.8 % — a residual fully accounted for by three quantified treatment differences the book's cash flows include and TeaBasis cannot represent: the $10 MM land purchase and its recovery, a loss-year tax credit the book takes in year 2, and the $10 MM salvage value the book taxes as income where the engine adds it untaxed. tea-03 misses T&S Example 9.4 by −5.3 % for one reason only — tax paid a year in arrears — and the file re-discounts the book's tax stream to recover the printed $146.40 MM exactly. All three run as ordinary tests, not skips — see "known failures" below.

Known failures, made honest (engine_anchor): every known_failure worked example (seven total: 04-turton-example-7-11, 11-turton-example-7-13 and 12-turton-example-7-14 above, bt-02-usda-dry-mill-ethanol in §3, tea-01, tea-02, tea-03) now carries engine_anchor: { value, tolerance_pct: 0.01 } — the engine's own value on 2026-09-21, not a published figure — and runs as a plain test asserting two things: the result stays outside the published/target band (so the tool never silently "fixes" the known gap) and the result stays within 0.01 % of the anchor (so a change to the miss itself is caught, not just presence of a miss). Anchors: 04-turton-example-7-11 direct 135724.2481170268; 11-turton-example-7-13 direct 7194921.146171735; 12-turton-example-7-14 direct 1056759.5880168518; bt-02-usda-dry-mill-ethanol total 140033875.12125257; tea-01-openpytea-cs1-smr tea.lcop 3.7324296969383304; tea-02-turton-ch10 tea.npv 24445572.894993633; tea-03-ts3-example-9-4 tea.npv 138683835.8273631. Before this, a known failure ran as it.fails — it caught a miss appearing or disappearing but not a miss changing size; the anchor closes that gap.

Textbook suite: 12 against a target of 10 (cases 01–12 above; nine within ±1 %, three — 04, 11, 12 — quantified known failures with engine anchors). Turton Chapter 7 read in full from the owner's copy (2026-09-20): 7.10 and 7.12 share 7.11's chart-read C_p^0 (7.10 would miss by +1.2 %; 7.12 also needs the Fig. A.18 stainless F_M = 2.73, not held); 7.13 and 7.14 added 2026-09-21 as cases 11 and 12 once Eq. 7.10/A.2 was transcribed and the engine's turton_vessel_a2 form took the diameter from the line's sizing step — both are known failures for one reason, the book's (P + 1) substitution into the vessel pressure factor (the equation's text defines P in barg; the substitution recovers each printed total to +0.03 %); their chart-read factors (SS vessel F_M 3.11, SS-tube exchanger F_M 1.81, CS pump F_M 1.55, SS tray F_BM 1.83) are the examples' own readings and ride in library_overlay copies of the records, never in the library; 7.15 is a Table 7.13 capacity-scaling case, not a Class 4 example. T&S Example 7.3 added 2026-09-21 as case 05 (shell masses entered as the book prints them; see the row). PTW Examples 6-3 and 6-5 added 2026-09-21 as cases 06 and 07 from the owner's copy (6-5's Eq. 6-10 results are outside the engine's Class 5 chain — see the row). Turton Examples 7.6(c), 7.7 and 7.8 added 2026-09-21 as cases 08–10 from the owner's copy (PDF pp.214 and 216), each with the book's Table 7.4 index values in index_snapshot so the escalation ratio is the book's; 7.10 was not added — it would be a second copy of 04's chart-read gap (same C_p^0, F_P = 1) and adds no coverage 04 and the intermediate-value check do not already give. T&S Example 9.5 (adipic acid, 30/70 construction, 50 % first-year rate, tax in arrears, worksheet printed as a figure) is not fixtured: the engine has no production ramp, and Fig. 9.2's cash flows are not in the PDF text layer.

3. Historical back-test (Sprint 10)

Three of the five cases below (#1 hydrogen, #4 ethylene, #5 HDPE) ship as packages/library/samples/history.sample.json and can be loaded on the Knowledge base tab as a first, ready-made knowledge base.

No client project data is used. Each case is a plant whose capacity and all-in cost are published by an independent public source (a US government study, a USDA survey, or the owner's own announcement), recomputed in Class 5 capacity mode from the T&S Table 7.1 correlations with the tool's out-of-the-box allowances (T&S Table 7.5 fluids OSBL 30 %, D&E 30 %, contingency 10 %; owner's cost 0 %) and CEPCI-escalated to the published cost date. Pass criterion: the Class 5 band, −50 % / +100 % of the published figure. Files: packages/library/worked-examples/bt-0N-*.example.json; they run on every commit.

#PlantCapacity (trains)Published cost, basisSourceinferTIC Class 5ErrorBand
1Hydrogen, SMR without capture200 MMscfd (4 × 50)$344 MM TOC, 2018$, US MidwestNETL DOE/NETL-2022/3241, Case 1$343 MM−0.4 %inside
2Fuel ethanol, corn dry mill40 MMgal/y = 119.5 kt/y (1)$62.8 MM (survey avg $1.57/gal capacity), 2002$, US MidwestUSDA AER-841 (Shapouri & Gallagher 2005), p.8$140 MM+123 %outside
3Methanol, Geismar 31.8 Mt/y = 5,455 t/d (1)≈ $1.30 bn, 2019–24 spend (2022 basis), LouisianaMethanex news releases, FID Jul 2019 and Q2 2024$1.45 bn+12 %inside
4Ethylene, ethane cracker500 kt/y = 1,102 MMlb/y (1)≈ $1.4 bn announced, 2015, LouisianaShin-Etsu / Louisiana Economic Development releases, Apr 2015$1.31 bn−6 %inside
5HDPE, Hyperzone (as Phillips slurry)500 kt/y = 1,100 MMlb/y (2 × 550)$725 MM, 2016–19 (2017 basis), TexasLyondellBasell news releases Aug 2016, May 2017$620 MM−15 %inside

Four of five land inside the Class 5 band, spread −15 % to +12 % around zero (mean −2 %) on the fluids plants. The first run of this back-test used the Con Edison 35 % as the Class 5 contingency default and overshot every case by +5 % to +37 %; the default was changed to T&S Table 7.5's 10 % (the point-estimate contingency that belongs with the Table 7.1 correlations), with the 35–40 % retained as the upper end of the benchmark range and the −50/+100 % band carrying the class uncertainty. Cases 3–5 are brownfield projects on integrated sites (shared utilities, hydrogen, ethylene supply), which explains the residual negative errors on 4 and 5. Case 2 is recorded as a known failure (known_failure in the file; the suite asserts it stays outside so a silent change is noticed): the ISBL correlation alone is ≈ +27 % over a design-build dry-mill package, and fluids OSBL/D&E/contingency on top nearly doubles it. It is not tuned away — the lesson for a solids/biofuels plant is to use lower OSBL and engineering allowances than the fluids defaults, which the estimator can do on the Factors page and record in the assumptions register.

Scope caveats are stated in each file's notes.assumptions: NETL's TOC includes owner's costs (ours are 0 %); the Shintech figure also covers VCM/PVC tie-ins; cost dates for multi-year builds are taken at the construction mid-point. These are synthetic in the sense that no project is the user's own, but every number traces to a public document.

4. Known limitations that affect validation

How to read a miss

A known failure is a documented difference between the book’s own working and the method as written — a factor read off a chart, a substitution the book makes in an equation, tax paid a year in arrears. The tool follows the method as written and states the gap, rather than tuning to the printed answer. The back-test’s one miss outside the Class 5 band is kept as a miss for the same reason.