Files
Entropyk/apps/web/public/docs/components/isenthalpic-expansion-valve.md
sepehr 3358b74342 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>
2026-07-17 22:46:46 +02:00

151 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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).