# Entropyk Demo

Ce dossier contient des exemples démontrant les fonctionnalités actuelles de la bibliothèque Entropyk.

## Exemples disponibles

### 1. Chiller System (Recommandé)
```bash
cargo run --bin chiller
```

Simulation complète d'un système de refroidissement (water chiller):
- **Condenseur à air**: 35°C ambiant, approche 10K
- **Évaporateur BPHE**: Eau 12°C → 7°C, 0.5 kg/s
- **Compresseur**: R410A, 2900 RPM, 30cc
- **EXV**: Détendeur isenthalpique

Le demo montre:
- Calcul du point de design (Q_evap, Q_cond, COP)
- Création des composants (CondenserCoil, Evaporator)
- Topologie multi-circuit (réfrigérant + eau)
- Couplage thermique entre circuits
- Détection de dépendances circulaires

### 2. Thermal Coupling (Story 3.4)
```bash
cargo run --bin thermal-coupling
```

Démontre l'API de couplage thermique:
- `ThermalCoupling` struct
- `compute_coupling_heat()` avec convention de signe
- Détection de dépendances circulaires
- `coupling_groups()` (SCC)

### 3. State Machine
```bash
cargo run --bin compressor-test
```

États opérationnels des composants:
- ON/OFF/BYPASS
- Multiplicateurs de débit
- CircuitId

## Architecture du projet

```
entropyk/
├── crates/
│   ├── core/           # Types physiques (Pressure, Temperature, ThermalConductance)
│   ├── components/     # Composants (Compressor, Valve, Condenser, Evaporator, Pump)
│   ├── solver/         # Topologie système, circuits, couplages thermiques
│   └── fluids/         # Propriétés des fluides (CoolProp)
└── demo/
    └── src/
        ├── main.rs              # Test state machine
        └── bin/
            ├── chiller.rs       # Démo système complet
            └── thermal_coupling.rs  # Démo couplage thermique
```

## Capacités actuelles

| Feature | Status | Story |
|---------|--------|-------|
| Types physiques (NewType) | ✅ | 1.2 |
| Composant Trait | ✅ | 1.1 |
| Ports & Connexions | ✅ | 1.3 |
| Compressor AHRI 540 | ✅ | 1.4 |
| Heat Exchangers (LMTD, ε-NTU) | ✅ | 1.5 |
| Expansion Valve | ✅ | 1.6 |
| State Machine (ON/OFF/BYPASS) | ✅ | 1.7 |
| Multi-circuit System | ✅ | 3.3 |
| **Thermal Coupling** | ✅ | **3.4** |
| Solver (Newton-Raphson) | 🔜 | 4.x |

## Résultat du chiller demo

```
╔══════════════════════════════════════════════════════════════════╗
║        ENTROPYK - Water Chiller System Demo                      ║
╚══════════════════════════════════════════════════════════════════╝

  Water Side (Evaporator Load)
    T_water_in:    12.0°C
    T_water_out:   7.0°C
    ṁ_water:       0.50 kg/s (30 L/min)
    Q_evap:        10.5 kW

  Air Side (Condenser Rejection)
    T_ambient:     35.0°C
    T_cond:        45.0°C
    Q_cond:        13.5 kW

  Refrigerant Cycle (R410A)
    T_evap:        2.0°C
    T_cond:        45.0°C
    ΔT_lift:       43.0 K
    PR:            3.00

  PERFORMANCE (Design Point)
    Q_evap:       10.5 kW
    Q_cond:       13.5 kW
    W_comp:       2.99 kW
    COP:          3.5
```

## Exemple de code

```rust
use entropyk_solver::{System, ThermalCoupling, CircuitId, compute_coupling_heat};
use entropyk_core::{Temperature, ThermalConductance};
use entropyk_components::heat_exchanger::{CondenserCoil, Evaporator};

// Créer un système multi-circuit
let mut system = System::new();

// Circuit 0: Réfrigérant
system.add_component_to_circuit(compressor, CircuitId(0)).unwrap();
system.add_component_to_circuit(CondenserCoil::new(1346.0), CircuitId(0)).unwrap();
system.add_component_to_circuit(exv, CircuitId(0)).unwrap();
system.add_component_to_circuit(Evaporator::with_superheat(1451.0, 275.15, 5.0), CircuitId(0)).unwrap();

// Circuit 1: Eau
system.add_component_to_circuit(pump, CircuitId(1)).unwrap();

// Couplage thermique (échangeur de chaleur)
let coupling = ThermalCoupling::new(
    CircuitId(1), // Circuit chaud (eau)
    CircuitId(0), // Circuit froid (réfrigérant)
    ThermalConductance::from_watts_per_kelvin(1451.0),
);
system.add_thermal_coupling(coupling).unwrap();

// Calcul du transfert de chaleur
let t_hot = Temperature::from_celsius(12.0);
let t_cold = Temperature::from_celsius(2.0);
let q = compute_coupling_heat(&coupling, t_hot, t_cold);
// Q ≈ 13.8 kW
```
