Skip to main content

cimstructs/
GovSteam1.rs

1/// Steam turbine governor, based on the GovSteamIEEE1 (with optional deadband and nonlinear valve gain added).
2#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
3pub struct GovSteam1 {
4    #[serde(flatten)]
5    pub base: super::TurbineGovernorDynamics,
6    /// Intentional deadband width (db1). Unit = Hz. Typical value = 0.
7    #[serde(skip_serializing_if = "Option::is_none")]
8    pub db1: Option<f64>,
9    /// Unintentional deadband (db2). Unit = MW. Typical value = 0.
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub db2: Option<f64>,
12    /// Intentional db hysteresis (eps). Unit = Hz. Typical value = 0.
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub eps: Option<f64>,
15    /// Nonlinear gain valve position point 1 (GV1). Typical value = 0.
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub gv1: Option<f64>,
18    /// Nonlinear gain valve position point 2 (GV2). Typical value = 0,4.
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub gv2: Option<f64>,
21    /// Nonlinear gain valve position point 3 (GV3). Typical value = 0,5.
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub gv3: Option<f64>,
24    /// Nonlinear gain valve position point 4 (GV4). Typical value = 0,6.
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub gv4: Option<f64>,
27    /// Nonlinear gain valve position point 5 (GV5). Typical value = 1.
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub gv5: Option<f64>,
30    /// Nonlinear gain valve position point 6 (GV6). Typical value = 0.
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub gv6: Option<f64>,
33    /// Governor gain (reciprocal of droop) (K) (> 0). Typical value = 25.
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub k: Option<f64>,
36    /// Fraction of HP shaft power after first boiler pass (K1). Typical value = 0,2.
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub k1: Option<f64>,
39    /// Fraction of LP shaft power after first boiler pass (K2). Typical value = 0.
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub k2: Option<f64>,
42    /// Fraction of HP shaft power after second boiler pass (K3). Typical value = 0,3.
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub k3: Option<f64>,
45    /// Fraction of LP shaft power after second boiler pass (K4). Typical value = 0.
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub k4: Option<f64>,
48    /// Fraction of HP shaft power after third boiler pass (K5). Typical value = 0,5.
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub k5: Option<f64>,
51    /// Fraction of LP shaft power after third boiler pass (K6). Typical value = 0.
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub k6: Option<f64>,
54    /// Fraction of HP shaft power after fourth boiler pass (K7). Typical value = 0.
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub k7: Option<f64>,
57    /// Fraction of LP shaft power after fourth boiler pass (K8). Typical value = 0.
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub k8: Option<f64>,
60    /// Base for power values (MWbase) (> 0). Unit = MW.
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub mwbase: Option<f64>,
63    /// Nonlinear gain power value point 1 (Pgv1). Typical value = 0.
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub pgv1: Option<f64>,
66    /// Nonlinear gain power value point 2 (Pgv2). Typical value = 0,75.
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub pgv2: Option<f64>,
69    /// Nonlinear gain power value point 3 (Pgv3). Typical value = 0,91.
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub pgv3: Option<f64>,
72    /// Nonlinear gain power value point 4 (Pgv4). Typical value = 0,98.
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub pgv4: Option<f64>,
75    /// Nonlinear gain power value point 5 (Pgv5). Typical value = 1.
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub pgv5: Option<f64>,
78    /// Nonlinear gain power value point 6 (Pgv6). Typical value = 0.
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub pgv6: Option<f64>,
81    /// Maximum valve opening (Pmax) (> GovSteam1.pmin). Typical value = 1.
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub pmax: Option<f64>,
84    /// Minimum valve opening (Pmin) (>= 0 and < GovSteam1.pmax). Typical value = 0.
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub pmin: Option<f64>,
87    /// Intentional deadband indicator. true = intentional deadband is applied false = intentional deadband is not applied. Typical value = true.
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub sdb1: Option<bool>,
90    /// Unintentional deadband location. true = intentional deadband is applied before point 'A' false = intentional deadband is applied after point 'A'. Typical value = true.
91    #[serde(skip_serializing_if = "Option::is_none")]
92    pub sdb2: Option<bool>,
93    /// Governor lag time constant (T1) (>= 0). Typical value = 0.
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub t1: Option<f64>,
96    /// Governor lead time constant (T2) (>= 0). Typical value = 0.
97    #[serde(skip_serializing_if = "Option::is_none")]
98    pub t2: Option<f64>,
99    /// Valve positioner time constant (T3) (> 0). Typical value = 0,1.
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub t3: Option<f64>,
102    /// Inlet piping/steam bowl time constant (T4) (>= 0). Typical value = 0,3.
103    #[serde(skip_serializing_if = "Option::is_none")]
104    pub t4: Option<f64>,
105    /// Time constant of second boiler pass (T5) (>= 0). Typical value = 5.
106    #[serde(skip_serializing_if = "Option::is_none")]
107    pub t5: Option<f64>,
108    /// Time constant of third boiler pass (T6) (>= 0). Typical value = 0,5.
109    #[serde(skip_serializing_if = "Option::is_none")]
110    pub t6: Option<f64>,
111    /// Time constant of fourth boiler pass (T7) (>= 0). Typical value = 0.
112    #[serde(skip_serializing_if = "Option::is_none")]
113    pub t7: Option<f64>,
114    /// Maximum valve closing velocity (Uc) (< 0). Unit = PU / s. Typical value = -10.
115    #[serde(skip_serializing_if = "Option::is_none")]
116    pub uc: Option<f64>,
117    /// Maximum valve opening velocity (Uo) (> 0). Unit = PU / s. Typical value = 1.
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub uo: Option<f64>,
120    /// Nonlinear valve characteristic. true = nonlinear valve characteristic is used false = nonlinear valve characteristic is not used. Typical value = true.
121    #[serde(skip_serializing_if = "Option::is_none")]
122    pub valve: Option<bool>,
123}
124impl crate::base::CimElement for GovSteam1 {
125    fn mrid(&self) -> &str { &self.base.base.base.id }
126    fn type_name(&self) -> &'static str { "GovSteam1" }
127    fn as_any(&self) -> &dyn std::any::Any { self }
128    fn to_json_value(&self) -> serde_json::Value {
129        serde_json::to_value(self).unwrap_or(serde_json::Value::Null)
130    }
131    fn to_block(&self) -> crate::base::RdfBlock {
132        let mut block = self.base.to_block();
133        block.type_name = "GovSteam1".to_string();
134        if let Some(v) = self.db1 {
135            block.fields.insert("GovSteam1.db1".into(), crate::base::FieldValue::Text(v.to_string()));
136        }
137        if let Some(v) = self.db2 {
138            block.fields.insert("GovSteam1.db2".into(), crate::base::FieldValue::Text(v.to_string()));
139        }
140        if let Some(v) = self.eps {
141            block.fields.insert("GovSteam1.eps".into(), crate::base::FieldValue::Text(v.to_string()));
142        }
143        if let Some(v) = self.gv1 {
144            block.fields.insert("GovSteam1.gv1".into(), crate::base::FieldValue::Text(v.to_string()));
145        }
146        if let Some(v) = self.gv2 {
147            block.fields.insert("GovSteam1.gv2".into(), crate::base::FieldValue::Text(v.to_string()));
148        }
149        if let Some(v) = self.gv3 {
150            block.fields.insert("GovSteam1.gv3".into(), crate::base::FieldValue::Text(v.to_string()));
151        }
152        if let Some(v) = self.gv4 {
153            block.fields.insert("GovSteam1.gv4".into(), crate::base::FieldValue::Text(v.to_string()));
154        }
155        if let Some(v) = self.gv5 {
156            block.fields.insert("GovSteam1.gv5".into(), crate::base::FieldValue::Text(v.to_string()));
157        }
158        if let Some(v) = self.gv6 {
159            block.fields.insert("GovSteam1.gv6".into(), crate::base::FieldValue::Text(v.to_string()));
160        }
161        if let Some(v) = self.k {
162            block.fields.insert("GovSteam1.k".into(), crate::base::FieldValue::Text(v.to_string()));
163        }
164        if let Some(v) = self.k1 {
165            block.fields.insert("GovSteam1.k1".into(), crate::base::FieldValue::Text(v.to_string()));
166        }
167        if let Some(v) = self.k2 {
168            block.fields.insert("GovSteam1.k2".into(), crate::base::FieldValue::Text(v.to_string()));
169        }
170        if let Some(v) = self.k3 {
171            block.fields.insert("GovSteam1.k3".into(), crate::base::FieldValue::Text(v.to_string()));
172        }
173        if let Some(v) = self.k4 {
174            block.fields.insert("GovSteam1.k4".into(), crate::base::FieldValue::Text(v.to_string()));
175        }
176        if let Some(v) = self.k5 {
177            block.fields.insert("GovSteam1.k5".into(), crate::base::FieldValue::Text(v.to_string()));
178        }
179        if let Some(v) = self.k6 {
180            block.fields.insert("GovSteam1.k6".into(), crate::base::FieldValue::Text(v.to_string()));
181        }
182        if let Some(v) = self.k7 {
183            block.fields.insert("GovSteam1.k7".into(), crate::base::FieldValue::Text(v.to_string()));
184        }
185        if let Some(v) = self.k8 {
186            block.fields.insert("GovSteam1.k8".into(), crate::base::FieldValue::Text(v.to_string()));
187        }
188        if let Some(v) = self.mwbase {
189            block.fields.insert("GovSteam1.mwbase".into(), crate::base::FieldValue::Text(v.to_string()));
190        }
191        if let Some(v) = self.pgv1 {
192            block.fields.insert("GovSteam1.pgv1".into(), crate::base::FieldValue::Text(v.to_string()));
193        }
194        if let Some(v) = self.pgv2 {
195            block.fields.insert("GovSteam1.pgv2".into(), crate::base::FieldValue::Text(v.to_string()));
196        }
197        if let Some(v) = self.pgv3 {
198            block.fields.insert("GovSteam1.pgv3".into(), crate::base::FieldValue::Text(v.to_string()));
199        }
200        if let Some(v) = self.pgv4 {
201            block.fields.insert("GovSteam1.pgv4".into(), crate::base::FieldValue::Text(v.to_string()));
202        }
203        if let Some(v) = self.pgv5 {
204            block.fields.insert("GovSteam1.pgv5".into(), crate::base::FieldValue::Text(v.to_string()));
205        }
206        if let Some(v) = self.pgv6 {
207            block.fields.insert("GovSteam1.pgv6".into(), crate::base::FieldValue::Text(v.to_string()));
208        }
209        if let Some(v) = self.pmax {
210            block.fields.insert("GovSteam1.pmax".into(), crate::base::FieldValue::Text(v.to_string()));
211        }
212        if let Some(v) = self.pmin {
213            block.fields.insert("GovSteam1.pmin".into(), crate::base::FieldValue::Text(v.to_string()));
214        }
215        if let Some(v) = self.sdb1 {
216            block.fields.insert("GovSteam1.sdb1".into(), crate::base::FieldValue::Text(v.to_string()));
217        }
218        if let Some(v) = self.sdb2 {
219            block.fields.insert("GovSteam1.sdb2".into(), crate::base::FieldValue::Text(v.to_string()));
220        }
221        if let Some(v) = self.t1 {
222            block.fields.insert("GovSteam1.t1".into(), crate::base::FieldValue::Text(v.to_string()));
223        }
224        if let Some(v) = self.t2 {
225            block.fields.insert("GovSteam1.t2".into(), crate::base::FieldValue::Text(v.to_string()));
226        }
227        if let Some(v) = self.t3 {
228            block.fields.insert("GovSteam1.t3".into(), crate::base::FieldValue::Text(v.to_string()));
229        }
230        if let Some(v) = self.t4 {
231            block.fields.insert("GovSteam1.t4".into(), crate::base::FieldValue::Text(v.to_string()));
232        }
233        if let Some(v) = self.t5 {
234            block.fields.insert("GovSteam1.t5".into(), crate::base::FieldValue::Text(v.to_string()));
235        }
236        if let Some(v) = self.t6 {
237            block.fields.insert("GovSteam1.t6".into(), crate::base::FieldValue::Text(v.to_string()));
238        }
239        if let Some(v) = self.t7 {
240            block.fields.insert("GovSteam1.t7".into(), crate::base::FieldValue::Text(v.to_string()));
241        }
242        if let Some(v) = self.uc {
243            block.fields.insert("GovSteam1.uc".into(), crate::base::FieldValue::Text(v.to_string()));
244        }
245        if let Some(v) = self.uo {
246            block.fields.insert("GovSteam1.uo".into(), crate::base::FieldValue::Text(v.to_string()));
247        }
248        if let Some(v) = self.valve {
249            block.fields.insert("GovSteam1.valve".into(), crate::base::FieldValue::Text(v.to_string()));
250        }
251        block
252    }
253}
254
255impl GovSteam1 {
256    pub fn from_block(b: &crate::base::RdfBlock) -> Self {
257        let mut obj = Self::default();
258        obj.base.base.base.id.clone_from(&b.mrid);
259        for (key, val) in &b.fields {
260            match key.as_str() {
261                "GovSteam1.db1" => {
262                    match val {
263                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.db1 = Some(v); } }
264                        crate::base::FieldValue::TextList(svs) => {
265                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.db1 = Some(v); } }
266                        }
267                        _ => {}
268                    }
269                }
270                "GovSteam1.db2" => {
271                    match val {
272                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.db2 = Some(v); } }
273                        crate::base::FieldValue::TextList(svs) => {
274                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.db2 = Some(v); } }
275                        }
276                        _ => {}
277                    }
278                }
279                "GovSteam1.eps" => {
280                    match val {
281                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.eps = Some(v); } }
282                        crate::base::FieldValue::TextList(svs) => {
283                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.eps = Some(v); } }
284                        }
285                        _ => {}
286                    }
287                }
288                "GovSteam1.gv1" => {
289                    match val {
290                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.gv1 = Some(v); } }
291                        crate::base::FieldValue::TextList(svs) => {
292                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.gv1 = Some(v); } }
293                        }
294                        _ => {}
295                    }
296                }
297                "GovSteam1.gv2" => {
298                    match val {
299                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.gv2 = Some(v); } }
300                        crate::base::FieldValue::TextList(svs) => {
301                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.gv2 = Some(v); } }
302                        }
303                        _ => {}
304                    }
305                }
306                "GovSteam1.gv3" => {
307                    match val {
308                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.gv3 = Some(v); } }
309                        crate::base::FieldValue::TextList(svs) => {
310                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.gv3 = Some(v); } }
311                        }
312                        _ => {}
313                    }
314                }
315                "GovSteam1.gv4" => {
316                    match val {
317                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.gv4 = Some(v); } }
318                        crate::base::FieldValue::TextList(svs) => {
319                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.gv4 = Some(v); } }
320                        }
321                        _ => {}
322                    }
323                }
324                "GovSteam1.gv5" => {
325                    match val {
326                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.gv5 = Some(v); } }
327                        crate::base::FieldValue::TextList(svs) => {
328                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.gv5 = Some(v); } }
329                        }
330                        _ => {}
331                    }
332                }
333                "GovSteam1.gv6" => {
334                    match val {
335                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.gv6 = Some(v); } }
336                        crate::base::FieldValue::TextList(svs) => {
337                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.gv6 = Some(v); } }
338                        }
339                        _ => {}
340                    }
341                }
342                "GovSteam1.k" => {
343                    match val {
344                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k = Some(v); } }
345                        crate::base::FieldValue::TextList(svs) => {
346                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k = Some(v); } }
347                        }
348                        _ => {}
349                    }
350                }
351                "GovSteam1.k1" => {
352                    match val {
353                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k1 = Some(v); } }
354                        crate::base::FieldValue::TextList(svs) => {
355                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k1 = Some(v); } }
356                        }
357                        _ => {}
358                    }
359                }
360                "GovSteam1.k2" => {
361                    match val {
362                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k2 = Some(v); } }
363                        crate::base::FieldValue::TextList(svs) => {
364                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k2 = Some(v); } }
365                        }
366                        _ => {}
367                    }
368                }
369                "GovSteam1.k3" => {
370                    match val {
371                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k3 = Some(v); } }
372                        crate::base::FieldValue::TextList(svs) => {
373                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k3 = Some(v); } }
374                        }
375                        _ => {}
376                    }
377                }
378                "GovSteam1.k4" => {
379                    match val {
380                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k4 = Some(v); } }
381                        crate::base::FieldValue::TextList(svs) => {
382                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k4 = Some(v); } }
383                        }
384                        _ => {}
385                    }
386                }
387                "GovSteam1.k5" => {
388                    match val {
389                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k5 = Some(v); } }
390                        crate::base::FieldValue::TextList(svs) => {
391                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k5 = Some(v); } }
392                        }
393                        _ => {}
394                    }
395                }
396                "GovSteam1.k6" => {
397                    match val {
398                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k6 = Some(v); } }
399                        crate::base::FieldValue::TextList(svs) => {
400                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k6 = Some(v); } }
401                        }
402                        _ => {}
403                    }
404                }
405                "GovSteam1.k7" => {
406                    match val {
407                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k7 = Some(v); } }
408                        crate::base::FieldValue::TextList(svs) => {
409                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k7 = Some(v); } }
410                        }
411                        _ => {}
412                    }
413                }
414                "GovSteam1.k8" => {
415                    match val {
416                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k8 = Some(v); } }
417                        crate::base::FieldValue::TextList(svs) => {
418                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k8 = Some(v); } }
419                        }
420                        _ => {}
421                    }
422                }
423                "GovSteam1.mwbase" => {
424                    match val {
425                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.mwbase = Some(v); } }
426                        crate::base::FieldValue::TextList(svs) => {
427                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.mwbase = Some(v); } }
428                        }
429                        _ => {}
430                    }
431                }
432                "GovSteam1.pgv1" => {
433                    match val {
434                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.pgv1 = Some(v); } }
435                        crate::base::FieldValue::TextList(svs) => {
436                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.pgv1 = Some(v); } }
437                        }
438                        _ => {}
439                    }
440                }
441                "GovSteam1.pgv2" => {
442                    match val {
443                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.pgv2 = Some(v); } }
444                        crate::base::FieldValue::TextList(svs) => {
445                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.pgv2 = Some(v); } }
446                        }
447                        _ => {}
448                    }
449                }
450                "GovSteam1.pgv3" => {
451                    match val {
452                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.pgv3 = Some(v); } }
453                        crate::base::FieldValue::TextList(svs) => {
454                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.pgv3 = Some(v); } }
455                        }
456                        _ => {}
457                    }
458                }
459                "GovSteam1.pgv4" => {
460                    match val {
461                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.pgv4 = Some(v); } }
462                        crate::base::FieldValue::TextList(svs) => {
463                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.pgv4 = Some(v); } }
464                        }
465                        _ => {}
466                    }
467                }
468                "GovSteam1.pgv5" => {
469                    match val {
470                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.pgv5 = Some(v); } }
471                        crate::base::FieldValue::TextList(svs) => {
472                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.pgv5 = Some(v); } }
473                        }
474                        _ => {}
475                    }
476                }
477                "GovSteam1.pgv6" => {
478                    match val {
479                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.pgv6 = Some(v); } }
480                        crate::base::FieldValue::TextList(svs) => {
481                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.pgv6 = Some(v); } }
482                        }
483                        _ => {}
484                    }
485                }
486                "GovSteam1.pmax" => {
487                    match val {
488                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.pmax = Some(v); } }
489                        crate::base::FieldValue::TextList(svs) => {
490                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.pmax = Some(v); } }
491                        }
492                        _ => {}
493                    }
494                }
495                "GovSteam1.pmin" => {
496                    match val {
497                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.pmin = Some(v); } }
498                        crate::base::FieldValue::TextList(svs) => {
499                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.pmin = Some(v); } }
500                        }
501                        _ => {}
502                    }
503                }
504                "GovSteam1.sdb1" => {
505                    match val {
506                        crate::base::FieldValue::Text(sv) => { obj.sdb1 = Some(sv.trim() == "true"); }
507                        crate::base::FieldValue::TextList(svs) => {
508                            if let Some(sv) = svs.last() { obj.sdb1 = Some(sv.trim() == "true"); }
509                        }
510                        _ => {}
511                    }
512                }
513                "GovSteam1.sdb2" => {
514                    match val {
515                        crate::base::FieldValue::Text(sv) => { obj.sdb2 = Some(sv.trim() == "true"); }
516                        crate::base::FieldValue::TextList(svs) => {
517                            if let Some(sv) = svs.last() { obj.sdb2 = Some(sv.trim() == "true"); }
518                        }
519                        _ => {}
520                    }
521                }
522                "GovSteam1.t1" => {
523                    match val {
524                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t1 = Some(v); } }
525                        crate::base::FieldValue::TextList(svs) => {
526                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t1 = Some(v); } }
527                        }
528                        _ => {}
529                    }
530                }
531                "GovSteam1.t2" => {
532                    match val {
533                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t2 = Some(v); } }
534                        crate::base::FieldValue::TextList(svs) => {
535                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t2 = Some(v); } }
536                        }
537                        _ => {}
538                    }
539                }
540                "GovSteam1.t3" => {
541                    match val {
542                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t3 = Some(v); } }
543                        crate::base::FieldValue::TextList(svs) => {
544                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t3 = Some(v); } }
545                        }
546                        _ => {}
547                    }
548                }
549                "GovSteam1.t4" => {
550                    match val {
551                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t4 = Some(v); } }
552                        crate::base::FieldValue::TextList(svs) => {
553                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t4 = Some(v); } }
554                        }
555                        _ => {}
556                    }
557                }
558                "GovSteam1.t5" => {
559                    match val {
560                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t5 = Some(v); } }
561                        crate::base::FieldValue::TextList(svs) => {
562                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t5 = Some(v); } }
563                        }
564                        _ => {}
565                    }
566                }
567                "GovSteam1.t6" => {
568                    match val {
569                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t6 = Some(v); } }
570                        crate::base::FieldValue::TextList(svs) => {
571                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t6 = Some(v); } }
572                        }
573                        _ => {}
574                    }
575                }
576                "GovSteam1.t7" => {
577                    match val {
578                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t7 = Some(v); } }
579                        crate::base::FieldValue::TextList(svs) => {
580                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t7 = Some(v); } }
581                        }
582                        _ => {}
583                    }
584                }
585                "GovSteam1.uc" => {
586                    match val {
587                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.uc = Some(v); } }
588                        crate::base::FieldValue::TextList(svs) => {
589                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.uc = Some(v); } }
590                        }
591                        _ => {}
592                    }
593                }
594                "GovSteam1.uo" => {
595                    match val {
596                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.uo = Some(v); } }
597                        crate::base::FieldValue::TextList(svs) => {
598                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.uo = Some(v); } }
599                        }
600                        _ => {}
601                    }
602                }
603                "GovSteam1.valve" => {
604                    match val {
605                        crate::base::FieldValue::Text(sv) => { obj.valve = Some(sv.trim() == "true"); }
606                        crate::base::FieldValue::TextList(svs) => {
607                            if let Some(sv) = svs.last() { obj.valve = Some(sv.trim() == "true"); }
608                        }
609                        _ => {}
610                    }
611                }
612                "TurbineGovernorDynamics.AsynchronousMachineDynamics" => {
613                    if let crate::base::FieldValue::Resource(sv) = val {
614                        obj.base.asynchronous_machine_dynamics = Some(crate::base::MridRef { mrid: sv.clone() });
615                    }
616                }
617                "TurbineGovernorDynamics.SynchronousMachineDynamics" => {
618                    if let crate::base::FieldValue::Resource(sv) = val {
619                        obj.base.synchronous_machine_dynamics = Some(crate::base::MridRef { mrid: sv.clone() });
620                    }
621                }
622                "DynamicsFunctionBlock.enabled" => {
623                    match val {
624                        crate::base::FieldValue::Text(sv) => { obj.base.base.enabled = Some(sv.trim() == "true"); }
625                        crate::base::FieldValue::TextList(svs) => {
626                            if let Some(sv) = svs.last() { obj.base.base.enabled = Some(sv.trim() == "true"); }
627                        }
628                        _ => {}
629                    }
630                }
631                "IdentifiedObject.description" => {
632                    match val {
633                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.description = sv.clone(); }
634                        crate::base::FieldValue::TextList(svs) => {
635                            if let Some(sv) = svs.last() { obj.base.base.base.description = sv.clone(); }
636                        }
637                        _ => {}
638                    }
639                }
640                "IdentifiedObject.energyIdentCodeEic" => {
641                    match val {
642                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.energy_ident_code_eic = sv.clone(); }
643                        crate::base::FieldValue::TextList(svs) => {
644                            if let Some(sv) = svs.last() { obj.base.base.base.energy_ident_code_eic = sv.clone(); }
645                        }
646                        _ => {}
647                    }
648                }
649                "IdentifiedObject.mRID" => {
650                    match val {
651                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.m_rid = sv.clone(); }
652                        crate::base::FieldValue::TextList(svs) => {
653                            if let Some(sv) = svs.last() { obj.base.base.base.m_rid = sv.clone(); }
654                        }
655                        _ => {}
656                    }
657                }
658                "IdentifiedObject.name" => {
659                    match val {
660                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.name = sv.clone(); }
661                        crate::base::FieldValue::TextList(svs) => {
662                            if let Some(sv) = svs.last() { obj.base.base.base.name = sv.clone(); }
663                        }
664                        _ => {}
665                    }
666                }
667                "IdentifiedObject.shortName" => {
668                    match val {
669                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.short_name = sv.clone(); }
670                        crate::base::FieldValue::TextList(svs) => {
671                            if let Some(sv) = svs.last() { obj.base.base.base.short_name = sv.clone(); }
672                        }
673                        _ => {}
674                    }
675                }
676                _ => {}
677            }
678        }
679        obj
680    }
681}