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>
151 lines
5.3 KiB
Markdown
151 lines
5.3 KiB
Markdown
# IsenthalpicExpansionValve (EXV)
|
||
|
||
Config types: `"IsenthalpicExpansionValve"`, `"EXV"`
|
||
Source: `crates/components/src/isenthalpic_expansion_valve.rs`
|
||
|
||
---
|
||
|
||
## EN
|
||
|
||
### Purpose & physical model
|
||
|
||
Isenthalpic expansion (throttling) valve for vapor-compression cycles. Three model families:
|
||
|
||
| Family | Trigger | Physics |
|
||
|--------|---------|---------|
|
||
| **A — Fixed pressure** | default | Pins `P_out = P_sat(T_evap)` + isenthalpy |
|
||
| **B — Emergent pressure** | `emergent_pressure: true` | Isenthalpy only; low-side P from evaporator |
|
||
| **C — Orifice** | `orifice_kv` set | Emergent + physical flow law; **opening is a free DoF** |
|
||
|
||
Orifice law (arch-6 physical actuator):
|
||
|
||
```
|
||
ṁ = Kv · opening · √(2 · ρ_in · max(P_in − P_out, 0)) , opening ∈ [0, 1]
|
||
```
|
||
|
||
`with_orifice(kv)` / JSON `orifice_kv` forces `emergent_pressure = true`.
|
||
|
||
### Residuals & `n_equations()`
|
||
|
||
| Mode | same-branch | orifice | n_equations | Residuals |
|
||
|------|-------------|---------|-------------|-----------|
|
||
| Fixed P | no | no | 3 | r0 `P_out − P_sat(T_evap)`; r1 `h_out − h_in`; r2 `ṁ_out − ṁ_in` |
|
||
| Fixed P | yes | no | 2 | r0, r1 |
|
||
| Emergent | no | no | 2 | r0 `h_out − h_in`; r1 `ṁ_out − ṁ_in` |
|
||
| Emergent | yes | no | 1 | r0 `h_out − h_in` |
|
||
| Emergent + orifice | either | yes | +1 | + `ṁ − Kv·opening·√(2·ρ_in·ΔP)` |
|
||
|
||
Orifice adds **1 equation** and the opening adds **1 unknown** → DoF stays balanced. Pair with a `superheat_regulated` evaporator (drops its SH residual) and a controller on `opening` for regulated superheat.
|
||
|
||
### Ports
|
||
|
||
| Edge | Role |
|
||
|------|------|
|
||
| 0 | inlet (cond → EXV) |
|
||
| 1 | outlet (EXV → evap) |
|
||
|
||
### Emergent pressure
|
||
|
||
Enabled by `emergent_pressure: true` or automatically by orifice mode. Removes the `P_out = P_sat(T_evap)` pin.
|
||
|
||
### Calibration / actuators
|
||
|
||
| Item | Notes |
|
||
|------|-------|
|
||
| Control factor `"opening"` | maps to `actuator` slot; requires `orifice_kv` |
|
||
| Free actuator `{name}__opening` | registered when orifice configured without a loop |
|
||
| `z_flow` / `z_dp` | **not** used on this component |
|
||
|
||
### measure_output / energy_transfers
|
||
|
||
Not specialized (`energy_transfers` none / adiabatic throttling: Q = W = 0).
|
||
|
||
### JSON parameters
|
||
|
||
| Key | Meaning | Unit | Default |
|
||
|-----|---------|------|---------|
|
||
| `t_evap_k` | target evaporating T for P_sat | K | 275.15 |
|
||
| `fluid` | refrigerant | – | primary |
|
||
| `emergent_pressure` | drop P_evap pin | bool | false |
|
||
| `orifice_kv` | orifice coefficient Kv | m² | – (none ⇒ no orifice) |
|
||
| `orifice_opening_init` | initial opening | – | 0.5 |
|
||
| `orifice_opening_min` | min bound | – | 0.02 |
|
||
| `orifice_opening_max` | max bound | – | 1.0 |
|
||
|
||
### Notes
|
||
|
||
Preferred EXV for modern cycle configs. For the older port-object valve with On/Off/Bypass see [expansion-valve.md](./expansion-valve.md).
|
||
|
||
---
|
||
|
||
## FR
|
||
|
||
### But & modèle physique
|
||
|
||
Détendeur isenthalpique (laminage) pour cycles à compression de vapeur. Trois familles :
|
||
|
||
| Famille | Déclencheur | Physique |
|
||
|---------|-------------|----------|
|
||
| **A — Pression fixée** | défaut | Impose `P_out = P_sat(T_evap)` + isenthalpie |
|
||
| **B — Pression émergente** | `emergent_pressure: true` | Isenthalpie seule ; P BP par l'évaporateur |
|
||
| **C — Orifice** | `orifice_kv` | Émergent + loi de débit ; **ouverture = DoF libre** |
|
||
|
||
Loi d'orifice :
|
||
|
||
```
|
||
ṁ = Kv · opening · √(2 · ρ_in · max(P_in − P_out, 0)) , opening ∈ [0, 1]
|
||
```
|
||
|
||
`orifice_kv` force `emergent_pressure = true`.
|
||
|
||
### Résiduels & `n_equations()`
|
||
|
||
| Mode | même branche | orifice | n_equations | Résidus |
|
||
|------|--------------|---------|-------------|---------|
|
||
| P fixe | non | non | 3 | r0 `P_out − P_sat(T_evap)` ; r1 `h_out − h_in` ; r2 `ṁ_out − ṁ_in` |
|
||
| P fixe | oui | non | 2 | r0, r1 |
|
||
| Émergent | non | non | 2 | r0 `h_out − h_in` ; r1 `ṁ_out − ṁ_in` |
|
||
| Émergent | oui | non | 1 | r0 `h_out − h_in` |
|
||
| Émergent + orifice | – | oui | +1 | + `ṁ − Kv·opening·√(2·ρ_in·ΔP)` |
|
||
|
||
L'orifice ajoute **1 équation** et l'ouverture **1 inconnu** → DoF équilibré. Couplé à un évaporateur `superheat_regulated` et un contrôleur sur `opening`, la surchauffe devient régulée.
|
||
|
||
### Ports
|
||
|
||
| Arête | Rôle |
|
||
|-------|------|
|
||
| 0 | entrée (cond → EXV) |
|
||
| 1 | sortie (EXV → évap) |
|
||
|
||
### Pression émergente
|
||
|
||
Via `emergent_pressure: true` ou automatiquement en mode orifice. Supprime le pin `P_out = P_sat(T_evap)`.
|
||
|
||
### Calibration / actionneurs
|
||
|
||
| Élément | Notes |
|
||
|---------|-------|
|
||
| Facteur `"opening"` | mappe le slot `actuator` ; nécessite `orifice_kv` |
|
||
| Actionneur libre `{name}__opening` | si orifice sans boucle |
|
||
| `z_flow` / `z_dp` | **non** utilisés |
|
||
|
||
### measure_output / energy_transfers
|
||
|
||
Non spécialisés ; laminage adiabatique (Q = W = 0).
|
||
|
||
### Paramètres JSON
|
||
|
||
| Clé | Signification | Unité | Défaut |
|
||
|-----|---------------|-------|--------|
|
||
| `t_evap_k` | T évaporation cible pour P_sat | K | 275.15 |
|
||
| `fluid` | frigorigène | – | primaire |
|
||
| `emergent_pressure` | supprime le pin P_evap | bool | false |
|
||
| `orifice_kv` | coefficient d'orifice Kv | m² | – (aucun ⇒ pas d'orifice) |
|
||
| `orifice_opening_init` | ouverture initiale | – | 0.5 |
|
||
| `orifice_opening_min` | borne min | – | 0.02 |
|
||
| `orifice_opening_max` | borne max | – | 1.0 |
|
||
|
||
### Notes
|
||
|
||
EXV préféré pour les configs de cycle modernes. Ancienne vanne port-object → [expansion-valve.md](./expansion-valve.md).
|