Assemble the injector diagnostics dict from Numba's own solve outputs.
Replaces the second, C-side injector solve that the Numba path used to make for
diagnostics alone (native_injector._nat().injector_solve + _result_to_diag). The
physics was always there -- injector_solve computed these values and discarded
them -- so this is plumbing, not new physics.
Everything is derived from the flat param vector plus the solve tuple; no config
object is needed, which is what keeps this callable from inside a worker without
re-parsing YAML.
OMISSIONS. C's _result_to_diag also emits J, TMR, theta and
feed_orifice_coupling_iterations; no reader for those exists anywhere, and they
are impinging spray quantities the accelerated path never needs.
A_eff_O/F and the turbulence block ARE emitted, after an initial omission proved
wrong: A_eff is asserted present (not merely derivable) by
tests/test_flow_capacity_effective_area.py, and turbulence_intensity_mix reaches
chamber_solver.py:180 through *closure* diagnostics -- i.e. the accel.solve path,
which is distinct from the accel.evaluate path the first analysis looked at.
| engine.accel.diagnostics._impinging_spray_extras |
( |
| config, |
|
|
| P, |
|
|
| sol, |
|
|
| Pc ) |
|
protected |
The spray/doublet diagnostics impinging.py publishes that the kernel tuple does not carry.
Layer 1 reads D_pitch_*, element_gap_*, L_imp and vaporization_length_total out of the
diagnostics (its impinging geometry-fit term and final report), and on the DEFAULT path those
diagnostics are this dict (closure.flows -> accel.solve). Without these keys the accelerated
path reported None where ED_ACCEL=off reported numbers. Computed from the solved state with
the SAME helpers, in the same order, as ImpingingInjector.solve -- not re-derived.
Definition at line 37 of file diagnostics.py.
References max.
Referenced by build_diag().
| engine.accel.diagnostics.build_diag |
( |
| P, |
|
|
| sol, |
|
|
| config = None, |
|
|
| Pc = None ) |
Mirror native_injector._result_to_diag using Numba's injector_solve tuple.
`sol` is the 24-tuple from kernels.injector_solve. With `config` and `Pc` (every caller in
engine.accel passes them), an impinging result also carries the spray/doublet keys
ImpingingInjector.solve publishes (see _impinging_spray_extras).
Definition at line 124 of file diagnostics.py.
References _impinging_spray_extras(), _manifold_diagnostics(), max, and min.