1. Geometry Input Branch
Coordinates plus axis angles
\[
\begin{aligned}
\text{input row: } &\quad \texttt{hole\_id},\ x,\ y,\ z,\ \theta_x,\ \theta_y,\ \theta_z \\
\mathbf{d}_i
&= \operatorname{normalize}
\left(
\begin{bmatrix}
\cos \theta_{x,i} \\
\cos \theta_{y,i} \\
\cos \theta_{z,i}
\end{bmatrix}
\right)
\end{aligned}
\]
This is the preferred mode. If per-hole axis-direction angles are available, the 3D projection uses those
directions as the starting direction for each hole. The global inward correction is still applied afterward as
a shared centerward plume-turning adjustment.
This input branch is a project geometry interface. It is not taken from a single paper.
It defines how measured or user-supplied hole coordinates and axis angles are converted into a public demo input.
Coordinates only
\[
\begin{aligned}
\text{input row: } &\quad \texttt{hole\_id},\ x,\ y,\ z \\
\mathbf{d}_i
&= \text{global drill-angle fallback}
\end{aligned}
\]
When only coordinates are known, the tool preserves the measured layout and uses the shared drill-angle input
only for centerline direction.
The coordinates-only branch is a project fallback mode for incomplete injector data.
STL
\[
\text{STL}
\rightarrow
\text{near-tip sharp-edge records}
\rightarrow
\text{connected components}
\rightarrow
\text{clustered opening centers}
\]
STL mode is limited to opening-center extraction. It is not the production path for drill-angle recovery.
The STL opening-center extraction path is a project mesh-processing workflow, not a published CAD feature-recognition method.
2. Canonical Frame
\[
\begin{aligned}
\hat{\mathbf{a}}
&= \operatorname{normalize}\!\left(\operatorname{mean}(\mathbf{d}_i)\right)
\quad \text{when per-hole directions exist} \\
\hat{\mathbf{a}}
&= \text{opening-plane normal}
\quad \text{when only coordinates exist} \\
\hat{\mathbf{u}},\hat{\mathbf{v}}
&= \text{orthonormal basis vectors on the opening plane} \\
\mathbf{p}_{\text{local}}
&=
\begin{bmatrix}
(\mathbf{p}-\mathbf{c}) \cdot \hat{\mathbf{u}} \\
(\mathbf{p}-\mathbf{c}) \cdot \hat{\mathbf{a}} \\
(\mathbf{p}-\mathbf{c}) \cdot \hat{\mathbf{v}}
\end{bmatrix}
\end{aligned}
\]
Every injector is mapped into a canonical frame where y is downstream and x / z lie on the opening plane.
This lets the section view and gap logic run in a consistent space across injector layouts.
The canonical-frame transform is a project coordinate-normalization step for visualization and comparison.
3. Thermodynamic Branch
\[
\begin{aligned}
P_{\text{sat}}
&= \text{Antoine}(T_{\text{fuel}})
\quad \text{or} \quad
\text{Raoult mixture}(T_{\text{fuel}}) \\
\frac{P_{\text{sat}}}{P_{\text{amb}}}
&= \frac{P_{\text{sat}}}{P_{\text{amb}}} \\
\frac{P_{\text{amb}}}{P_{\text{sat}}}
&= \frac{P_{\text{amb}}}{P_{\text{sat}}} \\
\rho_a
&= \frac{p_{\text{amb}}}{R_{\text{specific}}\,T_{\text{amb}}}
\end{aligned}
\]
Ambient temperature enters through ambient density. The current default condition is G2-like:
200 bar injection, 0.5 bar ambient, 90 C fuel, and 20 C ambient.
\[
\begin{aligned}
\frac{P_{\text{amb}}}{P_{\text{sat}}} \ge 1.0
&\Rightarrow \text{non-flash boiling} \\
0.3 \le \frac{P_{\text{amb}}}{P_{\text{sat}}} < 1.0
&\Rightarrow \text{transitional flash boiling} \\
\frac{P_{\text{amb}}}{P_{\text{sat}}} < 0.3
&\Rightarrow \text{flare flash boiling}
\end{aligned}
\]
Source: The non-flash / transitional / flare split shown here follows
Zeng et al., 2012.
4. Plume Angle Branch
Non-flash
\[
\begin{aligned}
W_{\text{ref}}
&= 2 z_{\text{ref}} \tan\!\left(\frac{\theta_{\text{base}}}{2}\right) \\
W_{\text{nf}}
&= W_{\text{ref}}
\left(\frac{\rho_a}{\rho_{\text{ref}}}\right)^{-0.38} \\
\theta_{\text{nf}}
&= 2 \tan^{-1}\!\left(\frac{W_{\text{nf}}/2}{z_{\text{ref}}}\right)
\end{aligned}
\]
The non-flash branch still needs a user baseline angle. Density scaling is applied on top of that baseline.
The non-flash branch is not taken as a complete closed-form expression from a single paper.
The tool uses a user-supplied baseline plume angle, while the density scaling exponent is aligned with the width scaling used by
Zeng et al., 2012.
Plume-wise non-flash interpretation for Spray G is guided by
Hwang et al., 2020.
Transition
\[
\begin{aligned}
W_{30}
&=
\frac{1.5
\left(\rho_a / \rho_l\right)^{-0.38}}
{1 + \exp\!\left(3.8\left(\frac{P_{\text{amb}}}{P_{\text{sat}}} - 0.746\right)\right)} \\
\theta_{\text{transition}}
&= 2 \tan^{-1}\!\left(\frac{W_{30}/2}{30\,\mathrm{mm}}\right)
\end{aligned}
\]
This branch follows the Zeng 2012 width correlation and converts it into a separate-plume cone angle.
Source: The transition-branch width correlation and the pressure-ratio regime interpretation come from
Zeng et al., 2012.
Flare
\[
\begin{aligned}
D &= 0
\quad \text{for} \quad
\frac{P_{\text{amb}}}{P_{\text{sat}}} < 0.3 \\
\beta
&=
\beta_0
+
\left(
\frac{\beta_{\max} - \beta_0}
{1 + \exp\!\left(4.116 / (P_{\text{sat}}/P_{\text{amb}})\right)}
\right)
\left(-0.0102\,\Delta P_{\text{inj}} + 1.0949\right) \\
\alpha_{\text{global}}
&= \delta + 2\beta
\end{aligned}
\]
In flare, the tool stops treating the structure as a clean set of separate plumes. It keeps a merged-envelope
visualization and a global spray-angle proxy for interpretation.
Source: The flare-branch global-angle proxy follows the HOCA/global-angle correlation reported by
Bachanek et al., 2025.
The branch switch itself remains aligned with the Zeng pressure-ratio split.
5. Centerline Projection
Per-hole direction available
\[
\begin{aligned}
\mathbf{d}_{i,\text{base}}
&= \text{input axis direction for hole } i \\
\mathbf{d}_{i,\text{resolved}}
&= \text{apply common inward correction to } \mathbf{d}_{i,\text{base}} \\
\mathbf{r}_i(t)
&= \mathbf{o}_i + t\,\mathbf{d}_{i,\text{resolved}} \\
\text{at plane } y=s:\quad
t
&= \frac{s-o_{i,y}}{d_{i,\text{resolved},y}} \\
\mathbf{c}_i(s)
&= \mathbf{r}_i(t)
\end{aligned}
\]
Even when explicit hole-wise axis angles are provided, the public tool still applies the same global inward correction
to every hole. The reason is practical: measured or nominal hole-axis data describe the base drilling direction,
while the shared inward correction is used to represent an additional common centerward plume-turning bias.
The shared inward-correction layer is a project modeling choice. It is used to represent an additional common centerward plume-turning bias and is not copied from a single published formula.
Fallback drill-angle model
\[
\begin{aligned}
\alpha_{\text{eff}}
&= \alpha_{\text{user}} - \delta_{\text{inward}} \\
\mathbf{c}_i(y)
&= \mathbf{o}_i - \hat{\mathbf{e}}_{r,i}\,y\,\tan(\alpha_{\text{eff}})
\end{aligned}
\]
The fallback drill-angle projection is a project geometry model for cases where only layout is known.
6. Section Radius and Pairwise Gap
\[
\begin{aligned}
r_i(y)
&= \frac{d_{\text{hole}}}{2} + y \tan\!\left(\frac{\theta_{\text{sep}}}{2}\right) \\
g_{ij}(y)
&= \left\lVert \mathbf{c}_i(y) - \mathbf{c}_j(y) \right\rVert
- \left(r_i(y) + r_j(y)\right) \\
g_{ij}(y) \le 0
&\Rightarrow \text{explicit overlap}
\end{aligned}
\]
The tool renders fixed sections at 5, 10, 15, 20, and 50 mm and computes the minimum pair gap through the full axial window.
The pairwise gap calculation is a project geometric diagnostic. It is not taken directly from a single literature formula.
7. Collapsing Probability
\[
\begin{aligned}
\text{evaluation window:}\quad
0 \le y &\le \text{view length} \\
\text{evaluation planes:}\quad
y &= 0,5,10,15,\ldots,\text{view length}
\quad \text{inside the evaluation window} \\
w(y)
&= 1
\quad \text{for all sampled evaluation planes in the evaluation window} \\
s_{\text{block,persist}}
&=
\frac{\sum_y w(y)\,I_{\text{vent blocked}}(y)}
{\sum_y w(y)} \\
s_{\text{block,strength}}
&=
\frac{\sum_y w(y)\,s_{\text{vent block}}(y)}
{\sum_y w(y)} \\
s_{\text{ring,closure}}
&=
\frac{\sum_y w(y)\,s_{\text{ring closure}}(y)}
{\sum_y w(y)}
\end{aligned}
\]
The vent-blocking branch checks whether ambient air can still reach the center region in each
x-z cross-section. The current public version rasterizes the section, flood-fills
empty cells connected to the outer boundary, samples a ring around the center region, and then
estimates whether a usable vent path remains. It also checks the largest open sector that remains on that sampled ring.
A narrow throat alone is not enough to count as blocked;
the center-surrounding ring must also be closed strongly enough to support enclosure. In the current public site,
the fixed section cards are representative checkpoints, while the collapsing probability itself is computed from an internal 5 mm sampling set across the full evaluation window.
Source rationale: The public predictor now evaluates vent-blocking morphology from the injector reference plane all the way to the selected view length, using a uniform 5 mm sampling interval. This is a project decision intended to let the user inspect both early and downstream enclosure behavior with one consistent rule set.
The vent-blocking collapsing probability is a project predictor. It is inspired by the physical idea that collapse requires blocking or strongly choking ambient access to the center region, but the exact raster, flood-fill, ring-support thresholds, and weighted-score implementation are project choices rather than a single published formula.
\[
\begin{aligned}
s_{\text{ring support}}(y)
&=
I\!\left(
s_{\text{ring,closure}}(y) \ge 0.55
\right)
\cdot
I\!\left(
f_{\text{open arc,max}}(y) \le 0.22
\right) \\
\text{ventWidthThreshold}
&=
\max\!\left(
0.8\,d_{\text{hole}},
0.12\,\mathrm{PCD}
\right) \\
I_{\text{vent blocked}}(y)
&=
s_{\text{ring support}}(y)\,
I\!\left(
\neg\,\text{openPath}(y)
\;\;\text{or}\;\;
\text{bestVentThroat}(y) \le \text{ventWidthThreshold}
\right) \\
\text{if no downstream plane is vent-blocked:}\quad
P_{\text{collapse}} &= 0 \\
\text{otherwise:}\quad
P_{\text{collapse}}
&=
\operatorname{clamp}\!\Big(
0.50\,s_{\text{block,persist}}
+ \frac{1}{3}\,s_{\text{block,strength}}
+ \frac{1}{6}\,s_{\text{ring,closure}},
0,1
\Big)
\end{aligned}
\]
This is now a vent-blocking collapsing probability. Upstream overlap, flash severity, or local compaction alone
do not increase the probability unless they first form a sufficiently closed center-surrounding ring and then block or strongly choke ambient access to the center region downstream.
The current public predictor no longer applies a downstream start gate; it inspects the full sampled window from the injector reference plane outward.
The coefficients \(0.50, \frac{1}{3}, \frac{1}{6}\) are project weights for a public predictor score, not calibrated reliability coefficients from a published dataset.