Snapshot WIP: solver HP epic progress, BPHX/HX physics, BMAD skill refresh.
Some checks failed
CI / check (push) Has been cancelled

Capture uncommitted solver robustness work (regularization, domain errors, linear solver lifecycle, tube DP/MSH), web workbench updates, and synced BMAD skills across IDE agent folders before starting BPHX pressure-drop.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-19 16:35:31 +02:00
parent 88620790d6
commit 5bd180b5b8
1363 changed files with 101041 additions and 58547 deletions

View File

@@ -10,8 +10,8 @@ description = "Demo and test project for Entropyk library"
entropyk-core = { path = "../crates/core" }
entropyk-components = { path = "../crates/components" }
entropyk-solver = { path = "../crates/solver" }
# Fluid properties backend (Story 5.1 - FluidBackend demo)
entropyk-fluids = { path = "../crates/fluids" }
entropyk-cli = { path = "../crates/cli" }
# Pour des jolis prints
colored = "2.0"
@@ -19,10 +19,12 @@ colored = "2.0"
# UI serveur (utilise les composants réels)
axum = "0.7"
tokio = { version = "1", features = ["full"] }
tower-http = { version = "0.5", features = ["fs"] }
tower-http = { version = "0.5", features = ["fs", "cors"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
chrono = "0.4"
# Parallel batch endpoint (mirrors crates/cli/src/batch.rs rayon pool)
rayon = "1"
[[bin]]
name = "compressor-test"

View File

@@ -15,9 +15,7 @@
use colored::Colorize;
use entropyk_components::heat_exchanger::{CondenserCoil, Evaporator};
use entropyk_components::{
Component, ComponentError, JacobianBuilder, ResidualVector, StateSlice,
};
use entropyk_components::{Component, ComponentError, JacobianBuilder, ResidualVector, StateSlice};
use entropyk_core::{MassFlow, Pressure, Temperature, ThermalConductance};
use entropyk_solver::{
compute_coupling_heat, coupling_groups, has_circular_dependencies, System, ThermalCoupling,

View File

@@ -8,9 +8,7 @@
//! - Heat transfer computation
use colored::Colorize;
use entropyk_components::{
Component, ComponentError, JacobianBuilder, ResidualVector, StateSlice,
};
use entropyk_components::{Component, ComponentError, JacobianBuilder, ResidualVector, StateSlice};
use entropyk_core::{Temperature, ThermalConductance};
use entropyk_solver::{
compute_coupling_heat, coupling_groups, has_circular_dependencies, CircuitId, System,

File diff suppressed because it is too large Load Diff

View File

@@ -13,11 +13,11 @@
//! - 1-12: Boundary Conditions (Source/Sink)
use approx::assert_relative_eq;
use entropyk_components::heat_exchanger::HeatTransferModel;
use entropyk_components::{
Ahri540Coefficients, BrineSink, BrineSource, ConnectedPort, EpsNtuModel, ExpansionValve,
FluidId, OperationalState, Port, SstSdtCoefficients,
};
use entropyk_components::heat_exchanger::HeatTransferModel;
use entropyk_core::{Concentration, Enthalpy, MassFlow, Pressure, Temperature};
use std::sync::Arc;
@@ -140,8 +140,8 @@ mod story_1_4_compressor {
fn test_sst_sdt_coefficients() {
// Use bilinear constructor instead of removed ::default()
let coeffs = SstSdtCoefficients::bilinear(
0.05, 0.001, 0.0005, 0.00001, // mass flow coefficients
1000.0, 50.0, 30.0, 0.5, // power coefficients
0.05, 0.001, 0.0005, 0.00001, // mass flow coefficients
1000.0, 50.0, 30.0, 0.5, // power coefficients
);
// Verify evaluation works (bilinear model)
let mass_flow = coeffs.mass_flow_at(263.15, 313.15); // -10°C SST, 40°C SDT
@@ -289,8 +289,8 @@ mod story_1_8_auxiliary {
// Use PumpCurves::quadratic constructor (fields are no longer public)
let curves = PumpCurves::quadratic(
30.0, -10.0, -50.0, // head: H = 30 - 10Q - 50Q²
0.5, 0.3, -0.5, // efficiency: η = 0.5 + 0.3Q - 0.5Q²
30.0, -10.0, -50.0, // head: H = 30 - 10Q - 50Q²
0.5, 0.3, -0.5, // efficiency: η = 0.5 + 0.3Q - 0.5Q²
)
.unwrap();
@@ -329,8 +329,7 @@ mod story_1_11_junctions {
let outlet1 = make_connected_port("Water", 100_000.0, 42_000.0);
let outlet2 = make_connected_port("Water", 100_000.0, 42_000.0);
let splitter =
FlowSplitter::incompressible("Water", inlet, vec![outlet1, outlet2]);
let splitter = FlowSplitter::incompressible("Water", inlet, vec![outlet1, outlet2]);
assert!(splitter.is_ok());
}