feat(components): add ThermoState generators and Eurovent backend demo
This commit is contained in:
141
demo/README.md
Normal file
141
demo/README.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user