pywr_v1_schema/parameters/
core.rs

1use crate::parameters::{
2    ExternalDataRef, ParameterMeta, ParameterValue, ParameterValueType, ParameterValueTypeMut,
3    TableDataRef,
4};
5use pywr_v1_schema_macros::PywrParameter;
6use std::collections::HashMap;
7use std::path::PathBuf;
8
9#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, PywrParameter)]
10pub struct ConstantParameter {
11    #[serde(flatten)]
12    pub meta: Option<ParameterMeta>,
13    #[serde(alias = "values", skip_serializing_if = "Option::is_none")]
14    pub value: Option<f64>,
15    #[serde(flatten, skip_serializing_if = "Option::is_none")]
16    pub external: Option<ExternalDataRef>,
17    #[serde(flatten, skip_serializing_if = "Option::is_none")]
18    pub table: Option<TableDataRef>,
19}
20
21impl ConstantParameter {
22    pub fn node_references(&self) -> HashMap<&str, &str> {
23        HashMap::new()
24    }
25}
26
27
28#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, PywrParameter)]
29pub struct ConstantScenarioParameter {
30    #[serde(flatten)]
31    pub meta: Option<ParameterMeta>,
32    pub scenario: String,
33    #[serde(alias = "values", skip_serializing_if = "Option::is_none")]
34    pub values: Option<Vec<f64>>,
35    #[serde(flatten, skip_serializing_if = "Option::is_none")]
36    pub external: Option<ExternalDataRef>,
37    #[serde(flatten, skip_serializing_if = "Option::is_none")]
38    pub table: Option<TableDataRef>,
39}
40
41impl ConstantScenarioParameter {
42    pub fn node_references(&self) -> HashMap<&str, &str> {
43        HashMap::new()
44    }
45}
46
47#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, PywrParameter)]
48pub struct MaxParameter {
49    #[serde(flatten)]
50    pub meta: Option<ParameterMeta>,
51    pub parameter: ParameterValue,
52    pub threshold: Option<f64>,
53}
54
55impl MaxParameter {
56    pub fn node_references(&self) -> HashMap<&str, &str> {
57        HashMap::new()
58    }
59}
60
61#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, PywrParameter)]
62pub struct NegativeParameter {
63    #[serde(flatten)]
64    pub meta: Option<ParameterMeta>,
65    pub parameter: ParameterValue,
66}
67
68impl NegativeParameter {
69    pub fn node_references(&self) -> HashMap<&str, &str> {
70        HashMap::new()
71    }
72}
73
74#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, PywrParameter)]
75pub struct MinParameter {
76    #[serde(flatten)]
77    pub meta: Option<ParameterMeta>,
78    pub parameter: ParameterValue,
79    pub threshold: Option<f64>,
80}
81
82impl MinParameter {
83    pub fn node_references(&self) -> HashMap<&str, &str> {
84        HashMap::new()
85    }
86}
87
88#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, PywrParameter)]
89pub struct NegativeMinParameter {
90    #[serde(flatten)]
91    pub meta: Option<ParameterMeta>,
92    pub parameter: ParameterValue,
93    pub threshold: Option<f64>,
94}
95
96impl NegativeMinParameter {
97    pub fn node_references(&self) -> HashMap<&str, &str> {
98        HashMap::new()
99    }
100}
101
102#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, PywrParameter)]
103pub struct NegativeMaxParameter {
104    #[serde(flatten)]
105    pub meta: Option<ParameterMeta>,
106    pub parameter: ParameterValue,
107    pub threshold: Option<f64>,
108}
109
110impl NegativeMaxParameter {
111    pub fn node_references(&self) -> HashMap<&str, &str> {
112        HashMap::new()
113    }
114}
115
116#[derive(serde::Deserialize, serde::Serialize, Debug, Clone, PywrParameter)]
117pub struct DivisionParameter {
118    #[serde(flatten)]
119    pub meta: Option<ParameterMeta>,
120    pub numerator: ParameterValue,
121    pub denominator: ParameterValue,
122}
123
124impl DivisionParameter {
125    pub fn node_references(&self) -> HashMap<&str, &str> {
126        HashMap::new()
127    }
128}