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
|
--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)
|
create_component -> System (graphe)
|
||||||
|
|
|
|
||||||
v
|
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
|
v
|
||||||
Newton / Picard / fallback
|
Newton / Picard / fallback
|
||||||
@@ -124,17 +124,23 @@ Config JSON / SystemBuilder / UI web
|
|||||||
|
|
||||||
## 5. Le modèle : composants et câblage
|
## 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 |
|
| Grandeur | Unité SI | Sens |
|
||||||
|------|----------|----------|
|
|----------|----------|------|
|
||||||
| 0 | débit massique ṁ | kg/s |
|
| débit massique ṁ | kg/s | combien de frigorigène circule |
|
||||||
| 1 | pression P | Pa |
|
| pression P | Pa | pression régnant dans ce tronçon |
|
||||||
| 2 | enthalpie massique h | J/kg |
|
| 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
|
### Câblage
|
||||||
|
|
||||||
@@ -144,7 +150,8 @@ Les liaisons s'écrivent `nom:port`. Par exemple :
|
|||||||
{ "from": "comp:outlet", "to": "cond:inlet" }
|
{ "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
|
### 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
|
```text
|
||||||
1. Estimation initiale (frontières + pressions haute/basse initialisées par étages si emergent_pressure)
|
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
|
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`.
|
1. Lecture de `ScenarioConfig`.
|
||||||
2. Pour chaque composant : `create_component(...)` (CoolProp, params, modes orifice / emergent).
|
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).
|
4. `finalize()` + contrôle DoF (système carré obligatoire).
|
||||||
5. Estimation initiale (frontières + pressions par étages).
|
5. Estimation initiale (frontières + pressions par étages).
|
||||||
6. Résolution selon `solver.strategy`.
|
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)
|
### Contrôles (régulation / calibration)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user