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>
3.4 KiB
Evaporator / EvaporatorCoil
Config types: "Evaporator", "EvaporatorCoil"
Source: crates/components/src/heat_exchanger/evaporator.rs
EN
Purpose & physical model
DX (direct-expansion) evaporator: refrigerant outlet is superheated vapor (not flooded two-phase). Phase-change ε-NTU against a hot secondary stream:
ε = 1 − exp(−UA / C_sec)
Q = ε · C_sec · (T_sec,in − T_evap(P)) # heat absorbed by refrigerant
- Optional refrigerant ΔP = k·ṁ·|ṁ|
EvaporatorCoillocks secondary side to Air- No plate correlation (see BPHX / Longo–Shah for geometry-based UA)
Difference vs FloodedEvaporator: DX uses superheat closure (or regulated SH); flooded uses saturated vapor (or quality) by default.
Dual secondary modes (Newton)
| Mode | Secondary | n_secondary |
|---|---|---|
| System | Live secondary_inlet / secondary_outlet |
1 or 2 |
| Rating | Scalars T_sec + C_sec (ṁ·cp) | 0 |
coupled_ready = refrigerant ready and (live edges or rating scalars).
live_secondary_stream = edges first, else rating scalars.
Residuals & n_equations() (coupled emergent)
| Row | Equation |
|---|---|
| r0 | P_out − (P_in − ΔP) (optional skip) |
| r1 | ṁ · (h_out − h_in) − Q |
| r2 | h_out − h(P, T_evap+SH) if superheat is imposed |
| r_mass | dropped if same-branch |
| r_sec | live secondary mass/energy if edges |
n_thermo = base (1 or 2) + 1 if imposes_superheat()
n_equations = n_thermo + mass? + n_secondary
Superheat regulation (DoF)
| Setting | Effect |
|---|---|
| Default | SH residual active (superheat_k target) when emergent |
superheat_regulated: true |
Drops SH residual (−1 eq) |
If SH residual is dropped, pair with a free EXV opening (and usually a control loop) so the system stays square. CLI DoF gate enforces balance.
Ports
| Port | Index |
|---|---|
inlet / outlet |
0 / 1 refrigerant |
secondary_inlet / secondary_outlet |
2 / 3 secondary |
Calibration
| Factor | Default | Notes |
|---|---|---|
z_ua |
1.0 | UA scale |
z_dp |
1.0 | ΔP scale |
UI Fixed: SST (saturationTemperature) + free z_ua for inverse calib.
JSON parameters (main)
| Key | Meaning | Default |
|---|---|---|
ua |
UA [W/K] | required |
emergent_pressure |
free P_evap | false |
superheat_k |
SH target [K] | 5 |
superheat_regulated |
drop SH residual | false |
secondary_fluid / secondary_* |
system edges or rating | – |
skip_pressure_eq |
drop ΔP residual | false |
energy_transfers
Coupled: Q = ṁ·(h_out − h_in) as positive heat (cooling capacity).
Zero flow
Smooth |ṁ| for live C_sec; no silent mass-index→pressure fallback.
FR
But & modèle
Évaporateur DX (sortie surchauffée). Duty ε-NTU :
Q = ε · C_sec · (T_sec,in − T_evap(P))
Différence avec FloodedEvaporator : clôture superheat, pas vapeur saturée noyée.
Modes secondaire
- Système : ports live
- Rating : scalaires T + ṁ·cp dans le Newton
Régulation de surchauffe
superheat_regulated: true enlève le résidu SH → libérer l’ouverture EXV (contrôle).
Calibration
z_ua = 1 par défaut. Fixed SST + Z_UA libre pour calage.
Ports / JSON
Voir EN.