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

215 lines
8.0 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.
# IsentropicCompressor
Config type: `"IsentropicCompressor"`
Source: `crates/components/src/isentropic_compressor.rs`
---
## EN
### Purpose & physical model
Vapor-compression compressor for cycle simulation. Two operating families:
| Mode | When | Mass / pressure behaviour |
|------|------|---------------------------|
| **Fixed-pressure** (default) | `emergent_pressure: false` | Pins `P_dis = P_sat(T_cond)`; mass continuity across suction/discharge |
| **Emergent-pressure** | `emergent_pressure: true` | Closes ṁ with a **volumetric displacement law**; `P_dis` floats from the condenser ↔ secondary balance |
True isentropic path via CoolProp: `(P,h)→s` then `(P,s)→h_is`, corrected by isentropic efficiency:
```
h_dis = h_suc + (h_is h_suc) / η_is,eff
```
Swept mass flow (emergent only):
```
ṁ_calc = ρ_suc · V_s · N · η_vol(P_dis/P_suc) · f_VSD,vol
ṁ = σ · z_flow · ṁ_calc
```
Volumetric efficiency models:
| Model | Formula |
|-------|---------|
| Constant | `η_vol = const` (default 1.0) |
| Clearance | `η_vol = 1 + C C · (P_dis/P_suc)^(1/n)` |
Optional **VSD speed map** (quadratic, identity default `[1,0,0]`):
```
f(r) = c0 + c1·r + c2·r² , r = N / N_ref , clamped ∈ [0.1, 1.2]
η_vol,eff = η_vol · f_vol(r) ; η_is,eff = η_is · f_is(r)
```
Optional **liquid injection** desuperheat (no extra equation; φ from controls):
```
h_dis,eff = h_dis φ_inj · (h_dis h_f(P_dis)) , φ_inj ∈ [0, φ_max]
```
Design anchors `t_cond_k`, `t_evap_k`, `superheat_k` are used for fixed-pressure pins and as initial-condition helpers; in emergent mode the live suction `(P,h)` drives the isentropic path.
### Residuals & `n_equations()`
```
n_equations = (2 if same_branch else 3) + (1 if slide_valve active else 0)
```
| Row | Fixed-pressure | Emergent-pressure |
|-----|----------------|-------------------|
| r0 | `P_dis P_sat(T_cond)` | `ṁ σ·z_flow·ṁ_calc` |
| r1 | `H_dis h_dis` | `H_dis h_dis,eff` |
| r2 | `ṁ_dis ṁ_suc` (dropped if same-branch) | same |
| r3 | — | (slide) `T_sat(P_suc) SST_target` |
### Ports
| Index | Role |
|-------|------|
| 0 | suction (inlet) |
| 1 | discharge (outlet) |
Edge-wired via `set_system_context` (CM1.3 ṁ/P/h triples). `get_ports()` may be empty.
### Emergent pressure & actuators
- Requires `displacement_m3` and `speed_hz` when `emergent_pressure: true`.
- **Slide valve** (`slide_valve_sst_target_k` / `_c`): free actuator σ ∈ [σ_min, 1] scales swept volume and holds SST.
- **Liquid injection** (`liquid_injection: true`): φ_inj on the `actuator` / control factor `"injection"`; closing equation from a user `controls[]` loop (e.g. max DGT), not hard-coded.
### Calibration
| Factor | Effect | Default |
|--------|--------|---------|
| `z_flow` | scales swept ṁ (emergent r0) | **1.0** |
| `actuator` | slide σ **or** injection φ | |
### measure_output / energy_transfers
- `measure_output(Temperature)` → discharge gas temperature (DGT) for injection control.
- `energy_transfers`: `(Q, W) = (0, −ṁ·(h_dis,work h_suc))` — adiabatic; shaft work negative. With liquid injection, work uses un-desuperheated compression enthalpy.
### JSON parameters
| Key | Meaning | Unit | Default |
|-----|---------|------|---------|
| `isentropic_efficiency` | η_is | | 0.75 |
| `t_cond_k` | condensing sat. T (fixed pin / design) | K | 323.15 |
| `t_evap_k` | evaporating sat. T (design) | K | 275.15 |
| `superheat_k` | suction superheat design | K | 5.0 |
| `fluid` | refrigerant | | primary |
| `emergent_pressure` | enable displacement closure | bool | false |
| `displacement_m3` | swept volume V_s | m³/rev | 0.0 |
| `speed_hz` | rotational speed N | rev/s | 0.0 |
| `volumetric_efficiency` | constant η_vol | | 1.0 |
| `clearance` | clearance ratio C (enables clearance model) | | |
| `polytropic_n` | re-expansion exponent | | 1.1 |
| `vsd_reference_speed_hz` | VSD N_ref (enables map) | rev/s | |
| `vsd_volumetric_coeffs` | `[c0,c1,c2]` η_vol map | | [1,0,0] |
| `vsd_isentropic_coeffs` | `[c0,c1,c2]` η_is map | | [1,0,0] |
| `slide_valve_sst_target_k` / `_c` | slide SST setpoint | K / °C | |
| `liquid_injection` | enable injection desuperheat | bool | false |
| `slide_position_init` / `min` / `max` | free-actuator bounds | | 1.0 / 0.1 / 1.0 |
### Notes
Preferred cycle compressor for physics-based machines. For manufacturer AHRI maps use `"Compressor"`; for economized screws use `"ScrewEconomizerCompressor"`.
---
## FR
### But & modèle physique
Compresseur à compression de vapeur. Deux familles de fonctionnement :
| Mode | Quand | Comportement |
|------|-------|--------------|
| **Pression fixée** (défaut) | `emergent_pressure: false` | Impose `P_dis = P_sat(T_cond)` ; continuité de masse |
| **Pression émergente** | `emergent_pressure: true` | Ferme ṁ par une **loi volumétrique** ; `P_dis` flotte via le condenseur |
Chemin isentropique CoolProp + rendement :
```
h_dis = h_suc + (h_is h_suc) / η_is,eff
```
Débit balayé (émergent) :
```
ṁ_calc = ρ_suc · V_s · N · η_vol(P_dis/P_suc) · f_VSD,vol
ṁ = σ · z_flow · ṁ_calc
```
Modèles de rendement volumétrique : constant, ou volume mort `η_vol = 1 + C C·Pr^(1/n)`.
Carte VSD optionnelle (quadratique, identité `[1,0,0]`).
Injection liquide optionnelle : `h_dis,eff = h_dis φ_inj·(h_dis h_f(P_dis))` (pas d'équation interne).
### Résiduels & `n_equations()`
```
n_equations = (2 si même branche sinon 3) + (1 si tiroir actif)
```
| Ligne | Pression fixée | Pression émergente |
|-------|----------------|--------------------|
| r0 | `P_dis P_sat(T_cond)` | `ṁ σ·z_flow·ṁ_calc` |
| r1 | `H_dis h_dis` | `H_dis h_dis,eff` |
| r2 | `ṁ_dis ṁ_suc` (supprimée si même branche) | idem |
| r3 | — | (tiroir) `T_sat(P_suc) SST_cible` |
### Ports
| Index | Rôle |
|-------|------|
| 0 | aspiration (entrée) |
| 1 | refoulement (sortie) |
Câblage par arêtes (`set_system_context`, triples ṁ/P/h CM1.3).
### Pression émergente & actionneurs
- `displacement_m3` et `speed_hz` obligatoires en mode émergent.
- **Tiroir** (`slide_valve_sst_target_k` / `_c`) : actionneur libre σ pour tenir la SST.
- **Injection liquide** : φ_inj via boucle `controls[]` (ex. DGT max), facteur `"injection"`.
### Calibration
| Facteur | Effet | Défaut |
|---------|-------|--------|
| `z_flow` | échelle le débit balayé | **1.0** |
| `actuator` | position tiroir σ **ou** ratio d'injection φ | |
### measure_output / energy_transfers
- `Temperature` → température des gaz de refoulement (DGT).
- `(Q, W) = (0, −ṁ·(h_dis,work h_suc))` — adiabatique ; travail sur le compresseur négatif.
### Paramètres JSON
| Clé | Signification | Unité | Défaut |
|-----|---------------|-------|--------|
| `isentropic_efficiency` | η_is | | 0.75 |
| `t_cond_k` | T sat. condensation (pin / design) | K | 323.15 |
| `t_evap_k` | T sat. évaporation (design) | K | 275.15 |
| `superheat_k` | surchauffe aspiration design | K | 5.0 |
| `fluid` | fluide frigorigène | | primaire |
| `emergent_pressure` | active la fermeture volumétrique | bool | false |
| `displacement_m3` | cylindrée V_s | m³/tr | 0.0 |
| `speed_hz` | vitesse N | tr/s | 0.0 |
| `volumetric_efficiency` | η_vol constant | | 1.0 |
| `clearance` | rapport volume mort C | | |
| `polytropic_n` | exposant de détente | | 1.1 |
| `vsd_reference_speed_hz` | N_ref carte VSD | tr/s | |
| `vsd_volumetric_coeffs` | `[c0,c1,c2]` carte η_vol | | [1,0,0] |
| `vsd_isentropic_coeffs` | `[c0,c1,c2]` carte η_is | | [1,0,0] |
| `slide_valve_sst_target_k` / `_c` | consigne SST tiroir | K / °C | |
| `liquid_injection` | active la désurchauffe par injection | bool | false |
| `slide_position_init` / `min` / `max` | bornes actionneur libre | | 1.0 / 0.1 / 1.0 |
### Notes
Compresseur de cycle préféré pour les machines physiques. Cartes fabricant AHRI → `"Compressor"` ; vis économisée → `"ScrewEconomizerCompressor"`.