Clean up unused BMAD workflow, agent, and command files across all IDE configurations (.agent, .clinerules, .cursor, .gemini, .github, .kilocode, .opencode) and internal module files (_bmad/bmb, _bmad/bmm). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.5 KiB
Circuit Builder UI — Référence (basée sur le code, sans supposition)
Ce document décrit ce qui existe réellement dans le CLI, la lib et l’UI. Aucune supposition : uniquement ce qui est implémenté et utilisé.
1. Types de composants que le CLI crée (run.rs → create_component)
Le CLI instancie uniquement les types suivants. Tout autre type dans le JSON provoque une erreur « Unknown component type ».
| Type dans le JSON | Création réelle |
|---|---|
ScrewEconomizerCompressor, ScrewCompressor |
Compresseur vis avec courbes, économiseur |
MchxCondenserCoil, MchxCoil |
Condenseur à air (UA, T_air, fan_speed, n_air) |
FloodedEvaporator |
Évaporateur noyé (UA, target_quality, refrigerant, secondary_fluid) |
Condenser, CondenserCoil |
Condenseur simple (UA, optionnel t_sat_k) |
Evaporator, EvaporatorCoil |
Évaporateur simple (UA, optionnel t_sat_k, superheat_k) |
HeatExchanger |
Échangeur LMTD avec conditions hot/cold (hot_fluid, hot_t_inlet_c, hot_pressure_bar, hot_mass_flow_kg_s, cold_*) |
Compressor |
Compresseur AHRI 540 (speed_rpm, displacement_m3, efficiency, fluid, m1–m10) |
ExpansionValve |
Détendeur (fluid, opening) |
Pump |
Pompe (name) — équations 0, composant pass-through |
Placeholder |
Composant générique (n_equations) pour compléter la topologie |
Ce que le CLI ne crée pas (même si la lib les a) :
AirSource, AirSink, BrineSource, BrineSink, WaterSource, WaterSink, Fan.
Ils n’apparaissent nulle part dans le match component_type de run.rs.
2. Modèle de configuration (JSON)
- Un scénario :
name,fluid,circuits[], optionnelthermal_couplings[],solver. - Un circuit :
id,components[],edges[]. Chaque circuit est un graphe de composants (un fluide par circuit dans l’usage actuel). - Une arête :
from: "nom:port",to: "nom:port". Ports par défaut :inlet(0),outlet(1). Pour le screw :suction,discharge,economizer. - Couplage thermique :
hot_circuit,cold_circuit,ua,efficiency. Lie deux circuits (ex. réfrigérant → eau).
Exemple réel à 2 circuits : crates/cli/examples/heat_pump_r410a.json (circuit 0 = réfrigérant, circuit 1 = eau, 1 thermal_coupling).
3. Ce que l’UI fait aujourd’hui (code dans index.html)
Export (buildConfig())
- Un seul circuit :
circuits: [circuit]avecid: 0. Pas de circuit 1, pas dethermal_couplings. - Mapping des types UI → JSON :
WaterSource,WaterSink,AirSource,AirSink,RefrigerantSource,RefrigerantSink,FlowSplitter,FlowMerger→ toujourstype: "Placeholder"+n_equations: 2(et autres params conservés). C’est obligatoire car le CLI ne connaît pas ces types.CondenserWater→type: "HeatExchanger"avec hot = fluide projet (réfrigérant), cold = Water + conditions secondaires.CondenserAir→type: "MchxCondenserCoil"avecua_nominal_kw_k,air_inlet_temp_c,fan_speed,n_air_exponent,coil_index: 0.EvaporatorWater,EvaporatorAir→type: "HeatExchanger"avec hot/cold cohérents (secondaire / réfrigérant).Compressor,ExpansionValve,HeatExchanger,Pump→ type inchangé + params.
- Arêtes :
from: "nom:outlet",to: "nom:inlet"(noms dérivés des nœuds).
Limites actuelles de l’UI
- Un seul circuit exporté : pas de deuxième circuit (ex. eau), pas de
thermal_couplings. Donc on ne peut pas produire un JSON du typeheat_pump_r410a.jsondepuis l’UI. - Sources/puits : Source eau, Puits eau, Source air, Puits air, etc. sont exportés en Placeholder. Le solver les traite comme des blocs à
n_equationssans physique (pas de vraie source air/eau). Les placer sur le schéma permet de représenter visuellement un circuit, mais ce circuit n’est pas simulé comme « circuit air » ou « circuit eau ». - Ventilateur : il n’existe pas comme composant séparé dans le CLI. Le condenseur à air est modélisé par MchxCondenserCoil (T_air entrée + vitesse ventilateur en paramètres). L’UI reflète ça en exportant un seul nœud « Condenseur à air » en
MchxCondenserCoil.
4. Lib vs CLI (composants)
| Composant | Dans la lib (crates/components) | Créé par le CLI |
|---|---|---|
| AirSource, AirSink | Oui (air_boundary.rs) |
Non |
| BrineSource, BrineSink | Oui (brine_boundary.rs) |
Non |
| RefrigerantSource, RefrigerantSink | (existent ou équivalent) | Non (utiliser Placeholder) |
| Fan | Oui (fan.rs) |
Non |
| Pump | Oui | Oui (composant pass-through, 0 équations) |
| HeatExchanger | Oui | Oui (avec hot/cold conditions) |
| MchxCondenserCoil | Oui | Oui |
| Condenser / Evaporator (simples) | Oui | Oui |
Donc : l’outil UI est cohérent avec le CLI pour tout ce qui est exporté en Compressor, Condenser*, Evaporator*, HeatExchanger, MchxCondenserCoil, ExpansionValve, Pump, Placeholder. Les « sources air/eau » et le « ventilateur » ne sont pas des approximations de l’UI : le CLI ne propose tout simplement pas ces types.
5. Vision claire de l’outil (sans approximation)
Aujourd’hui, l’outil est :
- Un éditeur visuel pour un seul circuit (en pratique le circuit réfrigérant).
- Les nœuds « Condenseur à eau/air », « Évaporateur à eau/air » sont convertis en HeatExchanger ou MchxCondenserCoil avec les bons côtés (réfrigérant / eau ou air) et conditions aux limites. C’est aligné avec le CLI.
- Les nœuds « Source air », « Puits air », « Source eau », etc. sont des Placeholders : ils servent à dessiner un schéma et à garder la topologie (nombre d’arêtes, n_equations), mais le fluide « air » ou « eau » n’est pas simulé comme tel par le CLI.
Pour aller vers une machine complète (ex. PAC air-eau) sans approximation :
- Multi-circuit dans l’UI : pouvoir définir au moins 2 circuits (ex. 0 = réfrigérant, 1 = eau) et des arêtes par circuit.
- Export des thermal_couplings : quand deux circuits existent, exporter un bloc
thermal_couplings(hot_circuit, cold_circuit, ua, efficiency). - Support CLI pour sources/puits (optionnel) : si un jour le CLI crée
AirSource/AirSinkouBrineSource/BrineSink, l’UI pourra alors exporter ces types au lieu de Placeholder pour les circuits air/eau.
Ce document peut servir de base pour implémenter ces évolutions ou pour expliquer précisément le comportement actuel à un ingénieur HVAC.