11# ICS2 Week 9 — CUI Coupled Thermohygro-Electrochemical Simulation
22
3- [ ![ DOI] ( https://zenodo.org/badge/DOI/10.5281/zenodo.20172508.svg )] ( https://doi.org/10.5281/zenodo.20172508 )
4-
53[ ![ CI] ( https://github.com/felipearocha/integrity-code-series-week9-cui/actions/workflows/ci.yml/badge.svg )] ( https://github.com/felipearocha/integrity-code-series-week9-cui/actions/workflows/ci.yml )
6- [ ![ Python] ( https://img.shields.io/badge/python-3.11%2B-blue.svg )] ( https://www.python.org/ )
7- [ ![ Tests] ( https://img.shields.io/badge/tests-151%20passing-brightgreen.svg )] ( #testing )
8- [ ![ License] ( https://img.shields.io/badge/license-Research--Educational-lightgrey.svg )] ( LICENSE )
4+ [ ![ License: MIT] ( https://img.shields.io/badge/License-MIT-green.svg )] ( LICENSE )
5+ [ ![ Python 3.11+] ( https://img.shields.io/badge/python-3.11%2B-blue.svg )] ( https://www.python.org/downloads/ )
6+ [ ![ Tests: 154 passing] ( https://img.shields.io/badge/tests-154%20passing-brightgreen.svg )] ( tests )
7+ [ ![ Code style: ruff] ( https://img.shields.io/badge/code%20style-ruff-000000.svg )] ( https://github.com/astral-sh/ruff )
8+ [ ![ DOI] ( https://zenodo.org/badge/DOI/10.5281/zenodo.20172508.svg )] ( https://doi.org/10.5281/zenodo.20172508 )
99
1010Three-way coupled physics-first simulator for ** Corrosion Under Insulation (CUI)**
1111on insulated carbon-steel process piping. Simulates moisture ingress through a
@@ -21,11 +21,12 @@ Part of an ongoing series of physics-first integrity simulators by Felipe Rocha:
2121| # | Repo | Domain |
2222| ---| ---| ---|
2323| Week 3 | [ Integrity-code-series-3] ( https://github.com/felipearocha/Integrity-code-series-3 ) | F1 lap simulation (six coupled ODEs) |
24- | Week 6 | [ Integrity -code-series-week6-smartphone-galvanic] ( https://github.com/felipearocha/Integrity-code-series-week6-smartphone-galvanic ) | Smartphone galvanic corrosion (Laplace + Butler-Volmer) |
24+ | Week 6 | [ integrity -code-series-week6-smartphone-galvanic] ( https://github.com/felipearocha/Integrity-code-series-week6-smartphone-galvanic ) | Smartphone galvanic corrosion (Laplace + Butler-Volmer) |
2525| Week 7 | [ integrity_code_series_week7_h2_lferw] ( https://github.com/felipearocha/integrity_code_series_week7_h2_lferw ) | LF-ERW H2 conversion (B31.12 + NACE TM0316) |
2626| Week 8 | [ integrity-code-series-week8-creep-fatigue-heater] ( https://github.com/felipearocha/integrity-code-series-week8-creep-fatigue-heater ) | Creep-fatigue 9Cr-1Mo (Norton/Omega + Coffin-Manson) |
27- | Week 9 | [ integrity-code-series-week9-cui] ( https://github.com/felipearocha/integrity-code-series-week9-cui ) | CUI thermohygro-electrochemical (3 PDEs, Strang) |
27+ | ** Week 9** | ** [ integrity-code-series-week9-cui] ( https://github.com/felipearocha/integrity-code-series-week9-cui ) ** | ** CUI thermohygro-electrochemical (3 PDEs, Strang) — this repo ** |
2828| Week 10 | [ integrity-code-series-week-10_nnph_scc] ( https://github.com/felipearocha/integrity-code-series-week-10_nnph_scc ) | NNpHSCC full-physics (Chen-Sutherby-Xing + BS 7910) |
29+ | Week 11 | [ integrity-code-series-week11-erosion-corrosion-multiphase] ( https://github.com/felipearocha/integrity-code-series-week11-erosion-corrosion-multiphase ) | Erosion-corrosion multiphase (NORSOK M-506 + DNV-RP-O501 + G119 + API 579) |
2930| Bonus | [ Vibration-Accelerated-Corrosion-Coupled-Mechano-Electrochemical-Simulation] ( https://github.com/felipearocha/Vibration-Accelerated-Corrosion-Coupled-Mechano-Electrochemical-Simulation ) | Vibration-accelerated corrosion (SDOF + Butler-Volmer + Archard) |
3031| Bonus | [ synthetic-integrity-digital-twin-piml] ( https://github.com/felipearocha/synthetic-integrity-digital-twin-piml ) | Physics-informed neural-network surrogate |
3132| Bonus | [ integrity-data-foundation] ( https://github.com/felipearocha/integrity-data-foundation ) | Engineering data validation baseline |
@@ -38,7 +39,7 @@ cd REPO
3839python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
3940pip install -r requirements.txt
4041python run_all.py # ~70 s on a laptop; produces 7 figures + 1 GIF + audit_chain.json
41- pytest tests/ -v # 151 tests
42+ pytest tests/ -v # 154 tests
4243python validation/benchmarks.py # 5 analytical benchmarks
4344```
4445
@@ -60,6 +61,8 @@ locations from outer cladding temperature measurements.
6061
6162## Governing Equations
6263
64+ Full rendered (MathJax) reference: ** [ docs/equations.html] ( docs/equations.html ) ** — open in any browser.
65+
6366### Field 1 — Fourier Heat Conduction (Eq. 1)
6467
6568```
@@ -167,6 +170,8 @@ integrity_code_series_week9_cui_thermohygro/
167170│ ├── surrogate_gbr.py GBR surrogate, parity metrics
168171│ ├── fad_assessment.py API 579-1 Level 2 FAD
169172│ └── audit_chain.py SHA-256 hash-linked run log
173+ ├── docs/
174+ │ └── equations.html Rendered (MathJax) governing-equations reference
170175├── validation/
171176│ └── benchmarks.py
172177├── visualization/
@@ -177,6 +182,7 @@ integrity_code_series_week9_cui_thermohygro/
177182├── tests/
178183│ ├── test_geometry_thermal.py
179184│ ├── test_moisture_electrochemistry.py
185+ │ ├── test_extended.py
180186│ └── test_remaining.py
181187├── assets/figures/ 8 static PNG panels (300 DPI)
182188├── assets/animations/ cui_moisture_front.gif
@@ -214,7 +220,7 @@ integrity_code_series_week9_cui_thermohygro/
214220
215221---
216222
217- ## Cybersecurity Summary
223+ ## Cybersecurity (STRIDE)
218224
219225STRIDE threat model applied to DFOS sensor network feeding inverse solver:
220226
@@ -230,12 +236,41 @@ STRIDE threat model applied to DFOS sensor network feeding inverse solver:
230236
231237---
232238
239+ ## Anti-Hallucination Note
240+
241+ Every physical parameter carries an explicit provenance tag. Constants read directly from
242+ a standard or the literature are stated as such; parameters anchored to literature but not
243+ calibrated to a specific site are flagged ` [ASSUMED] ` in ` src/constants.py ` and collected
244+ in the ** [ ASSUMED] Parameter Flags** table above. In the Integrity Code Series tiering this
245+ maps to:
246+
247+ - ** T1 [ SOURCE] ** — values fixed by physics or a cited standard (the API 579-1 Level 2
248+ Option B FAD curve, Faraday's law, the API RP 583 50-175 C CUI window).
249+ - ** T2 [ SOURCE] ** — quantities derived from T1 inputs (effective insulation properties, the
250+ golden-section Tikhonov recovery restricted to ` S ∈ [0, S_ref] ` ).
251+ - ** T3 [ ASSUMED] ** — practitioner / literature estimates that are not site-calibrated: the
252+ mineral-wool moisture diffusivity ` D_theta0 ` and slope ` beta_theta ` , the electrolyte
253+ threshold ` theta_crit ` , the Fe-dissolution ` i0_ref ` / ` E_a ` / mixed overpotential, and the
254+ ` D_T ` coupling form.
255+
256+ No equation, constant, or citation in this repository or in ` docs/equations.html ` is
257+ introduced beyond what the model actually implements.
258+
259+ ---
260+
261+ ## Disclaimer
262+
263+ Research tool only. Not for design, fitness-for-service, or safety-critical decisions without site-specific calibration and independent PE review.
264+
265+ Additionally: API RP 583, API 579-1, and PHMSA regulations take precedence over model
266+ output, and ` [ASSUMED] ` parameters must be validated against site-specific inspection data
267+ before any operational use.
268+
269+ ---
270+
233271## License
234272
235- Research and educational use only. Not for operational fitness-for-service decisions
236- without independent engineering review and site-specific validation.
237- API RP 583, API 579-1, PHMSA regulations take precedence over model output.
238- [ ASSUMED] parameters must be validated against site-specific inspection data.
273+ MIT — Felipe Rocha. See [ LICENSE] ( LICENSE ) .
239274
240275---
241276
0 commit comments