Snapshot WIP: solver HP epic progress, BPHX/HX physics, BMAD skill refresh.
Some checks failed
CI / check (push) Has been cancelled

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>
This commit is contained in:
2026-07-19 16:35:31 +02:00
parent 88620790d6
commit 5bd180b5b8
1363 changed files with 101041 additions and 58547 deletions

View File

@@ -16,6 +16,8 @@ Ce tutoriel décrit **pas à pas**, sans raccourci, comment utiliser loutil E
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)
---
@@ -161,3 +163,122 @@ Tu dois obtenir un message derreur (par exemple « Configuration error » ou
---
*[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`.