feat(python): implement python bindings for all components and solvers
This commit is contained in:
@@ -257,8 +257,19 @@ impl Fan<Connected> {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
// Handle zero flow
|
||||
if flow_m3_per_s <= 0.0 {
|
||||
// Handle negative flow gracefully by using a linear extrapolation from Q=0
|
||||
// to prevent polynomial extrapolation issues with quadratic/cubic terms
|
||||
if flow_m3_per_s < 0.0 {
|
||||
let p0 = self.curves.static_pressure_at_flow(0.0);
|
||||
let p_eps = self.curves.static_pressure_at_flow(1e-6);
|
||||
let dp_dq = (p_eps - p0) / 1e-6;
|
||||
|
||||
let pressure = p0 + dp_dq * flow_m3_per_s;
|
||||
return AffinityLaws::scale_head(pressure, self.speed_ratio);
|
||||
}
|
||||
|
||||
// Handle exactly zero flow
|
||||
if flow_m3_per_s == 0.0 {
|
||||
let pressure = self.curves.static_pressure_at_flow(0.0);
|
||||
return AffinityLaws::scale_head(pressure, self.speed_ratio);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user