docs: rewrite README section 5 and solver loop in plain French, define residual/jacobian, drop edge jargon
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
35
README.md
35
README.md
@@ -76,7 +76,7 @@ cargo run -p entropyk-cli -- run \
|
||||
--output result.json
|
||||
```
|
||||
|
||||
Sortie console : statut (converged / non-converged / timeout), résidu final, nombre d'itérations, temps de calcul, équilibre DoF, états des arêtes (pression en bar, enthalpie en kJ/kg) et performances (puissance frigorifique, puissance absorbée, COP).
|
||||
Sortie console : statut (converged / non-converged / timeout), résidu final, nombre d'itérations, temps de calcul, équilibre DoF, états des tronçons (pression en bar, enthalpie en kJ/kg) et performances (puissance frigorifique, puissance absorbée, COP).
|
||||
|
||||
---
|
||||
|
||||
@@ -111,7 +111,7 @@ Config JSON / SystemBuilder / UI web
|
||||
create_component -> System (graphe)
|
||||
|
|
||||
v
|
||||
finalize() + porte DoF -> vecteur d'état [débit, pression, enthalpie] par arête
|
||||
finalize() + porte DoF -> vecteur d'état [débit, pression, enthalpie] par tronçon
|
||||
|
|
||||
v
|
||||
Newton / Picard / fallback
|
||||
@@ -124,17 +124,23 @@ Config JSON / SystemBuilder / UI web
|
||||
|
||||
## 5. Le modèle : composants et câblage
|
||||
|
||||
### Vecteur d'état
|
||||
### Ce que le solveur cherche
|
||||
|
||||
Chaque **arête** du graphe (une liaison entre deux ports) porte trois inconnues :
|
||||
Pour chaque tuyau reliant deux composants, le solveur doit trouver trois valeurs :
|
||||
|
||||
| Rang | Grandeur | Unité SI |
|
||||
|------|----------|----------|
|
||||
| 0 | débit massique ṁ | kg/s |
|
||||
| 1 | pression P | Pa |
|
||||
| 2 | enthalpie massique h | J/kg |
|
||||
| Grandeur | Unité SI | Sens |
|
||||
|----------|----------|------|
|
||||
| débit massique ṁ | kg/s | combien de frigorigène circule |
|
||||
| pression P | Pa | pression régnant dans ce tronçon |
|
||||
| enthalpie massique h | J/kg | énergie portée par le fluide |
|
||||
|
||||
Sur une branche série (un composant à une entrée et une sortie), les arêtes partagent généralement le **même débit** ṁ : le solveur fusionne alors ces inconnues et réduit la taille du système.
|
||||
Ces trois valeurs sont les **inconnues** du système. Le moteur en assemble une liste (le « vecteur d'état ») et cherche les valeurs qui annulent toutes les équations en même temps.
|
||||
|
||||
### Une seule variable de débit pour toute la boucle
|
||||
|
||||
Dans un cycle simple, les composants sont branchés en boucle les uns derrière les autres, sans bifurcation : le frigorigène qui sort du compresseur entre intégralement dans le condenseur, puis dans le détendeur, puis dans l'évaporateur, puis revient au compresseur. Le débit est donc **le même partout dans la boucle**.
|
||||
|
||||
Plutôt que d'avoir une variable de débit par tuyau, le solveur en utilise **une seule pour toute la boucle**. Cela réduit le nombre d'inconnues et accélère la résolution. (S'il y a un branchement — débit qui se partage entre deux circuits — alors chaque branche reçoit sa propre variable de débit.)
|
||||
|
||||
### Câblage
|
||||
|
||||
@@ -144,7 +150,8 @@ Les liaisons s'écrivent `nom:port`. Par exemple :
|
||||
{ "from": "comp:outlet", "to": "cond:inlet" }
|
||||
```
|
||||
|
||||
Le moteur construit le graphe, attribue un index à chaque inconnue d'arête, puis assemble résidus et jacobienne.
|
||||
Le moteur construit le graphe à partir de ces liaisons, puis assemble les équations de chaque composant et leurs dérivées.
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -181,6 +188,8 @@ Tolérance typique : `1e-6`. Itérations : `300` par défaut ; à augmenter pour
|
||||
|
||||
### Boucle de résolution
|
||||
|
||||
Un **résidu** est l'écart entre le membre gauche et le membre droit d'une équation : il vaut zéro quand l'équation est satisfaite. Le but du solveur est de rendre tous les résidus nuls en même temps. La **matrice jacobienne** est l'ensemble des dérivées des résidus par rapport aux inconnues ; elle indique dans quelle direction corriger les inconnues.
|
||||
|
||||
```text
|
||||
1. Estimation initiale (frontières + pressions haute/basse initialisées par étages si emergent_pressure)
|
||||
2. Calcul des résidus r(x) de tous les composants
|
||||
@@ -446,11 +455,11 @@ cargo run -p entropyk-cli -- schema -o model-ir.schema.json
|
||||
|
||||
1. Lecture de `ScenarioConfig`.
|
||||
2. Pour chaque composant : `create_component(...)` (CoolProp, params, modes orifice / emergent).
|
||||
3. Ajout des arêtes nommées `nom:port`.
|
||||
3. Ajout des liaisons nommées `nom:port`.
|
||||
4. `finalize()` + contrôle DoF (système carré obligatoire).
|
||||
5. Estimation initiale (frontières + pressions par étages).
|
||||
6. Résolution selon `solver.strategy`.
|
||||
7. Sérialisation JSON : états d'arêtes, performances, `dof`, `failure_diagnostics` en cas d'échec.
|
||||
7. Sérialisation JSON : états des tronçons, performances, `dof`, `failure_diagnostics` en cas d'échec.
|
||||
|
||||
### Contrôles (régulation / calibration)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user