api581-engine 0.1.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. api581/__init__.py +80 -0
  2. api581/_amine_tables.py +105 -0
  3. api581/_h2sh2_tables.py +161 -0
  4. api581/_slabx_worker.py +174 -0
  5. api581/_sulfidic_tables.py +517 -0
  6. api581/_sulfuric_tables.py +328 -0
  7. api581/acid_sour_water.py +238 -0
  8. api581/acscc_screening.py +88 -0
  9. api581/alkaline_sour_water.py +267 -0
  10. api581/amine_corrosion.py +277 -0
  11. api581/amine_screening.py +103 -0
  12. api581/api/__init__.py +4 -0
  13. api581/api/api520.py +88 -0
  14. api581/api/bundle.py +121 -0
  15. api581/api/consequence.py +102 -0
  16. api581/api/damage.py +1831 -0
  17. api581/api/dispersion.py +121 -0
  18. api581/api/effects.py +318 -0
  19. api581/api/events.py +96 -0
  20. api581/api/financial.py +115 -0
  21. api581/api/frequency.py +40 -0
  22. api581/api/inspection.py +96 -0
  23. api581/api/level1.py +238 -0
  24. api581/api/level2.py +74 -0
  25. api581/api/planning.py +17 -0
  26. api581/api/prd.py +190 -0
  27. api581/api/properties.py +130 -0
  28. api581/api/release.py +252 -0
  29. api581/api/reliability.py +40 -0
  30. api581/api/risk.py +71 -0
  31. api581/api/tank.py +490 -0
  32. api581/api520.py +205 -0
  33. api581/area_contribution.py +72 -0
  34. api581/blast.py +232 -0
  35. api581/brittle.py +205 -0
  36. api581/bundle.py +300 -0
  37. api581/catalog.py +442 -0
  38. api581/caustic_screening.py +103 -0
  39. api581/clad_thinning.py +146 -0
  40. api581/clscc_screening.py +55 -0
  41. api581/co2_corrosion.py +313 -0
  42. api581/co2_screening.py +205 -0
  43. api581/consequences.py +250 -0
  44. api581/contracts.py +1038 -0
  45. api581/cooling_selection.py +204 -0
  46. api581/cooling_water.py +305 -0
  47. api581/core.py +126 -0
  48. api581/corrosion_rate.py +38 -0
  49. api581/cost_tables.py +175 -0
  50. api581/cracking.py +74 -0
  51. api581/data/coverage.json +21361 -0
  52. api581/data/digital-twin.schema.json +538 -0
  53. api581/data/direct-test-queue.json +7 -0
  54. api581/data/native-engine-evidence.json +44 -0
  55. api581/data/python-api.schema.json +92706 -0
  56. api581/data/reference-fixture-evidence.json +2956 -0
  57. api581/data/scope-boundaries.schema.json +58 -0
  58. api581/data/software-test-evidence.json +4278 -0
  59. api581/data/standard-metadata.json +1328 -0
  60. api581/data/standard.schema.json +233 -0
  61. api581/data/supporting-text-review.json +1319 -0
  62. api581/digital_twin.py +491 -0
  63. api581/dispersion.py +45 -0
  64. api581/effects.py +232 -0
  65. api581/evaporation.py +181 -0
  66. api581/evidence.py +81 -0
  67. api581/external_corrosion.py +148 -0
  68. api581/external_cracking.py +63 -0
  69. api581/fatigue.py +56 -0
  70. api581/fireball.py +163 -0
  71. api581/flash_pool.py +111 -0
  72. api581/flash_solver.py +122 -0
  73. api581/groundwater.py +101 -0
  74. api581/h2sh2_corrosion.py +128 -0
  75. api581/hic_screened.py +89 -0
  76. api581/htha.py +45 -0
  77. api581/hydrochloric_acid.py +272 -0
  78. api581/hydrofluoric_acid.py +236 -0
  79. api581/ignition.py +204 -0
  80. api581/inspection_effectiveness.py +601 -0
  81. api581/jet_handoff.py +60 -0
  82. api581/level1.py +311 -0
  83. api581/level1_summary.py +35 -0
  84. api581/level1_toxic.py +313 -0
  85. api581/level1_type1.py +91 -0
  86. api581/level2_summary.py +237 -0
  87. api581/lining.py +173 -0
  88. api581/native_toxic.py +67 -0
  89. api581/outputs.py +5672 -0
  90. api581/oxidation.py +145 -0
  91. api581/pascc_screening.py +78 -0
  92. api581/physical_explosion.py +190 -0
  93. api581/pof.py +207 -0
  94. api581/pool_fire.py +273 -0
  95. api581/portfolio.py +68 -0
  96. api581/prd.py +204 -0
  97. api581/prd_consequences.py +245 -0
  98. api581/prd_history.py +44 -0
  99. api581/py.typed +0 -0
  100. api581/release.py +307 -0
  101. api581/representative_fluids.py +172 -0
  102. api581/result.py +50 -0
  103. api581/risk.py +191 -0
  104. api581/saturation.py +66 -0
  105. api581/scc_mechanisms.py +242 -0
  106. api581/schema.py +45 -0
  107. api581/slabx_adapter.py +261 -0
  108. api581/soil_corrosion.py +191 -0
  109. api581/source_partition.py +169 -0
  110. api581/spatial.py +87 -0
  111. api581/ssc_screening.py +77 -0
  112. api581/standard.py +281 -0
  113. api581/storage.py +42 -0
  114. api581/sulfidic_corrosion.py +197 -0
  115. api581/sulfuric_acid.py +209 -0
  116. api581/tank.py +260 -0
  117. api581/tank_corrosion.py +256 -0
  118. api581/tank_environment.py +186 -0
  119. api581/tank_financial.py +202 -0
  120. api581/tank_integrated.py +51 -0
  121. api581/tank_shell.py +141 -0
  122. api581/tank_source.py +152 -0
  123. api581/tank_thinning.py +204 -0
  124. api581/temper.py +105 -0
  125. api581/thinning.py +172 -0
  126. api581/thinning_conditions.py +212 -0
  127. api581/thinning_history.py +118 -0
  128. api581/thinning_selection.py +81 -0
  129. api581/thinning_type.py +34 -0
  130. api581/toxic_criteria.py +111 -0
  131. api581/toxic_level2.py +233 -0
  132. api581/two_phase_events.py +120 -0
  133. api581/workflow.py +42 -0
  134. api581_engine-0.1.4.dist-info/METADATA +419 -0
  135. api581_engine-0.1.4.dist-info/RECORD +139 -0
  136. api581_engine-0.1.4.dist-info/WHEEL +5 -0
  137. api581_engine-0.1.4.dist-info/licenses/LICENSE +161 -0
  138. api581_engine-0.1.4.dist-info/licenses/NOTICE.md +18 -0
  139. api581_engine-0.1.4.dist-info/top_level.txt +1 -0
@@ -0,0 +1,2956 @@
1
+ {
2
+ "description": "Small analytic fixtures; evidence of implementation arithmetic, not API 581 certification.",
3
+ "fixtures": {
4
+ "properties/hydrogen-partial-pressure": [
5
+ {
6
+ "case_id": "two_mpa_quarter_hydrogen",
7
+ "inputs": {
8
+ "total_pressure_pa_abs": 2000000.0,
9
+ "hydrogen_mole_fraction": 0.25
10
+ },
11
+ "expected_outputs": {
12
+ "hydrogen_partial_pressure_pa_abs": 500000.0
13
+ },
14
+ "basis": "Ideal-mixture partial pressure equals total absolute pressure times hydrogen mole fraction."
15
+ }
16
+ ],
17
+ "inspection/ast-effectiveness": [
18
+ {
19
+ "case_id": "ast_shell_internal_full_ut_confirmation",
20
+ "inputs": {
21
+ "component_type": "shell_internal",
22
+ "inspection_side": "internal",
23
+ "internal_video_or_visual": true,
24
+ "pit_depth_measurement": true,
25
+ "ut_scan_percent": 100.0,
26
+ "ut_follow_up": true,
27
+ "qualification_basis": "Qualified API 653 inspection procedure"
28
+ },
29
+ "expected_outputs": {
30
+ "effectiveness_category": "A",
31
+ "component_type": "shell_internal",
32
+ "inspection_side": "internal",
33
+ "qualification_status": "qualified",
34
+ "basis": "internal_visual_pit_and_full_UT_confirmation"
35
+ },
36
+ "basis": "Annex 2.C.5 shell-internal visual, pit depth and full UT confirmation band."
37
+ }
38
+ ],
39
+ "inspection/prd-effectiveness": [
40
+ {
41
+ "case_id": "prd_as_received_bench_test_category_a",
42
+ "inputs": {
43
+ "component_type": "pressure_relief_device",
44
+ "as_received_bench_test": true,
45
+ "leak_pressure_documented": true,
46
+ "opening_pressure_documented": true,
47
+ "reseat_pressure_documented": true,
48
+ "inlet_outlet_examined": true,
49
+ "qualification_basis": "Qualified PRD inspection procedure"
50
+ },
51
+ "expected_outputs": {
52
+ "effectiveness_category": "A",
53
+ "component_type": "pressure_relief_device",
54
+ "qualification_status": "qualified",
55
+ "basis": "as_received_bench_test_pressures_and_piping_exam"
56
+ },
57
+ "basis": "Annex 2.C.3 pressure-relief-device A-level evidence bundle."
58
+ }
59
+ ],
60
+ "inspection/lining-effectiveness": [
61
+ {
62
+ "case_id": "intrusive_full_liner_tests_category_a",
63
+ "inputs": {
64
+ "inspection_mode": "intrusive",
65
+ "visual_coverage_percent": 100.0,
66
+ "holiday_test_coverage_percent": 100.0,
67
+ "disbonding_test_coverage_percent": 100.0,
68
+ "qualification_basis": "Qualified lining inspection procedure"
69
+ },
70
+ "expected_outputs": {
71
+ "effectiveness_category": "A",
72
+ "inspection_mode": "intrusive",
73
+ "qualification_status": "qualified",
74
+ "basis": "100_percent_visual_holiday_and_disbonding_tests"
75
+ },
76
+ "basis": "Annex 2.C.6 intrusive full visual, holiday and disbonding tests."
77
+ }
78
+ ],
79
+ "inspection/buried-effectiveness": [
80
+ {
81
+ "case_id": "intrusive_hydrostatic_test_category_d",
82
+ "inputs": {
83
+ "inspection_mode": "intrusive",
84
+ "hydrostatic_test": true,
85
+ "qualification_basis": "Qualified buried-component inspection basis"
86
+ },
87
+ "expected_outputs": {
88
+ "effectiveness_category": "D",
89
+ "inspection_mode": "intrusive",
90
+ "qualification_status": "qualified",
91
+ "basis": "hydrostatic_test"
92
+ },
93
+ "basis": "Annex 2.C.7 intrusive hydrostatic-test evidence bundle."
94
+ }
95
+ ],
96
+ "inspection/external-effectiveness": [
97
+ {
98
+ "case_id": "external_corrosion_full_visual_follow_up",
99
+ "inputs": {
100
+ "mechanism_family": "external_corrosion",
101
+ "visual_coverage_percent": 100.0,
102
+ "follow_up_coverage_percent": 100.0
103
+ },
104
+ "expected_outputs": {
105
+ "effectiveness_category": "A",
106
+ "mechanism_family": "external_corrosion",
107
+ "insulation_status": "not_applicable",
108
+ "qualification_status": "qualified",
109
+ "basis": "over_95_percent_visual_with_follow_up"
110
+ },
111
+ "basis": "Annex 2.C.10 external-corrosion over-95% visual with follow-up band."
112
+ }
113
+ ],
114
+ "inspection/tube-bundle-uncertainty": [
115
+ {
116
+ "case_id": "category_c_uncertainty",
117
+ "inputs": {
118
+ "inspection_effectiveness": "C",
119
+ "owner_user_basis": "Qualified tube bundle inspection history"
120
+ },
121
+ "expected_outputs": {
122
+ "inspection_effectiveness": "C",
123
+ "uncertainty_percent": 20.0,
124
+ "uncertainty_fraction": 0.2,
125
+ "baseline_no_history_percent": 50.0,
126
+ "owner_user_basis": "Qualified tube bundle inspection history"
127
+ },
128
+ "basis": "Annex 2.C.4.1 default additional uncertainty for category C."
129
+ }
130
+ ],
131
+ "inspection/scc-effectiveness": [
132
+ {
133
+ "case_id": "weld_scc_intrusive_full_targeted_follow_up",
134
+ "inputs": {
135
+ "mechanism_family": "weld_scc",
136
+ "inspection_mode": "intrusive",
137
+ "targeted_coverage_percent": 100.0,
138
+ "relevant_indication_follow_up_percent": 100.0
139
+ },
140
+ "expected_outputs": {
141
+ "effectiveness_category": "A",
142
+ "mechanism_family": "weld_scc",
143
+ "inspection_mode": "intrusive",
144
+ "qualification_status": "qualified",
145
+ "basis": "100_percent_targeted_and_indication_follow_up"
146
+ },
147
+ "basis": "Annex 2.C.9 weld SCC intrusive 100% targeted and indication follow-up band."
148
+ }
149
+ ],
150
+ "inspection/effectiveness-category": [
151
+ {
152
+ "case_id": "category_a_qualified_procedure",
153
+ "inputs": {
154
+ "category": "A",
155
+ "owner_user_basis": "Qualified NDE procedure"
156
+ },
157
+ "expected_outputs": {
158
+ "category": "A",
159
+ "ordinal": 1,
160
+ "label": "Highly Effective",
161
+ "inspection_credit_allowed": true,
162
+ "owner_user_basis": "Qualified NDE procedure"
163
+ },
164
+ "basis": "Annex 2.C qualitative category metadata."
165
+ }
166
+ ],
167
+ "inspection/thinning-effectiveness": [
168
+ {
169
+ "case_id": "local_intrusive_full_visual_follow_up",
170
+ "inputs": {
171
+ "damage_type": "local",
172
+ "inspection_mode": "intrusive",
173
+ "visual_coverage_percent": 100.0,
174
+ "follow_up_coverage_percent": 100.0
175
+ },
176
+ "expected_outputs": {
177
+ "effectiveness_category": "A",
178
+ "damage_type": "local",
179
+ "inspection_mode": "intrusive",
180
+ "qualification_status": "qualified",
181
+ "basis": "100_percent_visual_and_follow_up"
182
+ },
183
+ "basis": "Annex 2.C.8 local intrusive 100% visual and follow-up band."
184
+ }
185
+ ],
186
+ "inspection/effectiveness-summary": [
187
+ {
188
+ "case_id": "scc_a_two_b_and_e_history",
189
+ "inputs": {
190
+ "mechanism": "scc",
191
+ "categories": [
192
+ "A",
193
+ "B",
194
+ "B",
195
+ "E"
196
+ ]
197
+ },
198
+ "expected_outputs": {
199
+ "mechanism": "scc",
200
+ "highest_effectiveness_category": "A",
201
+ "inspection_count": 4,
202
+ "creditable_inspection_count": 3,
203
+ "counts": {
204
+ "a": 1,
205
+ "b": 2,
206
+ "c": 0,
207
+ "d": 0,
208
+ "e": 1
209
+ },
210
+ "equivalent_counts": {
211
+ "a": 2,
212
+ "b": 0,
213
+ "c": 0,
214
+ "d": 0
215
+ },
216
+ "e_inspection_count": 1,
217
+ "qualification_status": "caller_qualified_categories"
218
+ },
219
+ "basis": "API 581 A-D equivalence rule: two B inspections promote to one A; E receives no credit."
220
+ }
221
+ ],
222
+ "frequency/pof-method-selection": [
223
+ {
224
+ "case_id": "combined_method_uses_level1_route",
225
+ "inputs": {
226
+ "method": "combined",
227
+ "qualification_basis": "Qualified plant reliability program and generic API 581 data",
228
+ "uncertainty_quantified": true
229
+ },
230
+ "expected_outputs": {
231
+ "method": "combined",
232
+ "qualification_basis": "Qualified plant reliability program and generic API 581 data",
233
+ "uncertainty_quantified": true,
234
+ "numeric_pof_route": "gff_df_fms"
235
+ },
236
+ "basis": "Combined method explicitly routes numeric Level 1 POF through GFF x DF x FMS."
237
+ }
238
+ ],
239
+ "frequency/management-factor": [
240
+ {
241
+ "case_id": "score_500_neutral_factor",
242
+ "inputs": {
243
+ "score": 500.0
244
+ },
245
+ "expected_outputs": {
246
+ "score_percent": 50.0,
247
+ "management_factor": 1.0
248
+ },
249
+ "basis": "10^(1-0.02*50)"
250
+ }
251
+ ],
252
+ "frequency/adjusted": [
253
+ {
254
+ "case_id": "generic_frequency_damage_management_scaling",
255
+ "inputs": {
256
+ "generic_frequency_per_year": 0.1,
257
+ "total_damage_factor": 100.0,
258
+ "management_factor": 2.0
259
+ },
260
+ "expected_outputs": {
261
+ "annual_failure_frequency": 20.0,
262
+ "unit": "1/year"
263
+ },
264
+ "basis": "generic frequency multiplied by damage and management factors"
265
+ }
266
+ ],
267
+ "frequency/generic": [
268
+ {
269
+ "case_id": "pipe8_four_hole_generic_frequency",
270
+ "inputs": {
271
+ "component_type": "PIPE-8"
272
+ },
273
+ "expected_outputs": {
274
+ "by_hole_per_year": {
275
+ "small": 8e-06,
276
+ "medium": 2e-05,
277
+ "large": 2e-06,
278
+ "rupture": 6e-07
279
+ },
280
+ "total_per_year": 3.06e-05
281
+ },
282
+ "basis": "qualified generic failure frequency table for PIPE-8"
283
+ }
284
+ ],
285
+ "reliability/weibull": [
286
+ {
287
+ "case_id": "shape_one_age_equals_characteristic_life",
288
+ "inputs": {
289
+ "shape": 1.0,
290
+ "characteristic_life_years": 10.0,
291
+ "age_years": 10.0
292
+ },
293
+ "expected_outputs": {
294
+ "cumulative_failure_probability": 0.6321205588285577,
295
+ "survival_probability": 0.36787944117144233,
296
+ "hazard_per_year": 0.1,
297
+ "hazard_singular_at_origin": false
298
+ },
299
+ "basis": "exponential Weibull special case"
300
+ }
301
+ ],
302
+ "reliability/poisson-probability": [
303
+ {
304
+ "case_id": "constant_rate_lambda_0_2_duration_3",
305
+ "inputs": {
306
+ "annual_failure_frequency": 0.2,
307
+ "duration_years": 3.0
308
+ },
309
+ "expected_outputs": {
310
+ "period_failure_probability": 0.4511883639059736
311
+ },
312
+ "basis": "1-exp(-lambda*t)"
313
+ }
314
+ ],
315
+ "release/integrate-profile": [
316
+ {
317
+ "case_id": "linear_rate_zero_to_two_over_one_second",
318
+ "inputs": {
319
+ "points": [
320
+ {
321
+ "time_s": 0.0,
322
+ "rate_kg_s": 0.0
323
+ },
324
+ {
325
+ "time_s": 1.0,
326
+ "rate_kg_s": 2.0
327
+ }
328
+ ],
329
+ "available_mass_kg": 1.0
330
+ },
331
+ "expected_outputs": {
332
+ "released_mass_kg": 1.0,
333
+ "duration_s": 1.0
334
+ },
335
+ "basis": "trapezoidal integral"
336
+ }
337
+ ],
338
+ "release/orifice-area": [
339
+ {
340
+ "case_id": "ten_centimeter_circular_orifice",
341
+ "inputs": {
342
+ "diameter_m": 0.1
343
+ },
344
+ "expected_outputs": {
345
+ "area_m2": 0.007853981633974483
346
+ },
347
+ "basis": "pi*d^2/4"
348
+ }
349
+ ],
350
+ "release/hole-size-selection": [
351
+ {
352
+ "case_id": "si_medium_boundary_and_representative",
353
+ "inputs": {
354
+ "hole_diameter_m": 0.025,
355
+ "component_diameter_m": 0.8,
356
+ "diameter_basis": "printed_si"
357
+ },
358
+ "expected_outputs": {
359
+ "selected_hole": "medium",
360
+ "representative_diameter_m": 0.025,
361
+ "lower_bound_m": 0.0064,
362
+ "upper_bound_m": 0.051,
363
+ "diameter_basis": "printed_si",
364
+ "source_table": "Table 4.4M"
365
+ },
366
+ "basis": "API 581 Table 4.4M SI boundary classification with representative diameter"
367
+ }
368
+ ],
369
+ "release/type": [
370
+ {
371
+ "case_id": "five_thousand_kg_above_4536kg_threshold",
372
+ "inputs": {
373
+ "diameter_m": 0.01,
374
+ "available_mass_kg": 5000.0,
375
+ "theoretical_rate_kg_s": 25.2
376
+ },
377
+ "expected_outputs": {
378
+ "release_type": "instantaneous",
379
+ "time_to_4536kg_s": 180.0
380
+ },
381
+ "basis": "API 581 instantaneous/continuous threshold and 4536 kg reference mass"
382
+ }
383
+ ],
384
+ "effects/flash-fire": [
385
+ {
386
+ "case_id": "lfl_area_with_equipment_factor",
387
+ "inputs": {
388
+ "area_within_lfl_m2": 400.0
389
+ },
390
+ "expected_outputs": {
391
+ "personnel_area_m2": 400.0,
392
+ "equipment_area_m2": 100.0
393
+ },
394
+ "basis": "flash-fire personnel area and quarter equipment-area factor"
395
+ }
396
+ ],
397
+ "consequence/final-area": [
398
+ {
399
+ "case_id": "toxic_max_and_flammable_equipment",
400
+ "inputs": {
401
+ "flammable_equipment_area_m2": 20.0,
402
+ "flammable_personnel_area_m2": 30.0,
403
+ "toxic_personnel_areas_m2": [
404
+ 100.0,
405
+ 200.0
406
+ ],
407
+ "nfnt_personnel_area_m2": 50.0
408
+ },
409
+ "expected_outputs": {
410
+ "equipment_area_m2": 20.0,
411
+ "personnel_area_m2": 200.0,
412
+ "consequence_area_m2": 200.0
413
+ },
414
+ "basis": "maximum toxic personnel area and maximum with flammable personnel area"
415
+ }
416
+ ],
417
+ "damage/measured-corrosion-rate": [
418
+ {
419
+ "case_id": "one_millimeter_loss_over_two_years",
420
+ "inputs": {
421
+ "initial_thickness_m": 0.01,
422
+ "current_thickness_m": 0.009,
423
+ "elapsed_years": 2.0,
424
+ "measurement_basis": "fixture"
425
+ },
426
+ "expected_outputs": {
427
+ "metal_loss_m": 0.0010000000000000009,
428
+ "corrosion_rate_m_year": 0.0005000000000000004,
429
+ "rate_basis": "direct_two_thickness_difference"
430
+ },
431
+ "basis": "(initial-current)/elapsed"
432
+ }
433
+ ],
434
+ "risk/portfolio": [
435
+ {
436
+ "case_id": "two_mutually_disjoint_components",
437
+ "inputs": {
438
+ "components": [
439
+ {
440
+ "component_id": "A",
441
+ "annual_failure_frequency": 0.1,
442
+ "equipment_area_risk_m2_per_year": 2.0,
443
+ "personnel_area_risk_m2_per_year": 1.0,
444
+ "financial_risk_per_year": 100.0
445
+ },
446
+ {
447
+ "component_id": "B",
448
+ "annual_failure_frequency": 0.2,
449
+ "equipment_area_risk_m2_per_year": 3.0,
450
+ "personnel_area_risk_m2_per_year": 4.0,
451
+ "financial_risk_per_year": 50.0
452
+ }
453
+ ],
454
+ "currency": "USD",
455
+ "disjointness_basis": "fixture components are mutually disjoint"
456
+ },
457
+ "expected_outputs": {
458
+ "component_count": 2,
459
+ "annual_failure_frequency": 0.30000000000000004,
460
+ "equipment_area_risk_m2_per_year": 5.0,
461
+ "personnel_area_risk_m2_per_year": 5.0,
462
+ "financial_risk_per_year": 150.0,
463
+ "currency": "USD"
464
+ },
465
+ "basis": "component-wise additive portfolio aggregation"
466
+ }
467
+ ],
468
+ "risk/assessment": [
469
+ {
470
+ "case_id": "pipe8_supplied_damage_and_four_hole_consequences",
471
+ "inputs": {
472
+ "component_type": "PIPE-8",
473
+ "management_score": 500.0,
474
+ "total_damage_factor": 2.0,
475
+ "damage_factor_source": "fixture",
476
+ "consequences": [
477
+ {
478
+ "hole": "small",
479
+ "equipment_area_m2": 1.0,
480
+ "personnel_area_m2": 2.0,
481
+ "financial_consequence": 10.0
482
+ },
483
+ {
484
+ "hole": "medium",
485
+ "equipment_area_m2": 2.0,
486
+ "personnel_area_m2": 3.0,
487
+ "financial_consequence": 20.0
488
+ },
489
+ {
490
+ "hole": "large",
491
+ "equipment_area_m2": 3.0,
492
+ "personnel_area_m2": 4.0,
493
+ "financial_consequence": 30.0
494
+ },
495
+ {
496
+ "hole": "rupture",
497
+ "equipment_area_m2": 4.0,
498
+ "personnel_area_m2": 5.0,
499
+ "financial_consequence": 40.0
500
+ }
501
+ ],
502
+ "consequence_source": "fixture",
503
+ "currency": "USD"
504
+ },
505
+ "expected_outputs": {
506
+ "management_factor": 1.0,
507
+ "risk": {
508
+ "annual_failure_frequency": 6.12e-05,
509
+ "equipment_area_risk_m2_per_year": 0.0001128,
510
+ "personnel_area_risk_m2_per_year": 0.000174,
511
+ "financial_risk_per_year": 0.001128,
512
+ "currency": "USD"
513
+ }
514
+ },
515
+ "basis": "generic frequency by hole multiplied by supplied damage factor and scenario consequences"
516
+ }
517
+ ],
518
+ "risk/assessment-from-damage": [
519
+ {
520
+ "case_id": "pipe8_combined_damage_and_four_hole_consequences",
521
+ "inputs": {
522
+ "component_type": "PIPE-8",
523
+ "management_score": 500.0,
524
+ "damage": {
525
+ "thinning": 2.0,
526
+ "lining": null,
527
+ "external": [
528
+ 0.5
529
+ ],
530
+ "scc": [
531
+ 0.25
532
+ ],
533
+ "htha": 0.1,
534
+ "fatigue": 0.2,
535
+ "brittle_fracture": 0.0,
536
+ "temper_embrittlement": 0.0,
537
+ "embrittlement_885f": 0.0,
538
+ "sigma_embrittlement": 0.0,
539
+ "thinning_external_distribution": "local"
540
+ },
541
+ "damage_factor_source": "fixture",
542
+ "consequences": [
543
+ {
544
+ "hole": "small",
545
+ "equipment_area_m2": 1.0,
546
+ "personnel_area_m2": 2.0,
547
+ "financial_consequence": 10.0
548
+ },
549
+ {
550
+ "hole": "medium",
551
+ "equipment_area_m2": 2.0,
552
+ "personnel_area_m2": 3.0,
553
+ "financial_consequence": 20.0
554
+ },
555
+ {
556
+ "hole": "large",
557
+ "equipment_area_m2": 3.0,
558
+ "personnel_area_m2": 4.0,
559
+ "financial_consequence": 30.0
560
+ },
561
+ {
562
+ "hole": "rupture",
563
+ "equipment_area_m2": 4.0,
564
+ "personnel_area_m2": 5.0,
565
+ "financial_consequence": 40.0
566
+ }
567
+ ],
568
+ "consequence_source": "fixture",
569
+ "currency": "USD"
570
+ },
571
+ "expected_outputs": {
572
+ "integration_scope": "combined_damage_and_supplied_consequences",
573
+ "management_factor": 1.0,
574
+ "risk": {
575
+ "annual_failure_frequency": 7.803000000000001e-05,
576
+ "equipment_area_risk_m2_per_year": 0.00014382000000000002,
577
+ "personnel_area_risk_m2_per_year": 0.00022185000000000003,
578
+ "financial_risk_per_year": 0.0014382000000000002,
579
+ "currency": "USD"
580
+ },
581
+ "damage_factor": {
582
+ "governing_thinning": 2.0,
583
+ "governing_external": 0.5,
584
+ "governing_scc": 0.25,
585
+ "governing_brittle": 0.0,
586
+ "total_damage_factor": 2.5500000000000003
587
+ }
588
+ },
589
+ "basis": "damage/combine followed by generic frequency and four-hole risk weighting"
590
+ }
591
+ ],
592
+ "risk/matrix": [
593
+ {
594
+ "case_id": "upper_boundary_high_cell",
595
+ "inputs": {
596
+ "frequency_per_year": 0.1,
597
+ "consequence": 10.0,
598
+ "frequency_boundaries": [
599
+ 0.1
600
+ ],
601
+ "consequence_boundaries": [
602
+ 10.0
603
+ ],
604
+ "risk_cells": [
605
+ [
606
+ "low",
607
+ "medium"
608
+ ],
609
+ [
610
+ "medium",
611
+ "high"
612
+ ]
613
+ ],
614
+ "policy_id": "fixture"
615
+ },
616
+ "expected_outputs": {
617
+ "frequency_category": 2,
618
+ "consequence_category": 2,
619
+ "risk_label": "high",
620
+ "policy_id": "fixture"
621
+ },
622
+ "basis": "inclusive upper boundary policy for two-dimensional risk matrix"
623
+ }
624
+ ],
625
+ "bundle/material-factor": [
626
+ {
627
+ "case_id": "carbon-steel-table-factor",
628
+ "inputs": {
629
+ "material": "Carbon Steel"
630
+ },
631
+ "expected_outputs": {
632
+ "material_factor": 1.0
633
+ },
634
+ "basis": "API 581 Part 1 Table 8.3 printed material factor"
635
+ }
636
+ ],
637
+ "level2/correlated-jet-pool": [
638
+ {
639
+ "case_id": "pool-governs-equipment-and-personnel",
640
+ "inputs": {
641
+ "probability": 0.25,
642
+ "jet_equipment_area_m2": 10.0,
643
+ "jet_personnel_area_m2": 20.0,
644
+ "pool_equipment_area_m2": 30.0,
645
+ "pool_personnel_area_m2": 40.0,
646
+ "consequence_source": "fixture"
647
+ },
648
+ "expected_outputs": {
649
+ "equipment_area_m2": 7.5,
650
+ "personnel_area_m2": 10.0,
651
+ "maximum_equipment_area_m2": 30.0,
652
+ "maximum_personnel_area_m2": 40.0,
653
+ "governing_equipment": "pool",
654
+ "governing_personnel": "pool"
655
+ },
656
+ "basis": "probability-weighted immediate branch plus governing max branch"
657
+ }
658
+ ],
659
+ "bundle/replacement-cost": [
660
+ {
661
+ "case_id": "two-meter-five-meter-bundle",
662
+ "inputs": {
663
+ "shell_inside_diameter_m": 2.0,
664
+ "tube_length_m": 5.0,
665
+ "material_factor": 2.0,
666
+ "reference_bundle_cost_usd": 22000.0,
667
+ "price_index_multiplier": 1.5,
668
+ "output_currency_per_usd": 1.2,
669
+ "output_currency": "USD",
670
+ "output_cost_basis_year": 2020
671
+ },
672
+ "expected_outputs": {
673
+ "bundle_volume_m3": 15.707963267948966,
674
+ "reference_basis_cost_usd": 229161.26783479922,
675
+ "replacement_cost": 412490.28210263856,
676
+ "currency": "USD"
677
+ },
678
+ "basis": "printed bundle volume and material/price scaling"
679
+ }
680
+ ],
681
+ "level2/final-area": [
682
+ {
683
+ "case_id": "nfnt-governs-personnel-and-equipment-max",
684
+ "inputs": {
685
+ "flammable_equipment_area_m2": 1.0,
686
+ "flammable_personnel_area_m2": 2.0,
687
+ "toxic_personnel_area_m2": 3.0,
688
+ "nfnt_equipment_area_m2": 4.0,
689
+ "nfnt_personnel_area_m2": 5.0
690
+ },
691
+ "expected_outputs": {
692
+ "equipment_area_m2": 5.0,
693
+ "personnel_area_m2": 7.0,
694
+ "consequence_area_m2": 7.0,
695
+ "non_ignition_personnel_area_m2": 5.0,
696
+ "governing_non_ignition_personnel_mechanism": "nfnt"
697
+ },
698
+ "basis": "Level 2 maximum selection and non-ignition personnel governing mechanism"
699
+ }
700
+ ],
701
+ "release/detection-isolation-rating": [
702
+ {
703
+ "case_id": "automatic_detection_manual_isolation",
704
+ "inputs": {
705
+ "detection_type": "process_instrumentation",
706
+ "isolation_type": "manual_valve",
707
+ "qualification_basis": "Qualified plant instrumentation and isolation procedure"
708
+ },
709
+ "expected_outputs": {
710
+ "detection_rating": "A",
711
+ "isolation_rating": "C",
712
+ "detection_type": "process_instrumentation",
713
+ "isolation_type": "manual_valve",
714
+ "qualification_basis": "Qualified plant instrumentation and isolation procedure"
715
+ },
716
+ "basis": "API 581 Table 4.5 qualitative detection/isolation mapping"
717
+ }
718
+ ],
719
+ "release/level2-release-phase": [
720
+ {
721
+ "case_id": "saturated_vapor_phase_screen",
722
+ "inputs": {
723
+ "storage_pressure_pa_abs": 1000000.0,
724
+ "saturation_pressure_at_storage_pa_abs": 2000000.0,
725
+ "ambient_pressure_pa_abs": 100000.0
726
+ },
727
+ "expected_outputs": {
728
+ "release_phase": "vapor",
729
+ "status": "classified"
730
+ },
731
+ "basis": "API 581 Level 2 pressure-based phase screening: saturation pressure above storage pressure selects vapor"
732
+ }
733
+ ],
734
+ "release/level2-orifice-rate": [
735
+ {
736
+ "case_id": "liquid_phase_selected_orifice_rate",
737
+ "inputs": {
738
+ "diameter_m": 0.0254,
739
+ "storage_pressure_pa_abs": 1000000.0,
740
+ "saturation_pressure_at_storage_pa_abs": 50000.0,
741
+ "ambient_pressure_pa_abs": 100000.0,
742
+ "liquid_density_kg_m3": 700.0
743
+ },
744
+ "expected_outputs": {
745
+ "mass_rate_kg_s": 10.971662055304723,
746
+ "area_m2": 0.0005067074790974977,
747
+ "release_phase": "liquid",
748
+ "rate_method": "liquid",
749
+ "phase_basis": "pressure_screen"
750
+ },
751
+ "basis": "API 581 Level 2 pressure-selected liquid orifice rate using the existing liquid correlation"
752
+ }
753
+ ],
754
+ "release/kletz-rainout-fraction": [
755
+ {
756
+ "case_id": "quarter_flash_half_rainout",
757
+ "inputs": {
758
+ "flash_mass_fraction": 0.25
759
+ },
760
+ "expected_outputs": {
761
+ "rainout_mass_fraction": 0.5
762
+ },
763
+ "basis": "API 581 eqs. (3.98)-(3.99): max(0, 1 - 2*flash mass fraction)"
764
+ }
765
+ ],
766
+ "release/rainout-rate-split": [
767
+ {
768
+ "case_id": "twenty_percent_rainout_rate_closure",
769
+ "inputs": {
770
+ "adjusted_mass_rate_kg_s": 100.0,
771
+ "rainout_mass_fraction": 0.2
772
+ },
773
+ "expected_outputs": {
774
+ "pool_liquid_rate_kg_s": 20.0,
775
+ "jet_total_rate_kg_s": 80.0
776
+ },
777
+ "basis": "API 581 eqs. (3.100)-(3.101): adjusted rate split into pool and aerosol-containing jet"
778
+ }
779
+ ],
780
+ "release/jet-liquid-entrainment": [
781
+ {
782
+ "case_id": "post_flash_half_jet_half_vapor",
783
+ "inputs": {
784
+ "rainout_mass_fraction": 0.5,
785
+ "equation_basis": "post_flash_mass_balance",
786
+ "post_flash_vapor_mass_fraction": 0.25
787
+ },
788
+ "expected_outputs": {
789
+ "entrained_liquid_mass_fraction": 0.5,
790
+ "jet_vapor_mass_fraction": 0.5,
791
+ "physical_range": true,
792
+ "jet_fraction_nonzero": true,
793
+ "equation_basis": "post_flash_mass_balance"
794
+ },
795
+ "basis": "Post-flash vapor fraction divided by non-rainout jet fraction"
796
+ }
797
+ ],
798
+ "release/level2-source-partition": [
799
+ {
800
+ "case_id": "post_flash_source_mass_rate_closure",
801
+ "inputs": {
802
+ "rainout_mass_fraction": 0.5,
803
+ "equation_basis": "post_flash_mass_balance",
804
+ "post_flash_vapor_mass_fraction": 0.25,
805
+ "adjusted_mass_rate_kg_s": 10.0,
806
+ "released_mass_kg": 100.0,
807
+ "rainout_basis_source": "Kletz demonstration",
808
+ "flash_property_source": "Qualified demonstration post-flash vapor fraction"
809
+ },
810
+ "expected_outputs": {
811
+ "pool_liquid_rate_kg_s": 5.0,
812
+ "jet_total_rate_kg_s": 5.0,
813
+ "jet_liquid_rate_kg_s": 2.5,
814
+ "jet_vapor_rate_kg_s": 2.5,
815
+ "pool_liquid_mass_kg": 50.0,
816
+ "jet_total_mass_kg": 50.0,
817
+ "jet_liquid_mass_kg": 25.0,
818
+ "jet_vapor_mass_kg": 25.0,
819
+ "jet_vapor_mass_fraction": 0.5,
820
+ "entrained_liquid_mass_fraction": 0.5
821
+ },
822
+ "basis": "API 581 source partition mass and rate closure for a post-flash qualified composition"
823
+ }
824
+ ],
825
+ "release/pool-evaporation-regime": [
826
+ {
827
+ "case_id": "bubble_above_ground_nonboiling",
828
+ "inputs": {
829
+ "bubble_temperature_k": 350.0,
830
+ "ground_temperature_k": 300.0
831
+ },
832
+ "expected_outputs": {
833
+ "regime": "non_boiling"
834
+ },
835
+ "basis": "API 581 pool regime rule: bubble temperature above ground temperature selects non-boiling"
836
+ }
837
+ ],
838
+ "release/boiling-pool-radius": [
839
+ {
840
+ "case_id": "half_cubic_meter_per_second_two_second_radius",
841
+ "inputs": {
842
+ "vapor_volumetric_rate_m3_s": 0.5,
843
+ "time_to_steady_s": 2.0
844
+ },
845
+ "expected_outputs": {
846
+ "pool_radius_m": 2.581497142901288,
847
+ "pool_area_m2": 20.935973992839404
848
+ },
849
+ "basis": "API 581 eq. (3.104) with default gravity"
850
+ }
851
+ ],
852
+ "release/boiling-pool-evaporation": [
853
+ {
854
+ "case_id": "concrete_surface_half_cubic_meter_two_second_evaporation",
855
+ "inputs": {
856
+ "bubble_temperature_k": 250.0,
857
+ "ground_temperature_k": 300.0,
858
+ "latent_heat_j_kg": 300000.0,
859
+ "surface": {
860
+ "thermal_conductivity_w_m_k": 0.92,
861
+ "thermal_diffusivity_m2_s": 4.16e-07,
862
+ "roughness_factor": 1.0
863
+ },
864
+ "gravity_m_s2": 9.81,
865
+ "vapor_volumetric_rate_m3_s": 0.5,
866
+ "time_to_steady_s": 2.0
867
+ },
868
+ "expected_outputs": {
869
+ "evaporation_rate_kg_s": 4.678474683102527,
870
+ "latent_heat_rate_w": 1403542.404930758
871
+ },
872
+ "basis": "API 581 eq. (3.103) with concrete surface properties"
873
+ }
874
+ ],
875
+ "release/boiling-pool-steady-source": [
876
+ {
877
+ "case_id": "supported_one_kg_per_second_steady_source",
878
+ "inputs": {
879
+ "bubble_temperature_k": 250.0,
880
+ "ground_temperature_k": 300.0,
881
+ "latent_heat_j_kg": 300000.0,
882
+ "surface": {
883
+ "thermal_conductivity_w_m_k": 0.92,
884
+ "thermal_diffusivity_m2_s": 4.16e-07,
885
+ "roughness_factor": 1.0
886
+ },
887
+ "gravity_m_s2": 9.81,
888
+ "liquid_feed_rate_kg_s": 1.0,
889
+ "pool_vapor_density_kg_m3": 2.0,
890
+ "supply_duration_s": 100.0,
891
+ "maximum_pool_area_m2": 1000.0
892
+ },
893
+ "expected_outputs": {
894
+ "equilibrium_evaporation_rate_kg_s": 1.0,
895
+ "vapor_volumetric_rate_m3_s": 0.5,
896
+ "time_to_steady_s": 0.4274897558436079,
897
+ "pool_radius_m": 0.8115091779641959,
898
+ "pool_area_m2": 2.0688868756651897,
899
+ "vapor_source_rate_kg_s": 1.0,
900
+ "support_status": "supported"
901
+ },
902
+ "basis": "API 581 steady boiling-pool support checks with equilibrium feed and site area"
903
+ }
904
+ ],
905
+ "release/nonboiling-pool-evaporation": [
906
+ {
907
+ "case_id": "two_meter_per_second_five_meter_pool",
908
+ "inputs": {
909
+ "bubble_temperature_k": 350.0,
910
+ "ground_temperature_k": 300.0,
911
+ "storage_temperature_k": 310.0,
912
+ "bubble_pressure_at_ground_pa_abs": 10000.0,
913
+ "ambient_pressure_pa_abs": 101325.0,
914
+ "molecular_weight_kg_kmol": 100.0,
915
+ "wind_speed_m_s": 2.0,
916
+ "pool_radius_m": 5.0
917
+ },
918
+ "expected_outputs": {
919
+ "evaporation_rate_kg_s": 0.06537242357723806
920
+ },
921
+ "basis": "API 581 eq. (3.105) and Annex 3.B C15 with SI conversion"
922
+ }
923
+ ],
924
+ "release/nonboiling-pool-steady-source": [
925
+ {
926
+ "case_id": "supported_five_hundredths_kg_per_second_source",
927
+ "inputs": {
928
+ "bubble_temperature_k": 350.0,
929
+ "ground_temperature_k": 300.0,
930
+ "bubble_pressure_at_ground_pa_abs": 10000.0,
931
+ "ambient_pressure_pa_abs": 101325.0,
932
+ "molecular_weight_kg_kmol": 100.0,
933
+ "storage_temperature_k": 310.0,
934
+ "wind_speed_m_s": 2.0,
935
+ "liquid_feed_rate_kg_s": 0.05,
936
+ "maximum_pool_area_m2": 1000.0
937
+ },
938
+ "expected_outputs": {
939
+ "equilibrium_evaporation_rate_kg_s": 0.05,
940
+ "pool_radius_m": 4.338800650133383,
941
+ "pool_area_m2": 59.141082004371945,
942
+ "vapor_source_rate_kg_s": 0.05,
943
+ "support_status": "supported"
944
+ },
945
+ "basis": "API 581 non-boiling steady-source inverse correlation with site-area support"
946
+ }
947
+ ],
948
+ "release/flammable-phase-rates": [
949
+ {
950
+ "case_id": "eighty_percent_flammable_quarter_flash",
951
+ "inputs": {
952
+ "adjusted_mass_rate_kg_s": 10.0,
953
+ "flammable_mass_fraction": 0.8,
954
+ "flash_mass_fraction": 0.25
955
+ },
956
+ "expected_outputs": {
957
+ "flammable_rate_kg_s": 8.0,
958
+ "flammable_vapor_rate_kg_s": 2.0,
959
+ "flammable_liquid_rate_kg_s": 6.0
960
+ },
961
+ "basis": "API 581 eqs. (3.106)-(3.108): flammable mass fraction followed by flash split"
962
+ }
963
+ ],
964
+ "release/bleve-flashed-amount": [
965
+ {
966
+ "case_id": "twenty_percent_flash_of_1000kg_liquid",
967
+ "inputs": {
968
+ "stored_liquid_mass_kg": 1000.0,
969
+ "liquid_flash_mass_fraction": 0.2,
970
+ "molecular_weight_kg_kmol": 20.0
971
+ },
972
+ "expected_outputs": {
973
+ "flashed_liquid_mass_kg": 200.0,
974
+ "flashed_amount_kmol": 10.0
975
+ },
976
+ "basis": "API 581 STEP 10.3: flashed mass and kmol preparation"
977
+ }
978
+ ],
979
+ "release/level2-toxic-duration": [
980
+ {
981
+ "case_id": "inventory_limited_toxic_duration",
982
+ "inputs": {
983
+ "available_mass_kg": 100.0,
984
+ "mixture_release_rate_kg_s": 2.0,
985
+ "detection_maximum_duration_s": 1000.0
986
+ },
987
+ "expected_outputs": {
988
+ "release_duration_s": 50.0,
989
+ "governing_limit": "inventory"
990
+ },
991
+ "basis": "API 581 eq. (3.186): minimum of one hour, inventory/rate and detection duration"
992
+ }
993
+ ],
994
+ "release/detection-isolation": [
995
+ {
996
+ "case_id": "small_hole_aa_detection_duration",
997
+ "inputs": {
998
+ "detection_rating": "A",
999
+ "isolation_rating": "A",
1000
+ "hole_size": "small",
1001
+ "theoretical_rate_kg_s": 10.0,
1002
+ "available_mass_kg": 10000.0
1003
+ },
1004
+ "expected_outputs": {
1005
+ "release_reduction_fraction": 0.25,
1006
+ "adjusted_rate_kg_s": 7.5,
1007
+ "maximum_leak_duration_s": 1200.0,
1008
+ "duration_s": 1200.0,
1009
+ "released_mass_kg": 9000.0,
1010
+ "detection_rating": "A",
1011
+ "isolation_rating": "A",
1012
+ "hole_size": "small"
1013
+ },
1014
+ "basis": "API 581 Tables 4.6/4.7M release reduction, leak duration and released mass"
1015
+ }
1016
+ ],
1017
+ "release/controlled-scenario": [
1018
+ {
1019
+ "case_id": "gas_medium_hole_controlled_release",
1020
+ "inputs": {
1021
+ "source": {
1022
+ "diameter_m": 0.0254,
1023
+ "upstream_pressure_pa_abs": 1000000.0,
1024
+ "downstream_pressure_pa_abs": 101325.0,
1025
+ "temperature_k": 300.0,
1026
+ "molecular_weight_kg_kmol": 28.0,
1027
+ "heat_capacity_ratio": 1.4
1028
+ },
1029
+ "operating_temperature_k": 300.0,
1030
+ "component_mass_kg": 1000.0,
1031
+ "inventory_group_mass_kg": 2000.0,
1032
+ "detection": "A",
1033
+ "isolation": "A",
1034
+ "duration_hole": "medium"
1035
+ },
1036
+ "expected_outputs": {
1037
+ "theoretical_rate_kg_s": 1.0462161012327829,
1038
+ "available_mass_kg": 1188.318898221901,
1039
+ "release_type": "continuous",
1040
+ "reduction_fraction": 0.25,
1041
+ "maximum_duration_s": 600.0,
1042
+ "adjusted_rate_kg_s": 0.7846620759245871,
1043
+ "duration_s": 600.0,
1044
+ "released_mass_kg": 470.7972455547523
1045
+ },
1046
+ "basis": "API 581 controlled release integration of source, inventory, detection/isolation and duration"
1047
+ }
1048
+ ],
1049
+ "damage/thinning-wall-loss": [
1050
+ {
1051
+ "case_id": "ten_percent_wall_loss",
1052
+ "inputs": {
1053
+ "starting_thickness_m": 0.01,
1054
+ "corrosion_rate_m_year": 0.0005,
1055
+ "elapsed_years": 2.0
1056
+ },
1057
+ "expected_outputs": {
1058
+ "wall_loss_fraction": 0.1
1059
+ },
1060
+ "basis": "API 581 thinning wall-loss fraction: corrosion rate times elapsed exposure divided by starting thickness"
1061
+ }
1062
+ ],
1063
+ "damage/thinning-strength-ratio": [
1064
+ {
1065
+ "case_id": "cylindrical_pressure_strength_ratio",
1066
+ "inputs": {
1067
+ "differential_pressure_pa": 1000000.0,
1068
+ "diameter_m": 1.0,
1069
+ "flow_stress_pa": 200000000.0,
1070
+ "starting_thickness_m": 0.02,
1071
+ "shape": "cylinder"
1072
+ },
1073
+ "expected_outputs": {
1074
+ "strength_ratio": 0.125
1075
+ },
1076
+ "basis": "API 581 internal-pressure thinning strength ratio for a cylindrical shell"
1077
+ }
1078
+ ],
1079
+ "damage/thinning-prior-selection": [
1080
+ {
1081
+ "case_id": "medium_confidence_table_prior",
1082
+ "inputs": {
1083
+ "confidence": "medium"
1084
+ },
1085
+ "expected_outputs": {
1086
+ "prior_probabilities": [
1087
+ 0.7,
1088
+ 0.2,
1089
+ 0.1
1090
+ ],
1091
+ "prior_source": "table4_5",
1092
+ "confidence": "medium",
1093
+ "zero_prior_state_indices": []
1094
+ },
1095
+ "basis": "API 581 Table 4.5 medium-confidence damage-state prior"
1096
+ }
1097
+ ],
1098
+ "damage/thinning-adjust": [
1099
+ {
1100
+ "case_id": "multiplicative_thinning_adjustments",
1101
+ "inputs": {
1102
+ "base_damage_factor": 10.0,
1103
+ "injection_point_factor": 2.0,
1104
+ "deadleg_factor": 1.5,
1105
+ "welded_construction_factor": 1.0,
1106
+ "maintenance_factor": 0.8,
1107
+ "settlement_factor": 1.0,
1108
+ "online_monitoring_factor": 0.9
1109
+ },
1110
+ "expected_outputs": {
1111
+ "thinning_damage_factor": 26.666666666666664
1112
+ },
1113
+ "basis": "API 581 thinning base factor multiplied by supplied adjustment factors"
1114
+ }
1115
+ ],
1116
+ "level1/hf-h2s-toxic-coefficients": [
1117
+ {
1118
+ "case_id": "h2s_five_minute_continuous_coefficients",
1119
+ "inputs": {
1120
+ "fluid": "h2s",
1121
+ "release_type": "continuous",
1122
+ "duration_s": 300.0
1123
+ },
1124
+ "expected_outputs": {
1125
+ "c": 1.2411,
1126
+ "d": 3.9686,
1127
+ "native_area_unit": "ft2",
1128
+ "native_magnitude_unit": "lb/s",
1129
+ "si_area_multiplier": 0.0929,
1130
+ "si_mass_multiplier": 2.205,
1131
+ "source_cell_status": "clear"
1132
+ },
1133
+ "basis": "API 581 Part 3 Table 4.11 continuous H2S coefficient node"
1134
+ }
1135
+ ],
1136
+ "level1/hf-h2s-toxic-area": [
1137
+ {
1138
+ "case_id": "h2s_five_minute_area",
1139
+ "inputs": {
1140
+ "fluid": "h2s",
1141
+ "release_type": "continuous",
1142
+ "duration_s": 300.0,
1143
+ "toxic_rate_kg_s": 0.1,
1144
+ "toxic_mass_kg": 30.0,
1145
+ "nonignition_probability": 1.0
1146
+ },
1147
+ "expected_outputs": {
1148
+ "personnel_area_m2": 132.34883408106103,
1149
+ "unweighted_personnel_area_m2": 132.34883408106103
1150
+ },
1151
+ "basis": "API 581 H2S toxic area correlation with no nonignition weighting reduction"
1152
+ }
1153
+ ],
1154
+ "level1/misc-toxic-coefficients": [
1155
+ {
1156
+ "case_id": "carbon_monoxide_five_minute_gas_coefficients",
1157
+ "inputs": {
1158
+ "fluid": "co",
1159
+ "release_phase": "gas",
1160
+ "duration_s": 300.0
1161
+ },
1162
+ "expected_outputs": {
1163
+ "e": 60.09,
1164
+ "f": 1.06,
1165
+ "native_area_unit": "m2",
1166
+ "native_rate_unit": "kg/s",
1167
+ "si_area_multiplier": 1.0,
1168
+ "si_mass_multiplier": 1.0
1169
+ },
1170
+ "basis": "API 581 Part 3 Table 4.13M CO gas coefficient node"
1171
+ }
1172
+ ],
1173
+ "level1/misc-toxic-area": [
1174
+ {
1175
+ "case_id": "carbon_monoxide_five_minute_area",
1176
+ "inputs": {
1177
+ "fluid": "co",
1178
+ "release_phase": "gas",
1179
+ "duration_s": 300.0,
1180
+ "release_type": "continuous",
1181
+ "toxic_rate_kg_s": 0.1,
1182
+ "nonignition_probability": 1.0
1183
+ },
1184
+ "expected_outputs": {
1185
+ "personnel_area_m2": 5.233620212046088,
1186
+ "unweighted_personnel_area_m2": 5.233620212046088
1187
+ },
1188
+ "basis": "API 581 continuous CO toxic area from Table 4.13M coefficients"
1189
+ }
1190
+ ],
1191
+ "level1/toxic-cutoff": [
1192
+ {
1193
+ "case_id": "h2s_at_idlh_cutoff",
1194
+ "inputs": {
1195
+ "fluid": "h2s",
1196
+ "concentration_ppm_on_idlh_basis": 100.0
1197
+ },
1198
+ "expected_outputs": {
1199
+ "idlh_ppm": 100.0,
1200
+ "requires_toxic_evaluation": false
1201
+ },
1202
+ "basis": "API 581 Level 1 toxic cutoff at the printed H2S IDLH threshold"
1203
+ }
1204
+ ],
1205
+ "level1/toxic-mitigation": [
1206
+ {
1207
+ "case_id": "explicit_rate_duration_mass_credits",
1208
+ "inputs": {
1209
+ "rate_reduction_fraction": 0.2,
1210
+ "duration_reduction_fraction": 0.3,
1211
+ "mass_reduction_fraction": 0.1,
1212
+ "toxic_rate_kg_s": 10.0,
1213
+ "toxic_mass_kg": 100.0,
1214
+ "duration_s": 50.0
1215
+ },
1216
+ "expected_outputs": {
1217
+ "toxic_rate_kg_s": 8.0,
1218
+ "toxic_mass_kg": 90.0,
1219
+ "duration_s": 35.0
1220
+ },
1221
+ "basis": "API 581 toxic source mitigation applies explicit owner-qualified rate, mass and duration credits"
1222
+ }
1223
+ ],
1224
+ "properties/water-partial-pressure": [
1225
+ {
1226
+ "case_id": "half_relative_humidity_at_300k",
1227
+ "inputs": {
1228
+ "ambient_temperature_k": 300.0,
1229
+ "relative_humidity_fraction": 0.5,
1230
+ "ambient_pressure_pa_abs": 101325.0
1231
+ },
1232
+ "expected_outputs": {
1233
+ "water_partial_pressure_pa": 1779.5121090521502
1234
+ },
1235
+ "basis": "API 581 water-vapor partial pressure from saturation pressure and relative humidity"
1236
+ }
1237
+ ],
1238
+ "properties/co2-partial-pressure": [
1239
+ {
1240
+ "case_id": "ten_percent_co2_at_one_mpa",
1241
+ "inputs": {
1242
+ "total_pressure_pa_abs": 1000000.0,
1243
+ "co2_mole_fraction": 0.1
1244
+ },
1245
+ "expected_outputs": {
1246
+ "co2_partial_pressure_pa_abs": 100000.0
1247
+ },
1248
+ "basis": "Dalton partial-pressure relation for CO2"
1249
+ }
1250
+ ],
1251
+ "properties/h2s-partial-pressure": [
1252
+ {
1253
+ "case_id": "one_percent_h2s_at_one_mpa",
1254
+ "inputs": {
1255
+ "total_pressure_pa_abs": 1000000.0,
1256
+ "h2s_mole_fraction": 0.01
1257
+ },
1258
+ "expected_outputs": {
1259
+ "h2s_partial_pressure_pa_abs": 10000.0
1260
+ },
1261
+ "basis": "Dalton partial-pressure relation for H2S"
1262
+ }
1263
+ ],
1264
+ "properties/pure-fluid-saturation-pressure": [
1265
+ {
1266
+ "case_id": "benzene_at_atmospheric_pressure",
1267
+ "inputs": {
1268
+ "fluid": "benzene",
1269
+ "qualification_basis": "fixture",
1270
+ "pressure_pa_abs": 101325.0
1271
+ },
1272
+ "expected_outputs": {
1273
+ "saturation_pressure_pa_abs": 101325.0,
1274
+ "bubble_temperature_k": 353.2163505561035,
1275
+ "dew_temperature_k": 353.2163505561035,
1276
+ "molecular_weight_kg_kmol": 78.1118,
1277
+ "engine_version": "8.0.0"
1278
+ },
1279
+ "basis": "Qualified property-engine saturation state at atmospheric pressure"
1280
+ }
1281
+ ],
1282
+ "properties/pure-fluid-saturation-temperature": [
1283
+ {
1284
+ "case_id": "benzene_at_350k",
1285
+ "inputs": {
1286
+ "fluid": "benzene",
1287
+ "qualification_basis": "fixture",
1288
+ "temperature_k": 350.0
1289
+ },
1290
+ "expected_outputs": {
1291
+ "saturation_pressure_pa_abs": 91672.37395923355,
1292
+ "bubble_temperature_k": 350.0,
1293
+ "dew_temperature_k": 350.0,
1294
+ "molecular_weight_kg_kmol": 78.1118,
1295
+ "engine_version": "8.0.0"
1296
+ },
1297
+ "basis": "Qualified property-engine saturation state at specified temperature"
1298
+ }
1299
+ ],
1300
+ "properties/acid-caustic-representative-fluid": [
1301
+ {
1302
+ "case_id": "hazard_route_requires_caller_selection",
1303
+ "inputs": {
1304
+ "is_acid_or_caustic": true,
1305
+ "is_flammable": false,
1306
+ "is_toxic": true,
1307
+ "personnel_contact_hazard": true
1308
+ },
1309
+ "expected_outputs": {
1310
+ "selection": "not_applicable",
1311
+ "representative_fluid": null,
1312
+ "release_phase": null,
1313
+ "consequence_model": null
1314
+ },
1315
+ "basis": "Representative-fluid selector refuses to infer an acid/caustic fluid route without qualified fluid identity"
1316
+ }
1317
+ ],
1318
+ "consequence/toxic-mixture-limit": [
1319
+ {
1320
+ "case_id": "half_fraction_doubles_mixture_limit",
1321
+ "inputs": {
1322
+ "pure_component_limit_ppm": 100.0,
1323
+ "toxic_mole_fraction": 0.5
1324
+ },
1325
+ "expected_outputs": {
1326
+ "modified_mixture_limit_ppm": 200.0,
1327
+ "component_present": true,
1328
+ "attainable_in_mixture": true
1329
+ },
1330
+ "basis": "Mixture toxic limit scales by inverse toxic mole fraction"
1331
+ }
1332
+ ],
1333
+ "properties/toxic-impact-table": [
1334
+ {
1335
+ "case_id": "ammonia_toxic_impact_table",
1336
+ "inputs": {
1337
+ "fluid": "ammonia"
1338
+ },
1339
+ "expected_outputs": {
1340
+ "probit_intercept": -35.9,
1341
+ "probit_slope": 1.85,
1342
+ "concentration_exponent": 2.0,
1343
+ "probit_available": true,
1344
+ "probit_concentration_unit": "ppm",
1345
+ "probit_duration_unit": "s",
1346
+ "idlh_ppm": 10.0,
1347
+ "epa_toxic_endpoint_mg_l": 0.14,
1348
+ "erpg3_ppm": 750.0
1349
+ },
1350
+ "basis": "API 581 toxic impact table lookup for ammonia"
1351
+ }
1352
+ ],
1353
+ "properties/pool-surface-interaction": [
1354
+ {
1355
+ "case_id": "concrete_pool_surface_properties",
1356
+ "inputs": {
1357
+ "surface": "concrete"
1358
+ },
1359
+ "expected_outputs": {
1360
+ "thermal_conductivity_w_m_k": 0.92,
1361
+ "thermal_diffusivity_m2_s": 4.16e-07,
1362
+ "roughness_factor": 1.0
1363
+ },
1364
+ "basis": "API 581 Annex pool-surface thermal property row"
1365
+ }
1366
+ ],
1367
+ "properties/mixture-representative-fluid": [
1368
+ {
1369
+ "case_id": "c1c2_dominant_mixture_selection",
1370
+ "inputs": {
1371
+ "components": [
1372
+ {
1373
+ "fluid": "C1-C2",
1374
+ "mole_fraction": 0.7
1375
+ },
1376
+ {
1377
+ "fluid": "C5",
1378
+ "mole_fraction": 0.3
1379
+ }
1380
+ ]
1381
+ },
1382
+ "expected_outputs": {
1383
+ "molecular_weight_kg_kmol": 37.699999999999996,
1384
+ "normal_boiling_point_k": 196.45,
1385
+ "liquid_density_kg_m3": 362.9181,
1386
+ "selected_fluid": "C1-C2",
1387
+ "relevant_mole_fraction": 1.0,
1388
+ "level2_recommended": false
1389
+ },
1390
+ "basis": "Representative mixture weighted property and table-family selection"
1391
+ }
1392
+ ],
1393
+ "properties/representative-fluid": [
1394
+ {
1395
+ "case_id": "c3c4_gas_at_300k",
1396
+ "inputs": {
1397
+ "fluid": "C3-C4",
1398
+ "temperature_k": 300.0
1399
+ },
1400
+ "expected_outputs": {
1401
+ "fluid": "C3-C4",
1402
+ "molecular_weight_kg_kmol": 51.0,
1403
+ "liquid_density_kg_m3": 538.379,
1404
+ "normal_boiling_point_k": 252.14999999999998,
1405
+ "ambient_state": "Gas",
1406
+ "source_table": "Table 4.2M"
1407
+ },
1408
+ "basis": "API 581 Table 4.2M representative fluid lookup"
1409
+ }
1410
+ ],
1411
+ "effects/atmospheric-transmissivity": [
1412
+ {
1413
+ "case_id": "ten_meter_humid_path",
1414
+ "inputs": {
1415
+ "water_partial_pressure_pa": 1000.0,
1416
+ "path_length_m": 10.0
1417
+ },
1418
+ "expected_outputs": {
1419
+ "transmissivity": 0.8819211100380477,
1420
+ "uncapped_transmissivity": 0.8819211100380477,
1421
+ "dry_air_limit": false
1422
+ },
1423
+ "basis": "API 581 atmospheric transmissivity correlation"
1424
+ }
1425
+ ],
1426
+ "effects/fireball-mass": [
1427
+ {
1428
+ "case_id": "forty_percent_flammable_inventory",
1429
+ "inputs": {
1430
+ "available_mass_kg": 1000.0,
1431
+ "flammable_mass_fraction": 0.4
1432
+ },
1433
+ "expected_outputs": {
1434
+ "flammable_mass_kg": 400.0
1435
+ },
1436
+ "basis": "API 581 fireball flammable mass fraction"
1437
+ }
1438
+ ],
1439
+ "effects/fireball-view-factor": [
1440
+ {
1441
+ "case_id": "ten_meter_fireball_at_twenty_meter_distance",
1442
+ "inputs": {
1443
+ "diameter_m": 10.0,
1444
+ "distance_m": 20.0,
1445
+ "geometry_basis": "api581_printed"
1446
+ },
1447
+ "expected_outputs": {
1448
+ "view_factor": 0.19999999999999998,
1449
+ "model_center_distance_m": 11.180339887498949,
1450
+ "attenuation_path_m": 20.0,
1451
+ "geometry_basis": "api581_printed"
1452
+ },
1453
+ "basis": "API 581 printed fireball view-factor geometry"
1454
+ }
1455
+ ],
1456
+ "effects/vce-scaled-distance": [
1457
+ {
1458
+ "case_id": "hundred_meter_thousand_kg_tnt",
1459
+ "inputs": {
1460
+ "distance_m": 100.0,
1461
+ "tnt_equivalent_mass_kg": 1000.0
1462
+ },
1463
+ "expected_outputs": {
1464
+ "scaled_distance_m_kg13": 10.0
1465
+ },
1466
+ "basis": "VCE scaled distance Z=R/W^(1/3)"
1467
+ }
1468
+ ],
1469
+ "effects/physical-explosion-tnt": [
1470
+ {
1471
+ "case_id": "ten_cubic_meter_pressurized_vapor",
1472
+ "inputs": {
1473
+ "burst_pressure_pa_abs": 1000000.0,
1474
+ "ambient_pressure_pa_abs": 101325.0,
1475
+ "vapor_volume_m3": 10.0,
1476
+ "heat_capacity_ratio": 1.4
1477
+ },
1478
+ "expected_outputs": {
1479
+ "vapor_stored_energy_j": 22466875.000000004,
1480
+ "tnt_equivalent_mass_kg": 9.6674963125
1481
+ },
1482
+ "basis": "API 581 physical explosion stored vapor energy to TNT equivalent"
1483
+ }
1484
+ ],
1485
+ "effects/bleve-liquid-tnt": [
1486
+ {
1487
+ "case_id": "ten_kmol_flashed_liquid",
1488
+ "inputs": {
1489
+ "burst_pressure_pa_abs": 1000000.0,
1490
+ "ambient_pressure_pa_abs": 101325.0,
1491
+ "flashed_amount_kmol": 10.0,
1492
+ "storage_temperature_k": 300.0
1493
+ },
1494
+ "expected_outputs": {
1495
+ "liquid_expansion_energy_j": 57102766.17951898,
1496
+ "tnt_equivalent_mass_kg": 5.573229979121053
1497
+ },
1498
+ "basis": "API 581 BLEVE liquid expansion energy to TNT equivalent"
1499
+ }
1500
+ ],
1501
+ "effects/pool-mixture-burning-rate": [
1502
+ {
1503
+ "case_id": "two_component_weighted_burning_rate",
1504
+ "inputs": {
1505
+ "components": [
1506
+ {
1507
+ "mole_fraction": 0.6,
1508
+ "burning_rate_kg_m2_s": 0.1
1509
+ },
1510
+ {
1511
+ "mole_fraction": 0.4,
1512
+ "burning_rate_kg_m2_s": 0.2
1513
+ }
1514
+ ]
1515
+ },
1516
+ "expected_outputs": {
1517
+ "burning_rate_kg_m2_s": 0.14
1518
+ },
1519
+ "basis": "Mole-fraction weighted pool mixture burning rate"
1520
+ }
1521
+ ],
1522
+ "effects/pool-flame-geometry": [
1523
+ {
1524
+ "case_id": "five_meter_pool_wind_geometry",
1525
+ "inputs": {
1526
+ "pool_radius_m": 5.0,
1527
+ "burning_rate_kg_m2_s": 0.1,
1528
+ "air_density_kg_m3": 1.2,
1529
+ "vapor_density_kg_m3": 2.0,
1530
+ "wind_speed_m_s": 2.0,
1531
+ "gravity_m_s2": 9.81
1532
+ },
1533
+ "expected_outputs": {
1534
+ "nondimensional_wind_speed": 1.1777339779828624,
1535
+ "flame_length_m": 21.63626161966045,
1536
+ "flame_tilt_rad": 0.3989746257725355,
1537
+ "vertical_flame_height_m": 19.93694550529547,
1538
+ "downwind_axis_extension_m": 8.40511872570939
1539
+ },
1540
+ "basis": "API 581 pool flame length and wind-tilt geometry"
1541
+ }
1542
+ ],
1543
+ "effects/pool-surface-emissive-power": [
1544
+ {
1545
+ "case_id": "five_meter_pool_emissive_power",
1546
+ "inputs": {
1547
+ "pool_radius_m": 5.0,
1548
+ "flame_length_m": 10.0,
1549
+ "burning_rate_kg_m2_s": 0.1,
1550
+ "heat_of_combustion_j_kg": 40000000.0,
1551
+ "radiative_fraction": 0.35
1552
+ },
1553
+ "expected_outputs": {
1554
+ "burning_mass_rate_kg_s": 7.853981633974483,
1555
+ "radiated_power_w": 109955742.87564276,
1556
+ "emitting_surface_area_m2": 392.69908169872417,
1557
+ "surface_emissive_power_w_m2": 280000.0
1558
+ },
1559
+ "basis": "API 581 pool fire radiative power and surface emissive power"
1560
+ }
1561
+ ],
1562
+ "effects/pool-cylinder-view-factor": [
1563
+ {
1564
+ "case_id": "vertical_cylinder_view_factor",
1565
+ "inputs": {
1566
+ "length_radius_ratio": 2.0,
1567
+ "distance_radius_ratio": 3.0,
1568
+ "flame_tilt_rad": 0.0,
1569
+ "equation_basis": "api581_printed"
1570
+ },
1571
+ "expected_outputs": {
1572
+ "vertical_view_factor": 0.14515179502970676,
1573
+ "horizontal_view_factor": 0.05010478289198261,
1574
+ "maximum_view_factor": 0.15355628567075566,
1575
+ "physical_range": true,
1576
+ "equation_basis": "api581_printed"
1577
+ },
1578
+ "basis": "API 581 pool-cylinder view-factor correlation"
1579
+ }
1580
+ ],
1581
+ "effects/blast-building-probit": [
1582
+ {
1583
+ "case_id": "building_probit_at_34500pa",
1584
+ "inputs": {
1585
+ "side_on_overpressure_pa": 34500.0
1586
+ },
1587
+ "expected_outputs": {
1588
+ "probit": 6.7102466408167984,
1589
+ "building_collapse_probability": 0.9563898628636933
1590
+ },
1591
+ "basis": "API 581 building damage probit correlation"
1592
+ }
1593
+ ],
1594
+ "effects/blast-building-pressure-threshold": [
1595
+ {
1596
+ "case_id": "fifty_percent_building_collapse_threshold",
1597
+ "inputs": {
1598
+ "building_collapse_probability": 0.5
1599
+ },
1600
+ "expected_outputs": {
1601
+ "probit": 5.0,
1602
+ "side_on_overpressure_pa": 19206.68546346703
1603
+ },
1604
+ "basis": "Inverse API 581 building probit at 50 percent collapse probability"
1605
+ }
1606
+ ],
1607
+ "effects/toxic-species-probit": [
1608
+ {
1609
+ "case_id": "ammonia_one_hundred_ppm_one_minute",
1610
+ "inputs": {
1611
+ "fluid": "ammonia",
1612
+ "concentration_ppm": 100.0,
1613
+ "exposure_duration_s": 60.0
1614
+ },
1615
+ "expected_outputs": {
1616
+ "probit": -11.286332871733169,
1617
+ "fatality_probability": 6.170539949007119e-60
1618
+ },
1619
+ "basis": "API 581 toxic species probit correlation"
1620
+ }
1621
+ ],
1622
+ "effects/toxic-species-threshold": [
1623
+ {
1624
+ "case_id": "ammonia_fifty_percent_fatality_threshold",
1625
+ "inputs": {
1626
+ "fluid": "ammonia",
1627
+ "exposure_duration_s": 60.0,
1628
+ "target_fatality_probability": 0.5
1629
+ },
1630
+ "expected_outputs": {
1631
+ "concentration_ppm": 8159.039828371583,
1632
+ "probit": 5.0,
1633
+ "within_pure_species_limit": true
1634
+ },
1635
+ "basis": "Inverse toxic species probit threshold"
1636
+ }
1637
+ ],
1638
+ "effects/toxic-dose-profile": [
1639
+ {
1640
+ "case_id": "ammonia_linear_twenty_second_profile",
1641
+ "inputs": {
1642
+ "fluid": "ammonia",
1643
+ "profile": [
1644
+ {
1645
+ "time_s": 0.0,
1646
+ "concentration_ppm": 0.0
1647
+ },
1648
+ {
1649
+ "time_s": 10.0,
1650
+ "concentration_ppm": 100.0
1651
+ },
1652
+ {
1653
+ "time_s": 20.0,
1654
+ "concentration_ppm": 100.0
1655
+ }
1656
+ ],
1657
+ "interpolation": "linear",
1658
+ "profile_source": "fixture"
1659
+ },
1660
+ "expected_outputs": {
1661
+ "probit": -14.06887605576928,
1662
+ "fatality_probability": 2.290220387180209e-81,
1663
+ "dose_ppm_power_n_s": 133333.33333333346,
1664
+ "duration_s": 20.0,
1665
+ "equivalent_constant_concentration_ppm": 81.64965809277267,
1666
+ "dose_representable": true
1667
+ },
1668
+ "basis": "API 581 toxic dose integration over a piecewise-linear concentration profile"
1669
+ }
1670
+ ],
1671
+ "effects/vce-scaled-overpressure": [
1672
+ {
1673
+ "case_id": "scaled_distance_five_bounded_fit",
1674
+ "inputs": {
1675
+ "scaled_distance_m_kg13": 5.0,
1676
+ "fit_domain": {
1677
+ "minimum_scaled_distance_m_kg13": 2.0,
1678
+ "maximum_scaled_distance_m_kg13": 10.0,
1679
+ "engineering_basis": "fixture blast fit"
1680
+ }
1681
+ },
1682
+ "expected_outputs": {
1683
+ "side_on_overpressure_pa": 50351.036773496395,
1684
+ "slope_pa_per_scaled_distance": -17500.85385227397
1685
+ },
1686
+ "basis": "API 581 inverse-log TNT blast fit within caller-qualified interval"
1687
+ }
1688
+ ],
1689
+ "effects/vce-blast-overpressure": [
1690
+ {
1691
+ "case_id": "hundred_meter_thousand_kg_blast",
1692
+ "inputs": {
1693
+ "distance_m": 100.0,
1694
+ "tnt_equivalent_mass_kg": 1000.0,
1695
+ "fit_domain": {
1696
+ "minimum_scaled_distance_m_kg13": 2.0,
1697
+ "maximum_scaled_distance_m_kg13": 10.0,
1698
+ "engineering_basis": "fixture blast fit"
1699
+ }
1700
+ },
1701
+ "expected_outputs": {
1702
+ "scaled_distance_m_kg13": 10.0,
1703
+ "side_on_overpressure_pa": 16083.410140547974,
1704
+ "slope_pa_per_scaled_distance": -2508.2147811302843
1705
+ },
1706
+ "basis": "API 581 VCE scaled-distance conversion followed by blast pressure fit"
1707
+ }
1708
+ ],
1709
+ "effects/fireball-radiation-flux": [
1710
+ {
1711
+ "case_id": "ten_meter_fireball_twenty_meter_constant_atmosphere",
1712
+ "inputs": {
1713
+ "diameter_m": 10.0,
1714
+ "surface_emissive_power_w_m2": 200000.0,
1715
+ "atmosphere": {
1716
+ "transmissivity_model": "constant",
1717
+ "constant_transmissivity": 0.8
1718
+ },
1719
+ "geometry_basis": "api581_printed",
1720
+ "distance_m": 20.0
1721
+ },
1722
+ "expected_outputs": {
1723
+ "view_factor": 0.19999999999999998,
1724
+ "model_center_distance_m": 11.180339887498949,
1725
+ "attenuation_path_m": 20.0,
1726
+ "transmissivity": 0.8,
1727
+ "received_flux_w_m2": 31999.999999999996
1728
+ },
1729
+ "basis": "API 581 fireball view factor, atmospheric attenuation and radiative flux"
1730
+ }
1731
+ ],
1732
+ "effects/pool-radiation-flux": [
1733
+ {
1734
+ "case_id": "five_meter_pool_twenty_meter_constant_atmosphere",
1735
+ "inputs": {
1736
+ "pool_radius_m": 5.0,
1737
+ "flame_length_m": 10.0,
1738
+ "flame_tilt_rad": 0.0,
1739
+ "surface_emissive_power_w_m2": 280000.0,
1740
+ "atmosphere": {
1741
+ "transmissivity_model": "constant",
1742
+ "constant_transmissivity": 0.8
1743
+ },
1744
+ "equation_basis": "api581_printed",
1745
+ "distance_convention": "printed_surface_ratio",
1746
+ "surface_distance_m": 20.0
1747
+ },
1748
+ "expected_outputs": {
1749
+ "received_flux_w_m2": 21452.39796350253,
1750
+ "transmissivity": 0.8,
1751
+ "maximum_view_factor": 0.0957696337656363,
1752
+ "view_factor_distance_m": 20.0,
1753
+ "equation_basis": "api581_printed",
1754
+ "distance_convention": "printed_surface_ratio"
1755
+ },
1756
+ "basis": "API 581 pool fire view factor and atmospheric attenuation"
1757
+ }
1758
+ ],
1759
+ "effects/vce-blast-distance": [
1760
+ {
1761
+ "case_id": "thousand_kg_threshold_distance",
1762
+ "inputs": {
1763
+ "tnt_equivalent_mass_kg": 1000.0,
1764
+ "threshold_overpressure_pa": 16083.410140547974,
1765
+ "fit_domain": {
1766
+ "minimum_scaled_distance_m_kg13": 2.0,
1767
+ "maximum_scaled_distance_m_kg13": 10.0,
1768
+ "engineering_basis": "fixture blast fit"
1769
+ }
1770
+ },
1771
+ "expected_outputs": {
1772
+ "safe_distance_m": 100.0,
1773
+ "consequence_area_m2": 31415.926535897932,
1774
+ "scaled_distance_m_kg13": 10.0,
1775
+ "status": "threshold_solved",
1776
+ "iterations": 0,
1777
+ "pressure_residual_pa": 0.0
1778
+ },
1779
+ "basis": "API 581 bounded inverse blast distance"
1780
+ }
1781
+ ],
1782
+ "effects/fireball-distance": [
1783
+ {
1784
+ "case_id": "fireball_distance_at_32000w_m2",
1785
+ "inputs": {
1786
+ "diameter_m": 10.0,
1787
+ "surface_emissive_power_w_m2": 200000.0,
1788
+ "atmosphere": {
1789
+ "transmissivity_model": "constant",
1790
+ "constant_transmissivity": 0.8
1791
+ },
1792
+ "geometry_basis": "api581_printed",
1793
+ "threshold_w_m2": 32000.0,
1794
+ "maximum_distance_m": 100.0
1795
+ },
1796
+ "expected_outputs": {
1797
+ "safe_distance_m": 20.000004768371582,
1798
+ "consequence_area_m2": 1256.637660647234,
1799
+ "status": "threshold_solved",
1800
+ "geometry_basis": "api581_printed"
1801
+ },
1802
+ "basis": "API 581 bounded inverse fireball radiative distance"
1803
+ }
1804
+ ],
1805
+ "effects/pool-fire-distance": [
1806
+ {
1807
+ "case_id": "pool_fire_distance_at_21452w_m2",
1808
+ "inputs": {
1809
+ "pool_radius_m": 5.0,
1810
+ "flame_length_m": 10.0,
1811
+ "flame_tilt_rad": 0.0,
1812
+ "surface_emissive_power_w_m2": 280000.0,
1813
+ "atmosphere": {
1814
+ "transmissivity_model": "constant",
1815
+ "constant_transmissivity": 0.8
1816
+ },
1817
+ "equation_basis": "api581_printed",
1818
+ "distance_convention": "printed_surface_ratio",
1819
+ "threshold_w_m2": 21452.39796350253,
1820
+ "maximum_surface_distance_m": 100.0
1821
+ },
1822
+ "expected_outputs": {
1823
+ "safe_surface_distance_m": 20.000005108500066,
1824
+ "consequence_radius_m": 25.000005108500066,
1825
+ "consequence_area_m2": 1963.4962109350167,
1826
+ "status": "threshold_solved",
1827
+ "minimum_surface_domain_m": 5.0,
1828
+ "equation_basis": "api581_printed",
1829
+ "distance_convention": "printed_surface_ratio"
1830
+ },
1831
+ "basis": "API 581 bounded inverse pool-fire radiative distance"
1832
+ }
1833
+ ],
1834
+ "effects/vce-blast-consequence": [
1835
+ {
1836
+ "case_id": "thousand_kg_flammable_cloud_vce",
1837
+ "inputs": {
1838
+ "flammable_cloud_mass_kg": 1000.0,
1839
+ "combustion_heat_j_kg": 40000000.0,
1840
+ "explosion_yield": 0.1,
1841
+ "tnt_heat_j_kg": 4184000.0,
1842
+ "tnt_heat_source": "fixture",
1843
+ "mass_basis": "between_flammability_limits",
1844
+ "yield_engineering_basis": "fixture",
1845
+ "personnel_building_collapse_probability": 0.5,
1846
+ "equipment_threshold_overpressure_pa": 34500.0,
1847
+ "fit_domain": {
1848
+ "minimum_scaled_distance_m_kg13": 2.0,
1849
+ "maximum_scaled_distance_m_kg13": 10.0,
1850
+ "engineering_basis": "fixture blast fit"
1851
+ }
1852
+ },
1853
+ "expected_outputs": {
1854
+ "tnt_equivalent_mass_kg": 956.0229445506692,
1855
+ "personnel_threshold_overpressure_pa": 19206.68546346703,
1856
+ "personnel_safe_distance_m": 88.00083640487668,
1857
+ "equipment_safe_distance_m": 61.45888306698751,
1858
+ "personnel_area_m2": 24328.955976838348,
1859
+ "equipment_area_m2": 11866.405888696494,
1860
+ "mass_basis": "between_flammability_limits"
1861
+ },
1862
+ "basis": "API 581 VCE TNT equivalence and bounded consequence areas"
1863
+ }
1864
+ ],
1865
+ "effects/physical-explosion-consequence": [
1866
+ {
1867
+ "case_id": "rupture_physical_explosion_consequence",
1868
+ "inputs": {
1869
+ "hole": "rupture",
1870
+ "fit_domain": {
1871
+ "minimum_scaled_distance_m_kg13": 2.0,
1872
+ "maximum_scaled_distance_m_kg13": 10.0,
1873
+ "engineering_basis": "fixture blast fit"
1874
+ },
1875
+ "personnel_building_collapse_probability": 0.5,
1876
+ "equipment_threshold_overpressure_pa": 34500.0,
1877
+ "burst_pressure_pa_abs": 1000000.0,
1878
+ "ambient_pressure_pa_abs": 101325.0,
1879
+ "vapor_volume_m3": 10.0,
1880
+ "heat_capacity_ratio": 1.4
1881
+ },
1882
+ "expected_outputs": {
1883
+ "event_tnt_equivalent_mass_kg": 9.6674963125,
1884
+ "personnel_safe_distance_m": 19.02985412581547,
1885
+ "equipment_safe_distance_m": 13.290252428962607,
1886
+ "personnel_area_m2": 1137.6817490384847,
1887
+ "equipment_area_m2": 554.9020539172341,
1888
+ "hole": "rupture"
1889
+ },
1890
+ "basis": "API 581 physical explosion energy, TNT equivalent and consequence inversion"
1891
+ }
1892
+ ],
1893
+ "effects/bleve-consequence": [
1894
+ {
1895
+ "case_id": "rupture_bleve_liquid_expansion_consequence",
1896
+ "inputs": {
1897
+ "hole": "rupture",
1898
+ "fit_domain": {
1899
+ "minimum_scaled_distance_m_kg13": 2.0,
1900
+ "maximum_scaled_distance_m_kg13": 10.0,
1901
+ "engineering_basis": "fixture blast fit"
1902
+ },
1903
+ "personnel_building_collapse_probability": 0.5,
1904
+ "equipment_threshold_overpressure_pa": 34500.0,
1905
+ "burst_pressure_pa_abs": 1000000.0,
1906
+ "ambient_pressure_pa_abs": 101325.0,
1907
+ "flashed_amount_kmol": 10.0,
1908
+ "storage_temperature_k": 300.0,
1909
+ "stored_vapor": null
1910
+ },
1911
+ "expected_outputs": {
1912
+ "event_tnt_equivalent_mass_kg": 5.573229979121053,
1913
+ "personnel_safe_distance_m": 15.837979470530549,
1914
+ "equipment_safe_distance_m": 11.061080328646955,
1915
+ "personnel_area_m2": 788.0421080107839,
1916
+ "equipment_area_m2": 384.3660010174417,
1917
+ "hole": "rupture"
1918
+ },
1919
+ "basis": "API 581 BLEVE liquid expansion consequence inversion"
1920
+ }
1921
+ ],
1922
+ "effects/fireball-consequence": [
1923
+ {
1924
+ "case_id": "four_hundred_kg_fireball_consequence",
1925
+ "inputs": {
1926
+ "available_mass_kg": 1000.0,
1927
+ "flammable_mass_fraction": 0.4,
1928
+ "heat_of_combustion_j_kg": 40000000.0,
1929
+ "burst_pressure_pa_abs": 1000000.0,
1930
+ "atmosphere": {
1931
+ "transmissivity_model": "constant",
1932
+ "constant_transmissivity": 0.8
1933
+ },
1934
+ "geometry_basis": "api581_printed",
1935
+ "maximum_distance_m": 200.0,
1936
+ "personnel_threshold_w_m2": 12600.0,
1937
+ "equipment_threshold_w_m2": 37800.0
1938
+ },
1939
+ "expected_outputs": {
1940
+ "flammable_mass_kg": 400.0,
1941
+ "diameter_m": 42.64950261014043,
1942
+ "center_height_m": 31.987126957605323,
1943
+ "duration_s": 3.3090131335453785,
1944
+ "surface_emissive_power_w_m2": 228420.66353970792,
1945
+ "personnel_area_m2": 77162.24697966594,
1946
+ "equipment_area_m2": 21911.086187479035,
1947
+ "personnel_safe_distance_m": 156.7211091518402,
1948
+ "equipment_safe_distance_m": 83.51356387138367,
1949
+ "geometry_basis": "api581_printed"
1950
+ },
1951
+ "basis": "API 581 fireball geometry, radiation and consequence-area integration"
1952
+ }
1953
+ ],
1954
+ "effects/pool-fire-consequence": [
1955
+ {
1956
+ "case_id": "one_kg_s_nonboiling_pool_fire",
1957
+ "inputs": {
1958
+ "burning": {
1959
+ "heat_of_combustion_j_kg": 40000000.0,
1960
+ "latent_heat_j_kg": 300000.0,
1961
+ "boiling": false,
1962
+ "specific_heat_j_kg_k": 2000.0,
1963
+ "boiling_temperature_k": 350.0,
1964
+ "ambient_temperature_k": 300.0
1965
+ },
1966
+ "liquid_rate_kg_s": 1.0,
1967
+ "available_liquid_mass_kg": 1000.0,
1968
+ "liquid_density_kg_m3": 700.0,
1969
+ "pool_depth_m": 0.005,
1970
+ "site_maximum_area_m2": 1000.0,
1971
+ "air_density_kg_m3": 1.2,
1972
+ "vapor_density_kg_m3": 2.0,
1973
+ "wind_speed_m_s": 2.0,
1974
+ "radiative_fraction": 0.35,
1975
+ "atmosphere": {
1976
+ "transmissivity_model": "constant",
1977
+ "constant_transmissivity": 0.8
1978
+ },
1979
+ "equation_basis": "geometry_checked",
1980
+ "distance_convention": "surface_to_axis",
1981
+ "maximum_surface_distance_m": 100.0,
1982
+ "personnel_threshold_w_m2": 12600.0,
1983
+ "equipment_threshold_w_m2": 37800.0
1984
+ },
1985
+ "expected_outputs": {
1986
+ "burning_rate_kg_m2_s": 0.14809999999999998,
1987
+ "pool_area_m2": 6.752194463200541,
1988
+ "pool_radius_m": 1.4660457875087618,
1989
+ "flame_length_m": 11.743398833221592,
1990
+ "surface_emissive_power_w_m2": 121817.75361313576,
1991
+ "personnel_area_m2": 337.47392463580735,
1992
+ "equipment_area_m2": 225.97239800814532,
1993
+ "personnel_safe_surface_distance_m": 8.898378293974059,
1994
+ "equipment_safe_surface_distance_m": 7.015065477570301,
1995
+ "equation_basis": "geometry_checked",
1996
+ "distance_convention": "surface_to_axis"
1997
+ },
1998
+ "basis": "API 581 pool-fire source, geometry, radiation and consequence-area integration"
1999
+ }
2000
+ ],
2001
+ "consequence/level2-nfnt-case": [
2002
+ {
2003
+ "case_id": "rupture_nfnt_weighted_area",
2004
+ "inputs": {
2005
+ "hole": "rupture",
2006
+ "non_ignition_probability": 0.2,
2007
+ "physical_equipment_area_m2": 10.0,
2008
+ "physical_personnel_area_m2": 20.0,
2009
+ "bleve_equipment_area_m2": 30.0,
2010
+ "bleve_personnel_area_m2": 40.0,
2011
+ "steam_chemical_personnel_area_m2": 50.0
2012
+ },
2013
+ "expected_outputs": {
2014
+ "equipment_area_m2": 6.0,
2015
+ "personnel_area_m2": 10.0
2016
+ },
2017
+ "basis": "API 581 Level 2 non-flammable/non-toxic rupture case weighted by non-ignition probability"
2018
+ }
2019
+ ],
2020
+ "consequence/select-toxic-criterion": [
2021
+ {
2022
+ "case_id": "ammonia_one_minute_printed_probit50",
2023
+ "inputs": {
2024
+ "fluid_id": "ammonia",
2025
+ "exposure_duration_s": 60.0,
2026
+ "use_printed_table": true,
2027
+ "additional_candidates": [],
2028
+ "excluded_candidate_ids": {},
2029
+ "selected_criterion_id": null,
2030
+ "toxic_mole_fraction": 1.0,
2031
+ "candidate_availability_basis": "fixture"
2032
+ },
2033
+ "expected_outputs": {
2034
+ "selected_criterion_id": "printed:probit50",
2035
+ "selected_kind": "probit50",
2036
+ "pure_component_limit_ppm": 8159.039828371583,
2037
+ "modified_mixture_limit_ppm": 8159.039828371583,
2038
+ "component_present": true,
2039
+ "attainable_in_mixture": true
2040
+ },
2041
+ "basis": "API 581 toxic criterion priority selection at one-minute exposure"
2042
+ }
2043
+ ],
2044
+ "level2/consequence-summary": [
2045
+ {
2046
+ "case_id": "four_hole_nfnt_governing_summary",
2047
+ "inputs": {
2048
+ "holes": [
2049
+ {
2050
+ "flammable_equipment_area_m2": 1.0,
2051
+ "flammable_personnel_area_m2": 2.0,
2052
+ "toxic_personnel_area_m2": 3.0,
2053
+ "nfnt_equipment_area_m2": 4.0,
2054
+ "nfnt_personnel_area_m2": 5.0,
2055
+ "hole": "small",
2056
+ "generic_frequency_per_year": 1e-05
2057
+ },
2058
+ {
2059
+ "flammable_equipment_area_m2": 2.0,
2060
+ "flammable_personnel_area_m2": 3.0,
2061
+ "toxic_personnel_area_m2": 4.0,
2062
+ "nfnt_equipment_area_m2": 5.0,
2063
+ "nfnt_personnel_area_m2": 6.0,
2064
+ "hole": "medium",
2065
+ "generic_frequency_per_year": 2e-05
2066
+ },
2067
+ {
2068
+ "flammable_equipment_area_m2": 3.0,
2069
+ "flammable_personnel_area_m2": 4.0,
2070
+ "toxic_personnel_area_m2": 5.0,
2071
+ "nfnt_equipment_area_m2": 6.0,
2072
+ "nfnt_personnel_area_m2": 7.0,
2073
+ "hole": "large",
2074
+ "generic_frequency_per_year": 3e-05
2075
+ },
2076
+ {
2077
+ "flammable_equipment_area_m2": 4.0,
2078
+ "flammable_personnel_area_m2": 5.0,
2079
+ "toxic_personnel_area_m2": 6.0,
2080
+ "nfnt_equipment_area_m2": 7.0,
2081
+ "nfnt_personnel_area_m2": 8.0,
2082
+ "hole": "rupture",
2083
+ "generic_frequency_per_year": 4e-05
2084
+ }
2085
+ ]
2086
+ },
2087
+ "expected_outputs": {
2088
+ "equipment_area_m2": 9.0,
2089
+ "personnel_area_m2": 11.0,
2090
+ "consequence_area_m2": 11.0,
2091
+ "non_ignition_personnel_area_m2": 7.0,
2092
+ "governing_non_ignition_personnel_mechanism": "nfnt",
2093
+ "generic_frequency_per_year": 0.0001
2094
+ },
2095
+ "basis": "API 581 Level 2 four-hole consequence maximum summary"
2096
+ }
2097
+ ],
2098
+ "level2/flammable-case": [
2099
+ {
2100
+ "case_id": "continuous_medium_hole_event_tree",
2101
+ "inputs": {
2102
+ "hole": "medium",
2103
+ "release_type": "continuous",
2104
+ "outcomes": [
2105
+ {
2106
+ "event": "pool_fire",
2107
+ "probability": 0.25,
2108
+ "equipment_area_m2": 10.0,
2109
+ "personnel_area_m2": 20.0
2110
+ },
2111
+ {
2112
+ "event": "jet_fire",
2113
+ "probability": 0.25,
2114
+ "equipment_area_m2": 20.0,
2115
+ "personnel_area_m2": 30.0
2116
+ },
2117
+ {
2118
+ "event": "fireball",
2119
+ "probability": 0.0,
2120
+ "equipment_area_m2": 0.0,
2121
+ "personnel_area_m2": 0.0
2122
+ },
2123
+ {
2124
+ "event": "vce",
2125
+ "probability": 0.0,
2126
+ "equipment_area_m2": 0.0,
2127
+ "personnel_area_m2": 0.0
2128
+ },
2129
+ {
2130
+ "event": "flash_fire",
2131
+ "probability": 0.25,
2132
+ "equipment_area_m2": 50.0,
2133
+ "personnel_area_m2": 60.0
2134
+ }
2135
+ ],
2136
+ "non_ignition_probability": 0.25,
2137
+ "event_tree_source": "fixture event tree",
2138
+ "consequence_source": "fixture consequence",
2139
+ "fireball_applicability_basis": "rupture_only_text",
2140
+ "correlated_jet_pool": null
2141
+ },
2142
+ "expected_outputs": {
2143
+ "flammable_equipment_area_m2": 20.0,
2144
+ "flammable_personnel_area_m2": 27.5,
2145
+ "non_ignition_probability": 0.25,
2146
+ "terminal_probability_sum": 1.0
2147
+ },
2148
+ "basis": "API 581 Level 2 flammable event-tree terminal probability and area aggregation"
2149
+ }
2150
+ ],
2151
+ "consequence/level2-toxic-case": [
2152
+ {
2153
+ "case_id": "two_component_toxic_cloud_governing_area",
2154
+ "inputs": {
2155
+ "components": [
2156
+ {
2157
+ "component_id": "NH3",
2158
+ "selected_criterion_source": "fixture",
2159
+ "cloud_area_m2": 100.0
2160
+ },
2161
+ {
2162
+ "component_id": "H2S",
2163
+ "selected_criterion_source": "fixture",
2164
+ "cloud_area_m2": 200.0
2165
+ }
2166
+ ],
2167
+ "non_ignition_probability": 0.25
2168
+ },
2169
+ "expected_outputs": {
2170
+ "equipment_area_m2": 0.0,
2171
+ "personnel_area_m2": 50.0,
2172
+ "unweighted_cloud_area_m2": 200.0,
2173
+ "critical_component_id": "H2S",
2174
+ "component_cloud_areas_m2": {
2175
+ "NH3": 100.0,
2176
+ "H2S": 200.0
2177
+ }
2178
+ },
2179
+ "basis": "API 581 Level 2 toxic mixture governing cloud area"
2180
+ }
2181
+ ],
2182
+ "consequence/level2-toxic-summary": [
2183
+ {
2184
+ "case_id": "four_hole_toxic_cloud_summary",
2185
+ "inputs": {
2186
+ "cases": [
2187
+ {
2188
+ "components": [
2189
+ {
2190
+ "component_id": "NH3",
2191
+ "selected_criterion_source": "fixture",
2192
+ "cloud_area_m2": 100.0
2193
+ }
2194
+ ],
2195
+ "non_ignition_probability": 0.2,
2196
+ "hole": "small",
2197
+ "generic_frequency_per_year": 1e-05
2198
+ },
2199
+ {
2200
+ "components": [
2201
+ {
2202
+ "component_id": "NH3",
2203
+ "selected_criterion_source": "fixture",
2204
+ "cloud_area_m2": 200.0
2205
+ }
2206
+ ],
2207
+ "non_ignition_probability": 0.2,
2208
+ "hole": "medium",
2209
+ "generic_frequency_per_year": 2e-05
2210
+ },
2211
+ {
2212
+ "components": [
2213
+ {
2214
+ "component_id": "NH3",
2215
+ "selected_criterion_source": "fixture",
2216
+ "cloud_area_m2": 300.0
2217
+ }
2218
+ ],
2219
+ "non_ignition_probability": 0.2,
2220
+ "hole": "large",
2221
+ "generic_frequency_per_year": 3e-05
2222
+ },
2223
+ {
2224
+ "components": [
2225
+ {
2226
+ "component_id": "NH3",
2227
+ "selected_criterion_source": "fixture",
2228
+ "cloud_area_m2": 400.0
2229
+ }
2230
+ ],
2231
+ "non_ignition_probability": 0.2,
2232
+ "hole": "rupture",
2233
+ "generic_frequency_per_year": 4e-05
2234
+ }
2235
+ ]
2236
+ },
2237
+ "expected_outputs": {
2238
+ "equipment_area_m2": 0.0,
2239
+ "personnel_area_m2": 60.0,
2240
+ "total_generic_frequency_per_year": 0.0001,
2241
+ "by_hole_personnel_area_m2": {
2242
+ "small": 20.0,
2243
+ "medium": 40.0,
2244
+ "large": 60.0,
2245
+ "rupture": 80.0
2246
+ }
2247
+ },
2248
+ "basis": "API 581 Level 2 four-hole toxic summary"
2249
+ }
2250
+ ],
2251
+ "consequence/level2-nfnt-summary": [
2252
+ {
2253
+ "case_id": "four_hole_nfnt_frequency_summary",
2254
+ "inputs": {
2255
+ "cases": [
2256
+ {
2257
+ "hole": "small",
2258
+ "non_ignition_probability": 0.2,
2259
+ "physical_equipment_area_m2": 0.0,
2260
+ "physical_personnel_area_m2": 0.0,
2261
+ "bleve_equipment_area_m2": 0.0,
2262
+ "bleve_personnel_area_m2": 0.0,
2263
+ "steam_chemical_personnel_area_m2": 5.0,
2264
+ "generic_frequency_per_year": 1e-05
2265
+ },
2266
+ {
2267
+ "hole": "medium",
2268
+ "non_ignition_probability": 0.2,
2269
+ "physical_equipment_area_m2": 0.0,
2270
+ "physical_personnel_area_m2": 0.0,
2271
+ "bleve_equipment_area_m2": 0.0,
2272
+ "bleve_personnel_area_m2": 0.0,
2273
+ "steam_chemical_personnel_area_m2": 5.0,
2274
+ "generic_frequency_per_year": 2e-05
2275
+ },
2276
+ {
2277
+ "hole": "large",
2278
+ "non_ignition_probability": 0.2,
2279
+ "physical_equipment_area_m2": 0.0,
2280
+ "physical_personnel_area_m2": 0.0,
2281
+ "bleve_equipment_area_m2": 0.0,
2282
+ "bleve_personnel_area_m2": 0.0,
2283
+ "steam_chemical_personnel_area_m2": 5.0,
2284
+ "generic_frequency_per_year": 3e-05
2285
+ },
2286
+ {
2287
+ "hole": "rupture",
2288
+ "non_ignition_probability": 0.2,
2289
+ "physical_equipment_area_m2": 1.0,
2290
+ "physical_personnel_area_m2": 2.0,
2291
+ "bleve_equipment_area_m2": 3.0,
2292
+ "bleve_personnel_area_m2": 4.0,
2293
+ "steam_chemical_personnel_area_m2": 5.0,
2294
+ "generic_frequency_per_year": 4e-05
2295
+ }
2296
+ ]
2297
+ },
2298
+ "expected_outputs": {
2299
+ "equipment_area_m2": 0.24000000000000005,
2300
+ "personnel_area_m2": 1.0,
2301
+ "total_generic_frequency_per_year": 0.0001,
2302
+ "by_hole_equipment_area_m2": {
2303
+ "small": 0.0,
2304
+ "medium": 0.0,
2305
+ "large": 0.0,
2306
+ "rupture": 0.6000000000000001
2307
+ },
2308
+ "by_hole_personnel_area_m2": {
2309
+ "small": 1.0,
2310
+ "medium": 1.0,
2311
+ "large": 1.0,
2312
+ "rupture": 1.0
2313
+ }
2314
+ },
2315
+ "basis": "API 581 Level 2 NFNT four-hole frequency summary"
2316
+ }
2317
+ ],
2318
+ "level2/scenario-consequence": [
2319
+ {
2320
+ "case_id": "medium_hole_combined_flammable_toxic_nfnt",
2321
+ "inputs": {
2322
+ "hole": "medium",
2323
+ "release_type": "continuous",
2324
+ "outcomes": [
2325
+ {
2326
+ "event": "pool_fire",
2327
+ "probability": 0.25,
2328
+ "equipment_area_m2": 10.0,
2329
+ "personnel_area_m2": 20.0
2330
+ },
2331
+ {
2332
+ "event": "jet_fire",
2333
+ "probability": 0.25,
2334
+ "equipment_area_m2": 20.0,
2335
+ "personnel_area_m2": 30.0
2336
+ },
2337
+ {
2338
+ "event": "fireball",
2339
+ "probability": 0.0,
2340
+ "equipment_area_m2": 0.0,
2341
+ "personnel_area_m2": 0.0
2342
+ },
2343
+ {
2344
+ "event": "vce",
2345
+ "probability": 0.0,
2346
+ "equipment_area_m2": 0.0,
2347
+ "personnel_area_m2": 0.0
2348
+ },
2349
+ {
2350
+ "event": "flash_fire",
2351
+ "probability": 0.25,
2352
+ "equipment_area_m2": 50.0,
2353
+ "personnel_area_m2": 60.0
2354
+ }
2355
+ ],
2356
+ "non_ignition_probability": 0.25,
2357
+ "event_tree_source": "fixture event tree",
2358
+ "consequence_source": "fixture consequence",
2359
+ "fireball_applicability_basis": "rupture_only_text",
2360
+ "correlated_jet_pool": null,
2361
+ "toxic_components": [
2362
+ {
2363
+ "component_id": "NH3",
2364
+ "selected_criterion_source": "fixture",
2365
+ "cloud_area_m2": 100.0
2366
+ }
2367
+ ],
2368
+ "toxic_applicability": "evaluated",
2369
+ "toxic_applicability_source": "fixture",
2370
+ "nfnt": {
2371
+ "physical_equipment_area_m2": 0.0,
2372
+ "physical_personnel_area_m2": 0.0,
2373
+ "bleve_equipment_area_m2": 0.0,
2374
+ "bleve_personnel_area_m2": 0.0,
2375
+ "steam_chemical_personnel_area_m2": 3.0,
2376
+ "consequence_source": "fixture"
2377
+ }
2378
+ },
2379
+ "expected_outputs": {
2380
+ "flammable_equipment_area_m2": 20.0,
2381
+ "flammable_personnel_area_m2": 27.5,
2382
+ "non_ignition_probability": 0.25,
2383
+ "terminal_probability_sum": 1.0,
2384
+ "toxic_personnel_area_m2": 25.0,
2385
+ "nfnt_equipment_area_m2": 0.0,
2386
+ "nfnt_personnel_area_m2": 0.75,
2387
+ "hole": "medium"
2388
+ },
2389
+ "basis": "API 581 combined scenario flammable, toxic and NFNT consequence branches"
2390
+ }
2391
+ ],
2392
+ "level2/scenario-summary": [
2393
+ {
2394
+ "case_id": "four_hole_combined_scenario_summary",
2395
+ "inputs": {
2396
+ "cases": [
2397
+ {
2398
+ "hole": "small",
2399
+ "release_type": "continuous",
2400
+ "outcomes": [
2401
+ {
2402
+ "event": "pool_fire",
2403
+ "probability": 0.25,
2404
+ "equipment_area_m2": 10.0,
2405
+ "personnel_area_m2": 20.0
2406
+ },
2407
+ {
2408
+ "event": "jet_fire",
2409
+ "probability": 0.25,
2410
+ "equipment_area_m2": 20.0,
2411
+ "personnel_area_m2": 30.0
2412
+ },
2413
+ {
2414
+ "event": "fireball",
2415
+ "probability": 0.0,
2416
+ "equipment_area_m2": 0.0,
2417
+ "personnel_area_m2": 0.0
2418
+ },
2419
+ {
2420
+ "event": "vce",
2421
+ "probability": 0.0,
2422
+ "equipment_area_m2": 0.0,
2423
+ "personnel_area_m2": 0.0
2424
+ },
2425
+ {
2426
+ "event": "flash_fire",
2427
+ "probability": 0.25,
2428
+ "equipment_area_m2": 50.0,
2429
+ "personnel_area_m2": 60.0
2430
+ }
2431
+ ],
2432
+ "non_ignition_probability": 0.25,
2433
+ "event_tree_source": "fixture event tree",
2434
+ "consequence_source": "fixture consequence",
2435
+ "fireball_applicability_basis": "rupture_only_text",
2436
+ "correlated_jet_pool": null,
2437
+ "toxic_components": [
2438
+ {
2439
+ "component_id": "NH3",
2440
+ "selected_criterion_source": "fixture",
2441
+ "cloud_area_m2": 100.0
2442
+ }
2443
+ ],
2444
+ "toxic_applicability": "evaluated",
2445
+ "toxic_applicability_source": "fixture",
2446
+ "nfnt": {
2447
+ "physical_equipment_area_m2": 0.0,
2448
+ "physical_personnel_area_m2": 0.0,
2449
+ "bleve_equipment_area_m2": 0.0,
2450
+ "bleve_personnel_area_m2": 0.0,
2451
+ "steam_chemical_personnel_area_m2": 3.0,
2452
+ "consequence_source": "fixture"
2453
+ },
2454
+ "generic_frequency_per_year": 1e-05
2455
+ },
2456
+ {
2457
+ "hole": "medium",
2458
+ "release_type": "continuous",
2459
+ "outcomes": [
2460
+ {
2461
+ "event": "pool_fire",
2462
+ "probability": 0.25,
2463
+ "equipment_area_m2": 10.0,
2464
+ "personnel_area_m2": 20.0
2465
+ },
2466
+ {
2467
+ "event": "jet_fire",
2468
+ "probability": 0.25,
2469
+ "equipment_area_m2": 20.0,
2470
+ "personnel_area_m2": 30.0
2471
+ },
2472
+ {
2473
+ "event": "fireball",
2474
+ "probability": 0.0,
2475
+ "equipment_area_m2": 0.0,
2476
+ "personnel_area_m2": 0.0
2477
+ },
2478
+ {
2479
+ "event": "vce",
2480
+ "probability": 0.0,
2481
+ "equipment_area_m2": 0.0,
2482
+ "personnel_area_m2": 0.0
2483
+ },
2484
+ {
2485
+ "event": "flash_fire",
2486
+ "probability": 0.25,
2487
+ "equipment_area_m2": 50.0,
2488
+ "personnel_area_m2": 60.0
2489
+ }
2490
+ ],
2491
+ "non_ignition_probability": 0.25,
2492
+ "event_tree_source": "fixture event tree",
2493
+ "consequence_source": "fixture consequence",
2494
+ "fireball_applicability_basis": "rupture_only_text",
2495
+ "correlated_jet_pool": null,
2496
+ "toxic_components": [
2497
+ {
2498
+ "component_id": "NH3",
2499
+ "selected_criterion_source": "fixture",
2500
+ "cloud_area_m2": 100.0
2501
+ }
2502
+ ],
2503
+ "toxic_applicability": "evaluated",
2504
+ "toxic_applicability_source": "fixture",
2505
+ "nfnt": {
2506
+ "physical_equipment_area_m2": 0.0,
2507
+ "physical_personnel_area_m2": 0.0,
2508
+ "bleve_equipment_area_m2": 0.0,
2509
+ "bleve_personnel_area_m2": 0.0,
2510
+ "steam_chemical_personnel_area_m2": 3.0,
2511
+ "consequence_source": "fixture"
2512
+ },
2513
+ "generic_frequency_per_year": 2e-05
2514
+ },
2515
+ {
2516
+ "hole": "large",
2517
+ "release_type": "continuous",
2518
+ "outcomes": [
2519
+ {
2520
+ "event": "pool_fire",
2521
+ "probability": 0.25,
2522
+ "equipment_area_m2": 10.0,
2523
+ "personnel_area_m2": 20.0
2524
+ },
2525
+ {
2526
+ "event": "jet_fire",
2527
+ "probability": 0.25,
2528
+ "equipment_area_m2": 20.0,
2529
+ "personnel_area_m2": 30.0
2530
+ },
2531
+ {
2532
+ "event": "fireball",
2533
+ "probability": 0.0,
2534
+ "equipment_area_m2": 0.0,
2535
+ "personnel_area_m2": 0.0
2536
+ },
2537
+ {
2538
+ "event": "vce",
2539
+ "probability": 0.0,
2540
+ "equipment_area_m2": 0.0,
2541
+ "personnel_area_m2": 0.0
2542
+ },
2543
+ {
2544
+ "event": "flash_fire",
2545
+ "probability": 0.25,
2546
+ "equipment_area_m2": 50.0,
2547
+ "personnel_area_m2": 60.0
2548
+ }
2549
+ ],
2550
+ "non_ignition_probability": 0.25,
2551
+ "event_tree_source": "fixture event tree",
2552
+ "consequence_source": "fixture consequence",
2553
+ "fireball_applicability_basis": "rupture_only_text",
2554
+ "correlated_jet_pool": null,
2555
+ "toxic_components": [
2556
+ {
2557
+ "component_id": "NH3",
2558
+ "selected_criterion_source": "fixture",
2559
+ "cloud_area_m2": 100.0
2560
+ }
2561
+ ],
2562
+ "toxic_applicability": "evaluated",
2563
+ "toxic_applicability_source": "fixture",
2564
+ "nfnt": {
2565
+ "physical_equipment_area_m2": 0.0,
2566
+ "physical_personnel_area_m2": 0.0,
2567
+ "bleve_equipment_area_m2": 0.0,
2568
+ "bleve_personnel_area_m2": 0.0,
2569
+ "steam_chemical_personnel_area_m2": 3.0,
2570
+ "consequence_source": "fixture"
2571
+ },
2572
+ "generic_frequency_per_year": 3e-05
2573
+ },
2574
+ {
2575
+ "hole": "rupture",
2576
+ "release_type": "continuous",
2577
+ "outcomes": [
2578
+ {
2579
+ "event": "pool_fire",
2580
+ "probability": 0.25,
2581
+ "equipment_area_m2": 10.0,
2582
+ "personnel_area_m2": 20.0
2583
+ },
2584
+ {
2585
+ "event": "jet_fire",
2586
+ "probability": 0.25,
2587
+ "equipment_area_m2": 20.0,
2588
+ "personnel_area_m2": 30.0
2589
+ },
2590
+ {
2591
+ "event": "fireball",
2592
+ "probability": 0.0,
2593
+ "equipment_area_m2": 0.0,
2594
+ "personnel_area_m2": 0.0
2595
+ },
2596
+ {
2597
+ "event": "vce",
2598
+ "probability": 0.0,
2599
+ "equipment_area_m2": 0.0,
2600
+ "personnel_area_m2": 0.0
2601
+ },
2602
+ {
2603
+ "event": "flash_fire",
2604
+ "probability": 0.25,
2605
+ "equipment_area_m2": 50.0,
2606
+ "personnel_area_m2": 60.0
2607
+ }
2608
+ ],
2609
+ "non_ignition_probability": 0.25,
2610
+ "event_tree_source": "fixture event tree",
2611
+ "consequence_source": "fixture consequence",
2612
+ "fireball_applicability_basis": "rupture_only_text",
2613
+ "correlated_jet_pool": null,
2614
+ "toxic_components": [
2615
+ {
2616
+ "component_id": "NH3",
2617
+ "selected_criterion_source": "fixture",
2618
+ "cloud_area_m2": 100.0
2619
+ }
2620
+ ],
2621
+ "toxic_applicability": "evaluated",
2622
+ "toxic_applicability_source": "fixture",
2623
+ "nfnt": {
2624
+ "physical_equipment_area_m2": 0.0,
2625
+ "physical_personnel_area_m2": 0.0,
2626
+ "bleve_equipment_area_m2": 0.0,
2627
+ "bleve_personnel_area_m2": 0.0,
2628
+ "steam_chemical_personnel_area_m2": 3.0,
2629
+ "consequence_source": "fixture"
2630
+ },
2631
+ "generic_frequency_per_year": 4e-05
2632
+ }
2633
+ ]
2634
+ },
2635
+ "expected_outputs": {
2636
+ "flammable_equipment_area_m2": 20.0,
2637
+ "flammable_personnel_area_m2": 27.5,
2638
+ "toxic_personnel_area_m2": 25.0,
2639
+ "nfnt_equipment_area_m2": 0.0,
2640
+ "nfnt_personnel_area_m2": 0.75,
2641
+ "generic_frequency_per_year": 0.0001,
2642
+ "equipment_area_m2": 20.0,
2643
+ "personnel_area_m2": 52.5,
2644
+ "consequence_area_m2": 52.5,
2645
+ "non_ignition_personnel_area_m2": 25.0,
2646
+ "governing_non_ignition_personnel_mechanism": "toxic"
2647
+ },
2648
+ "basis": "API 581 four-hole combined scenario summary"
2649
+ }
2650
+ ],
2651
+ "level2/assessment": [
2652
+ {
2653
+ "case_id": "drum_full_financial_four_hole_assessment",
2654
+ "inputs": {
2655
+ "component_type": "DRUM",
2656
+ "management_score": 500.0,
2657
+ "total_damage_factor": 10.0,
2658
+ "damage_factor_source": "Illustrative owner-qualified DF",
2659
+ "cases": [
2660
+ {
2661
+ "hole": "small",
2662
+ "release_type": "continuous",
2663
+ "outcomes": [
2664
+ {
2665
+ "event": "pool_fire",
2666
+ "probability": 0.1,
2667
+ "equipment_area_m2": 300.0,
2668
+ "personnel_area_m2": 400.0
2669
+ },
2670
+ {
2671
+ "event": "jet_fire",
2672
+ "probability": 0.2,
2673
+ "equipment_area_m2": 100.0,
2674
+ "personnel_area_m2": 200.0
2675
+ },
2676
+ {
2677
+ "event": "fireball",
2678
+ "probability": 0.0,
2679
+ "equipment_area_m2": 0.0,
2680
+ "personnel_area_m2": 0.0
2681
+ },
2682
+ {
2683
+ "event": "vce",
2684
+ "probability": 0.1,
2685
+ "equipment_area_m2": 1000.0,
2686
+ "personnel_area_m2": 2000.0
2687
+ },
2688
+ {
2689
+ "event": "flash_fire",
2690
+ "probability": 0.1,
2691
+ "equipment_area_m2": 50.0,
2692
+ "personnel_area_m2": 100.0
2693
+ }
2694
+ ],
2695
+ "non_ignition_probability": 0.5,
2696
+ "event_tree_source": "fixture",
2697
+ "consequence_source": "fixture",
2698
+ "toxic_components": [
2699
+ {
2700
+ "component_id": "h2s",
2701
+ "cloud_area_m2": 1000.0,
2702
+ "selected_criterion_source": "fixture"
2703
+ },
2704
+ {
2705
+ "component_id": "co",
2706
+ "cloud_area_m2": 2000.0,
2707
+ "selected_criterion_source": "fixture"
2708
+ }
2709
+ ],
2710
+ "toxic_applicability": "evaluated",
2711
+ "toxic_applicability_source": "fixture",
2712
+ "nfnt": {
2713
+ "steam_chemical_personnel_area_m2": 600.0,
2714
+ "consequence_source": "fixture"
2715
+ }
2716
+ },
2717
+ {
2718
+ "hole": "medium",
2719
+ "release_type": "continuous",
2720
+ "outcomes": [
2721
+ {
2722
+ "event": "pool_fire",
2723
+ "probability": 0.1,
2724
+ "equipment_area_m2": 600.0,
2725
+ "personnel_area_m2": 800.0
2726
+ },
2727
+ {
2728
+ "event": "jet_fire",
2729
+ "probability": 0.2,
2730
+ "equipment_area_m2": 200.0,
2731
+ "personnel_area_m2": 400.0
2732
+ },
2733
+ {
2734
+ "event": "fireball",
2735
+ "probability": 0.0,
2736
+ "equipment_area_m2": 0.0,
2737
+ "personnel_area_m2": 0.0
2738
+ },
2739
+ {
2740
+ "event": "vce",
2741
+ "probability": 0.1,
2742
+ "equipment_area_m2": 2000.0,
2743
+ "personnel_area_m2": 4000.0
2744
+ },
2745
+ {
2746
+ "event": "flash_fire",
2747
+ "probability": 0.1,
2748
+ "equipment_area_m2": 100.0,
2749
+ "personnel_area_m2": 200.0
2750
+ }
2751
+ ],
2752
+ "non_ignition_probability": 0.5,
2753
+ "event_tree_source": "fixture",
2754
+ "consequence_source": "fixture",
2755
+ "toxic_components": [
2756
+ {
2757
+ "component_id": "h2s",
2758
+ "cloud_area_m2": 2000.0,
2759
+ "selected_criterion_source": "fixture"
2760
+ },
2761
+ {
2762
+ "component_id": "co",
2763
+ "cloud_area_m2": 4000.0,
2764
+ "selected_criterion_source": "fixture"
2765
+ }
2766
+ ],
2767
+ "toxic_applicability": "evaluated",
2768
+ "toxic_applicability_source": "fixture",
2769
+ "nfnt": {
2770
+ "steam_chemical_personnel_area_m2": 1200.0,
2771
+ "consequence_source": "fixture"
2772
+ }
2773
+ },
2774
+ {
2775
+ "hole": "large",
2776
+ "release_type": "continuous",
2777
+ "outcomes": [
2778
+ {
2779
+ "event": "pool_fire",
2780
+ "probability": 0.1,
2781
+ "equipment_area_m2": 900.0,
2782
+ "personnel_area_m2": 1200.0
2783
+ },
2784
+ {
2785
+ "event": "jet_fire",
2786
+ "probability": 0.2,
2787
+ "equipment_area_m2": 300.0,
2788
+ "personnel_area_m2": 600.0
2789
+ },
2790
+ {
2791
+ "event": "fireball",
2792
+ "probability": 0.0,
2793
+ "equipment_area_m2": 0.0,
2794
+ "personnel_area_m2": 0.0
2795
+ },
2796
+ {
2797
+ "event": "vce",
2798
+ "probability": 0.1,
2799
+ "equipment_area_m2": 3000.0,
2800
+ "personnel_area_m2": 6000.0
2801
+ },
2802
+ {
2803
+ "event": "flash_fire",
2804
+ "probability": 0.1,
2805
+ "equipment_area_m2": 150.0,
2806
+ "personnel_area_m2": 300.0
2807
+ }
2808
+ ],
2809
+ "non_ignition_probability": 0.5,
2810
+ "event_tree_source": "fixture",
2811
+ "consequence_source": "fixture",
2812
+ "toxic_components": [
2813
+ {
2814
+ "component_id": "h2s",
2815
+ "cloud_area_m2": 3000.0,
2816
+ "selected_criterion_source": "fixture"
2817
+ },
2818
+ {
2819
+ "component_id": "co",
2820
+ "cloud_area_m2": 6000.0,
2821
+ "selected_criterion_source": "fixture"
2822
+ }
2823
+ ],
2824
+ "toxic_applicability": "evaluated",
2825
+ "toxic_applicability_source": "fixture",
2826
+ "nfnt": {
2827
+ "steam_chemical_personnel_area_m2": 1800.0,
2828
+ "consequence_source": "fixture"
2829
+ }
2830
+ },
2831
+ {
2832
+ "hole": "rupture",
2833
+ "release_type": "instantaneous",
2834
+ "outcomes": [
2835
+ {
2836
+ "event": "pool_fire",
2837
+ "probability": 0.0,
2838
+ "equipment_area_m2": 0.0,
2839
+ "personnel_area_m2": 0.0
2840
+ },
2841
+ {
2842
+ "event": "jet_fire",
2843
+ "probability": 0.0,
2844
+ "equipment_area_m2": 0.0,
2845
+ "personnel_area_m2": 0.0
2846
+ },
2847
+ {
2848
+ "event": "fireball",
2849
+ "probability": 0.3,
2850
+ "equipment_area_m2": 800.0,
2851
+ "personnel_area_m2": 1600.0
2852
+ },
2853
+ {
2854
+ "event": "vce",
2855
+ "probability": 0.1,
2856
+ "equipment_area_m2": 4000.0,
2857
+ "personnel_area_m2": 8000.0
2858
+ },
2859
+ {
2860
+ "event": "flash_fire",
2861
+ "probability": 0.1,
2862
+ "equipment_area_m2": 200.0,
2863
+ "personnel_area_m2": 400.0
2864
+ }
2865
+ ],
2866
+ "non_ignition_probability": 0.5,
2867
+ "event_tree_source": "fixture",
2868
+ "consequence_source": "fixture",
2869
+ "toxic_components": [
2870
+ {
2871
+ "component_id": "h2s",
2872
+ "cloud_area_m2": 4000.0,
2873
+ "selected_criterion_source": "fixture"
2874
+ },
2875
+ {
2876
+ "component_id": "co",
2877
+ "cloud_area_m2": 8000.0,
2878
+ "selected_criterion_source": "fixture"
2879
+ }
2880
+ ],
2881
+ "toxic_applicability": "evaluated",
2882
+ "toxic_applicability_source": "fixture",
2883
+ "nfnt": {
2884
+ "physical_equipment_area_m2": 1200.0,
2885
+ "physical_personnel_area_m2": 2000.0,
2886
+ "bleve_equipment_area_m2": 1600.0,
2887
+ "bleve_personnel_area_m2": 2400.0,
2888
+ "steam_chemical_personnel_area_m2": 2400.0,
2889
+ "consequence_source": "fixture"
2890
+ }
2891
+ }
2892
+ ],
2893
+ "financial": {
2894
+ "repair": {
2895
+ "component_type": "DRUM",
2896
+ "material_id": "carbon_steel",
2897
+ "price_factor_since_2001": 2.0,
2898
+ "usd_to_output_currency": 1.0,
2899
+ "cost_basis_year": 2026,
2900
+ "currency": "USD"
2901
+ },
2902
+ "outage": {
2903
+ "component_type": "DRUM",
2904
+ "outage_multiplier": 1.0,
2905
+ "override_days": {
2906
+ "small": 1.0,
2907
+ "medium": 2.0,
2908
+ "large": 3.0,
2909
+ "rupture": 4.0
2910
+ }
2911
+ },
2912
+ "equipment_cost_per_m2": 1000.0,
2913
+ "production_cost_per_day": 10000.0,
2914
+ "population_density_per_m2": 0.001,
2915
+ "cost_per_injury": 1000000.0,
2916
+ "weighted_cleanup_volume_m3": 20.0,
2917
+ "cleanup_cost_per_m3": 200.0
2918
+ }
2919
+ },
2920
+ "expected_outputs": {
2921
+ "integration_scope": "supplied_level2_event_probabilities_areas_and_damage",
2922
+ "management_factor": 1.0,
2923
+ "flammable_equipment_area_m2": 286.47058823529414,
2924
+ "flammable_personnel_area_m2": 537.6470588235295,
2925
+ "toxic_personnel_area_m2": 1843.137254901961,
2926
+ "nfnt_equipment_area_m2": 15.686274509803921,
2927
+ "nfnt_personnel_area_m2": 552.9411764705883,
2928
+ "generic_frequency_per_year": 3.06e-05,
2929
+ "equipment_area_m2": 302.15686274509807,
2930
+ "personnel_area_m2": 2380.7843137254904,
2931
+ "consequence_area_m2": 2380.7843137254904,
2932
+ "non_ignition_personnel_area_m2": 1843.137254901961,
2933
+ "governing_non_ignition_personnel_mechanism": "toxic",
2934
+ "component_repair_cost": 22483.660130718956,
2935
+ "surrounding_equipment_cost": 302156.8627450981,
2936
+ "business_interruption_cost": 76218.81090517547,
2937
+ "injury_cost": 2380784.31372549,
2938
+ "environmental_cost": 4000.0,
2939
+ "component_outage_days": 1.843137254901961,
2940
+ "surrounding_outage_days": 5.778743835615586,
2941
+ "financial_consequence": 2785643.6475064824,
2942
+ "currency": "USD",
2943
+ "cost_basis_year": 2026,
2944
+ "annual_failure_frequency": 0.000306,
2945
+ "equipment_area_risk_m2_per_year": 0.09246,
2946
+ "personnel_area_risk_m2_per_year": 0.72852,
2947
+ "area_risk_m2_per_year": 0.72852,
2948
+ "financial_risk_per_year": 852.4069561369835,
2949
+ "frequency_weighted_equipment_area_m2": 302.15686274509807,
2950
+ "frequency_weighted_personnel_area_m2": 2380.7843137254904
2951
+ },
2952
+ "basis": "API 581 Level 2 integrated assessment with financial risk"
2953
+ }
2954
+ ]
2955
+ }
2956
+ }