chore: remove deprecated flow_boundary and update docs to match new architecture

This commit is contained in:
Sepehr
2026-03-01 20:00:09 +01:00
parent 20700afce8
commit d88914a44f
105 changed files with 11222 additions and 2994 deletions

View File

@@ -5,13 +5,13 @@
**Priorité:** P1-HIGH
**Statut:** backlog
**Date Création:** 2026-02-22
**Dépendances:** Epic 7 (Validation & Persistence), Story 9-4 (FlowSource/FlowSink Energy Methods)
**Dépendances:** Epic 7 (Validation & Persistence), Story 9-4 (RefrigerantSource/RefrigerantSink Energy Methods)
---
## Vision
Refactoriser les conditions aux limites (`FlowSource`, `FlowSink`) pour supporter explicitement les 3 types de fluides avec leurs propriétés spécifiques:
Refactoriser les conditions aux limites (`RefrigerantSource`, `RefrigerantSink`) pour supporter explicitement les 3 types de fluides avec leurs propriétés spécifiques:
1. **Réfrigérants compressibles** - avec titre (vapor quality)
2. **Caloporteurs liquides** - avec concentration glycol
@@ -23,7 +23,7 @@ Refactoriser les conditions aux limites (`FlowSource`, `FlowSink`) pour supporte
### Problème Actuel
Les composants `FlowSource` et `FlowSink` actuels utilisent une distinction binaire `Incompressible`/`Compressible` qui est trop simpliste:
Les composants `RefrigerantSource` et `RefrigerantSink` actuels utilisent une distinction binaire `Incompressible`/`Compressible` qui est trop simpliste:
- Pas de support pour la concentration des mélanges eau-glycol (PEG, MEG)
- Pas de support pour les propriétés psychrométriques de l'air (humidité relative, bulbe humide)
@@ -86,5 +86,5 @@ Les composants `FlowSource` et `FlowSink` actuels utilisent une distinction bina
## Références
- [Architecture Document](../../plans/boundary-condition-refactoring-architecture.md)
- [Story 9-4: FlowSource/FlowSink Energy Methods](../implementation-artifacts/9-4-flow-source-sink-energy-methods.md)
- [Story 9-4: RefrigerantSource/RefrigerantSink Energy Methods](../implementation-artifacts/9-4-flow-source-sink-energy-methods.md)
- [Coherence Audit Remediation Plan](../implementation-artifacts/coherence-audit-remediation-plan.md)

View File

@@ -116,7 +116,7 @@ This document provides the complete epic and story breakdown for Entropyk, decom
**FR49:** Flow Junctions (FlowSplitter 1→N, FlowMerger N→1) for compressible & incompressible fluids
**FR50:** Boundary Conditions (FlowSource, FlowSink) for compressible & incompressible fluids
**FR50:** Boundary Conditions (RefrigerantSource, RefrigerantSink) for compressible & incompressible fluids
**FR51:** Swappable Calibration Variables - swap calibration factors (f_m, f_ua, f_power, etc.) into solver unknowns and measured values (Tsat, capacity, power) into constraints for one-shot inverse calibration
@@ -279,7 +279,7 @@ This document provides the complete epic and story breakdown for Entropyk, decom
| FR47 | Epic 2 | Rich Thermodynamic State Abstraction |
| FR48 | Epic 3 | Hierarchical Subsystems (MacroComponents) |
| FR49 | Epic 1 | Flow Junctions (FlowSplitter 1→N, FlowMerger N→1) for compressible & incompressible fluids |
| FR50 | Epic 1 | Boundary Conditions (FlowSource, FlowSink) for compressible & incompressible fluids |
| FR50 | Epic 1 | Boundary Conditions (RefrigerantSource, RefrigerantSink) for compressible & incompressible fluids |
| FR51 | Epic 5 | Swappable Calibration Variables (inverse calibration one-shot) |
| FR52 | Epic 6 | Python Solver Configuration Parity - expose all Rust solver options in Python bindings |
| FR53 | Epic 11 | Node passive probe for state extraction |
@@ -530,10 +530,10 @@ This document provides the complete epic and story breakdown for Entropyk, decom
---
### Story 1.12: Boundary Conditions — FlowSource & FlowSink
### Story 1.12: Boundary Conditions — RefrigerantSource & RefrigerantSink
**As a** simulation user,
**I want** `FlowSource` and `FlowSink` boundary condition components,
**I want** `RefrigerantSource` and `RefrigerantSink` boundary condition components,
**So that** I can define the entry and exit points of a fluid circuit without manually managing pressure and enthalpy constraints.
**Status:** ✅ Done (2026-02-20)
@@ -543,16 +543,16 @@ This document provides the complete epic and story breakdown for Entropyk, decom
**Acceptance Criteria:**
**Given** a fluid circuit with an entry point
**When** I instantiate `FlowSource::incompressible("Water", 3.0e5, 63_000.0, port)`
**When** I instantiate `BrineSource::water("Water", 3.0e5, 63_000.0, port)`
**Then** the source imposes `P_edge P_set = 0` and `h_edge h_set = 0` (2 equations)
**And** `FlowSink::incompressible("Water", 1.5e5, None, port)` imposes a back-pressure (1 equation)
**And** `FlowSink` with `Some(h_back)` adds a second enthalpy constraint (2 equations)
**And** `BrineSink::water("Water", 1.5e5, None, port)` imposes a back-pressure (1 equation)
**And** `RefrigerantSink` with `Some(h_back)` adds a second enthalpy constraint (2 equations)
**And** `set_return_enthalpy` / `clear_return_enthalpy` toggle the second equation dynamically
**And** validation rejects incompatible fluid + constructor combinations
**And** type aliases `Incompressible/CompressibleSource` and `Incompressible/CompressibleSink` are available
**And** type aliases `Incompressible/RefrigerantSource` and `Incompressible/RefrigerantSink` are available
**Implementation:**
- `crates/components/src/flow_boundary.rs``FlowSource`, `FlowSink`
- `crates/components/src/refrigerant_boundary.rs``RefrigerantSource`, `RefrigerantSink`
- 17 unit tests passing
---
@@ -1548,15 +1548,15 @@ The current Python bindings expose only a subset of the Rust solver configuratio
---
### Story 9.4: FlowSource/FlowSink Energy Methods
### Story 9.4: RefrigerantSource/RefrigerantSink Energy Methods
**As a** thermodynamic simulation engine,
**I want** `FlowSource` and `FlowSink` to implement `energy_transfers()` and `port_enthalpies()`,
**I want** `RefrigerantSource` and `RefrigerantSink` to implement `energy_transfers()` and `port_enthalpies()`,
**So that** boundary conditions are correctly accounted for in the energy balance.
**Acceptance Criteria:**
**Given** FlowSource or FlowSink in a system
**Given** RefrigerantSource or RefrigerantSink in a system
**When** `check_energy_balance()` is called
**Then** the component is included in the validation
**And** `energy_transfers()` returns `(Power(0), Power(0))`

View File

@@ -499,7 +499,7 @@ Le produit est utile uniquement si tous les éléments critiques fonctionnent en
- **FR13** : Le système gère mathématiquement les branches à débit nul sans division par zéro
- **FR48** : Le système permet de définir des sous-systèmes hiérarchiques (MacroComponents/Blocks) comme dans Modelica, encapsulant une topologie interne et exposant uniquement des ports (ex: raccorder deux Chillers en parallèle).
- **FR49** : Le système fournit des composants de jonction fluidique (`FlowSplitter` 1→N et `FlowMerger` N→1) pour fluides compressibles (réfrigérant, CO₂) et incompressibles (eau, glycol, saumure), avec équations de bilan de masse, isobare et enthalpie de mélange pondérée (`with_mass_flows`).
- **FR50** : Le système fournit des composants de condition aux limites (`FlowSource` et `FlowSink`) pour fixer les états de pression et d'enthalpie aux bornes d'un circuit, pour fluides compressibles et incompressibles.
- **FR50** : Le système fournit des composants de condition aux limites (`RefrigerantSource` et `RefrigerantSink`) pour fixer les états de pression et d'enthalpie aux bornes d'un circuit, pour fluides compressibles et incompressibles.
### 3. Résolution du Système (Solver)
@@ -594,7 +594,7 @@ Le produit est utile uniquement si tous les éléments critiques fonctionnent en
**Workflow :** BMAD Create PRD
**Steps Completed :** 12/12
**Total FRs :** 52
**Total FRs :** 60 (FR1-FR52 core + FR53-FR60 Epic 11)
**Total NFRs :** 17
**Personas :** 5
**Innovations :** 5
@@ -603,9 +603,10 @@ Le produit est utile uniquement si tous les éléments critiques fonctionnent en
**Status :** ✅ Complete & Ready for Implementation
**Changelog :**
- `2026-02-28` : Correction du compteur FR (52→60) pour refléter les FR53-FR60 ajoutés dans epics.md pour Epic 11.
- `2026-02-22` : Ajout FR52 (Python Solver Configuration Parity) — exposition complète des options de solveur en Python (Story 6.6).
- `2026-02-21` : Ajout FR51 (Swappable Calibration Variables) — calibration inverse One-Shot via échange f_ ↔ contraintes (Story 5.5).
- `2026-02-20` : Ajout FR49 (FlowSplitter/FlowMerger) et FR50 (FlowSource/FlowSink) — composants de jonction et conditions aux limites pour fluides compressibles et incompressibles (Story 1.11 et 1.12).
- `2026-02-20` : Ajout FR49 (FlowSplitter/FlowMerger) et FR50 (RefrigerantSource/RefrigerantSink) — composants de jonction et conditions aux limites pour fluides compressibles et incompressibles (Story 1.11 et 1.12).
---