Files
Entropyk/apps/web/public/docs/components/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

159 lines
4.6 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.
# ExpansionValve (legacy, port-based)
Config type: `"ExpansionValve"`
Source: `crates/components/src/expansion_valve.rs`
> Distinct from `IsenthalpicExpansionValve` / `EXV`. Port-object based, with On/Off/Bypass operational states.
> Distinct de `IsenthalpicExpansionValve` / `EXV`. Basé sur objets Port, avec états On/Off/Bypass.
---
## EN
### Purpose & physical model
2-port isenthalpic throttling valve for refrigeration systems:
```
h_out = h_in (isenthalpic)
ṁ_out = ṁ_in (mass continuity, with z_flow scale)
P_out < P_in (throttling — pressure not closed by a flow law here)
Q = 0, W = 0 (adiabatic, no work)
```
Operational states:
| State | Behaviour |
|-------|-----------|
| **On** | isenthalpy + mass continuity |
| **Off** | zero mass flow (`opening` < 0.01 also forces off) |
| **Bypass** | adiabatic pipe: `P_out = P_in`, `h_out = h_in` |
`opening` does **not** enter the On residual set as a continuous flow coefficient; it only gates `is_effectively_off` below a 1 % threshold. For a free continuous opening + orifice law, use `IsenthalpicExpansionValve` with `orifice_kv`.
### Residuals & `n_equations()`
```
n_equations = 2 (always)
local state: state[0]=ṁ_in, state[1]=ṁ_out
```
| Row | On | Off | Bypass |
|-----|----|-----|--------|
| r0 | `h_out h_in` | `ṁ_in = 0` | `P_out P_in` (with isenthalpy pairing) |
| r1 | `ṁ_out z_flow·ṁ_in` | 0 | `h_out h_in` |
### Ports
| Role | Description |
|------|-------------|
| inlet | high pressure, typically subcooled liquid |
| outlet | low pressure, typically two-phase |
Type-state: `ExpansionValve<Disconnected>``.connect()``ExpansionValve<Connected>`.
### Calibration
| Factor | Effect | Default |
|--------|--------|---------|
| `z_flow` | `ṁ_eff = z_flow · ṁ_in` | **1.0** |
`set_calib_indices` supports a dynamic `z_flow` state index.
### Emergent pressure / orifice
**Not available** on this component. Prefer `"IsenthalpicExpansionValve"` / `"EXV"`.
### energy_transfers
`(Q, W) = (0, 0)` always.
### JSON parameters
| Key | Meaning | Unit | Default |
|-----|---------|------|---------|
| `fluid` | refrigerant | | **required** |
| `opening` | valve position (off if < 0.01) | | 1.0 |
| `p_inlet_bar` / `h_inlet_kj_kg` | inlet IC | bar / kJ/kg | 12.0 / 260.0 |
| `p_outlet_bar` / `h_outlet_kj_kg` | outlet IC | bar / kJ/kg | 3.5 / 260.0 |
### Known limitations
- Legacy port-based residual path; less integrated with CM1.4 edge ṁ sharing than EXV.
- No emergent-pressure or orifice actuator.
- Production cycles should use `IsenthalpicExpansionValve`.
---
## FR
### But & modèle physique
Vanne de laminage isenthalpique 2-port :
```
h_out = h_in
ṁ_out = ṁ_in (avec échelle z_flow)
Q = 0, W = 0
```
États opérationnels :
| État | Comportement |
|------|--------------|
| **On** | isenthalpie + continuité de masse |
| **Off** | débit nul (`opening` < 0.01 force aussi l'arrêt) |
| **Bypass** | tube adiabatique : `P_out = P_in`, `h_out = h_in` |
`opening` ne rentre **pas** dans les résidus On comme coefficient de débit continu ; il ne sert qu'au seuil d'arrêt. Pour une ouverture libre + orifice, utiliser `IsenthalpicExpansionValve` avec `orifice_kv`.
### Résiduels & `n_equations()`
```
n_equations = 2 (toujours)
état local : state[0]=ṁ_in, state[1]=ṁ_out
```
| Ligne | On | Off | Bypass |
|-------|----|-----|--------|
| r0 | `h_out h_in` | `ṁ_in = 0` | `P_out P_in` |
| r1 | `ṁ_out z_flow·ṁ_in` | 0 | `h_out h_in` |
### Ports
| Rôle | Description |
|------|-------------|
| entrée | haute pression, liquide sous-refroidi typique |
| sortie | basse pression, biphasique typique |
Typestate : `Disconnected``.connect()``Connected`.
### Calibration
| Facteur | Effet | Défaut |
|---------|-------|--------|
| `z_flow` | `ṁ_eff = z_flow · ṁ_in` | **1.0** |
### Pression émergente / orifice
**Non disponibles.** Préférer `"IsenthalpicExpansionValve"` / `"EXV"`.
### energy_transfers
`(Q, W) = (0, 0)` toujours.
### Paramètres JSON
| Clé | Signification | Unité | Défaut |
|-----|---------------|-------|--------|
| `fluid` | frigorigène | | **requis** |
| `opening` | position (off si < 0.01) | | 1.0 |
| `p_inlet_bar` / `h_inlet_kj_kg` | CI entrée | bar / kJ/kg | 12.0 / 260.0 |
| `p_outlet_bar` / `h_outlet_kj_kg` | CI sortie | bar / kJ/kg | 3.5 / 260.0 |
### Limites connues
- Chemin legacy port-object, moins intégré au partage ṁ CM1.4 que l'EXV.
- Pas de pression émergente ni d'actionneur orifice.
- Les cycles de production doivent utiliser `IsenthalpicExpansionValve`.