Some checks failed
CI / check (push) Has been cancelled
Capture uncommitted solver robustness work (regularization, domain errors, linear solver lifecycle, tube DP/MSH), web workbench updates, and synced BMAD skills across IDE agent folders before starting BPHX pressure-drop. Co-authored-by: Cursor <cursoragent@cursor.com>
124 lines
3.4 KiB
Markdown
124 lines
3.4 KiB
Markdown
# 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·ṁ·|ṁ|
|
||
- `EvaporatorCoil` locks 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.
|