Skip to main content

cimstructs/
NuclearGeneratingUnit.rs

1/// A nuclear generating unit.
2#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
3pub struct NuclearGeneratingUnit {
4    #[serde(flatten)]
5    pub base: super::GeneratingUnit,
6}
7impl crate::base::CimElement for NuclearGeneratingUnit {
8    fn mrid(&self) -> &str { &self.base.base.base.base.id }
9    fn type_name(&self) -> &'static str { "NuclearGeneratingUnit" }
10    fn as_any(&self) -> &dyn std::any::Any { self }
11    fn to_json_value(&self) -> serde_json::Value {
12        serde_json::to_value(self).unwrap_or(serde_json::Value::Null)
13    }
14    fn to_block(&self) -> crate::base::RdfBlock {
15        let mut block = self.base.to_block();
16        block.type_name = "NuclearGeneratingUnit".to_string();
17        block
18    }
19}
20
21impl NuclearGeneratingUnit {
22    pub fn from_block(b: &crate::base::RdfBlock) -> Self {
23        let mut obj = Self::default();
24        obj.base.base.base.base.id.clone_from(&b.mrid);
25        for (key, val) in &b.fields {
26            match key.as_str() {
27                "GeneratingUnit.genControlSource" => {
28                    if let crate::base::FieldValue::Resource(sv) = val {
29                        obj.base.gen_control_source = Some(crate::base::UriRef { uri: sv.clone() });
30                    }
31                }
32                "GeneratingUnit.governorSCD" => {
33                    match val {
34                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.governor_scd = Some(v); } }
35                        crate::base::FieldValue::TextList(svs) => {
36                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.governor_scd = Some(v); } }
37                        }
38                        _ => {}
39                    }
40                }
41                "GeneratingUnit.longPF" => {
42                    match val {
43                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.long_pf = Some(v); } }
44                        crate::base::FieldValue::TextList(svs) => {
45                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.long_pf = Some(v); } }
46                        }
47                        _ => {}
48                    }
49                }
50                "GeneratingUnit.maxOperatingP" => {
51                    match val {
52                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.max_operating_p = Some(v); } }
53                        crate::base::FieldValue::TextList(svs) => {
54                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.max_operating_p = Some(v); } }
55                        }
56                        _ => {}
57                    }
58                }
59                "GeneratingUnit.maximumAllowableSpinningReserve" => {
60                    match val {
61                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.maximum_allowable_spinning_reserve = Some(v); } }
62                        crate::base::FieldValue::TextList(svs) => {
63                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.maximum_allowable_spinning_reserve = Some(v); } }
64                        }
65                        _ => {}
66                    }
67                }
68                "GeneratingUnit.minOperatingP" => {
69                    match val {
70                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.min_operating_p = Some(v); } }
71                        crate::base::FieldValue::TextList(svs) => {
72                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.min_operating_p = Some(v); } }
73                        }
74                        _ => {}
75                    }
76                }
77                "GeneratingUnit.nominalP" => {
78                    match val {
79                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.nominal_p = Some(v); } }
80                        crate::base::FieldValue::TextList(svs) => {
81                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.nominal_p = Some(v); } }
82                        }
83                        _ => {}
84                    }
85                }
86                "GeneratingUnit.normalPF" => {
87                    match val {
88                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.normal_pf = Some(v); } }
89                        crate::base::FieldValue::TextList(svs) => {
90                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.normal_pf = Some(v); } }
91                        }
92                        _ => {}
93                    }
94                }
95                "GeneratingUnit.ratedGrossMaxP" => {
96                    match val {
97                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.rated_gross_max_p = Some(v); } }
98                        crate::base::FieldValue::TextList(svs) => {
99                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.rated_gross_max_p = Some(v); } }
100                        }
101                        _ => {}
102                    }
103                }
104                "GeneratingUnit.ratedGrossMinP" => {
105                    match val {
106                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.rated_gross_min_p = Some(v); } }
107                        crate::base::FieldValue::TextList(svs) => {
108                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.rated_gross_min_p = Some(v); } }
109                        }
110                        _ => {}
111                    }
112                }
113                "GeneratingUnit.ratedNetMaxP" => {
114                    match val {
115                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.rated_net_max_p = Some(v); } }
116                        crate::base::FieldValue::TextList(svs) => {
117                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.rated_net_max_p = Some(v); } }
118                        }
119                        _ => {}
120                    }
121                }
122                "GeneratingUnit.shortPF" => {
123                    match val {
124                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.short_pf = Some(v); } }
125                        crate::base::FieldValue::TextList(svs) => {
126                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.short_pf = Some(v); } }
127                        }
128                        _ => {}
129                    }
130                }
131                "GeneratingUnit.startupCost" => {
132                    match val {
133                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.startup_cost = Some(v); } }
134                        crate::base::FieldValue::TextList(svs) => {
135                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.startup_cost = Some(v); } }
136                        }
137                        _ => {}
138                    }
139                }
140                "GeneratingUnit.startupTime" => {
141                    match val {
142                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.startup_time = Some(v); } }
143                        crate::base::FieldValue::TextList(svs) => {
144                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.startup_time = Some(v); } }
145                        }
146                        _ => {}
147                    }
148                }
149                "GeneratingUnit.totalEfficiency" => {
150                    match val {
151                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.total_efficiency = Some(v); } }
152                        crate::base::FieldValue::TextList(svs) => {
153                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.total_efficiency = Some(v); } }
154                        }
155                        _ => {}
156                    }
157                }
158                "GeneratingUnit.variableCost" => {
159                    match val {
160                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.base.variable_cost = Some(v); } }
161                        crate::base::FieldValue::TextList(svs) => {
162                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.base.variable_cost = Some(v); } }
163                        }
164                        _ => {}
165                    }
166                }
167                "Equipment.EquipmentContainer" => {
168                    if let crate::base::FieldValue::Resource(sv) = val {
169                        obj.base.base.equipment_container = Some(crate::base::MridRef { mrid: sv.clone() });
170                    }
171                }
172                "Equipment.aggregate" => {
173                    match val {
174                        crate::base::FieldValue::Text(sv) => { obj.base.base.aggregate = Some(sv.trim() == "true"); }
175                        crate::base::FieldValue::TextList(svs) => {
176                            if let Some(sv) = svs.last() { obj.base.base.aggregate = Some(sv.trim() == "true"); }
177                        }
178                        _ => {}
179                    }
180                }
181                "Equipment.inService" => {
182                    match val {
183                        crate::base::FieldValue::Text(sv) => { obj.base.base.in_service = Some(sv.trim() == "true"); }
184                        crate::base::FieldValue::TextList(svs) => {
185                            if let Some(sv) = svs.last() { obj.base.base.in_service = Some(sv.trim() == "true"); }
186                        }
187                        _ => {}
188                    }
189                }
190                "Equipment.normallyInService" => {
191                    match val {
192                        crate::base::FieldValue::Text(sv) => { obj.base.base.normally_in_service = Some(sv.trim() == "true"); }
193                        crate::base::FieldValue::TextList(svs) => {
194                            if let Some(sv) = svs.last() { obj.base.base.normally_in_service = Some(sv.trim() == "true"); }
195                        }
196                        _ => {}
197                    }
198                }
199                "IdentifiedObject.description" => {
200                    match val {
201                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.base.description = sv.clone(); }
202                        crate::base::FieldValue::TextList(svs) => {
203                            if let Some(sv) = svs.last() { obj.base.base.base.base.description = sv.clone(); }
204                        }
205                        _ => {}
206                    }
207                }
208                "IdentifiedObject.energyIdentCodeEic" => {
209                    match val {
210                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.base.energy_ident_code_eic = sv.clone(); }
211                        crate::base::FieldValue::TextList(svs) => {
212                            if let Some(sv) = svs.last() { obj.base.base.base.base.energy_ident_code_eic = sv.clone(); }
213                        }
214                        _ => {}
215                    }
216                }
217                "IdentifiedObject.mRID" => {
218                    match val {
219                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.base.m_rid = sv.clone(); }
220                        crate::base::FieldValue::TextList(svs) => {
221                            if let Some(sv) = svs.last() { obj.base.base.base.base.m_rid = sv.clone(); }
222                        }
223                        _ => {}
224                    }
225                }
226                "IdentifiedObject.name" => {
227                    match val {
228                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.base.name = sv.clone(); }
229                        crate::base::FieldValue::TextList(svs) => {
230                            if let Some(sv) = svs.last() { obj.base.base.base.base.name = sv.clone(); }
231                        }
232                        _ => {}
233                    }
234                }
235                "IdentifiedObject.shortName" => {
236                    match val {
237                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.base.short_name = sv.clone(); }
238                        crate::base::FieldValue::TextList(svs) => {
239                            if let Some(sv) = svs.last() { obj.base.base.base.base.short_name = sv.clone(); }
240                        }
241                        _ => {}
242                    }
243                }
244                _ => {}
245            }
246        }
247        obj
248    }
249}