# ⚙ 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
MacroComponent — Chiller A
↘ refrig_in · 24 bar · 465 kJ/kg
🔵 Comp.
2 éq.
🔴 Cond.
2 éq.
🟡 EXV
1 éq.
🟢 Évap.
2 éq.
↗ 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.
↗ refrig_out · 8.5 bar · 260 kJ/kg
🔀 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));