openflowsheet 0.1.1__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.
- openflowsheet/__init__.py +16 -0
- openflowsheet/_data/benchmarks/k04/reference_values.yaml +540 -0
- openflowsheet/_data/benchmarks/syn001/reference_values.yaml +539 -0
- openflowsheet/_data/benchmarks/t08/numerical_policy_v2.yaml +184 -0
- openflowsheet/_data/schemas/api-error.schema.json +45 -0
- openflowsheet/_data/schemas/application-results.schema.json +577 -0
- openflowsheet/_data/schemas/attempt-context.schema.json +300 -0
- openflowsheet/_data/schemas/capability-reference.schema.json +93 -0
- openflowsheet/_data/schemas/change-set.schema.json +124 -0
- openflowsheet/_data/schemas/checkpoint.schema.json +196 -0
- openflowsheet/_data/schemas/compiled-problem-metadata.schema.json +145 -0
- openflowsheet/_data/schemas/component-record.schema.json +91 -0
- openflowsheet/_data/schemas/evaluation-result.schema.json +115 -0
- openflowsheet/_data/schemas/evidence-manifest.schema.json +118 -0
- openflowsheet/_data/schemas/execution-plan.schema.json +319 -0
- openflowsheet/_data/schemas/failure-bundle.schema.json +95 -0
- openflowsheet/_data/schemas/jacobian-result.schema.json +150 -0
- openflowsheet/_data/schemas/job-event.schema.json +155 -0
- openflowsheet/_data/schemas/job.schema.json +562 -0
- openflowsheet/_data/schemas/model-manifest.schema.json +285 -0
- openflowsheet/_data/schemas/process-revision.schema.json +177 -0
- openflowsheet/_data/schemas/project-policy.schema.json +44 -0
- openflowsheet/_data/schemas/quantity.schema.json +85 -0
- openflowsheet/_data/schemas/regularity-evidence.schema.json +124 -0
- openflowsheet/_data/schemas/replay-report.schema.json +99 -0
- openflowsheet/_data/schemas/requirements-ledger.schema.json +182 -0
- openflowsheet/_data/schemas/run-manifest.schema.json +199 -0
- openflowsheet/_data/schemas/run-result.schema.json +125 -0
- openflowsheet/_data/schemas/solution-certificate.schema.json +453 -0
- openflowsheet/_data/schemas/solution-state.schema.json +39 -0
- openflowsheet/_data/schemas/solve-event.schema.json +454 -0
- openflowsheet/_data/schemas/solve-plan.schema.json +184 -0
- openflowsheet/_data/schemas/solve-policy.schema.json +392 -0
- openflowsheet/_data/schemas/specification.schema.json +75 -0
- openflowsheet/_data/schemas/transaction-result.schema.json +134 -0
- openflowsheet/_data/schemas/validation-report.schema.json +105 -0
- openflowsheet/application/__init__.py +10 -0
- openflowsheet/application/admission.py +285 -0
- openflowsheet/application/authz.py +354 -0
- openflowsheet/application/binding.py +1241 -0
- openflowsheet/application/bindings/__init__.py +3 -0
- openflowsheet/application/bindings/descriptions/REVIEW.json +345 -0
- openflowsheet/application/bindings/descriptions/cancel_job.md +9 -0
- openflowsheet/application/bindings/descriptions/commit_change.md +20 -0
- openflowsheet/application/bindings/descriptions/diff_revisions.md +7 -0
- openflowsheet/application/bindings/descriptions/get_artifact.md +7 -0
- openflowsheet/application/bindings/descriptions/get_job.md +9 -0
- openflowsheet/application/bindings/descriptions/get_job_result.md +11 -0
- openflowsheet/application/bindings/descriptions/get_project.md +9 -0
- openflowsheet/application/bindings/descriptions/get_revision.md +7 -0
- openflowsheet/application/bindings/descriptions/inspect_structure.md +9 -0
- openflowsheet/application/bindings/descriptions/list_job_events.md +11 -0
- openflowsheet/application/bindings/descriptions/list_jobs.md +9 -0
- openflowsheet/application/bindings/descriptions/list_models.md +16 -0
- openflowsheet/application/bindings/descriptions/list_revisions.md +9 -0
- openflowsheet/application/bindings/descriptions/preview_change.md +16 -0
- openflowsheet/application/bindings/descriptions/submit_job.md +11 -0
- openflowsheet/application/bindings/descriptions/validate.md +11 -0
- openflowsheet/application/bindings/descriptions/wait_job.md +9 -0
- openflowsheet/application/bindings/http.py +481 -0
- openflowsheet/application/bindings/mcp.py +296 -0
- openflowsheet/application/cli.py +561 -0
- openflowsheet/application/contract.py +194 -0
- openflowsheet/application/jobs/__init__.py +7 -0
- openflowsheet/application/jobs/executor.py +599 -0
- openflowsheet/application/jobs/interrupt.py +92 -0
- openflowsheet/application/jobs/model.py +280 -0
- openflowsheet/application/jobs/runner.py +566 -0
- openflowsheet/application/jobs/worker.py +210 -0
- openflowsheet/application/local.py +1473 -0
- openflowsheet/application/operations.py +571 -0
- openflowsheet/application/policies.py +138 -0
- openflowsheet/application/projection.py +317 -0
- openflowsheet/application/revision_binding.py +1285 -0
- openflowsheet/application/revision_run.py +778 -0
- openflowsheet/application/revisions.py +121 -0
- openflowsheet/application/serving.py +106 -0
- openflowsheet/application/store.py +1143 -0
- openflowsheet/application/transactions.py +294 -0
- openflowsheet/application/types.py +1445 -0
- openflowsheet/application/validation.py +995 -0
- openflowsheet/canonical.py +599 -0
- openflowsheet/compile/__init__.py +11 -0
- openflowsheet/compile/casadi_backend.py +640 -0
- openflowsheet/compile/reference.py +90 -0
- openflowsheet/compile/spec.py +246 -0
- openflowsheet/compiled.py +172 -0
- openflowsheet/graph/__init__.py +30 -0
- openflowsheet/graph/analysis.py +218 -0
- openflowsheet/graph/blocks.py +226 -0
- openflowsheet/graph/certificates.py +236 -0
- openflowsheet/graph/dof.py +141 -0
- openflowsheet/graph/matching.py +208 -0
- openflowsheet/graph/process.py +75 -0
- openflowsheet/graph/report.py +248 -0
- openflowsheet/graph/tear.py +404 -0
- openflowsheet/graph/trace.py +521 -0
- openflowsheet/ir/__init__.py +10 -0
- openflowsheet/models/__init__.py +661 -0
- openflowsheet/models/revision_flowsheet.py +849 -0
- openflowsheet/models/rows.py +338 -0
- openflowsheet/models/syn001/__init__.py +50 -0
- openflowsheet/models/syn001/admission.py +74 -0
- openflowsheet/models/syn001/bisection.py +74 -0
- openflowsheet/models/syn001/blocks.py +224 -0
- openflowsheet/models/syn001/component_separator.py +576 -0
- openflowsheet/models/syn001/conversion_reactor.py +767 -0
- openflowsheet/models/syn001/feed.py +304 -0
- openflowsheet/models/syn001/flash.py +576 -0
- openflowsheet/models/syn001/flowsheet.py +392 -0
- openflowsheet/models/syn001/heat_exchanger.py +867 -0
- openflowsheet/models/syn001/heater.py +498 -0
- openflowsheet/models/syn001/kinetic_cstr.py +703 -0
- openflowsheet/models/syn001/mixer.py +595 -0
- openflowsheet/models/syn001/ph_flash.py +605 -0
- openflowsheet/models/syn001/ph_kernel.py +693 -0
- openflowsheet/models/syn001/pump.py +546 -0
- openflowsheet/models/syn001/saturation_band.py +235 -0
- openflowsheet/models/syn001/sink.py +148 -0
- openflowsheet/models/syn001/splitter.py +340 -0
- openflowsheet/models/syn001/tp_state.py +528 -0
- openflowsheet/models/syn001/valve.py +414 -0
- openflowsheet/numerics/__init__.py +14 -0
- openflowsheet/numerics/anderson.py +507 -0
- openflowsheet/numerics/linear.py +233 -0
- openflowsheet/numerics/newton.py +892 -0
- openflowsheet/numerics/ptc.py +759 -0
- openflowsheet/numerics/scaling.py +187 -0
- openflowsheet/orchestrator/__init__.py +14 -0
- openflowsheet/orchestrator/attempts.py +595 -0
- openflowsheet/orchestrator/budget.py +128 -0
- openflowsheet/orchestrator/execution.py +861 -0
- openflowsheet/orchestrator/executor.py +1096 -0
- openflowsheet/orchestrator/homotopy.py +398 -0
- openflowsheet/orchestrator/mass.py +450 -0
- openflowsheet/orchestrator/merge.py +266 -0
- openflowsheet/orchestrator/phase_contract.py +527 -0
- openflowsheet/orchestrator/rank.py +251 -0
- openflowsheet/orchestrator/recovery.py +85 -0
- openflowsheet/orchestrator/region.py +2568 -0
- openflowsheet/orchestrator/revision.py +409 -0
- openflowsheet/orchestrator/roots.py +134 -0
- openflowsheet/orchestrator/splits.py +526 -0
- openflowsheet/orchestrator/tear.py +753 -0
- openflowsheet/orchestrator/trace.py +826 -0
- openflowsheet/orchestrator/warm_start.py +136 -0
- openflowsheet/py.typed +0 -0
- openflowsheet/resources.py +46 -0
- openflowsheet/run/__init__.py +16 -0
- openflowsheet/run/bundle.py +259 -0
- openflowsheet/run/compare.py +767 -0
- openflowsheet/run/identity.py +185 -0
- openflowsheet/run/manifest.py +351 -0
- openflowsheet/run/replay.py +344 -0
- openflowsheet/run/session.py +140 -0
- openflowsheet/run/solution_state.py +109 -0
- openflowsheet/serialize.py +309 -0
- openflowsheet/thermo/__init__.py +224 -0
- openflowsheet/thermo/cache.py +339 -0
- openflowsheet/thermo/syn001.py +423 -0
- openflowsheet/units/__init__.py +601 -0
- openflowsheet/verify/__init__.py +221 -0
- openflowsheet/verify/certificate.py +1235 -0
- openflowsheet/verify/checks.py +930 -0
- openflowsheet/verify/failure.py +480 -0
- openflowsheet/verify/projection.py +199 -0
- openflowsheet/verify/regularity.py +486 -0
- openflowsheet/verify/saturation.py +253 -0
- openflowsheet/verify/table.py +1652 -0
- openflowsheet/verify/zero_flow.py +240 -0
- openflowsheet-0.1.1.dist-info/METADATA +101 -0
- openflowsheet-0.1.1.dist-info/RECORD +177 -0
- openflowsheet-0.1.1.dist-info/WHEEL +5 -0
- openflowsheet-0.1.1.dist-info/entry_points.txt +2 -0
- openflowsheet-0.1.1.dist-info/licenses/LICENSE +202 -0
- openflowsheet-0.1.1.dist-info/licenses/NOTICE +27 -0
- openflowsheet-0.1.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Agent-native open process simulator, provisional import name ``openflowsheet``.
|
|
2
|
+
|
|
3
|
+
This distribution is the single installable package described in blueprint v3.1 §15: one
|
|
4
|
+
modular monorepo with logical layers rather than microservices. The subpackages ``ir``,
|
|
5
|
+
``units``, ``models``, ``thermo``, ``compile``, ``graph``, ``numerics``, ``orchestrator``,
|
|
6
|
+
and ``application`` correspond to the architectural boundaries of blueprint §3, and each one
|
|
7
|
+
states its own responsibility and the work package that will introduce its behavior. Later
|
|
8
|
+
layers (``studies``, ``adapters``, clients, and the web workbench) are deliberately absent
|
|
9
|
+
until their packages start, per implementation plan §2.
|
|
10
|
+
|
|
11
|
+
No functionality yet; introduced by package P00 (repository bootstrap only).
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
__version__ = "0.1.1"
|
|
15
|
+
|
|
16
|
+
__all__ = ["__version__"]
|
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
generated_by: Fable 5.1, mpmath 1.3.0 at 40 significant digits, from plan §3.1 definitions and derivation §2, §4.1,
|
|
2
|
+
§5.1, §6 only; exact rational arithmetic for the triangular fixtures
|
|
3
|
+
specification: docs/derivations/K04-certificate-spec.md
|
|
4
|
+
independence: closed-form expectations; no verifier, solver, oracle or process_runtime code was used. The P01 reference
|
|
5
|
+
is read in --check to prove two derivations agree and is never copied.
|
|
6
|
+
check_tolerances:
|
|
7
|
+
molar_flow:
|
|
8
|
+
absolute: '1.0000e-9'
|
|
9
|
+
relative: '1.0000e-8'
|
|
10
|
+
scale: '3.00000'
|
|
11
|
+
total: '3.10000e-8'
|
|
12
|
+
scaled_total: '1.03333e-8'
|
|
13
|
+
heat_rate:
|
|
14
|
+
absolute: '1.0000e-5'
|
|
15
|
+
relative: '1.0000e-8'
|
|
16
|
+
scale: '100000.'
|
|
17
|
+
total: '0.00101000'
|
|
18
|
+
scaled_total: '1.01000e-8'
|
|
19
|
+
temperature:
|
|
20
|
+
absolute: '1.0000e-6'
|
|
21
|
+
relative: '0.0'
|
|
22
|
+
scale: '100.000'
|
|
23
|
+
total: '1.00000e-6'
|
|
24
|
+
scaled_total: '1.00000e-8'
|
|
25
|
+
pressure:
|
|
26
|
+
absolute: '0.010000'
|
|
27
|
+
relative: '0.0'
|
|
28
|
+
scale: '100000.'
|
|
29
|
+
total: '0.0100000'
|
|
30
|
+
scaled_total: '1.00000e-7'
|
|
31
|
+
normalized_composition:
|
|
32
|
+
absolute: '1.0000e-10'
|
|
33
|
+
relative: '0.0'
|
|
34
|
+
scale: '1.00000'
|
|
35
|
+
total: '1.00000e-10'
|
|
36
|
+
scaled_total: '1.00000e-10'
|
|
37
|
+
molar_flow_squared:
|
|
38
|
+
absolute: '3.0000e-9'
|
|
39
|
+
relative: '1.0000e-8'
|
|
40
|
+
scale: '9.00000'
|
|
41
|
+
total: '9.30000e-8'
|
|
42
|
+
scaled_total: '1.03333e-8'
|
|
43
|
+
scaled_tolerance_minimum: '1.00e-8'
|
|
44
|
+
regularity_policy:
|
|
45
|
+
matrix: the 47x47 scaled target Jacobian after the two alias eliminations, evaluated at the final state (K04 §7.1)
|
|
46
|
+
recipe: splu (ADR 0004 options) -> LinearOperator -> onenormest -> rcond_1 = 1/(||J||_1 ||J^-1||_1) (plan §6.3)
|
|
47
|
+
tau_ill_conditioned: 1e-8
|
|
48
|
+
svd_rank_tolerance: n * eps * sigma_max, eps = 2^-52
|
|
49
|
+
svd_dimension_cap: 2000
|
|
50
|
+
absolute_conditioning_threshold:
|
|
51
|
+
rule: '||J^-1||_1 <= tau_hat_min / (n eps); violation is ILL_CONDITIONED(absolute)'
|
|
52
|
+
syn001_n47: '958213.'
|
|
53
|
+
seed_n1_tol_1e-8: '4.50360e+7'
|
|
54
|
+
seed_n1_tol_1e-12: '4503.60'
|
|
55
|
+
solution_error_bound: recorded evidence with a statement, never a pass/fail check (K04 §7.4, amended 2026-09-22)
|
|
56
|
+
variants:
|
|
57
|
+
SYN-001-nominal:
|
|
58
|
+
r: '0.500'
|
|
59
|
+
T_flash_K: '360.00'
|
|
60
|
+
flash_regime: TWO_PHASE
|
|
61
|
+
t_star_mol_per_s:
|
|
62
|
+
- '0.29777671393051394767'
|
|
63
|
+
- '0.54639697692561612246'
|
|
64
|
+
- '0.79501723992071829724'
|
|
65
|
+
vapor_product_S4_mol_per_s:
|
|
66
|
+
- '0.70222328606948605233'
|
|
67
|
+
- '0.45360302307438387754'
|
|
68
|
+
- '0.20498276007928170276'
|
|
69
|
+
flash_liquid_S5_mol_per_s:
|
|
70
|
+
- '0.59555342786102789535'
|
|
71
|
+
- '1.0927939538512322449'
|
|
72
|
+
- '1.5900344798414365945'
|
|
73
|
+
purge_S7_mol_per_s:
|
|
74
|
+
- '0.29777671393051394767'
|
|
75
|
+
- '0.54639697692561612246'
|
|
76
|
+
- '0.79501723992071829724'
|
|
77
|
+
V_mol_per_s: '1.3608090692231516326'
|
|
78
|
+
L_mol_per_s: '3.2783818615536967347'
|
|
79
|
+
T_mix_K: '321.20013108193881014'
|
|
80
|
+
heater_outlet_regime: LIQUID
|
|
81
|
+
heater_outlet_beta: '0.0'
|
|
82
|
+
heater_outlet_sum_zK_350K: '0.96231656003527667518'
|
|
83
|
+
S3_vapor_mol_per_s:
|
|
84
|
+
- '0.0'
|
|
85
|
+
- '0.0'
|
|
86
|
+
- '0.0'
|
|
87
|
+
S3_liquid_mol_per_s:
|
|
88
|
+
- '1.2977767139305139477'
|
|
89
|
+
- '1.5463969769256161225'
|
|
90
|
+
- '1.7950172399207182972'
|
|
91
|
+
Q_heater_W: '13360.809069223151633'
|
|
92
|
+
Q_flash_W: '42977.260377520375599'
|
|
93
|
+
Q_total_W: '56338.069446743527231'
|
|
94
|
+
H_S2_W: '9835.1455846610902042'
|
|
95
|
+
H_S3_W: '23195.954653884241837'
|
|
96
|
+
H_S4_W: '46502.923862082437027'
|
|
97
|
+
H_S5_W: '19670.291169322180408'
|
|
98
|
+
H_S7_W: '9835.1455846610902042'
|
|
99
|
+
overall_energy_identity_W: '0.0'
|
|
100
|
+
SYN-001-once-through:
|
|
101
|
+
r: '0.0'
|
|
102
|
+
T_flash_K: '360.00'
|
|
103
|
+
flash_regime: TWO_PHASE
|
|
104
|
+
t_star_mol_per_s:
|
|
105
|
+
- '0.0'
|
|
106
|
+
- '0.0'
|
|
107
|
+
- '0.0'
|
|
108
|
+
vapor_product_S4_mol_per_s:
|
|
109
|
+
- '0.70222328606948605233'
|
|
110
|
+
- '0.45360302307438387754'
|
|
111
|
+
- '0.20498276007928170276'
|
|
112
|
+
flash_liquid_S5_mol_per_s:
|
|
113
|
+
- '0.29777671393051394767'
|
|
114
|
+
- '0.54639697692561612246'
|
|
115
|
+
- '0.79501723992071829724'
|
|
116
|
+
purge_S7_mol_per_s:
|
|
117
|
+
- '0.29777671393051394767'
|
|
118
|
+
- '0.54639697692561612246'
|
|
119
|
+
- '0.79501723992071829724'
|
|
120
|
+
V_mol_per_s: '1.3608090692231516326'
|
|
121
|
+
L_mol_per_s: '1.6391909307768483674'
|
|
122
|
+
T_mix_K: '300.00000000000000000'
|
|
123
|
+
heater_outlet_regime: TWO_PHASE
|
|
124
|
+
heater_outlet_beta: '0.10136872342672775985'
|
|
125
|
+
heater_outlet_sum_zK_350K: '1.0703142190807741552'
|
|
126
|
+
S3_vapor_mol_per_s:
|
|
127
|
+
- '0.20153742984785378405'
|
|
128
|
+
- '0.078098253651684779698'
|
|
129
|
+
- '0.024470486780644715795'
|
|
130
|
+
S3_liquid_mol_per_s:
|
|
131
|
+
- '0.79846257015214621595'
|
|
132
|
+
- '0.92190174634831522030'
|
|
133
|
+
- '0.97552951321935528421'
|
|
134
|
+
Q_heater_W: '23237.850393069453045'
|
|
135
|
+
Q_flash_W: '33100.219053674074186'
|
|
136
|
+
Q_total_W: '56338.069446743527231'
|
|
137
|
+
H_S2_W: '0.0'
|
|
138
|
+
H_S3_W: '23237.850393069453045'
|
|
139
|
+
H_S4_W: '46502.923862082437027'
|
|
140
|
+
H_S5_W: '9835.1455846610902042'
|
|
141
|
+
H_S7_W: '9835.1455846610902042'
|
|
142
|
+
overall_energy_identity_W: '0.0'
|
|
143
|
+
SYN-001-high-recycle:
|
|
144
|
+
r: '0.950'
|
|
145
|
+
T_flash_K: '360.00'
|
|
146
|
+
flash_regime: TWO_PHASE
|
|
147
|
+
t_star_mol_per_s:
|
|
148
|
+
- '5.6577575646797650058'
|
|
149
|
+
- '10.381542561586706327'
|
|
150
|
+
- '15.105327558493647647'
|
|
151
|
+
vapor_product_S4_mol_per_s:
|
|
152
|
+
- '0.70222328606948605233'
|
|
153
|
+
- '0.45360302307438387754'
|
|
154
|
+
- '0.20498276007928170276'
|
|
155
|
+
flash_liquid_S5_mol_per_s:
|
|
156
|
+
- '5.9555342786102789535'
|
|
157
|
+
- '10.927939538512322449'
|
|
158
|
+
- '15.900344798414365945'
|
|
159
|
+
purge_S7_mol_per_s:
|
|
160
|
+
- '0.29777671393051394767'
|
|
161
|
+
- '0.54639697692561612246'
|
|
162
|
+
- '0.79501723992071829724'
|
|
163
|
+
V_mol_per_s: '1.3608090692231516326'
|
|
164
|
+
L_mol_per_s: '32.783818615536967347'
|
|
165
|
+
T_mix_K: '354.72830684634057450'
|
|
166
|
+
heater_outlet_regime: LIQUID
|
|
167
|
+
heater_outlet_beta: '0.0'
|
|
168
|
+
heater_outlet_sum_zK_350K: '0.79151740409485847777'
|
|
169
|
+
S3_vapor_mol_per_s:
|
|
170
|
+
- '0.0'
|
|
171
|
+
- '0.0'
|
|
172
|
+
- '0.0'
|
|
173
|
+
S3_liquid_mol_per_s:
|
|
174
|
+
- '6.6577575646797650058'
|
|
175
|
+
- '11.381542561586706327'
|
|
176
|
+
- '16.105327558493647647'
|
|
177
|
+
Q_heater_W: '-16144.627684760118980'
|
|
178
|
+
Q_flash_W: '72482.697131503646211'
|
|
179
|
+
Q_total_W: '56338.069446743527231'
|
|
180
|
+
H_S2_W: '186867.76610856071388'
|
|
181
|
+
H_S3_W: '170723.13842380059490'
|
|
182
|
+
H_S4_W: '46502.923862082437027'
|
|
183
|
+
H_S5_W: '196702.91169322180408'
|
|
184
|
+
H_S7_W: '9835.1455846610902042'
|
|
185
|
+
overall_energy_identity_W: '0.0'
|
|
186
|
+
SYN-001-all-liquid-310K:
|
|
187
|
+
r: '0.500'
|
|
188
|
+
T_flash_K: '310.00'
|
|
189
|
+
flash_regime: LIQUID
|
|
190
|
+
t_star_mol_per_s:
|
|
191
|
+
- '1.0000000000000000000'
|
|
192
|
+
- '1.0000000000000000000'
|
|
193
|
+
- '1.0000000000000000000'
|
|
194
|
+
vapor_product_S4_mol_per_s:
|
|
195
|
+
- '0.0'
|
|
196
|
+
- '0.0'
|
|
197
|
+
- '0.0'
|
|
198
|
+
flash_liquid_S5_mol_per_s:
|
|
199
|
+
- '2.0000000000000000000'
|
|
200
|
+
- '2.0000000000000000000'
|
|
201
|
+
- '2.0000000000000000000'
|
|
202
|
+
purge_S7_mol_per_s:
|
|
203
|
+
- '1.0000000000000000000'
|
|
204
|
+
- '1.0000000000000000000'
|
|
205
|
+
- '1.0000000000000000000'
|
|
206
|
+
V_mol_per_s: '0.0'
|
|
207
|
+
L_mol_per_s: '6.0000000000000000000'
|
|
208
|
+
T_mix_K: '305.00000000000000000'
|
|
209
|
+
heater_outlet_regime: TWO_PHASE
|
|
210
|
+
heater_outlet_beta: '0.10136872342672775985'
|
|
211
|
+
heater_outlet_sum_zK_350K: '1.0703142190807741552'
|
|
212
|
+
S3_vapor_mol_per_s:
|
|
213
|
+
- '0.40307485969570756811'
|
|
214
|
+
- '0.15619650730336955940'
|
|
215
|
+
- '0.048940973561289431590'
|
|
216
|
+
S3_liquid_mol_per_s:
|
|
217
|
+
- '1.5969251403042924319'
|
|
218
|
+
- '1.8438034926966304406'
|
|
219
|
+
- '1.9510590264387105684'
|
|
220
|
+
Q_heater_W: '43475.700786138906090'
|
|
221
|
+
Q_flash_W: '-40475.700786138906090'
|
|
222
|
+
Q_total_W: '3000.0000000000000000'
|
|
223
|
+
H_S2_W: '3000.0000000000000000'
|
|
224
|
+
H_S3_W: '46475.700786138906090'
|
|
225
|
+
H_S4_W: '0.0'
|
|
226
|
+
H_S5_W: '6000.0000000000000000'
|
|
227
|
+
H_S7_W: '3000.0000000000000000'
|
|
228
|
+
overall_energy_identity_W: '0.0'
|
|
229
|
+
SYN-001-all-vapor-420K:
|
|
230
|
+
r: '0.500'
|
|
231
|
+
T_flash_K: '420.00'
|
|
232
|
+
flash_regime: VAPOR
|
|
233
|
+
t_star_mol_per_s:
|
|
234
|
+
- '0.0'
|
|
235
|
+
- '0.0'
|
|
236
|
+
- '0.0'
|
|
237
|
+
vapor_product_S4_mol_per_s:
|
|
238
|
+
- '1.0000000000000000000'
|
|
239
|
+
- '1.0000000000000000000'
|
|
240
|
+
- '1.0000000000000000000'
|
|
241
|
+
flash_liquid_S5_mol_per_s:
|
|
242
|
+
- '0.0'
|
|
243
|
+
- '0.0'
|
|
244
|
+
- '0.0'
|
|
245
|
+
purge_S7_mol_per_s:
|
|
246
|
+
- '0.0'
|
|
247
|
+
- '0.0'
|
|
248
|
+
- '0.0'
|
|
249
|
+
V_mol_per_s: '3.0000000000000000000'
|
|
250
|
+
L_mol_per_s: '0.0'
|
|
251
|
+
T_mix_K: '300.00000000000000000'
|
|
252
|
+
heater_outlet_regime: TWO_PHASE
|
|
253
|
+
heater_outlet_beta: '0.10136872342672775985'
|
|
254
|
+
heater_outlet_sum_zK_350K: '1.0703142190807741552'
|
|
255
|
+
S3_vapor_mol_per_s:
|
|
256
|
+
- '0.20153742984785378405'
|
|
257
|
+
- '0.078098253651684779698'
|
|
258
|
+
- '0.024470486780644715795'
|
|
259
|
+
S3_liquid_mol_per_s:
|
|
260
|
+
- '0.79846257015214621595'
|
|
261
|
+
- '0.92190174634831522030'
|
|
262
|
+
- '0.97552951321935528421'
|
|
263
|
+
Q_heater_W: '23237.850393069453045'
|
|
264
|
+
Q_flash_W: '102762.14960693054695'
|
|
265
|
+
Q_total_W: '126000.00000000000000'
|
|
266
|
+
H_S2_W: '0.0'
|
|
267
|
+
H_S3_W: '23237.850393069453045'
|
|
268
|
+
H_S4_W: '126000.00000000000000'
|
|
269
|
+
H_S5_W: '0.0'
|
|
270
|
+
H_S7_W: '0.0'
|
|
271
|
+
overall_energy_identity_W: '0.0'
|
|
272
|
+
injections:
|
|
273
|
+
INJ-1-energy-bookkeeping:
|
|
274
|
+
state: nominal x(t*) with U-HEAT.Q + delta
|
|
275
|
+
fails_at_W: '1'
|
|
276
|
+
passes_at_W: 5e-4
|
|
277
|
+
row_shift: HEAT-duty by exactly delta; independent heater and overall energy checks by delta
|
|
278
|
+
energy_tolerance_W: '0.00101000'
|
|
279
|
+
INJ-2-trivial-root:
|
|
280
|
+
state: once-through x(t*) with S3's lifted split forced all-liquid and both duties closed
|
|
281
|
+
S3_liquid_forced_mol_per_s:
|
|
282
|
+
- '1.0000000000000000000'
|
|
283
|
+
- '1.0000000000000000000'
|
|
284
|
+
- '1.0000000000000000000'
|
|
285
|
+
Q_heater_spurious_W: '15000.000000000000000'
|
|
286
|
+
Q_heater_true_W: '23237.850393069453045'
|
|
287
|
+
Q_flash_spurious_W: '41338.069446743527231'
|
|
288
|
+
Q_flash_true_W: '33100.219053674074186'
|
|
289
|
+
offset_W: '8237.8503930694530451'
|
|
290
|
+
duty_sum_W: '56338.069446743527231'
|
|
291
|
+
S3_sum_xK_350K: '1.0703142190807741552'
|
|
292
|
+
S3_true_beta: '0.10136872342672775985'
|
|
293
|
+
S3_true_V_mol_per_s: '0.30410617028018327955'
|
|
294
|
+
S3_true_vapor_mol_per_s:
|
|
295
|
+
- '0.20153742984785378405'
|
|
296
|
+
- '0.078098253651684779698'
|
|
297
|
+
- '0.024470486780644715795'
|
|
298
|
+
passes: residual (all 49 rows), material balances, alias certificates, overall energy identity, regularity
|
|
299
|
+
fails: phase admissibility (S3, all_liquid); independent split (S3); heater and flash unit energy
|
|
300
|
+
INJ-3-consistent-near-state:
|
|
301
|
+
state: nominal, t* + 1e-6 e_C reconstructed through the tear map
|
|
302
|
+
t_mol_per_s:
|
|
303
|
+
- '0.29777671393051394767'
|
|
304
|
+
- '0.54639697692561612246'
|
|
305
|
+
- '0.79501823992071829724'
|
|
306
|
+
R_mol_per_s:
|
|
307
|
+
- '2.1026619074827601294e-7'
|
|
308
|
+
- '2.0915418562319922615e-7'
|
|
309
|
+
- '-4.3862216621698096089e-7'
|
|
310
|
+
R_inf_mol_per_s: '4.3862216621698096089e-7'
|
|
311
|
+
flow_tolerance_mol_per_s: '3.10000e-8'
|
|
312
|
+
mixer_margin: '4.2058543350126470152e-7'
|
|
313
|
+
fails: residual (the three SPLIT-recycle rows); material (splitter ratio rows)
|
|
314
|
+
passes: every other check
|
|
315
|
+
INJ-6-one-coordinate:
|
|
316
|
+
state: nominal x(t*) with S6.n.A + delta, rows evaluated at x directly
|
|
317
|
+
fails_at_mol_per_s: 1e-6
|
|
318
|
+
passes_at_mol_per_s: 1e-8
|
|
319
|
+
MIX_energy_shift_per_mol_per_s_W: '6000.00'
|
|
320
|
+
rows_shifted_by_delta:
|
|
321
|
+
- U-MIX:MIX-mole:A
|
|
322
|
+
- U-SPLIT:SPLIT-recycle:A
|
|
323
|
+
row_shifted_by_delta_h: U-MIX:MIX-energy
|
|
324
|
+
INJ-7-tampered-specification:
|
|
325
|
+
state: nominal x(t*) with S3.T + delta
|
|
326
|
+
fails_at_K: 1e-5
|
|
327
|
+
passes_at_K: 1e-7
|
|
328
|
+
HEAT_duty_shift_per_K_W: '-463.919093078'
|
|
329
|
+
FLASH_duty_shift_per_K_W: '463.919093078'
|
|
330
|
+
temperature_tolerance_K: '1.00e-6'
|
|
331
|
+
regularity_fixtures:
|
|
332
|
+
triangular_unit_diagonal:
|
|
333
|
+
'16':
|
|
334
|
+
definition: U = I - N, N strictly upper triangular of ones; every U_ii = 1
|
|
335
|
+
rcond_1_exact: '1.9073486328125000000e-6'
|
|
336
|
+
rcond_1_exact_rational: 1/(16 * 2^15)
|
|
337
|
+
sigma_min_upper_bound: '0.000122070'
|
|
338
|
+
sigma_min_lower_bound: '7.62939e-6'
|
|
339
|
+
svd_rank_tolerance_bounds:
|
|
340
|
+
- '1.42109e-14'
|
|
341
|
+
- '5.68434e-14'
|
|
342
|
+
expected_status: NO_RANK_LOSS_DETECTED
|
|
343
|
+
expected_svd_rank: 16
|
|
344
|
+
u_diagonal_ratio: '1'
|
|
345
|
+
'32':
|
|
346
|
+
definition: U = I - N, N strictly upper triangular of ones; every U_ii = 1
|
|
347
|
+
rcond_1_exact: '1.4551915228366851807e-11'
|
|
348
|
+
rcond_1_exact_rational: 1/(32 * 2^31)
|
|
349
|
+
sigma_min_upper_bound: '2.63418e-9'
|
|
350
|
+
sigma_min_lower_bound: '8.23181e-11'
|
|
351
|
+
svd_rank_tolerance_bounds:
|
|
352
|
+
- '4.01944e-14'
|
|
353
|
+
- '2.27374e-13'
|
|
354
|
+
expected_status: ILL_CONDITIONED
|
|
355
|
+
expected_svd_rank: 32
|
|
356
|
+
u_diagonal_ratio: '1'
|
|
357
|
+
'64':
|
|
358
|
+
definition: U = I - N, N strictly upper triangular of ones; every U_ii = 1
|
|
359
|
+
rcond_1_exact: '1.6940658945086006781e-21'
|
|
360
|
+
rcond_1_exact_rational: 1/(64 * 2^63)
|
|
361
|
+
sigma_min_upper_bound: '8.67362e-19'
|
|
362
|
+
sigma_min_lower_bound: '1.35525e-20'
|
|
363
|
+
svd_rank_tolerance_bounds:
|
|
364
|
+
- '1.13687e-13'
|
|
365
|
+
- '9.09495e-13'
|
|
366
|
+
expected_status: RANK_DEFICIENT
|
|
367
|
+
expected_svd_rank: 63
|
|
368
|
+
u_diagonal_ratio: '1'
|
|
369
|
+
x_squared:
|
|
370
|
+
exact_root:
|
|
371
|
+
x: '0'
|
|
372
|
+
F: '0'
|
|
373
|
+
J: '0'
|
|
374
|
+
expected_status: RANK_DEFICIENT
|
|
375
|
+
svd_rank: 0
|
|
376
|
+
k03_newton_from_1:
|
|
377
|
+
steps: 14
|
|
378
|
+
x_final: '0.000061035156250000000000'
|
|
379
|
+
F_final: '3.7252902984619140625e-9'
|
|
380
|
+
J_final: '0.00012207031250000000000'
|
|
381
|
+
rcond_1: '1'
|
|
382
|
+
inverse_one_norm: '8192.0000000000000000'
|
|
383
|
+
absolute_threshold: '4.50360e+7'
|
|
384
|
+
solution_error_bound_scaled: '0.000030517578125000000000'
|
|
385
|
+
expected_status: NO_RANK_LOSS_DETECTED
|
|
386
|
+
expected_verdict: VERIFIED, with the bound recorded and its statement
|
|
387
|
+
k03_newton_from_1_tol_1e-12:
|
|
388
|
+
steps: 20
|
|
389
|
+
x_final: '9.5367431640625000000e-7'
|
|
390
|
+
F_final: '9.0949470177292823792e-13'
|
|
391
|
+
J_final: '1.9073486328125000000e-6'
|
|
392
|
+
rcond_1: '1'
|
|
393
|
+
inverse_one_norm: '524288.00000000000000'
|
|
394
|
+
absolute_threshold: '4503.60'
|
|
395
|
+
solution_error_bound_scaled: '4.7683715820312500000e-7'
|
|
396
|
+
expected_status: ILL_CONDITIONED(absolute)
|
|
397
|
+
expected_verdict: UNVERIFIED
|
|
398
|
+
numerical_policy:
|
|
399
|
+
id: K04-numerical-policy-v1
|
|
400
|
+
relative: 1e-9
|
|
401
|
+
near_threshold_margin: '10'
|
|
402
|
+
floors:
|
|
403
|
+
residual_inf_unscaled:
|
|
404
|
+
floor: '3.10000e-8'
|
|
405
|
+
why: ADR 0001 D6 flow rule (the K03 tear rows)
|
|
406
|
+
merit:
|
|
407
|
+
floor: '5.33889e-17'
|
|
408
|
+
why: half the squared scaled flow tolerance
|
|
409
|
+
witness_max_diff:
|
|
410
|
+
floor: 1e-7
|
|
411
|
+
why: K04 §4.8 derivative-witness tolerance
|
|
412
|
+
step_inf_scaled:
|
|
413
|
+
floor: '1.03333e-8'
|
|
414
|
+
why: the scaled flow tolerance
|
|
415
|
+
residual_normalized:
|
|
416
|
+
floor: 1e-12
|
|
417
|
+
why: ADR 0004 D3.2
|
|
418
|
+
eta:
|
|
419
|
+
floor: 1e-10
|
|
420
|
+
why: K03 §3.4
|
|
421
|
+
constant_mismatch:
|
|
422
|
+
floor: 1e-2
|
|
423
|
+
why: ADR 0001 D6 pressure
|
|
424
|
+
u_diag_min_abs:
|
|
425
|
+
floor: 1e-10 x u_diag_max_abs
|
|
426
|
+
why: ADR 0004 D3.4 screen ratio
|
|
427
|
+
u_diag_max_abs:
|
|
428
|
+
floor: '0'
|
|
429
|
+
why: compared relatively
|
|
430
|
+
rcond_1:
|
|
431
|
+
floor: 1e-14
|
|
432
|
+
why: n eps at n = 47; below it the estimate is noise
|
|
433
|
+
solution_error_bound_scaled:
|
|
434
|
+
floor: '1.00e-8'
|
|
435
|
+
why: the scaled tolerance minimum (recorded evidence, not a check)
|
|
436
|
+
inverse_one_norm_estimate:
|
|
437
|
+
floor: '0'
|
|
438
|
+
why: compared relatively; its threshold is a policy-derived constant
|
|
439
|
+
check.value:
|
|
440
|
+
floor: the check's own tolerance
|
|
441
|
+
why: ADR 0007 D2.2
|
|
442
|
+
kappa_2:
|
|
443
|
+
floor: '0'
|
|
444
|
+
why: 'ADR 0009 D3 as amended: relative only, inside its comparability window'
|
|
445
|
+
gamma_inf:
|
|
446
|
+
floor: '0'
|
|
447
|
+
why: 'ADR 0009 D3 as amended: relative only, inside its comparability window'
|
|
448
|
+
comparability_windows:
|
|
449
|
+
kappa_2:
|
|
450
|
+
sibling: residual_inf_scaled
|
|
451
|
+
minimum: 1e-4
|
|
452
|
+
why: 'measured on the CI pair: <= 3.3e-13 relative where |f_k| >= 1e-4, up to 1.06e-8 below'
|
|
453
|
+
gamma_inf:
|
|
454
|
+
sibling: residual_inf_scaled
|
|
455
|
+
minimum: 1e-4
|
|
456
|
+
why: 'measured on the CI pair: <= 3.3e-13 relative where |f_k| >= 1e-4, up to 1.06e-8 below'
|
|
457
|
+
exact_fields:
|
|
458
|
+
- alpha
|
|
459
|
+
- scales
|
|
460
|
+
- bounds
|
|
461
|
+
- tolerance
|
|
462
|
+
- beta_substitution
|
|
463
|
+
- delta_scaled_inf
|
|
464
|
+
unreproducible_counts:
|
|
465
|
+
- property_calls
|
|
466
|
+
- requested_evaluations
|
|
467
|
+
- cache_hits
|
|
468
|
+
- nnz_L
|
|
469
|
+
- nnz_U
|
|
470
|
+
digests_never_compared:
|
|
471
|
+
- state_sha256
|
|
472
|
+
- full_state_sha256
|
|
473
|
+
- jacobian_identity
|
|
474
|
+
- target_state_sha256
|
|
475
|
+
floors_measured_2026_09_22:
|
|
476
|
+
note: measured by Fable on the K02 flowsheet through the CasADi backend and SciPy SuperLU at the five reconstructed
|
|
477
|
+
x(t*); regression floors, not closed forms
|
|
478
|
+
residual_rows_unscaled_max:
|
|
479
|
+
molar_flow: '3.6e-15'
|
|
480
|
+
temperature: '0.0'
|
|
481
|
+
pressure_or_heat_rate: '1.5e-10'
|
|
482
|
+
molar_flow_squared: '1.8e-14'
|
|
483
|
+
material_balance_max_mol_per_s: '3.6e-15'
|
|
484
|
+
energy_balance_independent_flash_max_W: '9.4e-10'
|
|
485
|
+
specification_rows_max: '0.0'
|
|
486
|
+
alias_identity_max_Pa: '1.5e-10'
|
|
487
|
+
rcond_1_target_47x47_scaled:
|
|
488
|
+
nominal: '1.161e-3'
|
|
489
|
+
once_through: '1.851e-3'
|
|
490
|
+
high_recycle: '1.331e-4'
|
|
491
|
+
all_liquid_310K: '2.019e-3'
|
|
492
|
+
all_vapor_420K: '7.705e-4'
|
|
493
|
+
trivial_root_spurious: '2.194e-3'
|
|
494
|
+
rcond_1_target_47x47_unscaled_range: 9.0e-12 to 5.9e-11
|
|
495
|
+
onenormest_over_exact_one_norm: 1.000 at every state and fixture
|
|
496
|
+
u_diagonal_ratio_range: 4.4e-3 to 2.6e-1
|
|
497
|
+
solution_error_bound_scaled_max: 6.9e-13 (high recycle)
|
|
498
|
+
fd_compiled_function_scaled_max_abs:
|
|
499
|
+
delta=1e-4: '2.7e-8'
|
|
500
|
+
delta=1e-5: '2.8e-10'
|
|
501
|
+
delta=1e-6: '2.8e-9'
|
|
502
|
+
delta=1e-7: '1.2e-8'
|
|
503
|
+
off_pattern: '0.0'
|
|
504
|
+
smallest_nonzero_scaled_jacobian_entry: '1.6e-4'
|
|
505
|
+
provider_vs_oracle_enthalpy_J_per_mol: '0.0'
|
|
506
|
+
provider_vs_oracle_K_relative: '6.3e-16'
|
|
507
|
+
checks_passed:
|
|
508
|
+
- 'SYN-001-nominal: R(t*) = 0 to 1e-35'
|
|
509
|
+
- 'SYN-001-nominal: Q_h + Q_f = H(S4) + H(S7) - H(S1) = c_p (T_f - 300) F_tot + V sum y_i L_i to 1e-30'
|
|
510
|
+
- 'SYN-001-nominal: mixer, flash and envelope component balances close to 1e-35'
|
|
511
|
+
- 'SYN-001-once-through: R(t*) = 0 to 1e-35'
|
|
512
|
+
- 'SYN-001-once-through: Q_h + Q_f = H(S4) + H(S7) - H(S1) = c_p (T_f - 300) F_tot + V sum y_i L_i to 1e-30'
|
|
513
|
+
- 'SYN-001-once-through: mixer, flash and envelope component balances close to 1e-35'
|
|
514
|
+
- 'SYN-001-high-recycle: R(t*) = 0 to 1e-35'
|
|
515
|
+
- 'SYN-001-high-recycle: Q_h + Q_f = H(S4) + H(S7) - H(S1) = c_p (T_f - 300) F_tot + V sum y_i L_i to 1e-30'
|
|
516
|
+
- 'SYN-001-high-recycle: mixer, flash and envelope component balances close to 1e-35'
|
|
517
|
+
- 'SYN-001-all-liquid-310K: R(t*) = 0 to 1e-35'
|
|
518
|
+
- 'SYN-001-all-liquid-310K: Q_h + Q_f = H(S4) + H(S7) - H(S1) = c_p (T_f - 300) F_tot + V sum y_i L_i to 1e-30'
|
|
519
|
+
- 'SYN-001-all-liquid-310K: mixer, flash and envelope component balances close to 1e-35'
|
|
520
|
+
- 'SYN-001-all-vapor-420K: R(t*) = 0 to 1e-35'
|
|
521
|
+
- 'SYN-001-all-vapor-420K: Q_h + Q_f = H(S4) + H(S7) - H(S1) = c_p (T_f - 300) F_tot + V sum y_i L_i to 1e-30'
|
|
522
|
+
- 'SYN-001-all-vapor-420K: mixer, flash and envelope component balances close to 1e-35'
|
|
523
|
+
- '360 K variants: vapor product and total duty invariant in r to 1e-35 / 1e-30'
|
|
524
|
+
- 'INJ-2: forcing S3 all-liquid at once-through gives Q_h = c_p (350 - 300) F_tot = 15000 W exactly; the offset
|
|
525
|
+
V_h sum y_h,i L_i exceeds 8000 W; the duty sum is invariant; sum x K(350 K) > 1 + 1e-3'
|
|
526
|
+
- 'INJ-3: |R(t* + 1e-6 e_C)| exceeds 10x the flow tolerance; the three rows are distinct; the mixer admits the state'
|
|
527
|
+
- 'INJ-6: +1e-6 mol/s on S6.n.A fails two flow rows by > 10x and MIX-energy by > 5x; +1e-8 passes every row by >
|
|
528
|
+
3x'
|
|
529
|
+
- 'INJ-7: +1e-5 K on S3.T fails HEAT-T by > 9x and both duty rows by > 4x; +1e-7 K passes by > 9x'
|
|
530
|
+
- 'INJ-1: +1 W on the heater duty fails HEAT-duty by > 900x; +5e-4 W passes by > 2x'
|
|
531
|
+
- 'triangular fixtures: n=16 rcond_1 > 100 tau_ill; n=32 rcond_1 < tau_ill/100 with sigma_min > 100x the SVD rank
|
|
532
|
+
tolerance (full rank); n=64 sigma_min < 1e-4 x the SVD rank tolerance (rank deficient)'
|
|
533
|
+
- scaled tolerance minimum over row kinds is 1e-8 (temperature rows)
|
|
534
|
+
- absolute-conditioning threshold for SYN-001 exceeds 2000x the measured maximum ||J^-1||_1 of 476.1
|
|
535
|
+
- 'SQ-1: x^2 = 0 from x0 = 1 at tolerance 1e-8: 14 halvings land on 2^-14; F = 2^-28; the recorded bound 2^-15 exceeds
|
|
536
|
+
1000x the scaled tolerance; ||J^-1||_1 = 2^13 sits 5000x under the absolute threshold, so the verdict is VERIFIED
|
|
537
|
+
with the bound recorded'
|
|
538
|
+
- 'SQ-2: x^2 = 0 from x0 = 1 at tolerance 1e-12: 20 halvings land on 2^-20; ||J^-1||_1 = 2^19 exceeds 100x the absolute
|
|
539
|
+
threshold 1e-12/eps, so the status is ILL_CONDITIONED(absolute) and the verdict UNVERIFIED'
|
|
540
|
+
- every certified quantity agrees with the P01 20-digit reference to 4.76e-20 relative (independent derivation)
|