142 lines
4.5 KiB
Markdown
142 lines
4.5 KiB
Markdown
# 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
|
|
```
|