Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions pywr-core/src/metric.rs
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ pub enum MetricF64 {
NodeInFlow(NodeIndex),
NodeOutFlow(NodeIndex),
NodeMaxFlow(NodeIndex),
NodeDeficit(NodeIndex),
NodeVolume(NodeIndex),
NodeProportionalVolume(NodeIndex),
NodeMaxVolume(NodeIndex),
Expand Down Expand Up @@ -222,6 +223,11 @@ impl MetricF64 {
.ok_or(MetricF64Error::NodeIndexNotFound(*idx))?
.get_max_flow(network, state)
.map_err(|e| MetricF64Error::NodeError(Box::new(e)))?),
MetricF64::NodeDeficit(idx) => {
let actual_flow = MetricF64::NodeInFlow(*idx).get_value(network, state)?;
let max_flow = MetricF64::NodeInFlow(*idx).get_value(network, state)?;
Ok((max_flow - actual_flow).max(0.0))
}
MetricF64::NodeVolume(idx) => Ok(state.get_network_state().get_node_volume(idx)?),
MetricF64::NodeProportionalVolume(idx) => {
Ok(state.get_network_state().get_node_proportional_volume(idx)?)
Expand Down
58 changes: 0 additions & 58 deletions pywr-core/src/parameters/deficit.rs

This file was deleted.

2 changes: 0 additions & 2 deletions pywr-core/src/parameters/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ mod asymmetric;
mod constant;
mod constant_scenario;
mod control_curves;
mod deficit;
mod delay;
mod difference;
mod discount_factor;
Expand Down Expand Up @@ -52,7 +51,6 @@ pub use control_curves::{
ApportionParameter, ControlCurveIndexParameter, ControlCurveInterpolatedParameter, ControlCurveParameter,
PiecewiseInterpolatedParameter, VolumeBetweenControlCurvesParameter,
};
pub use deficit::DeficitParameter;
pub use delay::DelayParameter;
pub use difference::DifferenceParameter;
pub use discount_factor::DiscountFactorParameter;
Expand Down
26 changes: 2 additions & 24 deletions pywr-schema/src/nodes/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@ use crate::parameters::Parameter;
use crate::v1::{ConversionData, TryFromV1, try_convert_initial_storage, try_convert_node_attr, try_convert_node_meta};
use crate::{mermaid, node_attribute_subset_enum, node_component_subset_enum};
#[cfg(feature = "core")]
use pywr_core::{
metric::MetricF64,
node::StorageInitialVolume as CoreStorageInitialVolume,
parameters::{DeficitParameter, ParameterName},
};
use pywr_core::{metric::MetricF64, node::StorageInitialVolume as CoreStorageInitialVolume};
use pywr_schema_macros::PywrVisitAll;
use pywr_schema_macros::skip_serializing_none;
use pywr_v1_schema::nodes::{
Expand Down Expand Up @@ -851,25 +847,7 @@ impl OutputNode {

let metric = match attr {
OutputNodeAttribute::Inflow => MetricF64::NodeInFlow(idx),
OutputNodeAttribute::Deficit => {
let deficit_parameter_name = ParameterName::new("deficit", Some(self.meta.name.as_str()));

// Create a parameter for the deficit metric if it does not already exist
let deficit_parameter_idx = match network.get_parameter_index_by_name(&deficit_parameter_name) {
Some(p_idx) => p_idx,
None => {
let deficit_parameter = DeficitParameter::new(
deficit_parameter_name,
MetricF64::NodeInFlow(idx),
MetricF64::NodeMaxFlow(idx),
);

network.add_parameter(Box::new(deficit_parameter))?
}
};

deficit_parameter_idx.into_metric_f64_after()
}
OutputNodeAttribute::Deficit => MetricF64::NodeDeficit(idx),
};

Ok(metric)
Expand Down