chore: remove deprecated flow_boundary and update docs to match new architecture
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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))`
|
||||
|
||||
@@ -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).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user