Fire Rupture Study
This skill coordinates two related fire-rupture workflows:
- blocked-in liquid-filled segments exposed to fire, where thermal expansion can
overpressure the pipe/flange system; and
- blowdown pipe segments exposed to fire, where a supplied pressure profile is
combined with wall heat-up, temperature-dependent material data, and a
Sellars-Tegart strain-rate model to estimate time to rupture.
For both workflows, gather evidence, preserve assumptions and gaps, run the
appropriate NeqSim safety.rupture calculation, hand off any rupture source term,
and produce a professional report output.
For source-document-driven blowdown pipe-fire studies, use the governed handoff
layer instead of calling the low-level solver directly: build
SafetyEvidenceReference entries, assemble a PipeFireRuptureDataSource, run
PipeFireRuptureStudyRunner, and report the returned
PipeFireRuptureStudyHandoff. This preserves calculation readiness, standards
readiness, deterministic uncertainty cases, and the post-rupture source-term
handoff in one JSON-safe package.
When the blowdown pressure profile has not yet been generated, first use the
dynamic flare/blowdown layer from neqsim-depressurization-mdmt: assemble
LineEquipmentListEvidence and DynamicBlowdownFlareStudyDataSource, run
DynamicBlowdownFlareStudyRunner, and use the returned source pressure profiles
and dynamic_blowdown_flare_load_handoff.v1 as the governed basis for the
pipe-fire rupture profile and flare/consequence handoff.
Use the workflow generically. Do not encode operator-specific criteria in public
examples. If a private task has project-specific acceptance criteria, keep them
inside the task folder and cite the private basis only in that task deliverable.
When to Use
- A Word report, technical note, or user request asks for a similar study on
trapped liquid, blocked-in liquid, or no pressure relief on liquid-filled piping.
- A fire case can heat a liquid-filled segment isolated by closed valves or PBB.
- Thermal expansion may raise pressure above pipe, flange, gasket, or relief limits.
- The study needs PFP endurance, rupture time, source-term handoff, or an evidence
matrix showing missing project data.
- A blowdown/depressurization pressure profile already exists and must be used
to screen pipe wall heat-up, accumulated strain, rupture time, and release rate.
- P&ID, line-list, and piping-specification data must be assembled into pipe cases and reviewed by
an engineer before calculation.
Skills to Load Together
- Document-retrieval tools for P&IDs, line lists, piping specs, material
certificates, fire-zone/PFP documents, relief studies, and design basis documents.
neqsim-technical-document-reading for structured extraction from Word, PDF,
Excel, P&ID images, line lists, and material certificates.
neqsim-process-safety for barrier/PFP demand and risk register context.
neqsim-relief-flare-network when a thermal relief path or PSV/flare load is
part of the mitigation.
neqsim-consequence-analysis when the rupture source term must be carried into
dispersion, fire, explosion, or QRA calculations.
neqsim-professional-reporting for the final evidence-based report.
Evidence Retrieval Checklist
Before running the calculation, search the task references folder and any
configured document backend for:
| Evidence |
Purpose in calculation |
| P&ID / isometric |
Isolation boundary, valves, vents, drains, relief paths, line numbers |
| Line list / route table |
NPS, internal diameter, wall thickness, length, design pressure/temperature |
| Piping specification |
Material class, corrosion allowance, flange class, gasket/bolt family |
| Material certificate or material class sheet |
SMYS, SMTS, grade, temperature limits, toughness notes |
| Flange/bolt/gasket data |
Pressure-temperature rating and leakage/rupture limitations |
| Fire-zone / fire-study document |
Exposed area, heat flux, pool/jet-fire basis, fire duration |
| PFP requirement or inspection record |
Required endurance and actual protection condition |
| Relief/thermal relief/blowdown basis |
Relief availability, set pressure, discharge path, creditability |
| Blowdown pressure profile |
Time/pressure table, units, absolute/gauge convention, source calculation |
| Pipe fire material curve |
Temperature-dependent UTS, strain effect, rupture strain limit, Sellars-Tegart constants |
| Pipe fluid basis |
Fluid density, heat capacity, gas molecular weight, gas/liquid release basis |
| Design basis / technical requirements |
Acceptance criteria, required margins, standards, reporting basis |
| Consequence or layout study |
Source-term destination, escalation, radiation, dispersion context |
If any item is missing, do not invent it. Use a clearly labelled screening
default only when the result can still support a preliminary decision, and put
the gap in the assumptions/gaps register.
Extraction Schema
Technical document readers should return a block like this to the solver:
{
"study_type": "trapped_liquid_fire_rupture",
"segments": [
{
"segment_id": "TL-001",
"line_numbers": ["..."],
"isolation_boundary": {"upstream": "XV-...", "downstream": "XV-..."},
"fluid": {"description": "...", "composition_source": "..."},
"operating_pressure_bara": {"value": 10.0, "source": "..."},
"operating_temperature_C": {"value": 25.0, "source": "..."},
"pipe_internal_diameter_m": {"value": 0.10, "source": "..."},
"wall_thickness_m": {"value": 0.003, "source": "..."},
"exposed_length_m": {"value": 10.0, "source": "..."},
"material_grade": {"value": "API 5L X52", "source": "..."},
"flange_class": {"value": 900, "source": "..."},
"fire_basis": {"type": "api521_pool_fire", "heat_flux_W_m2": null, "source": "..."},
"pfp_requirement_s": {"value": 1800.0, "source": "..."},
"relief": {"available": false, "set_pressure_bara": null, "source": "..."},
"acceptance_criteria": [{"criterion": "...", "source": "..."}],
"evidence_gaps": ["..."]
}
]
}
Every numeric field should preserve original value, original unit, converted SI
value, source document, page/sheet, and confidence when available.
For blowdown pipe fire rupture, technical document readers or source-document agents
should return a block like this:
{
"study_type": "blowdown_pipe_fire_rupture",
"segment_id": "BD-001",
"pressure_profile": {
"time_unit": "minute",
"pressure_unit": "bara",
"basis": "absolute pressure profile from governed blowdown calculation",
"points": [[0.0, 61.3], [0.083333333, 59.7053]]
},
"pipes": [
{
"pipe_id": "3DD100",
"pipe_class": "DD100",
"nps_in": 3.0,
"outside_diameter_mm": 88.9,
"wall_thickness_mm": 3.7,
"corrosion_allowance_mm": 0.0,
"wall_undertolerance_fraction": 0.125,
"weld_factor": 1.0,
"material": "22Cr duplex",
"fluid_density_kg_m3": 23.75,
"fluid_heat_capacity_J_kgK": 2283.35,
"gas_molecular_weight_kg_kmol": 18.2,
"initial_temperature_C": 20.0,
"exposed_length_m": 1.0,
"source": "reviewed piping specification / workbook input"
}
],
"fire_scenarios": ["Small jet fire 250 kW/m2", "Pool fire 250 kW/m2", "Large jet fire 350 kW/m2"],
"evidence_gaps": []
}
Governed Source-Document Handoff Schema
When pipe data comes from source drawings and piping-specification rows, normalize it into a
source-traceable package before NeqSim calculation:
{
"schemaVersion": "pipe_fire_rupture_data_source.v1",
"studyId": "BD-001",
"input": {"segmentId": "3DD100", "evidenceReferences": []},
"material": {"materialName": "22Cr duplex"},
"scenario": {"name": "Large jet fire 350 kW/m2"},
"pressureProfile": {"pressureUnit": "bara", "timeUnit": "seconds"},
"pidTopologyEvidence": {
"schemaVersion": "pid_topology_evidence.v1",
"drawingId": "P-ID-001",
"revision": "A",
"simulationReady": false,
"boundaryVerified": false,
"nodes": [],
"edges": [],
"missingTags": []
},
"sourceDocumentEvidence": [],
"pipingSpecificationEvidence": [],
"processEvidence": [],
"fireScenarioEvidence": [],
"sourceDiagramsReviewed": true,
"pidTopologyVerified": false,
"pipingSpecificationRowsReviewed": true,
"materialCertificateReviewed": false,
"blowdownProfileVerified": true,
"fireScenarioReviewed": true,
"standardsReviewed": false,
"humanReviewRequired": true,
"readiness": {"verdict": "SCREENING"}
}
Readiness semantics:
NOT_READY: missing calculation-critical input (input, material, scenario,
or pressure profile). Do not run the calculation.
SCREENING: calculation may run, but evidence gaps or unreviewed assumptions
prevent design-grade use.
DESIGN_GRADE: controlled source drawing, piping-specification, material, fire, and depressurization evidence
has been reviewed and the package is ready for formal engineering review.
Quick Screening: Blocked-In Liquid Thermal Expansion (No Fire)
Before committing to a full fire-exposure rupture study, BlockedInLiquidExpansionAnalysis
(neqsim.process.util.fire) provides a fast, fire-independent check of pure thermal-expansion
overpressure for a blocked-in liquid segment, per API 521 §4.4.12:
SystemInterface oil = new SystemSrkEos(298.15, 10.0);
oil.addComponent("n-heptane", 100.0);
oil.setMixingRule("classic");
double[] temperaturesK = {298.15, 308.15, 318.15, 328.15, 333.15};
double[] pressuresPa =
BlockedInLiquidExpansionAnalysis.computeIsochoricPressureProfile(oil, temperaturesK);
// Fast cross-check using the simplified API 521 beta/kappa relation
double beta = BlockedInLiquidExpansionAnalysis.estimateThermalExpansionCoefficient(oil, 1.0);
double kappa = BlockedInLiquidExpansionAnalysis.estimateIsothermalCompressibility(oil, 1.0e5);
double deltaPPa = BlockedInLiquidExpansionAnalysis.simplifiedPressureRise(beta, kappa, 35.0);
Use this when the task only needs a thermal-expansion magnitude (e.g. deciding whether a thermal
relief valve is needed) without a fire scenario, material derating, or flange/pipe-stress checks.
See docs/safety/blocked_in_liquid_thermal_expansion.md
for the full reference.
Java Calculation Pattern
SystemInterface oil = new SystemSrkEos(298.15, 10.0);
oil.addComponent("n-heptane", 100.0);
oil.setMixingRule("classic");
InventoryResult inventory = new TrappedInventoryCalculator()
.setFluid(oil)
.setOperatingConditions(10.0, "bara", 25.0, "C")
.addPipeSegment("TL-001", 0.10, 10.0, 1.0, null)
.calculate();
TrappedLiquidFireRuptureResult result = TrappedLiquidFireRuptureStudy.builder()
.segmentId("TL-001")
.fluid(oil)
.inventory(inventory)
.pipeGeometry(0.10, "m", 3.0, "mm", 10.0, "m")
.api5lMaterial("X52")
.fireScenario(FireExposureScenario.api521PoolFire(3.4, 1.0))
.flangeClass(900)
.timeControls(1800.0, 2.0)
.build()
.run();
Key classes:
MaterialStrengthCurve: ambient SMYS/SMTS plus temperature derating.
FireExposureScenario: API 521 pool fire, fixed heat flux, or radiative fire.
TrappedLiquidFireRuptureStudy: transient pressure, wall temperature, pipe stress,
flange rating, vapor-pocket, relief-set, and rupture checks.
TrappedLiquidFireRuptureResult: event times, time histories, JSON map, PFP demand,
and source-term handoff.
For supplied-pressure-profile blowdown pipe fire rupture:
BlowdownPressureProfile profile = BlowdownPressureProfile.fromMinutesAndBara(
new double[] {0.0, 0.083333333, 0.166666667},
new double[] {61.3, 59.7053, 58.6349});
PipeFireRuptureInput pipe = PipeFireRuptureInput.builder("3DD100")
.pipeClass("DD100")
.nominalDiameterInches(3.0)
.outsideDiameter(88.9, "mm")
.nominalWallThickness(3.7, "mm")
.corrosionAllowance(0.0, "mm")
.wallThicknessUndertoleranceFraction(0.125)
.weldFactor(1.0)
.fluidDensityKgPerM3(23.75)
.fluidHeatCapacityJPerKgK(2283.35)
.gasMolecularWeightKgPerKmol(18.2)
.initialTemperatureC(20.0)
.exposedLength(1.0, "m")
.build();
PipeFireRuptureResult pipeResult = PipeFireRuptureStudy
.builder(pipe, PipeFireRuptureMaterial.fromSpreadsheetMaterialName("22Cr duplex"),
PipeFireRuptureScenario.spreadsheetLargeJetFire(), profile)
.timeStepSeconds(5.0)
.maxTimeSeconds(1800.0)
.build()
.run();
For governed agentic studies, prefer the runner pattern:
SafetyEvidenceReference pipingSpecWall = SafetyEvidenceReference
.builder("PIPING_SPEC", "nominal_wall_thickness_mm")
.documentId("pipe-class=DD100;rev=D")
.valueText("3.7")
.unit("mm")
.status("fetched_joined")
.confidence(0.95)
.build();
PipeFireRuptureInput governedPipe = pipe.toBuilder()
.evidenceReference(pipingSpecWall)
.build();
PipeFireRuptureDataSource dataSource = PipeFireRuptureDataSource.builder("BD-001")
.input(governedPipe)
.material(PipeFireRuptureMaterial.fromSpreadsheetMaterialName("22Cr duplex"))
.scenario(PipeFireRuptureScenario.spreadsheetLargeJetFire())
.pressureProfile(profile)
.addPipingSpecificationEvidence(pipingSpecWall)
.sourceDiagramsReviewed(true)
.pidTopologyVerified(false)
.pipingSpecificationRowsReviewed(true)
.materialCertificateReviewed(false)
.blowdownProfileVerified(true)
.fireScenarioReviewed(true)
.standardsReviewed(false)
.build();
PipeFireRuptureStudyHandoff handoff = PipeFireRuptureStudyRunner.builder()
.timeStepSeconds(5.0)
.maxTimeSeconds(1800.0)
.runUncertainty(true)
.build()
.run(dataSource);
Key pipe-fire classes:
BlowdownPressureProfile: absolute pressure profile with exact tabulated-point lookup, step or linear mode, and barg conversion.
PipeFireRuptureInput: one pipe case with geometry, wall allowance, fluid, and exposed-length data.
PipeFireRuptureMaterial: workbook-style material curves for 22Cr duplex, SS316, CS235, CS360/API 5L-X52, superduplex, and 6Mo.
PipeFireRuptureScenario: small jet, pool fire, large jet, and custom radiative plus convective fire exposure.
PipeFireRuptureStudy: heat-up, thick-wall stress, Sellars-Tegart strain rate, accumulated strain, rupture event, and screening release estimate.
PipeFireRuptureResult: time series, rupture summary, warnings, recommendations, release estimate, and JSON map.
SafetyEvidenceReference: compact source reference for source drawings, piping specifications, process, fire, and material inputs.
SafetyStudyReadiness: NOT_READY / SCREENING / DESIGN_GRADE verdict with findings and actions.
PidTopologyEvidence: typed P&ID topology graph, boundary status, missing-tag register, and drawing-overlay readiness.
PipeFireRuptureDataSource: governed data-source package binding inputs to evidence and review flags.
PipeFireRuptureStudyRunner: readiness-gated orchestration of solver, standards check, uncertainty, and source-term handoff.
PipeFireRuptureStudyHandoff: versioned package containing data source, readiness, result, uncertainty, and source term.
PipeFireRuptureStandardsValidator: API 521 / ISO 23251 / NORSOK S-001 / piping-specification evidence-quality gate.
PipeFireRuptureUncertaintyRunner: deterministic one-at-a-time perturbation screening of wall, corrosion, heat-flux, and initial-temperature assumptions.
LineEquipmentListEvidence, DynamicBlowdownFlareStudyDataSource, DynamicBlowdownFlareStudyRunner, and
DynamicBlowdownFlareStudyHandoff: governed dynamic depressurization, PSV, and flare-load setup used to create a
source-traceable pressure profile before pipe-fire rupture screening.
Reusable Safety Report Template
For governed source-document pipe-fire studies, the Word/HTML report should use a
repeatable evidence-first structure. At minimum include:
- Executive verdict with
NOT_READY, SCREENING, or DESIGN_GRADE, plus
the human-review status.
- Evidence matrix with source system, document id, revision, page/sheet,
field, extracted value, unit, status, confidence, and notes.
- Source drawing table with drawing id, revision, embedded-text/OCR
status, topology nodes/edges count, missing tags, and overlay/annotation link.
- Piping specification table with applicable revision, class/material references, NPS,
outside diameter, wall thickness, corrosion allowance, undertolerance, and
row-review status.
- NeqSim input lineage mapping each solver input to its
SafetyEvidenceReference.
- Standards-applied table covering API 521 / ISO 23251, NORSOK S-001,
piping/material basis, and consequence/source-term handoff status.
- Assumptions and gaps register with severity, effect on result, and required
action before design use.
- Calculation results and uncertainty including rupture time, rupture pressure,
wall temperature, release estimate, deterministic perturbation cases, and
P10/P50/P90 where available.
- Source-term handoff using
pipe_fire_rupture_source_term_handoff.v1 when
rupture is predicted.
- Calculation lineage from document field to NeqSim input to reported result.
Before the report is considered complete, apply these hard QA gates:
- The executive summary and problem description must be populated from the
current
task_spec.md and results.json; no placeholder text may remain.
- The report front page must state the readiness label (
NOT_READY,
SCREENING, or DESIGN_GRADE) and whether design-grade use is blocked.
- The method in
task_spec.md, source scripts, generated results.json, and
report must agree on the pressure-profile basis. If the task moved from a
reconstructed profile to a direct dynamic NeqSim profile, update all four.
- Script-backed studies are acceptable when
study_config.yaml explicitly sets
notebooks to not required; do not create false notebook execution warnings.
analysis.md and neqsim_improvements.md must be filled for safety-critical
workflow/code gaps, including reporting, evidence-readiness, pressure-profile
export, plant-data evidence, and governed handoff gaps.
- The evidence gaps/design blockers and recommendations must appear before or
alongside the conclusions, not only in appendix-style detail.
Results to Save
Save a trapped_liquid_fire_rupture section in results.json:
{
"trapped_liquid_fire_rupture": {
"segments": [
{
"segment_id": "TL-001",
"limiting_failure_mode": "PIPE_RUPTURE",
"time_to_pipe_rupture_s": 420.0,
"time_to_flange_failure_s": null,
"minimum_failure_time_s": 420.0,
"final_pressure_bara": 145.0,
"final_wall_temperature_C": 530.0,
"pfp_required_endurance_s": 1800.0,
"pfp_margin_s": -1380.0,
"evidence_gaps": ["Material certificate not found"],
"recommendations": ["Provide thermal relief or documented PFP upgrade"]
}
],
"standards_applied": ["API 521", "ISO 23251", "ASME B31.3", "ASME B16.5"],
"assumptions": ["Generic API 5L X52 screening curve used pending certificate"],
"evidence_matrix": []
}
}
For Standard/Comprehensive studies, include:
- Segment summary table with event times and limiting mode.
- Evidence matrix with document, page/sheet, extracted value, confidence, and gap status.
- Assumptions/gaps register ranked by impact.
- Time histories for pressure, wall temperature, material allowable stress, and flange rating.
- PFP demand table from
toPassiveFireProtectionDemand(...).
- Source-term handoff from
createRuptureSourceTerm(...) if rupture is predicted.
- Risk register using
neqsim-process-safety when consequences are material.
For blowdown pipe fire rupture, save a pipe_fire_rupture section in
results.json:
{
"pipe_fire_rupture": {
"segment_id": "BD-001",
"pressure_profile_basis": "absolute bara profile from governed blowdown model",
"pipes": [
{
"pipe_id": "3DD100",
"fire_scenario": "Large jet fire 350 kW/m2",
"rupture_predicted": true,
"time_to_rupture_s": 110.0,
"rupture_pressure_barg": 32.03,
"rupture_wall_temperature_C": 760.0,
"release_estimate_kg_s": 21.9,
"evidence_gaps": []
}
],
"standards_applied": ["API 521", "ASME B31.3"],
"assumptions": ["Spreadsheet material curve used pending certificate review"]
}
}
For governed studies, also persist the runner handoff:
{
"pipe_fire_rupture_handoff": {
"schemaVersion": "pipe_fire_rupture_study_handoff.v1",
"calculationReadiness": {"verdict": "SCREENING"},
"standardsReadiness": {"verdict": "SCREENING"},
"result": {},
"uncertainty": {"schemaVersion": "pipe_fire_rupture_uncertainty.v1"},
"sourceTermHandoff": {"schemaVersion": "pipe_fire_rupture_source_term_handoff.v1"}
}
}
Validation and Benchmarking
- Hand-check pressure rise using
deltaP = bulk_modulus * alpha * deltaT.
- Compare API 521 heat flux or heat input against an independent spreadsheet or standard example.
- Verify material ambient strength against pipe specification or certificate.
- For pipe-fire studies, benchmark one representative case against the source
workbook or an independent spreadsheet before scaling to all pipe cases.
- Verify pressure-profile absolute/gauge convention. The workbook-style stress
and release calculations use barg, while the pressure profile is often supplied
as bara and converted by subtracting 1 bar.
- For high-consequence segments, treat the NeqSim result as screening and recommend
specialist flange/gasket assessment, FEA, or consequence modelling as needed.
Common Mistakes
| Mistake |
Fix |
| Using a generic flange class as final proof |
Replace with project flange, bolt, and gasket pressure-temperature data |
| Crediting relief without a discharge path |
Verify relief/thermal relief path on P&ID and relief design basis |
| Ignoring vents/drains |
Include them in the isolation boundary and trapped-volume assessment |
| Assuming PFP is installed and intact |
Require PFP specification and inspection/condition evidence |
| Reporting only rupture time |
Also report assumptions, evidence gaps, PFP margin, and source-term consequence handoff |
| Treating pressure-profile units casually |
Record whether the profile is bara or barg and convert explicitly |
| Letting superduplex map to 22Cr duplex |
Use PipeFireRuptureMaterial.fromSpreadsheetMaterialName or a reviewed material curve |
| Running plant-wide pipe-fire cases without review |
Ask the engineer to verify source-document, piping-specification, and user overrides before calculation |
Related Documentation
docs/safety/trapped_liquid_fire_rupture.md
docs/safety/trapped_inventory_calculator.md
1---2name: neqsim-trapped-liquid-fire-rupture3description: Fire rupture study workflow for blocked-in liquid-filled pipe segments and blowdown pipe fire heat-up / time-to-rupture strain-rate screening. USE WHEN: a task asks for trapped liquid, blocked-in liquid, thermal expansion rupture, fire exposure without relief, PFP demand, flange/pipe rupture screening, supplied blowdown pressure profile, pipe wall heat-up, strain-rate rupture time, or generating a Word/HTML safety study from P&IDs, line lists, piping specifications, material certificates, and fire documents. Anchors on neqsim.process.safety.rupture plus trapped inventory, document retrieval, pressure-profile handoff, and source-term handoff.4---56# Fire Rupture Study78This skill coordinates two related fire-rupture workflows:910- blocked-in liquid-filled segments exposed to fire, where thermal expansion can11 overpressure the pipe/flange system; and12- blowdown pipe segments exposed to fire, where a supplied pressure profile is13 combined with wall heat-up, temperature-dependent material data, and a14 Sellars-Tegart strain-rate model to estimate time to rupture.1516For both workflows, gather evidence, preserve assumptions and gaps, run the17appropriate NeqSim safety.rupture calculation, hand off any rupture source term,18and produce a professional report output.1920For source-document-driven blowdown pipe-fire studies, use the governed handoff21layer instead of calling the low-level solver directly: build22`SafetyEvidenceReference` entries, assemble a `PipeFireRuptureDataSource`, run23`PipeFireRuptureStudyRunner`, and report the returned24`PipeFireRuptureStudyHandoff`. This preserves calculation readiness, standards25readiness, deterministic uncertainty cases, and the post-rupture source-term26handoff in one JSON-safe package.2728When the blowdown pressure profile has not yet been generated, first use the29dynamic flare/blowdown layer from `neqsim-depressurization-mdmt`: assemble30`LineEquipmentListEvidence` and `DynamicBlowdownFlareStudyDataSource`, run31`DynamicBlowdownFlareStudyRunner`, and use the returned source pressure profiles32and `dynamic_blowdown_flare_load_handoff.v1` as the governed basis for the33pipe-fire rupture profile and flare/consequence handoff.3435Use the workflow generically. Do not encode operator-specific criteria in public36examples. If a private task has project-specific acceptance criteria, keep them37inside the task folder and cite the private basis only in that task deliverable.3839## When to Use4041- A Word report, technical note, or user request asks for a similar study on42 trapped liquid, blocked-in liquid, or no pressure relief on liquid-filled piping.43- A fire case can heat a liquid-filled segment isolated by closed valves or PBB.44- Thermal expansion may raise pressure above pipe, flange, gasket, or relief limits.45- The study needs PFP endurance, rupture time, source-term handoff, or an evidence46 matrix showing missing project data.47- A blowdown/depressurization pressure profile already exists and must be used48 to screen pipe wall heat-up, accumulated strain, rupture time, and release rate.49- P&ID, line-list, and piping-specification data must be assembled into pipe cases and reviewed by50 an engineer before calculation.5152## Skills to Load Together5354- Document-retrieval tools for P&IDs, line lists, piping specs, material55 certificates, fire-zone/PFP documents, relief studies, and design basis documents.56- `neqsim-technical-document-reading` for structured extraction from Word, PDF,57 Excel, P&ID images, line lists, and material certificates.58- `neqsim-process-safety` for barrier/PFP demand and risk register context.59- `neqsim-relief-flare-network` when a thermal relief path or PSV/flare load is60 part of the mitigation.61- `neqsim-consequence-analysis` when the rupture source term must be carried into62 dispersion, fire, explosion, or QRA calculations.63- `neqsim-professional-reporting` for the final evidence-based report.6465## Evidence Retrieval Checklist6667Before running the calculation, search the task references folder and any68configured document backend for:6970| Evidence | Purpose in calculation |71|----------|------------------------|72| P&ID / isometric | Isolation boundary, valves, vents, drains, relief paths, line numbers |73| Line list / route table | NPS, internal diameter, wall thickness, length, design pressure/temperature |74| Piping specification | Material class, corrosion allowance, flange class, gasket/bolt family |75| Material certificate or material class sheet | SMYS, SMTS, grade, temperature limits, toughness notes |76| Flange/bolt/gasket data | Pressure-temperature rating and leakage/rupture limitations |77| Fire-zone / fire-study document | Exposed area, heat flux, pool/jet-fire basis, fire duration |78| PFP requirement or inspection record | Required endurance and actual protection condition |79| Relief/thermal relief/blowdown basis | Relief availability, set pressure, discharge path, creditability |80| Blowdown pressure profile | Time/pressure table, units, absolute/gauge convention, source calculation |81| Pipe fire material curve | Temperature-dependent UTS, strain effect, rupture strain limit, Sellars-Tegart constants |82| Pipe fluid basis | Fluid density, heat capacity, gas molecular weight, gas/liquid release basis |83| Design basis / technical requirements | Acceptance criteria, required margins, standards, reporting basis |84| Consequence or layout study | Source-term destination, escalation, radiation, dispersion context |8586If any item is missing, do not invent it. Use a clearly labelled screening87default only when the result can still support a preliminary decision, and put88the gap in the assumptions/gaps register.8990## Extraction Schema9192Technical document readers should return a block like this to the solver:9394```json95{96 "study_type": "trapped_liquid_fire_rupture",97 "segments": [98 {99 "segment_id": "TL-001",100 "line_numbers": ["..."],101 "isolation_boundary": {"upstream": "XV-...", "downstream": "XV-..."},102 "fluid": {"description": "...", "composition_source": "..."},103 "operating_pressure_bara": {"value": 10.0, "source": "..."},104 "operating_temperature_C": {"value": 25.0, "source": "..."},105 "pipe_internal_diameter_m": {"value": 0.10, "source": "..."},106 "wall_thickness_m": {"value": 0.003, "source": "..."},107 "exposed_length_m": {"value": 10.0, "source": "..."},108 "material_grade": {"value": "API 5L X52", "source": "..."},109 "flange_class": {"value": 900, "source": "..."},110 "fire_basis": {"type": "api521_pool_fire", "heat_flux_W_m2": null, "source": "..."},111 "pfp_requirement_s": {"value": 1800.0, "source": "..."},112 "relief": {"available": false, "set_pressure_bara": null, "source": "..."},113 "acceptance_criteria": [{"criterion": "...", "source": "..."}],114 "evidence_gaps": ["..."]115 }116 ]117}118```119120Every numeric field should preserve original value, original unit, converted SI121value, source document, page/sheet, and confidence when available.122123For blowdown pipe fire rupture, technical document readers or source-document agents124should return a block like this:125126```json127{128 "study_type": "blowdown_pipe_fire_rupture",129 "segment_id": "BD-001",130 "pressure_profile": {131 "time_unit": "minute",132 "pressure_unit": "bara",133 "basis": "absolute pressure profile from governed blowdown calculation",134 "points": [[0.0, 61.3], [0.083333333, 59.7053]]135 },136 "pipes": [137 {138 "pipe_id": "3DD100",139 "pipe_class": "DD100",140 "nps_in": 3.0,141 "outside_diameter_mm": 88.9,142 "wall_thickness_mm": 3.7,143 "corrosion_allowance_mm": 0.0,144 "wall_undertolerance_fraction": 0.125,145 "weld_factor": 1.0,146 "material": "22Cr duplex",147 "fluid_density_kg_m3": 23.75,148 "fluid_heat_capacity_J_kgK": 2283.35,149 "gas_molecular_weight_kg_kmol": 18.2,150 "initial_temperature_C": 20.0,151 "exposed_length_m": 1.0,152 "source": "reviewed piping specification / workbook input"153 }154 ],155 "fire_scenarios": ["Small jet fire 250 kW/m2", "Pool fire 250 kW/m2", "Large jet fire 350 kW/m2"],156 "evidence_gaps": []157}158```159160### Governed Source-Document Handoff Schema161162When pipe data comes from source drawings and piping-specification rows, normalize it into a163source-traceable package before NeqSim calculation:164165```json166{167 "schemaVersion": "pipe_fire_rupture_data_source.v1",168 "studyId": "BD-001",169 "input": {"segmentId": "3DD100", "evidenceReferences": []},170 "material": {"materialName": "22Cr duplex"},171 "scenario": {"name": "Large jet fire 350 kW/m2"},172 "pressureProfile": {"pressureUnit": "bara", "timeUnit": "seconds"},173 "pidTopologyEvidence": {174 "schemaVersion": "pid_topology_evidence.v1",175 "drawingId": "P-ID-001",176 "revision": "A",177 "simulationReady": false,178 "boundaryVerified": false,179 "nodes": [],180 "edges": [],181 "missingTags": []182 },183 "sourceDocumentEvidence": [],184 "pipingSpecificationEvidence": [],185 "processEvidence": [],186 "fireScenarioEvidence": [],187 "sourceDiagramsReviewed": true,188 "pidTopologyVerified": false,189 "pipingSpecificationRowsReviewed": true,190 "materialCertificateReviewed": false,191 "blowdownProfileVerified": true,192 "fireScenarioReviewed": true,193 "standardsReviewed": false,194 "humanReviewRequired": true,195 "readiness": {"verdict": "SCREENING"}196}197```198199Readiness semantics:200201- `NOT_READY`: missing calculation-critical input (`input`, material, scenario,202 or pressure profile). Do not run the calculation.203- `SCREENING`: calculation may run, but evidence gaps or unreviewed assumptions204 prevent design-grade use.205- `DESIGN_GRADE`: controlled source drawing, piping-specification, material, fire, and depressurization evidence206 has been reviewed and the package is ready for formal engineering review.207208## Quick Screening: Blocked-In Liquid Thermal Expansion (No Fire)209210Before committing to a full fire-exposure rupture study, `BlockedInLiquidExpansionAnalysis`211(`neqsim.process.util.fire`) provides a fast, fire-independent check of pure thermal-expansion212overpressure for a blocked-in liquid segment, per API 521 §4.4.12:213214```java215SystemInterface oil = new SystemSrkEos(298.15, 10.0);216oil.addComponent("n-heptane", 100.0);217oil.setMixingRule("classic");218219double[] temperaturesK = {298.15, 308.15, 318.15, 328.15, 333.15};220double[] pressuresPa =221 BlockedInLiquidExpansionAnalysis.computeIsochoricPressureProfile(oil, temperaturesK);222223// Fast cross-check using the simplified API 521 beta/kappa relation224double beta = BlockedInLiquidExpansionAnalysis.estimateThermalExpansionCoefficient(oil, 1.0);225double kappa = BlockedInLiquidExpansionAnalysis.estimateIsothermalCompressibility(oil, 1.0e5);226double deltaPPa = BlockedInLiquidExpansionAnalysis.simplifiedPressureRise(beta, kappa, 35.0);227```228229Use this when the task only needs a thermal-expansion magnitude (e.g. deciding whether a thermal230relief valve is needed) without a fire scenario, material derating, or flange/pipe-stress checks.231See [docs/safety/blocked_in_liquid_thermal_expansion.md](../../../docs/safety/blocked_in_liquid_thermal_expansion.md)232for the full reference.233234## Java Calculation Pattern235236```java237SystemInterface oil = new SystemSrkEos(298.15, 10.0);238oil.addComponent("n-heptane", 100.0);239oil.setMixingRule("classic");240241InventoryResult inventory = new TrappedInventoryCalculator()242 .setFluid(oil)243 .setOperatingConditions(10.0, "bara", 25.0, "C")244 .addPipeSegment("TL-001", 0.10, 10.0, 1.0, null)245 .calculate();246247TrappedLiquidFireRuptureResult result = TrappedLiquidFireRuptureStudy.builder()248 .segmentId("TL-001")249 .fluid(oil)250 .inventory(inventory)251 .pipeGeometry(0.10, "m", 3.0, "mm", 10.0, "m")252 .api5lMaterial("X52")253 .fireScenario(FireExposureScenario.api521PoolFire(3.4, 1.0))254 .flangeClass(900)255 .timeControls(1800.0, 2.0)256 .build()257 .run();258```259260Key classes:261262- `MaterialStrengthCurve`: ambient SMYS/SMTS plus temperature derating.263- `FireExposureScenario`: API 521 pool fire, fixed heat flux, or radiative fire.264- `TrappedLiquidFireRuptureStudy`: transient pressure, wall temperature, pipe stress,265 flange rating, vapor-pocket, relief-set, and rupture checks.266- `TrappedLiquidFireRuptureResult`: event times, time histories, JSON map, PFP demand,267 and source-term handoff.268269For supplied-pressure-profile blowdown pipe fire rupture:270271```java272BlowdownPressureProfile profile = BlowdownPressureProfile.fromMinutesAndBara(273 new double[] {0.0, 0.083333333, 0.166666667},274 new double[] {61.3, 59.7053, 58.6349});275276PipeFireRuptureInput pipe = PipeFireRuptureInput.builder("3DD100")277 .pipeClass("DD100")278 .nominalDiameterInches(3.0)279 .outsideDiameter(88.9, "mm")280 .nominalWallThickness(3.7, "mm")281 .corrosionAllowance(0.0, "mm")282 .wallThicknessUndertoleranceFraction(0.125)283 .weldFactor(1.0)284 .fluidDensityKgPerM3(23.75)285 .fluidHeatCapacityJPerKgK(2283.35)286 .gasMolecularWeightKgPerKmol(18.2)287 .initialTemperatureC(20.0)288 .exposedLength(1.0, "m")289 .build();290291PipeFireRuptureResult pipeResult = PipeFireRuptureStudy292 .builder(pipe, PipeFireRuptureMaterial.fromSpreadsheetMaterialName("22Cr duplex"),293 PipeFireRuptureScenario.spreadsheetLargeJetFire(), profile)294 .timeStepSeconds(5.0)295 .maxTimeSeconds(1800.0)296 .build()297 .run();298```299300For governed agentic studies, prefer the runner pattern:301302```java303SafetyEvidenceReference pipingSpecWall = SafetyEvidenceReference304 .builder("PIPING_SPEC", "nominal_wall_thickness_mm")305 .documentId("pipe-class=DD100;rev=D")306 .valueText("3.7")307 .unit("mm")308 .status("fetched_joined")309 .confidence(0.95)310 .build();311312PipeFireRuptureInput governedPipe = pipe.toBuilder()313 .evidenceReference(pipingSpecWall)314 .build();315316PipeFireRuptureDataSource dataSource = PipeFireRuptureDataSource.builder("BD-001")317 .input(governedPipe)318 .material(PipeFireRuptureMaterial.fromSpreadsheetMaterialName("22Cr duplex"))319 .scenario(PipeFireRuptureScenario.spreadsheetLargeJetFire())320 .pressureProfile(profile)321 .addPipingSpecificationEvidence(pipingSpecWall)322 .sourceDiagramsReviewed(true)323 .pidTopologyVerified(false)324 .pipingSpecificationRowsReviewed(true)325 .materialCertificateReviewed(false)326 .blowdownProfileVerified(true)327 .fireScenarioReviewed(true)328 .standardsReviewed(false)329 .build();330331PipeFireRuptureStudyHandoff handoff = PipeFireRuptureStudyRunner.builder()332 .timeStepSeconds(5.0)333 .maxTimeSeconds(1800.0)334 .runUncertainty(true)335 .build()336 .run(dataSource);337```338339Key pipe-fire classes:340341- `BlowdownPressureProfile`: absolute pressure profile with exact tabulated-point lookup, step or linear mode, and barg conversion.342- `PipeFireRuptureInput`: one pipe case with geometry, wall allowance, fluid, and exposed-length data.343- `PipeFireRuptureMaterial`: workbook-style material curves for 22Cr duplex, SS316, CS235, CS360/API 5L-X52, superduplex, and 6Mo.344- `PipeFireRuptureScenario`: small jet, pool fire, large jet, and custom radiative plus convective fire exposure.345- `PipeFireRuptureStudy`: heat-up, thick-wall stress, Sellars-Tegart strain rate, accumulated strain, rupture event, and screening release estimate.346- `PipeFireRuptureResult`: time series, rupture summary, warnings, recommendations, release estimate, and JSON map.347- `SafetyEvidenceReference`: compact source reference for source drawings, piping specifications, process, fire, and material inputs.348- `SafetyStudyReadiness`: `NOT_READY` / `SCREENING` / `DESIGN_GRADE` verdict with findings and actions.349- `PidTopologyEvidence`: typed P&ID topology graph, boundary status, missing-tag register, and drawing-overlay readiness.350- `PipeFireRuptureDataSource`: governed data-source package binding inputs to evidence and review flags.351- `PipeFireRuptureStudyRunner`: readiness-gated orchestration of solver, standards check, uncertainty, and source-term handoff.352- `PipeFireRuptureStudyHandoff`: versioned package containing data source, readiness, result, uncertainty, and source term.353- `PipeFireRuptureStandardsValidator`: API 521 / ISO 23251 / NORSOK S-001 / piping-specification evidence-quality gate.354- `PipeFireRuptureUncertaintyRunner`: deterministic one-at-a-time perturbation screening of wall, corrosion, heat-flux, and initial-temperature assumptions.355- `LineEquipmentListEvidence`, `DynamicBlowdownFlareStudyDataSource`, `DynamicBlowdownFlareStudyRunner`, and356 `DynamicBlowdownFlareStudyHandoff`: governed dynamic depressurization, PSV, and flare-load setup used to create a357 source-traceable pressure profile before pipe-fire rupture screening.358359## Reusable Safety Report Template360361For governed source-document pipe-fire studies, the Word/HTML report should use a362repeatable evidence-first structure. At minimum include:3633641. **Executive verdict** with `NOT_READY`, `SCREENING`, or `DESIGN_GRADE`, plus365 the human-review status.3662. **Evidence matrix** with source system, document id, revision, page/sheet,367 field, extracted value, unit, status, confidence, and notes.3683. **Source drawing table** with drawing id, revision, embedded-text/OCR369 status, topology nodes/edges count, missing tags, and overlay/annotation link.3704. **Piping specification table** with applicable revision, class/material references, NPS,371 outside diameter, wall thickness, corrosion allowance, undertolerance, and372 row-review status.3735. **NeqSim input lineage** mapping each solver input to its `SafetyEvidenceReference`.3746. **Standards-applied table** covering API 521 / ISO 23251, NORSOK S-001,375 piping/material basis, and consequence/source-term handoff status.3767. **Assumptions and gaps register** with severity, effect on result, and required377 action before design use.3788. **Calculation results and uncertainty** including rupture time, rupture pressure,379 wall temperature, release estimate, deterministic perturbation cases, and380 P10/P50/P90 where available.3819. **Source-term handoff** using `pipe_fire_rupture_source_term_handoff.v1` when382 rupture is predicted.38310. **Calculation lineage** from document field to NeqSim input to reported result.384385Before the report is considered complete, apply these hard QA gates:386387- The executive summary and problem description must be populated from the388 current `task_spec.md` and `results.json`; no placeholder text may remain.389- The report front page must state the readiness label (`NOT_READY`,390 `SCREENING`, or `DESIGN_GRADE`) and whether design-grade use is blocked.391- The method in `task_spec.md`, source scripts, generated `results.json`, and392 report must agree on the pressure-profile basis. If the task moved from a393 reconstructed profile to a direct dynamic NeqSim profile, update all four.394- Script-backed studies are acceptable when `study_config.yaml` explicitly sets395 notebooks to not required; do not create false notebook execution warnings.396- `analysis.md` and `neqsim_improvements.md` must be filled for safety-critical397 workflow/code gaps, including reporting, evidence-readiness, pressure-profile398 export, plant-data evidence, and governed handoff gaps.399- The evidence gaps/design blockers and recommendations must appear before or400 alongside the conclusions, not only in appendix-style detail.401402## Results to Save403404Save a `trapped_liquid_fire_rupture` section in `results.json`:405406```json407{408 "trapped_liquid_fire_rupture": {409 "segments": [410 {411 "segment_id": "TL-001",412 "limiting_failure_mode": "PIPE_RUPTURE",413 "time_to_pipe_rupture_s": 420.0,414 "time_to_flange_failure_s": null,415 "minimum_failure_time_s": 420.0,416 "final_pressure_bara": 145.0,417 "final_wall_temperature_C": 530.0,418 "pfp_required_endurance_s": 1800.0,419 "pfp_margin_s": -1380.0,420 "evidence_gaps": ["Material certificate not found"],421 "recommendations": ["Provide thermal relief or documented PFP upgrade"]422 }423 ],424 "standards_applied": ["API 521", "ISO 23251", "ASME B31.3", "ASME B16.5"],425 "assumptions": ["Generic API 5L X52 screening curve used pending certificate"],426 "evidence_matrix": []427 }428}429```430431For Standard/Comprehensive studies, include:432433- Segment summary table with event times and limiting mode.434- Evidence matrix with document, page/sheet, extracted value, confidence, and gap status.435- Assumptions/gaps register ranked by impact.436- Time histories for pressure, wall temperature, material allowable stress, and flange rating.437- PFP demand table from `toPassiveFireProtectionDemand(...)`.438- Source-term handoff from `createRuptureSourceTerm(...)` if rupture is predicted.439- Risk register using `neqsim-process-safety` when consequences are material.440441For blowdown pipe fire rupture, save a `pipe_fire_rupture` section in442`results.json`:443444```json445{446 "pipe_fire_rupture": {447 "segment_id": "BD-001",448 "pressure_profile_basis": "absolute bara profile from governed blowdown model",449 "pipes": [450 {451 "pipe_id": "3DD100",452 "fire_scenario": "Large jet fire 350 kW/m2",453 "rupture_predicted": true,454 "time_to_rupture_s": 110.0,455 "rupture_pressure_barg": 32.03,456 "rupture_wall_temperature_C": 760.0,457 "release_estimate_kg_s": 21.9,458 "evidence_gaps": []459 }460 ],461 "standards_applied": ["API 521", "ASME B31.3"],462 "assumptions": ["Spreadsheet material curve used pending certificate review"]463 }464}465```466467For governed studies, also persist the runner handoff:468469```json470{471 "pipe_fire_rupture_handoff": {472 "schemaVersion": "pipe_fire_rupture_study_handoff.v1",473 "calculationReadiness": {"verdict": "SCREENING"},474 "standardsReadiness": {"verdict": "SCREENING"},475 "result": {},476 "uncertainty": {"schemaVersion": "pipe_fire_rupture_uncertainty.v1"},477 "sourceTermHandoff": {"schemaVersion": "pipe_fire_rupture_source_term_handoff.v1"}478 }479}480```481482## Validation and Benchmarking483484- Hand-check pressure rise using `deltaP = bulk_modulus * alpha * deltaT`.485- Compare API 521 heat flux or heat input against an independent spreadsheet or standard example.486- Verify material ambient strength against pipe specification or certificate.487- For pipe-fire studies, benchmark one representative case against the source488 workbook or an independent spreadsheet before scaling to all pipe cases.489- Verify pressure-profile absolute/gauge convention. The workbook-style stress490 and release calculations use barg, while the pressure profile is often supplied491 as bara and converted by subtracting 1 bar.492- For high-consequence segments, treat the NeqSim result as screening and recommend493 specialist flange/gasket assessment, FEA, or consequence modelling as needed.494495## Common Mistakes496497| Mistake | Fix |498|---------|-----|499| Using a generic flange class as final proof | Replace with project flange, bolt, and gasket pressure-temperature data |500| Crediting relief without a discharge path | Verify relief/thermal relief path on P&ID and relief design basis |501| Ignoring vents/drains | Include them in the isolation boundary and trapped-volume assessment |502| Assuming PFP is installed and intact | Require PFP specification and inspection/condition evidence |503| Reporting only rupture time | Also report assumptions, evidence gaps, PFP margin, and source-term consequence handoff |504| Treating pressure-profile units casually | Record whether the profile is bara or barg and convert explicitly |505| Letting superduplex map to 22Cr duplex | Use `PipeFireRuptureMaterial.fromSpreadsheetMaterialName` or a reviewed material curve |506| Running plant-wide pipe-fire cases without review | Ask the engineer to verify source-document, piping-specification, and user overrides before calculation |507508## Related Documentation509510- `docs/safety/trapped_liquid_fire_rupture.md`511- `docs/safety/trapped_inventory_calculator.md`