Files
Entropyk/docs/CLI_TUTORIAL.md
sepehr 5bd180b5b8
Some checks failed
CI / check (push) Has been cancelled
Snapshot WIP: solver HP epic progress, BPHX/HX physics, BMAD skill refresh.
Capture uncommitted solver robustness work (regularization, domain errors, linear solver lifecycle, tube DP/MSH), web workbench updates, and synced BMAD skills across IDE agent folders before starting BPHX pressure-drop.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 16:35:31 +02:00

285 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Tutoriel Entropyk CLI — Mode ligne de commande
Ce tutoriel décrit **pas à pas**, sans raccourci, comment utiliser loutil Entropyk en **mode CLI** pour construire et lancer une simulation thermodynamique. À la fin, tu auras un système sample fonctionnel et une config JSON réutilisable.
**Public :** utilisateur qui veut tester le CLI (validate, run, batch) et construire un premier système sample.
---
## Sommaire
1. [Prérequis et compilation du CLI](#1-prérequis-et-compilation-du-cli)
2. [Vérifier linstallation et laide](#2-vérifier-linstallation-et-laide)
3. [Valider un fichier de configuration (validate)](#3-valider-un-fichier-de-configuration-validate)
4. [Lancer une simulation (run)](#4-lancer-une-simulation-run)
5. [Comprendre le format JSON (circuits, composants, arêtes)](#5-comprendre-le-format-json)
6. [Créer notre fichier sample pas à pas](#6-créer-notre-fichier-sample-pas-à-pas)
7. [Exporter les résultats (option -o)](#7-exporter-les-résultats-option--o)
8. [Mode batch (optionnel)](#8-mode-batch-optionnel)
9. [Qualifier une machine à charge partielle (rate — IPLV / ESEER)](#9-qualifier-une-machine-à-charge-partielle-rate--iplv--eseer)
10. [Performances saisonnières (scop / seer — méthode par bins EN 14825)](#10-performances-saisonnières-scop--seer--méthode-par-bins-en-14825)
---
## 1. Prérequis et compilation du CLI
Tu dois être à la racine du dépôt Entropyk et avoir Rust installé (`rustc`, `cargo`).
**Étape 1.1 — Aller à la racine du projet**
```bash
cd /chemin/vers/Entropyk
```
Remplace `/chemin/vers/Entropyk` par ton chemin réel (par exemple `~/dev/Entropyk`).
**Étape 1.2 — Compiler le CLI (release, pour de bonnes perfs)**
```bash
cargo build --release --package entropyk-cli
```
La première fois, la compilation peut prendre une à deux minutes. À la fin, lexécutable se trouve ici :
- **Linux / macOS :** `target/release/entropyk-cli`
- **Windows :** `target\release\entropyk-cli.exe`
**Étape 1.3 — Vérifier que lexécutable existe**
Sous Linux/macOS :
```bash
ls -l target/release/entropyk-cli
```
Tu dois voir un fichier binaire. Pour lappeler, tu peux soit utiliser le chemin complet, soit te placer à la racine du projet et lancer :
```bash
./target/release/entropyk-cli
```
ou, si `target/release` est dans ton `PATH` :
```bash
entropyk-cli
```
Dans la suite du tutoriel, on utilisera `./target/release/entropyk-cli` depuis la racine du projet pour être explicite.
---
## 2. Vérifier linstallation et laide
**Étape 2.1 — Afficher laide générale**
Depuis la racine du projet :
```bash
./target/release/entropyk-cli --help
```
Tu dois voir quelque chose comme :
```text
Batch thermodynamic simulation CLI
Usage: entropyk-cli [OPTIONS] <COMMAND>
Commands:
run Run a single simulation from a configuration file
batch Run multiple simulations from a directory
validate Validate a configuration file without running
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose Enable verbose output
-q, --quiet Suppress all output except errors
-h, --help Print help
```
**Étape 2.2 — Aide de la commande `run`**
```bash
./target/release/entropyk-cli run --help
```
Tu dois voir les options `--config` / `-c` (fichier JSON) et `--output` / `-o` (fichier de sortie).
**Étape 2.3 — Aide de la commande `validate`**
```bash
./target/release/entropyk-cli validate --help
```
**Étape 2.4 — Aide de la commande `batch`**
```bash
./target/release/entropyk-cli batch --help
```
Une fois ces aides lues, tu sais quil y a trois commandes principales : **validate**, **run**, **batch**. On commence par **validate** pour sassurer quun fichier de config est valide avant de lancer une simulation.
---
## 3. Valider un fichier de configuration (validate)
La commande **validate** charge le fichier JSON, parse la config (circuits, composants, arêtes, solver, etc.) et affiche si tout est valide. Elle **ne lance pas** la simulation.
**Étape 3.1 — Utiliser un exemple fourni**
Le dépôt contient des exemples dans `crates/cli/examples/`. On prend le plus simple : `simple_working.json`.
Commande (depuis la racine du projet) :
```bash
./target/release/entropyk-cli validate --config crates/cli/examples/simple_working.json
```
Tu dois voir un bandeau « ENTROPYK CLI - Configuration Validation » et à la fin :
```text
✓ Configuration is valid
File: crates/cli/examples/simple_working.json
```
**Étape 3.2 — Valider un autre exemple**
Par exemple un chiller R410A minimal :
```bash
./target/release/entropyk-cli validate --config crates/cli/examples/chiller_r410a_minimal.json
```
**Étape 3.3 — Vérifier quune erreur est bien détectée**
Crée un fichier JSON invalide (par exemple un fichier vide ou du texte qui nest pas du JSON) et lance :
```bash
./target/release/entropyk-cli validate --config /chemin/vers/fichier_invalide.json
```
Tu dois obtenir un message derreur (par exemple « Configuration error » ou erreur de parsing). Cela confirme que **validate** sert bien à vérifier la config avant de lancer une simulation.
---
*[Sections 4 à 8 à compléter au fur et à mesure]*
---
## 9. Qualifier une machine à charge partielle (rate — IPLV / ESEER)
La commande **rate** calcule un indice de performance à charge partielle
(**IPLV**, **NPLV**, **ESEER**…) en re-résolvant le cycle à plusieurs points de
charge, puis en les pondérant selon la norme choisie. Chaque point est une
**vraie** résolution couplée (pas d'approximation) : on fait varier les
températures secondaires et la vitesse du compresseur, et on lit l'EER émergent.
**Étape 9.1 — Lancer l'exemple fourni**
```bash
./target/release/entropyk-cli rate --config crates/cli/examples/rate_chiller_iplv_ahri.json
```
Tu obtiens un tableau des points (100/75/50/25 %) avec leur EER, puis la valeur
intégrée, par exemple `IPLV = 8.114`. Comme la portée (« lift ») de pression
diminue à charge partielle, l'EER augmente à mesure que la charge baisse.
**Étape 9.2 — Choisir / changer la norme**
La norme est **modulable** (voir `docs/rating-and-seasonal-metrics.md`). Dans le
fichier de config `rate`, l'ordre de priorité est :
1. `standard` — objet norme inline (poids + fractions de charge) ;
2. `standard_file` — chemin vers un JSON de norme (résolu relativement au config) ;
3. `standard_name` — identifiant intégré (`iplv`, `eseer`, `nplv`…) ;
4. `metric` — enum historique.
Exemple avec une norme externe personnalisée :
```bash
./target/release/entropyk-cli rate --config crates/cli/examples/rate_chiller_custom_standard.json
```
Quand une norme évolue, il suffit d'éditer/remplacer le fichier de poids — **aucune
recompilation** n'est nécessaire.
**Étape 9.3 — Exporter le rapport**
```bash
./target/release/entropyk-cli rate --config <config> --output rapport_iplv.json
```
---
## 10. Performances saisonnières (scop / seer — méthode par bins EN 14825)
Les commandes **scop** (chauffage saisonnier) et **seer** (refroidissement
saisonnier) appliquent la **méthode par bins** d'EN 14825 : la machine est
re-résolue à **chaque température extérieure** d'un climat, la demande du bâtiment
est déduite d'une droite de charge, puis la saison est agrégée par un ratio
d'énergie utile / énergie électrique.
**Étape 10.1 — Lancer un SCOP (pompe à chaleur air/eau)**
```bash
./target/release/entropyk-cli scop --config crates/cli/examples/scop_heatpump_r134a.json
```
Résultat attendu (extrait) :
```text
T[°C] h Demand[kW] Cap[kW] COP_full backup COP_eff
-10.0 1 6.000 4.967 3.649 17% 2.506
2.0 320 3.231 6.918 4.169 0% 3.613
15.0 74 0.231 9.445 4.751 0% 3.592
Seasonal useful: 12393.7 kWh Seasonal electric: 3441.1 kWh
SCOP = 3.602
```
Le COP pleine charge augmente quand l'air extérieur se réchauffe (moins de lift) ;
aux bins les plus froids, la capacité ne suffit plus à la demande et l'appoint
électrique intervient (colonne `backup`).
**Étape 10.2 — Comprendre le fichier de config**
```jsonc
{
"base_config": "heatpump_r134a_air_source.json", // cycle de base (chemin relatif)
"climate_name": "en_14825_average", // climat intégré (bins EN 14825)
"outdoor_side": "evaporator", // côté piloté par T extérieure
"design_load_w": 6000.0, // demande [W] à design_outdoor_c
"design_outdoor_c": -10.0, // T extérieure où demande = design_load_w
"threshold_outdoor_c": 16.0, // T extérieure où la demande s'annule
"cd": 0.25, // dégradation de cyclage (PLF = 1 - Cd*(1-CR))
"backup_cop": 1.0 // COP de l'appoint électrique (chauffage)
}
```
La température du bin est appliquée au `secondary_inlet_temp_c` de l'échangeur
extérieur ; le **débit** et le **cp** du secondaire (ex. air, cp 1006 J/kg·K)
restent ceux du `base_config`.
**Étape 10.3 — Lancer un SEER (refroidissement)**
Le mode `seer` pilote par défaut le **condenseur** (côté extérieur) et exige un
climat de refroidissement explicite (`climate_name`, `climate_file` ou `climate`) :
```bash
./target/release/entropyk-cli seer --config <mon_config_seer>.json --output seer.json
```
**Étape 10.4 — Sortie JSON**
Ajoute `--output rapport.json`, ou utilise `--quiet` pour n'émettre que le JSON
(pratique pour l'intégration outillée) :
```bash
./target/release/entropyk-cli --quiet scop --config crates/cli/examples/scop_heatpump_r134a.json
```
> **Note.** Comme le climat est une donnée (`BinClimateStandard`), ajouter une
> nouvelle saison (climat SEER, révision future d'EN 14825…) revient à fournir un
> tableau de bins — **sans changer le code**. Détails complets dans
> `docs/rating-and-seasonal-metrics.md`.