Add diagram workbench UI with Modelica DoF coaching and ISO glyphs.
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>
This commit is contained in:
123
apps/web/public/docs/components/evaporator.md
Normal file
123
apps/web/public/docs/components/evaporator.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user