Skip to main content

cimstructs/
GovGASTWD.rs

1/// Woodward™ gas turbine governor. [Footnote: Woodward gas turbines are an example of suitable products available commercially. This information is given for the convenience of users of this document and does not constitute an endorsement by IEC of these products.]
2#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
3pub struct GovGASTWD {
4    #[serde(flatten)]
5    pub base: super::TurbineGovernorDynamics,
6    /// Valve positioner (A).
7    #[serde(skip_serializing_if = "Option::is_none")]
8    pub a: Option<f64>,
9    /// Exhaust temperature parameter (Af1).
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub af1: Option<f64>,
12    /// Coefficient equal to 0,5(1-speed) (Af2).
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub af2: Option<f64>,
15    /// Valve positioner (B).
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub b: Option<f64>,
18    /// (Bf1). Bf1 = E(1-w) where E (speed sensitivity coefficient) is 0,55 to 0,65 x Tr.
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub bf1: Option<f64>,
21    /// Turbine torque coefficient Khhv (depends on heating value of fuel stream in combustion chamber) (Bf2).
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub bf2: Option<f64>,
24    /// Valve positioner (C).
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub c: Option<f64>,
27    /// Coefficient defining fuel flow where power output is 0 % (Cf2). Synchronous but no output. Typically 0,23 x Khhv (23 % fuel flow).
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub cf2: Option<f64>,
30    /// Combustion reaction time delay (Ecr) (>= 0).
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub ecr: Option<f64>,
33    /// Turbine and exhaust delay (Etd) (>= 0).
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub etd: Option<f64>,
36    /// Ratio of fuel adjustment (K3).
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub k3: Option<f64>,
39    /// Gain of radiation shield (K4).
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub k4: Option<f64>,
42    /// Gain of radiation shield (K5).
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub k5: Option<f64>,
45    /// Minimum fuel flow (K6).
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub k6: Option<f64>,
48    /// Drop governor gain (Kd).
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub kd: Option<f64>,
51    /// (Kdroop) (>= 0).
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub kdroop: Option<f64>,
54    /// Fuel system feedback (Kf).
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub kf: Option<f64>,
57    /// Isochronous Governor Gain (Ki).
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub ki: Option<f64>,
60    /// PID proportional gain (Kp).
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub kp: Option<f64>,
63    /// Base for power values (MWbase) (> 0). Unit = MW.
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub mwbase: Option<f64>,
66    /// Fuel control time constant (T) (>= 0).
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub t: Option<f64>,
69    /// Radiation shield time constant (T3) (>= 0).
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub t3: Option<f64>,
72    /// Thermocouple time constant (T4) (>= 0).
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub t4: Option<f64>,
75    /// Temperature control time constant (T5) (>= 0).
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub t5: Option<f64>,
78    /// Temperature control (Tc).
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub tc: Option<f64>,
81    /// Compressor discharge time constant (Tcd) (>= 0).
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub tcd: Option<f64>,
84    /// Power transducer time constant (Td) (>= 0).
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub td: Option<f64>,
87    /// Fuel system time constant (Tf) (>= 0).
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub tf: Option<f64>,
90    /// Maximum Turbine limit (Tmax) (> GovGASTWD.tmin).
91    #[serde(skip_serializing_if = "Option::is_none")]
92    pub tmax: Option<f64>,
93    /// Minimum turbine limit (Tmin) (< GovGASTWD.tmax).
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub tmin: Option<f64>,
96    /// Rated temperature (Tr).
97    #[serde(skip_serializing_if = "Option::is_none")]
98    pub tr: Option<f64>,
99    /// Turbine rating (Trate). Unit = MW.
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub trate: Option<f64>,
102    /// Temperature controller integration rate (Tt) (>= 0).
103    #[serde(skip_serializing_if = "Option::is_none")]
104    pub tt: Option<f64>,
105}
106impl crate::base::CimElement for GovGASTWD {
107    fn mrid(&self) -> &str { &self.base.base.base.id }
108    fn type_name(&self) -> &'static str { "GovGASTWD" }
109    fn as_any(&self) -> &dyn std::any::Any { self }
110    fn to_json_value(&self) -> serde_json::Value {
111        serde_json::to_value(self).unwrap_or(serde_json::Value::Null)
112    }
113    fn to_block(&self) -> crate::base::RdfBlock {
114        let mut block = self.base.to_block();
115        block.type_name = "GovGASTWD".to_string();
116        if let Some(v) = self.a {
117            block.fields.insert("GovGASTWD.a".into(), crate::base::FieldValue::Text(v.to_string()));
118        }
119        if let Some(v) = self.af1 {
120            block.fields.insert("GovGASTWD.af1".into(), crate::base::FieldValue::Text(v.to_string()));
121        }
122        if let Some(v) = self.af2 {
123            block.fields.insert("GovGASTWD.af2".into(), crate::base::FieldValue::Text(v.to_string()));
124        }
125        if let Some(v) = self.b {
126            block.fields.insert("GovGASTWD.b".into(), crate::base::FieldValue::Text(v.to_string()));
127        }
128        if let Some(v) = self.bf1 {
129            block.fields.insert("GovGASTWD.bf1".into(), crate::base::FieldValue::Text(v.to_string()));
130        }
131        if let Some(v) = self.bf2 {
132            block.fields.insert("GovGASTWD.bf2".into(), crate::base::FieldValue::Text(v.to_string()));
133        }
134        if let Some(v) = self.c {
135            block.fields.insert("GovGASTWD.c".into(), crate::base::FieldValue::Text(v.to_string()));
136        }
137        if let Some(v) = self.cf2 {
138            block.fields.insert("GovGASTWD.cf2".into(), crate::base::FieldValue::Text(v.to_string()));
139        }
140        if let Some(v) = self.ecr {
141            block.fields.insert("GovGASTWD.ecr".into(), crate::base::FieldValue::Text(v.to_string()));
142        }
143        if let Some(v) = self.etd {
144            block.fields.insert("GovGASTWD.etd".into(), crate::base::FieldValue::Text(v.to_string()));
145        }
146        if let Some(v) = self.k3 {
147            block.fields.insert("GovGASTWD.k3".into(), crate::base::FieldValue::Text(v.to_string()));
148        }
149        if let Some(v) = self.k4 {
150            block.fields.insert("GovGASTWD.k4".into(), crate::base::FieldValue::Text(v.to_string()));
151        }
152        if let Some(v) = self.k5 {
153            block.fields.insert("GovGASTWD.k5".into(), crate::base::FieldValue::Text(v.to_string()));
154        }
155        if let Some(v) = self.k6 {
156            block.fields.insert("GovGASTWD.k6".into(), crate::base::FieldValue::Text(v.to_string()));
157        }
158        if let Some(v) = self.kd {
159            block.fields.insert("GovGASTWD.kd".into(), crate::base::FieldValue::Text(v.to_string()));
160        }
161        if let Some(v) = self.kdroop {
162            block.fields.insert("GovGASTWD.kdroop".into(), crate::base::FieldValue::Text(v.to_string()));
163        }
164        if let Some(v) = self.kf {
165            block.fields.insert("GovGASTWD.kf".into(), crate::base::FieldValue::Text(v.to_string()));
166        }
167        if let Some(v) = self.ki {
168            block.fields.insert("GovGASTWD.ki".into(), crate::base::FieldValue::Text(v.to_string()));
169        }
170        if let Some(v) = self.kp {
171            block.fields.insert("GovGASTWD.kp".into(), crate::base::FieldValue::Text(v.to_string()));
172        }
173        if let Some(v) = self.mwbase {
174            block.fields.insert("GovGASTWD.mwbase".into(), crate::base::FieldValue::Text(v.to_string()));
175        }
176        if let Some(v) = self.t {
177            block.fields.insert("GovGASTWD.t".into(), crate::base::FieldValue::Text(v.to_string()));
178        }
179        if let Some(v) = self.t3 {
180            block.fields.insert("GovGASTWD.t3".into(), crate::base::FieldValue::Text(v.to_string()));
181        }
182        if let Some(v) = self.t4 {
183            block.fields.insert("GovGASTWD.t4".into(), crate::base::FieldValue::Text(v.to_string()));
184        }
185        if let Some(v) = self.t5 {
186            block.fields.insert("GovGASTWD.t5".into(), crate::base::FieldValue::Text(v.to_string()));
187        }
188        if let Some(v) = self.tc {
189            block.fields.insert("GovGASTWD.tc".into(), crate::base::FieldValue::Text(v.to_string()));
190        }
191        if let Some(v) = self.tcd {
192            block.fields.insert("GovGASTWD.tcd".into(), crate::base::FieldValue::Text(v.to_string()));
193        }
194        if let Some(v) = self.td {
195            block.fields.insert("GovGASTWD.td".into(), crate::base::FieldValue::Text(v.to_string()));
196        }
197        if let Some(v) = self.tf {
198            block.fields.insert("GovGASTWD.tf".into(), crate::base::FieldValue::Text(v.to_string()));
199        }
200        if let Some(v) = self.tmax {
201            block.fields.insert("GovGASTWD.tmax".into(), crate::base::FieldValue::Text(v.to_string()));
202        }
203        if let Some(v) = self.tmin {
204            block.fields.insert("GovGASTWD.tmin".into(), crate::base::FieldValue::Text(v.to_string()));
205        }
206        if let Some(v) = self.tr {
207            block.fields.insert("GovGASTWD.tr".into(), crate::base::FieldValue::Text(v.to_string()));
208        }
209        if let Some(v) = self.trate {
210            block.fields.insert("GovGASTWD.trate".into(), crate::base::FieldValue::Text(v.to_string()));
211        }
212        if let Some(v) = self.tt {
213            block.fields.insert("GovGASTWD.tt".into(), crate::base::FieldValue::Text(v.to_string()));
214        }
215        block
216    }
217}
218
219impl GovGASTWD {
220    pub fn from_block(b: &crate::base::RdfBlock) -> Self {
221        let mut obj = Self::default();
222        obj.base.base.base.id.clone_from(&b.mrid);
223        for (key, val) in &b.fields {
224            match key.as_str() {
225                "GovGASTWD.a" => {
226                    match val {
227                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.a = Some(v); } }
228                        crate::base::FieldValue::TextList(svs) => {
229                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.a = Some(v); } }
230                        }
231                        _ => {}
232                    }
233                }
234                "GovGASTWD.af1" => {
235                    match val {
236                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.af1 = Some(v); } }
237                        crate::base::FieldValue::TextList(svs) => {
238                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.af1 = Some(v); } }
239                        }
240                        _ => {}
241                    }
242                }
243                "GovGASTWD.af2" => {
244                    match val {
245                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.af2 = Some(v); } }
246                        crate::base::FieldValue::TextList(svs) => {
247                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.af2 = Some(v); } }
248                        }
249                        _ => {}
250                    }
251                }
252                "GovGASTWD.b" => {
253                    match val {
254                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.b = Some(v); } }
255                        crate::base::FieldValue::TextList(svs) => {
256                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.b = Some(v); } }
257                        }
258                        _ => {}
259                    }
260                }
261                "GovGASTWD.bf1" => {
262                    match val {
263                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.bf1 = Some(v); } }
264                        crate::base::FieldValue::TextList(svs) => {
265                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.bf1 = Some(v); } }
266                        }
267                        _ => {}
268                    }
269                }
270                "GovGASTWD.bf2" => {
271                    match val {
272                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.bf2 = Some(v); } }
273                        crate::base::FieldValue::TextList(svs) => {
274                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.bf2 = Some(v); } }
275                        }
276                        _ => {}
277                    }
278                }
279                "GovGASTWD.c" => {
280                    match val {
281                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.c = Some(v); } }
282                        crate::base::FieldValue::TextList(svs) => {
283                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.c = Some(v); } }
284                        }
285                        _ => {}
286                    }
287                }
288                "GovGASTWD.cf2" => {
289                    match val {
290                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.cf2 = Some(v); } }
291                        crate::base::FieldValue::TextList(svs) => {
292                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.cf2 = Some(v); } }
293                        }
294                        _ => {}
295                    }
296                }
297                "GovGASTWD.ecr" => {
298                    match val {
299                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ecr = Some(v); } }
300                        crate::base::FieldValue::TextList(svs) => {
301                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ecr = Some(v); } }
302                        }
303                        _ => {}
304                    }
305                }
306                "GovGASTWD.etd" => {
307                    match val {
308                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.etd = Some(v); } }
309                        crate::base::FieldValue::TextList(svs) => {
310                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.etd = Some(v); } }
311                        }
312                        _ => {}
313                    }
314                }
315                "GovGASTWD.k3" => {
316                    match val {
317                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k3 = Some(v); } }
318                        crate::base::FieldValue::TextList(svs) => {
319                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k3 = Some(v); } }
320                        }
321                        _ => {}
322                    }
323                }
324                "GovGASTWD.k4" => {
325                    match val {
326                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k4 = Some(v); } }
327                        crate::base::FieldValue::TextList(svs) => {
328                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k4 = Some(v); } }
329                        }
330                        _ => {}
331                    }
332                }
333                "GovGASTWD.k5" => {
334                    match val {
335                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k5 = Some(v); } }
336                        crate::base::FieldValue::TextList(svs) => {
337                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k5 = Some(v); } }
338                        }
339                        _ => {}
340                    }
341                }
342                "GovGASTWD.k6" => {
343                    match val {
344                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.k6 = Some(v); } }
345                        crate::base::FieldValue::TextList(svs) => {
346                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.k6 = Some(v); } }
347                        }
348                        _ => {}
349                    }
350                }
351                "GovGASTWD.kd" => {
352                    match val {
353                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kd = Some(v); } }
354                        crate::base::FieldValue::TextList(svs) => {
355                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kd = Some(v); } }
356                        }
357                        _ => {}
358                    }
359                }
360                "GovGASTWD.kdroop" => {
361                    match val {
362                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kdroop = Some(v); } }
363                        crate::base::FieldValue::TextList(svs) => {
364                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kdroop = Some(v); } }
365                        }
366                        _ => {}
367                    }
368                }
369                "GovGASTWD.kf" => {
370                    match val {
371                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kf = Some(v); } }
372                        crate::base::FieldValue::TextList(svs) => {
373                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kf = Some(v); } }
374                        }
375                        _ => {}
376                    }
377                }
378                "GovGASTWD.ki" => {
379                    match val {
380                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ki = Some(v); } }
381                        crate::base::FieldValue::TextList(svs) => {
382                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ki = Some(v); } }
383                        }
384                        _ => {}
385                    }
386                }
387                "GovGASTWD.kp" => {
388                    match val {
389                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kp = Some(v); } }
390                        crate::base::FieldValue::TextList(svs) => {
391                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kp = Some(v); } }
392                        }
393                        _ => {}
394                    }
395                }
396                "GovGASTWD.mwbase" => {
397                    match val {
398                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.mwbase = Some(v); } }
399                        crate::base::FieldValue::TextList(svs) => {
400                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.mwbase = Some(v); } }
401                        }
402                        _ => {}
403                    }
404                }
405                "GovGASTWD.t" => {
406                    match val {
407                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t = Some(v); } }
408                        crate::base::FieldValue::TextList(svs) => {
409                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t = Some(v); } }
410                        }
411                        _ => {}
412                    }
413                }
414                "GovGASTWD.t3" => {
415                    match val {
416                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t3 = Some(v); } }
417                        crate::base::FieldValue::TextList(svs) => {
418                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t3 = Some(v); } }
419                        }
420                        _ => {}
421                    }
422                }
423                "GovGASTWD.t4" => {
424                    match val {
425                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t4 = Some(v); } }
426                        crate::base::FieldValue::TextList(svs) => {
427                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t4 = Some(v); } }
428                        }
429                        _ => {}
430                    }
431                }
432                "GovGASTWD.t5" => {
433                    match val {
434                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.t5 = Some(v); } }
435                        crate::base::FieldValue::TextList(svs) => {
436                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.t5 = Some(v); } }
437                        }
438                        _ => {}
439                    }
440                }
441                "GovGASTWD.tc" => {
442                    match val {
443                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tc = Some(v); } }
444                        crate::base::FieldValue::TextList(svs) => {
445                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tc = Some(v); } }
446                        }
447                        _ => {}
448                    }
449                }
450                "GovGASTWD.tcd" => {
451                    match val {
452                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tcd = Some(v); } }
453                        crate::base::FieldValue::TextList(svs) => {
454                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tcd = Some(v); } }
455                        }
456                        _ => {}
457                    }
458                }
459                "GovGASTWD.td" => {
460                    match val {
461                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.td = Some(v); } }
462                        crate::base::FieldValue::TextList(svs) => {
463                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.td = Some(v); } }
464                        }
465                        _ => {}
466                    }
467                }
468                "GovGASTWD.tf" => {
469                    match val {
470                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tf = Some(v); } }
471                        crate::base::FieldValue::TextList(svs) => {
472                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tf = Some(v); } }
473                        }
474                        _ => {}
475                    }
476                }
477                "GovGASTWD.tmax" => {
478                    match val {
479                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tmax = Some(v); } }
480                        crate::base::FieldValue::TextList(svs) => {
481                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tmax = Some(v); } }
482                        }
483                        _ => {}
484                    }
485                }
486                "GovGASTWD.tmin" => {
487                    match val {
488                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tmin = Some(v); } }
489                        crate::base::FieldValue::TextList(svs) => {
490                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tmin = Some(v); } }
491                        }
492                        _ => {}
493                    }
494                }
495                "GovGASTWD.tr" => {
496                    match val {
497                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tr = Some(v); } }
498                        crate::base::FieldValue::TextList(svs) => {
499                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tr = Some(v); } }
500                        }
501                        _ => {}
502                    }
503                }
504                "GovGASTWD.trate" => {
505                    match val {
506                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.trate = Some(v); } }
507                        crate::base::FieldValue::TextList(svs) => {
508                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.trate = Some(v); } }
509                        }
510                        _ => {}
511                    }
512                }
513                "GovGASTWD.tt" => {
514                    match val {
515                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tt = Some(v); } }
516                        crate::base::FieldValue::TextList(svs) => {
517                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tt = Some(v); } }
518                        }
519                        _ => {}
520                    }
521                }
522                "TurbineGovernorDynamics.AsynchronousMachineDynamics" => {
523                    if let crate::base::FieldValue::Resource(sv) = val {
524                        obj.base.asynchronous_machine_dynamics = Some(crate::base::MridRef { mrid: sv.clone() });
525                    }
526                }
527                "TurbineGovernorDynamics.SynchronousMachineDynamics" => {
528                    if let crate::base::FieldValue::Resource(sv) = val {
529                        obj.base.synchronous_machine_dynamics = Some(crate::base::MridRef { mrid: sv.clone() });
530                    }
531                }
532                "DynamicsFunctionBlock.enabled" => {
533                    match val {
534                        crate::base::FieldValue::Text(sv) => { obj.base.base.enabled = Some(sv.trim() == "true"); }
535                        crate::base::FieldValue::TextList(svs) => {
536                            if let Some(sv) = svs.last() { obj.base.base.enabled = Some(sv.trim() == "true"); }
537                        }
538                        _ => {}
539                    }
540                }
541                "IdentifiedObject.description" => {
542                    match val {
543                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.description = sv.clone(); }
544                        crate::base::FieldValue::TextList(svs) => {
545                            if let Some(sv) = svs.last() { obj.base.base.base.description = sv.clone(); }
546                        }
547                        _ => {}
548                    }
549                }
550                "IdentifiedObject.energyIdentCodeEic" => {
551                    match val {
552                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.energy_ident_code_eic = sv.clone(); }
553                        crate::base::FieldValue::TextList(svs) => {
554                            if let Some(sv) = svs.last() { obj.base.base.base.energy_ident_code_eic = sv.clone(); }
555                        }
556                        _ => {}
557                    }
558                }
559                "IdentifiedObject.mRID" => {
560                    match val {
561                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.m_rid = sv.clone(); }
562                        crate::base::FieldValue::TextList(svs) => {
563                            if let Some(sv) = svs.last() { obj.base.base.base.m_rid = sv.clone(); }
564                        }
565                        _ => {}
566                    }
567                }
568                "IdentifiedObject.name" => {
569                    match val {
570                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.name = sv.clone(); }
571                        crate::base::FieldValue::TextList(svs) => {
572                            if let Some(sv) = svs.last() { obj.base.base.base.name = sv.clone(); }
573                        }
574                        _ => {}
575                    }
576                }
577                "IdentifiedObject.shortName" => {
578                    match val {
579                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.short_name = sv.clone(); }
580                        crate::base::FieldValue::TextList(svs) => {
581                            if let Some(sv) = svs.last() { obj.base.base.base.short_name = sv.clone(); }
582                        }
583                        _ => {}
584                    }
585                }
586                _ => {}
587            }
588        }
589        obj
590    }
591}