Entropyk/demo/src/main.rs

108 lines
3.4 KiB
Rust

//! Demo Entropyk - Test du State Machine (ON/OFF/BYPASS)
//!
//! Ce fichier montre comment utiliser OperationalState et CircuitId
use colored::Colorize;
use entropyk_components::state_machine::{CircuitId, OperationalState};
fn print_header(title: &str) {
println!();
println!("{}", "".repeat(60).cyan());
println!("{}", format!(" {}", title).cyan().bold());
println!("{}", "".repeat(60).cyan());
}
fn main() {
println!(
"{}",
"\n╔══════════════════════════════════════════════════════════╗".green()
);
println!(
"{}",
"║ DEMO ENTROPYK - State Machine (ON/OFF/BYPASS) ║"
.green()
.bold()
);
println!(
"{}",
"╚══════════════════════════════════════════════════════════╝\n".green()
);
print_header("États Opérationnels");
println!();
println!("Les composants peuvent être dans 3 états:");
println!();
for state in [
OperationalState::On,
OperationalState::Off,
OperationalState::Bypass,
] {
println!(" {:?}:", state);
println!(" - Actif: {}", state.is_active());
println!(
" - Multiplicateur débit: {:.1}",
state.mass_flow_multiplier()
);
match state {
OperationalState::On => {
println!(" → Composant fonctionne normalement");
}
OperationalState::Off => {
println!(" → Composant arrêté, débit = 0");
}
OperationalState::Bypass => {
println!(" → Composant court-circuité (P_in = P_out, h_in = h_out)");
}
}
println!();
}
print_header("CircuitId (Multi-Circuit)");
println!();
println!("Un système peut avoir jusqu'à 5 circuits indépendants:");
println!();
let circuits = vec![
CircuitId::from_number(0),
CircuitId::from_number(1),
CircuitId::default(),
];
for circuit in &circuits {
println!(" Circuit: {}", circuit);
}
println!();
println!(" Utilisation typique:");
println!(" - Circuit 0: Boucle réfrigérant principale");
println!(" - Circuit 1: Circuit eau/glycol");
println!(" - Circuit 2: Circuit secondaire (optionnel)");
print_header("Exemples d'utilisation");
println!();
println!(" // Créer un système multi-circuit");
println!(" let mut system = System::new();");
println!(" system.add_component_to_circuit(compressor, CircuitId(0));");
println!(" system.add_component_to_circuit(pump, CircuitId(1));");
println!();
println!(" // Couplage thermique entre circuits");
println!(" let coupling = ThermalCoupling::new(");
println!(" CircuitId(0), // chaud");
println!(" CircuitId(1), // froid");
println!(" ThermalConductance::from_watts_per_kelvin(5000.0),");
println!(" );");
println!();
println!("{}", "".repeat(60).cyan());
println!(
"{}",
" Voir 'cargo run --bin thermal-coupling' pour la démo complète".cyan()
);
println!("{}", "".repeat(60).cyan());
}