Ship the Next.js cycle editor with CAD chrome, technical HX symbols, Fixed/Free boundary guidance, and secondary water/air pressure drop support in the solver stack. Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
1.8 KiB
Markdown
57 lines
1.8 KiB
Markdown
# Flow regularization (zero-flow helpers)
|
||
|
||
Source: `crates/components/src/heat_exchanger/flow_regularization.rs`
|
||
Used by: **FloodedEvaporator** (full residual path); **Condenser** / **Evaporator** (smooth `|ṁ|` for live `C_sec`).
|
||
|
||
---
|
||
|
||
## EN
|
||
|
||
### Why
|
||
|
||
Zero mass flow is a **valid** state (staging, circuit off, Newton trial steps). Hard branches like `if |m| < ε { Q = 0 }` create **Jacobian discontinuities**.
|
||
|
||
### API
|
||
|
||
| Function | Meaning |
|
||
|----------|---------|
|
||
| `flow_activity(m, ε)` | α = m²/(m²+ε²) ∈ [0,1), α(0)=0 |
|
||
| `flow_activity_derivative` | dα/dm |
|
||
| `effective_duty(Q, α_a, α_b)` | Q_eff = α_a · α_b · Q |
|
||
| `blend_transport_residual` | blend active transport residual with Δh hold |
|
||
| `blend_transport_partials` | analytic partials of the blend |
|
||
| `smooth_mass_magnitude` | C¹-ish smooth \|m\| for `C = \|ṁ\| · cp` |
|
||
| `smooth_mass_magnitude_derivative` | d\|m\|_smooth / dm |
|
||
|
||
Defaults: `DEFAULT_M_EPS_KG_S = 1e-4`, `DEFAULT_M_SCALE_KG_S = 0.05`.
|
||
|
||
### Interaction with rating mode (Flooded)
|
||
|
||
On **FloodedEvaporator system path** (live secondary): duty uses `effective_duty` with α_ref and α_sec.
|
||
On **Flooded rating path** (scalar C_sec only): residual energy uses **full Q** (no α_ref gate) so `ṁ_ref = 0` is not a trivial root when `C_sec > 0`.
|
||
|
||
### DoF rule
|
||
|
||
Regularization **must not** change `n_equations()`. It only reshapes residual values and derivatives.
|
||
|
||
---
|
||
|
||
## FR
|
||
|
||
### Pourquoi
|
||
|
||
Le débit nul est un état **valide**. Les `if |m| < ε` durs cassent le Newton.
|
||
|
||
### API
|
||
|
||
Voir le tableau EN.
|
||
|
||
### Rating vs système (Flooded)
|
||
|
||
- **Système (ports live)** : duty régularisée α_ref · α_sec · Q.
|
||
- **Rating (scalaires)** : Q **plein** dans le résidu énergie (pas de racine triviale ṁ=0).
|
||
|
||
### Règle DoF
|
||
|
||
La régularisation **ne change pas** `n_equations()`.
|