feat(python): implement python bindings for all components and solvers

This commit is contained in:
Sepehr
2026-02-21 20:34:56 +01:00
parent 8ef8cd2eba
commit 4440132b0a
310 changed files with 11577 additions and 397 deletions

View File

@@ -190,6 +190,7 @@ impl HeatTransferModel for EpsNtuModel {
_hot_outlet: &FluidState,
cold_inlet: &FluidState,
_cold_outlet: &FluidState,
dynamic_ua_scale: Option<f64>,
) -> Power {
let c_hot = hot_inlet.heat_capacity_rate();
let c_cold = cold_inlet.heat_capacity_rate();
@@ -205,7 +206,7 @@ impl HeatTransferModel for EpsNtuModel {
}
let c_r = c_min / c_max;
let ntu = self.effective_ua() / c_min;
let ntu = self.effective_ua(dynamic_ua_scale) / c_min;
let effectiveness = self.effectiveness(ntu, c_r);
@@ -221,9 +222,10 @@ impl HeatTransferModel for EpsNtuModel {
cold_inlet: &FluidState,
cold_outlet: &FluidState,
residuals: &mut ResidualVector,
dynamic_ua_scale: Option<f64>,
) {
let q = self
.compute_heat_transfer(hot_inlet, hot_outlet, cold_inlet, cold_outlet)
.compute_heat_transfer(hot_inlet, hot_outlet, cold_inlet, cold_outlet, dynamic_ua_scale)
.to_watts();
let q_hot =
@@ -253,8 +255,8 @@ impl HeatTransferModel for EpsNtuModel {
self.ua_scale = s;
}
fn effective_ua(&self) -> f64 {
self.ua * self.ua_scale
fn effective_ua(&self, dynamic_ua_scale: Option<f64>) -> f64 {
self.ua * dynamic_ua_scale.unwrap_or(self.ua_scale)
}
}
@@ -304,7 +306,7 @@ mod tests {
let cold_inlet = FluidState::new(20.0 + 273.15, 101_325.0, 80_000.0, 0.2, 4180.0);
let cold_outlet = FluidState::new(30.0 + 273.15, 101_325.0, 120_000.0, 0.2, 4180.0);
let q = model.compute_heat_transfer(&hot_inlet, &hot_outlet, &cold_inlet, &cold_outlet);
let q = model.compute_heat_transfer(&hot_inlet, &hot_outlet, &cold_inlet, &cold_outlet, None);
assert!(q.to_watts() > 0.0);
}