⚙ Entropyk — FlowSplitter & FlowMerger

Deux chillers R410A Eurovent A7/W35 en parallèle avec vrais composants de jonction

Source / Dest (eau)
FlowSplitter / FlowMerger
MacroComponent (Chiller)
Bord / état (P, h)

Topologie du système parent

ParentSystem · R410A compressible · 4 bords · 26 equations
🟢 Source
eau froide
3.0 bar
29.4 kJ/kg
e0 · R410A
🔀 Splitter
FlowSplitter
3 éq.
24.0 bar
465 kJ/kg
e1 e2
MacroComponent — Chiller A
↘ refrig_in · 24 bar · 465 kJ/kg
🔵 Comp.
2 éq.
🔴 Cond.
2 éq.
🟡 EXV
1 éq.
🟢 Évap.
2 éq.
retour · 8.5 bar · 425 kJ/kg
↗ refrig_out · 8.5 bar · 260 kJ/kg
MacroComponent — Chiller B
↘ refrig_in · 24 bar · 465 kJ/kg
🔵 Comp.
2 éq.
🔴 Cond.
2 éq.
🟡 EXV
1 éq.
🟢 Évap.
2 éq.
retour · 8.5 bar · 425 kJ/kg
↗ refrig_out · 8.5 bar · 260 kJ/kg
e3 e4
🔀 Merger
FlowMerger
3 éq.
8.5 bar
260 kJ/kg
e5 · R410A
🟢 Dest.
condenseur eau
8.5 bar
260 kJ/kg

Équations des composants de jonction

🔀 FlowSplitter::compressible("R410A") — 1 → 2
Type Équation (résidu = 0) Valeur
Isobare
branch 1
P_out_A − P_in = 0 24.0 − 24.0 = 0
Isobare
branch N
P_out_B − P_in = 0 24.0 − 24.0 = 0
Isenthalpique
branch 1
h_out_A − h_in = 0 465 − 465 = 0
Total n_eq = 2·N − 1 N=2 → 3 éq.
🔀 FlowMerger::compressible("R410A") — 2 → 1
Type Équation (résidu = 0) Valeur
Isobare
inlets 2..N
P_in_B − P_in_A = 0 8.5 − 8.5 = 0
Isobare
sortie
P_out − P_in_A = 0 8.5 − 8.5 = 0
Mélange
enthalpie
h_out − Σ(ṁ_k·h_k)/Σṁ_k = 0 (260+260)/2 = 260
Total n_eq = N + 1 N=2 → 3 éq.

Valeurs au point de fonctionnement Eurovent A7/W35

FlowSplitter — Bords

FluideR410A (compressible)
P entrée (e0)24.0 bar
h entrée (e0)465 kJ/kg
P sortie A (e1)24.0 bar ✓
P sortie B (e2)24.0 bar ✓
h sortie A (e1)465 kJ/kg ✓
n_equations2·2−1 = 3

FlowMerger — Bords

FluideR410A (compressible)
P sortie basse8.5 bar
h in_A (e3)260 kJ/kg
h in_B (e4)260 kJ/kg
h out mélangé260 kJ/kg ✓
ṁ_A = ṁ_B0.045 kg/s
n_equations2+1 = 3

Chiller A & B (chacun)

Compresseur8.5 → 24 bar
W_comp2.43 kW
T condensation40 °C
T évaporation2 °C
Superheat EXV5 K
Q chiller9.22 kW
COP chaud3.80

Système total parallèle

Nœuds parent4
Bords parent6 (e0..e5)
Éq. Splitter3
Éq. Chiller A11
Éq. Chiller B11
Éq. Merger3
Total équations28
Q total18.45 kW
W total4.86 kW

API Rust (usage)

// ── FlowSplitter compressible 1→2 ─────────────────────────────────────
let splitter = FlowSplitter::compressible(
    "R410A",
    inlet_port,                         // 24 bar · 465 kJ/kg
    vec![outlet_chiller_a, outlet_chiller_b],
).unwrap();
// n_equations = 2·N − 1 = 3 (N=2 branches)

// ── FlowMerger compressible 2→1 avec débit pondéré ────────────────────
let merger = FlowMerger::compressible(
    "R410A",
    vec![out_chiller_a, out_chiller_b], // 8.5 bar · 260 kJ/kg chacun
    outlet_port,
).unwrap()
.with_mass_flows(vec![0.045, 0.045]).unwrap();
// n_equations = N + 1 = 3 (N=2 inlets)
// h_out_mixed = (0.045·260 + 0.045·260) / 0.09 = 260 kJ/kg ✓

// ── Version incompressible (eau côté condenseur) ──────────────────────
let water_splitter = FlowSplitter::incompressible(
    "Water",
    water_inlet, vec![branch_a, branch_b],
).unwrap();

// Utilisation comme Box<dyn Component> dans le System parent :
let node_s = parent.add_component(Box::new(splitter));
let node_m = parent.add_component(Box::new(merger));