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

@@ -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());
}