Skip to main content

cimstructs/
PssIEEE4B.rs

1/// IEEE 421.5-2005 type PSS4B power system stabilizer. The PSS4B model represents a structure based on multiple working frequency bands. Three separate bands, respectively dedicated to the low-, intermediate- and high-frequency modes of oscillations, are used in this delta omega (speed input) PSS. There is an error in the in IEEE 421.5-2005 PSS4B model: the Pe input should read -Pe. This implies that the input Pe needs to be multiplied by -1. Reference: IEEE 4B 421.5-2005, 8.4. Parameter details: This model has 2 input signals. They have the following fixed types (expressed in terms of InputSignalKind values): the first one is of rotorAngleFrequencyDeviation type and the second one is of generatorElectricalPower type.
2#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
3pub struct PssIEEE4B {
4    #[serde(flatten)]
5    pub base: super::PowerSystemStabilizerDynamics,
6    /// Notch filter 1 (high-frequency band): three dB bandwidth (Bwi).
7    #[serde(skip_serializing_if = "Option::is_none")]
8    pub bwh1: Option<f64>,
9    /// Notch filter 2 (high-frequency band): three dB bandwidth (Bwi).
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub bwh2: Option<f64>,
12    /// Notch filter 1 (low-frequency band): three dB bandwidth (Bwi).
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub bwl1: Option<f64>,
15    /// Notch filter 2 (low-frequency band): three dB bandwidth (Bwi).
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub bwl2: Option<f64>,
18    /// High band gain (KH). Typical value = 120.
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub kh: Option<f64>,
21    /// High band differential filter gain (KH1). Typical value = 66.
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub kh1: Option<f64>,
24    /// High band first lead-lag blocks coefficient (KH11). Typical value = 1.
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub kh11: Option<f64>,
27    /// High band first lead-lag blocks coefficient (KH17). Typical value = 1.
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub kh17: Option<f64>,
30    /// High band differential filter gain (KH2). Typical value = 66.
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub kh2: Option<f64>,
33    /// Intermediate band gain (KI). Typical value = 30.
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub ki: Option<f64>,
36    /// Intermediate band differential filter gain (KI1). Typical value = 66.
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub ki1: Option<f64>,
39    /// Intermediate band first lead-lag blocks coefficient (KI11). Typical value = 1.
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub ki11: Option<f64>,
42    /// Intermediate band first lead-lag blocks coefficient (KI17). Typical value = 1.
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub ki17: Option<f64>,
45    /// Intermediate band differential filter gain (KI2). Typical value = 66.
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub ki2: Option<f64>,
48    /// Low band gain (KL). Typical value = 7.5.
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub kl: Option<f64>,
51    /// Low band differential filter gain (KL1). Typical value = 66.
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub kl1: Option<f64>,
54    /// Low band first lead-lag blocks coefficient (KL11). Typical value = 1.
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub kl11: Option<f64>,
57    /// Low band first lead-lag blocks coefficient (KL17). Typical value = 1.
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub kl17: Option<f64>,
60    /// Low band differential filter gain (KL2). Typical value = 66.
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub kl2: Option<f64>,
63    /// Notch filter 1 (high-frequency band): filter frequency (omegani).
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub omeganh1: Option<f64>,
66    /// Notch filter 2 (high-frequency band): filter frequency (omegani).
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub omeganh2: Option<f64>,
69    /// Notch filter 1 (low-frequency band): filter frequency (omegani).
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub omeganl1: Option<f64>,
72    /// Notch filter 2 (low-frequency band): filter frequency (omegani).
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub omeganl2: Option<f64>,
75    /// High band time constant (TH1) (>= 0). Typical value = 0,01513.
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub th1: Option<f64>,
78    /// High band time constant (TH10) (>= 0). Typical value = 0.
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub th10: Option<f64>,
81    /// High band time constant (TH11) (>= 0). Typical value = 0.
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub th11: Option<f64>,
84    /// High band time constant (TH12) (>= 0). Typical value = 0.
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub th12: Option<f64>,
87    /// High band time constant (TH2) (>= 0). Typical value = 0,01816.
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub th2: Option<f64>,
90    /// High band time constant (TH3) (>= 0). Typical value = 0.
91    #[serde(skip_serializing_if = "Option::is_none")]
92    pub th3: Option<f64>,
93    /// High band time constant (TH4) (>= 0). Typical value = 0.
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub th4: Option<f64>,
96    /// High band time constant (TH5) (>= 0). Typical value = 0.
97    #[serde(skip_serializing_if = "Option::is_none")]
98    pub th5: Option<f64>,
99    /// High band time constant (TH6) (>= 0). Typical value = 0.
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub th6: Option<f64>,
102    /// High band time constant (TH7) (>= 0). Typical value = 0,01816.
103    #[serde(skip_serializing_if = "Option::is_none")]
104    pub th7: Option<f64>,
105    /// High band time constant (TH8) (>= 0). Typical value = 0,02179.
106    #[serde(skip_serializing_if = "Option::is_none")]
107    pub th8: Option<f64>,
108    /// High band time constant (TH9) (>= 0). Typical value = 0.
109    #[serde(skip_serializing_if = "Option::is_none")]
110    pub th9: Option<f64>,
111    /// Intermediate band time constant (TI1) (>= 0). Typical value = 0,173.
112    #[serde(skip_serializing_if = "Option::is_none")]
113    pub ti1: Option<f64>,
114    /// Intermediate band time constant (TI10) (>= 0). Typical value = 0.
115    #[serde(skip_serializing_if = "Option::is_none")]
116    pub ti10: Option<f64>,
117    /// Intermediate band time constant (TI11) (>= 0). Typical value = 0.
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub ti11: Option<f64>,
120    /// Intermediate band time constant (TI12) (>= 0). Typical value = 0.
121    #[serde(skip_serializing_if = "Option::is_none")]
122    pub ti12: Option<f64>,
123    /// Intermediate band time constant (TI2) (>= 0). Typical value = 0,2075.
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub ti2: Option<f64>,
126    /// Intermediate band time constant (TI3) (>= 0). Typical value = 0.
127    #[serde(skip_serializing_if = "Option::is_none")]
128    pub ti3: Option<f64>,
129    /// Intermediate band time constant (TI4) (>= 0). Typical value = 0.
130    #[serde(skip_serializing_if = "Option::is_none")]
131    pub ti4: Option<f64>,
132    /// Intermediate band time constant (TI5) (>= 0). Typical value = 0.
133    #[serde(skip_serializing_if = "Option::is_none")]
134    pub ti5: Option<f64>,
135    /// Intermediate band time constant (TI6) (>= 0). Typical value = 0.
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub ti6: Option<f64>,
138    /// Intermediate band time constant (TI7) (>= 0). Typical value = 0,2075.
139    #[serde(skip_serializing_if = "Option::is_none")]
140    pub ti7: Option<f64>,
141    /// Intermediate band time constant (TI8) (>= 0). Typical value = 0,2491.
142    #[serde(skip_serializing_if = "Option::is_none")]
143    pub ti8: Option<f64>,
144    /// Intermediate band time constant (TI9) (>= 0). Typical value = 0.
145    #[serde(skip_serializing_if = "Option::is_none")]
146    pub ti9: Option<f64>,
147    /// Low band time constant (TL1) (>= 0). Typical value = 1,73.
148    #[serde(skip_serializing_if = "Option::is_none")]
149    pub tl1: Option<f64>,
150    /// Low band time constant (TL10) (>= 0). Typical value = 0.
151    #[serde(skip_serializing_if = "Option::is_none")]
152    pub tl10: Option<f64>,
153    /// Low band time constant (TL11) (>= 0). Typical value = 0.
154    #[serde(skip_serializing_if = "Option::is_none")]
155    pub tl11: Option<f64>,
156    /// Low band time constant (TL12) (>= 0). Typical value = 0.
157    #[serde(skip_serializing_if = "Option::is_none")]
158    pub tl12: Option<f64>,
159    /// Low band time constant (TL2) (>= 0). Typical value = 2,075.
160    #[serde(skip_serializing_if = "Option::is_none")]
161    pub tl2: Option<f64>,
162    /// Low band time constant (TL3) (>= 0). Typical value = 0.
163    #[serde(skip_serializing_if = "Option::is_none")]
164    pub tl3: Option<f64>,
165    /// Low band time constant (TL4) (>= 0). Typical value = 0.
166    #[serde(skip_serializing_if = "Option::is_none")]
167    pub tl4: Option<f64>,
168    /// Low band time constant (TL5) (>= 0). Typical value = 0.
169    #[serde(skip_serializing_if = "Option::is_none")]
170    pub tl5: Option<f64>,
171    /// Low band time constant (TL6) (>= 0). Typical value = 0.
172    #[serde(skip_serializing_if = "Option::is_none")]
173    pub tl6: Option<f64>,
174    /// Low band time constant (TL7) (>= 0). Typical value = 2,075.
175    #[serde(skip_serializing_if = "Option::is_none")]
176    pub tl7: Option<f64>,
177    /// Low band time constant (TL8) (>= 0). Typical value = 2,491.
178    #[serde(skip_serializing_if = "Option::is_none")]
179    pub tl8: Option<f64>,
180    /// Low band time constant (TL9) (>= 0). Typical value = 0.
181    #[serde(skip_serializing_if = "Option::is_none")]
182    pub tl9: Option<f64>,
183    /// High band output maximum limit (VHmax) (> PssIEEE4B.vhmin). Typical value = 0,6.
184    #[serde(skip_serializing_if = "Option::is_none")]
185    pub vhmax: Option<f64>,
186    /// High band output minimum limit (VHmin) (< PssIEEE4V.vhmax). Typical value = -0,6.
187    #[serde(skip_serializing_if = "Option::is_none")]
188    pub vhmin: Option<f64>,
189    /// Intermediate band output maximum limit (VImax) (> PssIEEE4B.vimin). Typical value = 0,6.
190    #[serde(skip_serializing_if = "Option::is_none")]
191    pub vimax: Option<f64>,
192    /// Intermediate band output minimum limit (VImin) (< PssIEEE4B.vimax). Typical value = -0,6.
193    #[serde(skip_serializing_if = "Option::is_none")]
194    pub vimin: Option<f64>,
195    /// Low band output maximum limit (VLmax) (> PssIEEE4B.vlmin). Typical value = 0,075.
196    #[serde(skip_serializing_if = "Option::is_none")]
197    pub vlmax: Option<f64>,
198    /// Low band output minimum limit (VLmin) (< PssIEEE4B.vlmax). Typical value = -0,075.
199    #[serde(skip_serializing_if = "Option::is_none")]
200    pub vlmin: Option<f64>,
201    /// PSS output maximum limit (VSTmax) (> PssIEEE4B.vstmin). Typical value = 0,15.
202    #[serde(skip_serializing_if = "Option::is_none")]
203    pub vstmax: Option<f64>,
204    /// PSS output minimum limit (VSTmin) (< PssIEEE4B.vstmax). Typical value = -0,15.
205    #[serde(skip_serializing_if = "Option::is_none")]
206    pub vstmin: Option<f64>,
207}
208impl crate::base::CimElement for PssIEEE4B {
209    fn mrid(&self) -> &str { &self.base.base.base.id }
210    fn type_name(&self) -> &'static str { "PssIEEE4B" }
211    fn as_any(&self) -> &dyn std::any::Any { self }
212    fn to_json_value(&self) -> serde_json::Value {
213        serde_json::to_value(self).unwrap_or(serde_json::Value::Null)
214    }
215    fn to_block(&self) -> crate::base::RdfBlock {
216        let mut block = self.base.to_block();
217        block.type_name = "PssIEEE4B".to_string();
218        if let Some(v) = self.bwh1 {
219            block.fields.insert("PssIEEE4B.bwh1".into(), crate::base::FieldValue::Text(v.to_string()));
220        }
221        if let Some(v) = self.bwh2 {
222            block.fields.insert("PssIEEE4B.bwh2".into(), crate::base::FieldValue::Text(v.to_string()));
223        }
224        if let Some(v) = self.bwl1 {
225            block.fields.insert("PssIEEE4B.bwl1".into(), crate::base::FieldValue::Text(v.to_string()));
226        }
227        if let Some(v) = self.bwl2 {
228            block.fields.insert("PssIEEE4B.bwl2".into(), crate::base::FieldValue::Text(v.to_string()));
229        }
230        if let Some(v) = self.kh {
231            block.fields.insert("PssIEEE4B.kh".into(), crate::base::FieldValue::Text(v.to_string()));
232        }
233        if let Some(v) = self.kh1 {
234            block.fields.insert("PssIEEE4B.kh1".into(), crate::base::FieldValue::Text(v.to_string()));
235        }
236        if let Some(v) = self.kh11 {
237            block.fields.insert("PssIEEE4B.kh11".into(), crate::base::FieldValue::Text(v.to_string()));
238        }
239        if let Some(v) = self.kh17 {
240            block.fields.insert("PssIEEE4B.kh17".into(), crate::base::FieldValue::Text(v.to_string()));
241        }
242        if let Some(v) = self.kh2 {
243            block.fields.insert("PssIEEE4B.kh2".into(), crate::base::FieldValue::Text(v.to_string()));
244        }
245        if let Some(v) = self.ki {
246            block.fields.insert("PssIEEE4B.ki".into(), crate::base::FieldValue::Text(v.to_string()));
247        }
248        if let Some(v) = self.ki1 {
249            block.fields.insert("PssIEEE4B.ki1".into(), crate::base::FieldValue::Text(v.to_string()));
250        }
251        if let Some(v) = self.ki11 {
252            block.fields.insert("PssIEEE4B.ki11".into(), crate::base::FieldValue::Text(v.to_string()));
253        }
254        if let Some(v) = self.ki17 {
255            block.fields.insert("PssIEEE4B.ki17".into(), crate::base::FieldValue::Text(v.to_string()));
256        }
257        if let Some(v) = self.ki2 {
258            block.fields.insert("PssIEEE4B.ki2".into(), crate::base::FieldValue::Text(v.to_string()));
259        }
260        if let Some(v) = self.kl {
261            block.fields.insert("PssIEEE4B.kl".into(), crate::base::FieldValue::Text(v.to_string()));
262        }
263        if let Some(v) = self.kl1 {
264            block.fields.insert("PssIEEE4B.kl1".into(), crate::base::FieldValue::Text(v.to_string()));
265        }
266        if let Some(v) = self.kl11 {
267            block.fields.insert("PssIEEE4B.kl11".into(), crate::base::FieldValue::Text(v.to_string()));
268        }
269        if let Some(v) = self.kl17 {
270            block.fields.insert("PssIEEE4B.kl17".into(), crate::base::FieldValue::Text(v.to_string()));
271        }
272        if let Some(v) = self.kl2 {
273            block.fields.insert("PssIEEE4B.kl2".into(), crate::base::FieldValue::Text(v.to_string()));
274        }
275        if let Some(v) = self.omeganh1 {
276            block.fields.insert("PssIEEE4B.omeganh1".into(), crate::base::FieldValue::Text(v.to_string()));
277        }
278        if let Some(v) = self.omeganh2 {
279            block.fields.insert("PssIEEE4B.omeganh2".into(), crate::base::FieldValue::Text(v.to_string()));
280        }
281        if let Some(v) = self.omeganl1 {
282            block.fields.insert("PssIEEE4B.omeganl1".into(), crate::base::FieldValue::Text(v.to_string()));
283        }
284        if let Some(v) = self.omeganl2 {
285            block.fields.insert("PssIEEE4B.omeganl2".into(), crate::base::FieldValue::Text(v.to_string()));
286        }
287        if let Some(v) = self.th1 {
288            block.fields.insert("PssIEEE4B.th1".into(), crate::base::FieldValue::Text(v.to_string()));
289        }
290        if let Some(v) = self.th10 {
291            block.fields.insert("PssIEEE4B.th10".into(), crate::base::FieldValue::Text(v.to_string()));
292        }
293        if let Some(v) = self.th11 {
294            block.fields.insert("PssIEEE4B.th11".into(), crate::base::FieldValue::Text(v.to_string()));
295        }
296        if let Some(v) = self.th12 {
297            block.fields.insert("PssIEEE4B.th12".into(), crate::base::FieldValue::Text(v.to_string()));
298        }
299        if let Some(v) = self.th2 {
300            block.fields.insert("PssIEEE4B.th2".into(), crate::base::FieldValue::Text(v.to_string()));
301        }
302        if let Some(v) = self.th3 {
303            block.fields.insert("PssIEEE4B.th3".into(), crate::base::FieldValue::Text(v.to_string()));
304        }
305        if let Some(v) = self.th4 {
306            block.fields.insert("PssIEEE4B.th4".into(), crate::base::FieldValue::Text(v.to_string()));
307        }
308        if let Some(v) = self.th5 {
309            block.fields.insert("PssIEEE4B.th5".into(), crate::base::FieldValue::Text(v.to_string()));
310        }
311        if let Some(v) = self.th6 {
312            block.fields.insert("PssIEEE4B.th6".into(), crate::base::FieldValue::Text(v.to_string()));
313        }
314        if let Some(v) = self.th7 {
315            block.fields.insert("PssIEEE4B.th7".into(), crate::base::FieldValue::Text(v.to_string()));
316        }
317        if let Some(v) = self.th8 {
318            block.fields.insert("PssIEEE4B.th8".into(), crate::base::FieldValue::Text(v.to_string()));
319        }
320        if let Some(v) = self.th9 {
321            block.fields.insert("PssIEEE4B.th9".into(), crate::base::FieldValue::Text(v.to_string()));
322        }
323        if let Some(v) = self.ti1 {
324            block.fields.insert("PssIEEE4B.ti1".into(), crate::base::FieldValue::Text(v.to_string()));
325        }
326        if let Some(v) = self.ti10 {
327            block.fields.insert("PssIEEE4B.ti10".into(), crate::base::FieldValue::Text(v.to_string()));
328        }
329        if let Some(v) = self.ti11 {
330            block.fields.insert("PssIEEE4B.ti11".into(), crate::base::FieldValue::Text(v.to_string()));
331        }
332        if let Some(v) = self.ti12 {
333            block.fields.insert("PssIEEE4B.ti12".into(), crate::base::FieldValue::Text(v.to_string()));
334        }
335        if let Some(v) = self.ti2 {
336            block.fields.insert("PssIEEE4B.ti2".into(), crate::base::FieldValue::Text(v.to_string()));
337        }
338        if let Some(v) = self.ti3 {
339            block.fields.insert("PssIEEE4B.ti3".into(), crate::base::FieldValue::Text(v.to_string()));
340        }
341        if let Some(v) = self.ti4 {
342            block.fields.insert("PssIEEE4B.ti4".into(), crate::base::FieldValue::Text(v.to_string()));
343        }
344        if let Some(v) = self.ti5 {
345            block.fields.insert("PssIEEE4B.ti5".into(), crate::base::FieldValue::Text(v.to_string()));
346        }
347        if let Some(v) = self.ti6 {
348            block.fields.insert("PssIEEE4B.ti6".into(), crate::base::FieldValue::Text(v.to_string()));
349        }
350        if let Some(v) = self.ti7 {
351            block.fields.insert("PssIEEE4B.ti7".into(), crate::base::FieldValue::Text(v.to_string()));
352        }
353        if let Some(v) = self.ti8 {
354            block.fields.insert("PssIEEE4B.ti8".into(), crate::base::FieldValue::Text(v.to_string()));
355        }
356        if let Some(v) = self.ti9 {
357            block.fields.insert("PssIEEE4B.ti9".into(), crate::base::FieldValue::Text(v.to_string()));
358        }
359        if let Some(v) = self.tl1 {
360            block.fields.insert("PssIEEE4B.tl1".into(), crate::base::FieldValue::Text(v.to_string()));
361        }
362        if let Some(v) = self.tl10 {
363            block.fields.insert("PssIEEE4B.tl10".into(), crate::base::FieldValue::Text(v.to_string()));
364        }
365        if let Some(v) = self.tl11 {
366            block.fields.insert("PssIEEE4B.tl11".into(), crate::base::FieldValue::Text(v.to_string()));
367        }
368        if let Some(v) = self.tl12 {
369            block.fields.insert("PssIEEE4B.tl12".into(), crate::base::FieldValue::Text(v.to_string()));
370        }
371        if let Some(v) = self.tl2 {
372            block.fields.insert("PssIEEE4B.tl2".into(), crate::base::FieldValue::Text(v.to_string()));
373        }
374        if let Some(v) = self.tl3 {
375            block.fields.insert("PssIEEE4B.tl3".into(), crate::base::FieldValue::Text(v.to_string()));
376        }
377        if let Some(v) = self.tl4 {
378            block.fields.insert("PssIEEE4B.tl4".into(), crate::base::FieldValue::Text(v.to_string()));
379        }
380        if let Some(v) = self.tl5 {
381            block.fields.insert("PssIEEE4B.tl5".into(), crate::base::FieldValue::Text(v.to_string()));
382        }
383        if let Some(v) = self.tl6 {
384            block.fields.insert("PssIEEE4B.tl6".into(), crate::base::FieldValue::Text(v.to_string()));
385        }
386        if let Some(v) = self.tl7 {
387            block.fields.insert("PssIEEE4B.tl7".into(), crate::base::FieldValue::Text(v.to_string()));
388        }
389        if let Some(v) = self.tl8 {
390            block.fields.insert("PssIEEE4B.tl8".into(), crate::base::FieldValue::Text(v.to_string()));
391        }
392        if let Some(v) = self.tl9 {
393            block.fields.insert("PssIEEE4B.tl9".into(), crate::base::FieldValue::Text(v.to_string()));
394        }
395        if let Some(v) = self.vhmax {
396            block.fields.insert("PssIEEE4B.vhmax".into(), crate::base::FieldValue::Text(v.to_string()));
397        }
398        if let Some(v) = self.vhmin {
399            block.fields.insert("PssIEEE4B.vhmin".into(), crate::base::FieldValue::Text(v.to_string()));
400        }
401        if let Some(v) = self.vimax {
402            block.fields.insert("PssIEEE4B.vimax".into(), crate::base::FieldValue::Text(v.to_string()));
403        }
404        if let Some(v) = self.vimin {
405            block.fields.insert("PssIEEE4B.vimin".into(), crate::base::FieldValue::Text(v.to_string()));
406        }
407        if let Some(v) = self.vlmax {
408            block.fields.insert("PssIEEE4B.vlmax".into(), crate::base::FieldValue::Text(v.to_string()));
409        }
410        if let Some(v) = self.vlmin {
411            block.fields.insert("PssIEEE4B.vlmin".into(), crate::base::FieldValue::Text(v.to_string()));
412        }
413        if let Some(v) = self.vstmax {
414            block.fields.insert("PssIEEE4B.vstmax".into(), crate::base::FieldValue::Text(v.to_string()));
415        }
416        if let Some(v) = self.vstmin {
417            block.fields.insert("PssIEEE4B.vstmin".into(), crate::base::FieldValue::Text(v.to_string()));
418        }
419        block
420    }
421}
422
423impl PssIEEE4B {
424    pub fn from_block(b: &crate::base::RdfBlock) -> Self {
425        let mut obj = Self::default();
426        obj.base.base.base.id.clone_from(&b.mrid);
427        for (key, val) in &b.fields {
428            match key.as_str() {
429                "PssIEEE4B.bwh1" => {
430                    match val {
431                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.bwh1 = Some(v); } }
432                        crate::base::FieldValue::TextList(svs) => {
433                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.bwh1 = Some(v); } }
434                        }
435                        _ => {}
436                    }
437                }
438                "PssIEEE4B.bwh2" => {
439                    match val {
440                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.bwh2 = Some(v); } }
441                        crate::base::FieldValue::TextList(svs) => {
442                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.bwh2 = Some(v); } }
443                        }
444                        _ => {}
445                    }
446                }
447                "PssIEEE4B.bwl1" => {
448                    match val {
449                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.bwl1 = Some(v); } }
450                        crate::base::FieldValue::TextList(svs) => {
451                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.bwl1 = Some(v); } }
452                        }
453                        _ => {}
454                    }
455                }
456                "PssIEEE4B.bwl2" => {
457                    match val {
458                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.bwl2 = Some(v); } }
459                        crate::base::FieldValue::TextList(svs) => {
460                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.bwl2 = Some(v); } }
461                        }
462                        _ => {}
463                    }
464                }
465                "PssIEEE4B.kh" => {
466                    match val {
467                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kh = Some(v); } }
468                        crate::base::FieldValue::TextList(svs) => {
469                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kh = Some(v); } }
470                        }
471                        _ => {}
472                    }
473                }
474                "PssIEEE4B.kh1" => {
475                    match val {
476                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kh1 = Some(v); } }
477                        crate::base::FieldValue::TextList(svs) => {
478                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kh1 = Some(v); } }
479                        }
480                        _ => {}
481                    }
482                }
483                "PssIEEE4B.kh11" => {
484                    match val {
485                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kh11 = Some(v); } }
486                        crate::base::FieldValue::TextList(svs) => {
487                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kh11 = Some(v); } }
488                        }
489                        _ => {}
490                    }
491                }
492                "PssIEEE4B.kh17" => {
493                    match val {
494                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kh17 = Some(v); } }
495                        crate::base::FieldValue::TextList(svs) => {
496                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kh17 = Some(v); } }
497                        }
498                        _ => {}
499                    }
500                }
501                "PssIEEE4B.kh2" => {
502                    match val {
503                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kh2 = Some(v); } }
504                        crate::base::FieldValue::TextList(svs) => {
505                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kh2 = Some(v); } }
506                        }
507                        _ => {}
508                    }
509                }
510                "PssIEEE4B.ki" => {
511                    match val {
512                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ki = Some(v); } }
513                        crate::base::FieldValue::TextList(svs) => {
514                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ki = Some(v); } }
515                        }
516                        _ => {}
517                    }
518                }
519                "PssIEEE4B.ki1" => {
520                    match val {
521                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ki1 = Some(v); } }
522                        crate::base::FieldValue::TextList(svs) => {
523                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ki1 = Some(v); } }
524                        }
525                        _ => {}
526                    }
527                }
528                "PssIEEE4B.ki11" => {
529                    match val {
530                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ki11 = Some(v); } }
531                        crate::base::FieldValue::TextList(svs) => {
532                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ki11 = Some(v); } }
533                        }
534                        _ => {}
535                    }
536                }
537                "PssIEEE4B.ki17" => {
538                    match val {
539                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ki17 = Some(v); } }
540                        crate::base::FieldValue::TextList(svs) => {
541                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ki17 = Some(v); } }
542                        }
543                        _ => {}
544                    }
545                }
546                "PssIEEE4B.ki2" => {
547                    match val {
548                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ki2 = Some(v); } }
549                        crate::base::FieldValue::TextList(svs) => {
550                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ki2 = Some(v); } }
551                        }
552                        _ => {}
553                    }
554                }
555                "PssIEEE4B.kl" => {
556                    match val {
557                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kl = Some(v); } }
558                        crate::base::FieldValue::TextList(svs) => {
559                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kl = Some(v); } }
560                        }
561                        _ => {}
562                    }
563                }
564                "PssIEEE4B.kl1" => {
565                    match val {
566                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kl1 = Some(v); } }
567                        crate::base::FieldValue::TextList(svs) => {
568                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kl1 = Some(v); } }
569                        }
570                        _ => {}
571                    }
572                }
573                "PssIEEE4B.kl11" => {
574                    match val {
575                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kl11 = Some(v); } }
576                        crate::base::FieldValue::TextList(svs) => {
577                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kl11 = Some(v); } }
578                        }
579                        _ => {}
580                    }
581                }
582                "PssIEEE4B.kl17" => {
583                    match val {
584                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kl17 = Some(v); } }
585                        crate::base::FieldValue::TextList(svs) => {
586                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kl17 = Some(v); } }
587                        }
588                        _ => {}
589                    }
590                }
591                "PssIEEE4B.kl2" => {
592                    match val {
593                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kl2 = Some(v); } }
594                        crate::base::FieldValue::TextList(svs) => {
595                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kl2 = Some(v); } }
596                        }
597                        _ => {}
598                    }
599                }
600                "PssIEEE4B.omeganh1" => {
601                    match val {
602                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.omeganh1 = Some(v); } }
603                        crate::base::FieldValue::TextList(svs) => {
604                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.omeganh1 = Some(v); } }
605                        }
606                        _ => {}
607                    }
608                }
609                "PssIEEE4B.omeganh2" => {
610                    match val {
611                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.omeganh2 = Some(v); } }
612                        crate::base::FieldValue::TextList(svs) => {
613                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.omeganh2 = Some(v); } }
614                        }
615                        _ => {}
616                    }
617                }
618                "PssIEEE4B.omeganl1" => {
619                    match val {
620                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.omeganl1 = Some(v); } }
621                        crate::base::FieldValue::TextList(svs) => {
622                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.omeganl1 = Some(v); } }
623                        }
624                        _ => {}
625                    }
626                }
627                "PssIEEE4B.omeganl2" => {
628                    match val {
629                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.omeganl2 = Some(v); } }
630                        crate::base::FieldValue::TextList(svs) => {
631                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.omeganl2 = Some(v); } }
632                        }
633                        _ => {}
634                    }
635                }
636                "PssIEEE4B.th1" => {
637                    match val {
638                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th1 = Some(v); } }
639                        crate::base::FieldValue::TextList(svs) => {
640                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th1 = Some(v); } }
641                        }
642                        _ => {}
643                    }
644                }
645                "PssIEEE4B.th10" => {
646                    match val {
647                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th10 = Some(v); } }
648                        crate::base::FieldValue::TextList(svs) => {
649                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th10 = Some(v); } }
650                        }
651                        _ => {}
652                    }
653                }
654                "PssIEEE4B.th11" => {
655                    match val {
656                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th11 = Some(v); } }
657                        crate::base::FieldValue::TextList(svs) => {
658                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th11 = Some(v); } }
659                        }
660                        _ => {}
661                    }
662                }
663                "PssIEEE4B.th12" => {
664                    match val {
665                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th12 = Some(v); } }
666                        crate::base::FieldValue::TextList(svs) => {
667                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th12 = Some(v); } }
668                        }
669                        _ => {}
670                    }
671                }
672                "PssIEEE4B.th2" => {
673                    match val {
674                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th2 = Some(v); } }
675                        crate::base::FieldValue::TextList(svs) => {
676                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th2 = Some(v); } }
677                        }
678                        _ => {}
679                    }
680                }
681                "PssIEEE4B.th3" => {
682                    match val {
683                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th3 = Some(v); } }
684                        crate::base::FieldValue::TextList(svs) => {
685                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th3 = Some(v); } }
686                        }
687                        _ => {}
688                    }
689                }
690                "PssIEEE4B.th4" => {
691                    match val {
692                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th4 = Some(v); } }
693                        crate::base::FieldValue::TextList(svs) => {
694                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th4 = Some(v); } }
695                        }
696                        _ => {}
697                    }
698                }
699                "PssIEEE4B.th5" => {
700                    match val {
701                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th5 = Some(v); } }
702                        crate::base::FieldValue::TextList(svs) => {
703                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th5 = Some(v); } }
704                        }
705                        _ => {}
706                    }
707                }
708                "PssIEEE4B.th6" => {
709                    match val {
710                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th6 = Some(v); } }
711                        crate::base::FieldValue::TextList(svs) => {
712                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th6 = Some(v); } }
713                        }
714                        _ => {}
715                    }
716                }
717                "PssIEEE4B.th7" => {
718                    match val {
719                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th7 = Some(v); } }
720                        crate::base::FieldValue::TextList(svs) => {
721                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th7 = Some(v); } }
722                        }
723                        _ => {}
724                    }
725                }
726                "PssIEEE4B.th8" => {
727                    match val {
728                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th8 = Some(v); } }
729                        crate::base::FieldValue::TextList(svs) => {
730                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th8 = Some(v); } }
731                        }
732                        _ => {}
733                    }
734                }
735                "PssIEEE4B.th9" => {
736                    match val {
737                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.th9 = Some(v); } }
738                        crate::base::FieldValue::TextList(svs) => {
739                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.th9 = Some(v); } }
740                        }
741                        _ => {}
742                    }
743                }
744                "PssIEEE4B.ti1" => {
745                    match val {
746                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti1 = Some(v); } }
747                        crate::base::FieldValue::TextList(svs) => {
748                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti1 = Some(v); } }
749                        }
750                        _ => {}
751                    }
752                }
753                "PssIEEE4B.ti10" => {
754                    match val {
755                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti10 = Some(v); } }
756                        crate::base::FieldValue::TextList(svs) => {
757                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti10 = Some(v); } }
758                        }
759                        _ => {}
760                    }
761                }
762                "PssIEEE4B.ti11" => {
763                    match val {
764                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti11 = Some(v); } }
765                        crate::base::FieldValue::TextList(svs) => {
766                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti11 = Some(v); } }
767                        }
768                        _ => {}
769                    }
770                }
771                "PssIEEE4B.ti12" => {
772                    match val {
773                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti12 = Some(v); } }
774                        crate::base::FieldValue::TextList(svs) => {
775                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti12 = Some(v); } }
776                        }
777                        _ => {}
778                    }
779                }
780                "PssIEEE4B.ti2" => {
781                    match val {
782                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti2 = Some(v); } }
783                        crate::base::FieldValue::TextList(svs) => {
784                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti2 = Some(v); } }
785                        }
786                        _ => {}
787                    }
788                }
789                "PssIEEE4B.ti3" => {
790                    match val {
791                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti3 = Some(v); } }
792                        crate::base::FieldValue::TextList(svs) => {
793                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti3 = Some(v); } }
794                        }
795                        _ => {}
796                    }
797                }
798                "PssIEEE4B.ti4" => {
799                    match val {
800                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti4 = Some(v); } }
801                        crate::base::FieldValue::TextList(svs) => {
802                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti4 = Some(v); } }
803                        }
804                        _ => {}
805                    }
806                }
807                "PssIEEE4B.ti5" => {
808                    match val {
809                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti5 = Some(v); } }
810                        crate::base::FieldValue::TextList(svs) => {
811                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti5 = Some(v); } }
812                        }
813                        _ => {}
814                    }
815                }
816                "PssIEEE4B.ti6" => {
817                    match val {
818                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti6 = Some(v); } }
819                        crate::base::FieldValue::TextList(svs) => {
820                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti6 = Some(v); } }
821                        }
822                        _ => {}
823                    }
824                }
825                "PssIEEE4B.ti7" => {
826                    match val {
827                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti7 = Some(v); } }
828                        crate::base::FieldValue::TextList(svs) => {
829                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti7 = Some(v); } }
830                        }
831                        _ => {}
832                    }
833                }
834                "PssIEEE4B.ti8" => {
835                    match val {
836                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti8 = Some(v); } }
837                        crate::base::FieldValue::TextList(svs) => {
838                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti8 = Some(v); } }
839                        }
840                        _ => {}
841                    }
842                }
843                "PssIEEE4B.ti9" => {
844                    match val {
845                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ti9 = Some(v); } }
846                        crate::base::FieldValue::TextList(svs) => {
847                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ti9 = Some(v); } }
848                        }
849                        _ => {}
850                    }
851                }
852                "PssIEEE4B.tl1" => {
853                    match val {
854                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl1 = Some(v); } }
855                        crate::base::FieldValue::TextList(svs) => {
856                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl1 = Some(v); } }
857                        }
858                        _ => {}
859                    }
860                }
861                "PssIEEE4B.tl10" => {
862                    match val {
863                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl10 = Some(v); } }
864                        crate::base::FieldValue::TextList(svs) => {
865                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl10 = Some(v); } }
866                        }
867                        _ => {}
868                    }
869                }
870                "PssIEEE4B.tl11" => {
871                    match val {
872                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl11 = Some(v); } }
873                        crate::base::FieldValue::TextList(svs) => {
874                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl11 = Some(v); } }
875                        }
876                        _ => {}
877                    }
878                }
879                "PssIEEE4B.tl12" => {
880                    match val {
881                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl12 = Some(v); } }
882                        crate::base::FieldValue::TextList(svs) => {
883                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl12 = Some(v); } }
884                        }
885                        _ => {}
886                    }
887                }
888                "PssIEEE4B.tl2" => {
889                    match val {
890                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl2 = Some(v); } }
891                        crate::base::FieldValue::TextList(svs) => {
892                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl2 = Some(v); } }
893                        }
894                        _ => {}
895                    }
896                }
897                "PssIEEE4B.tl3" => {
898                    match val {
899                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl3 = Some(v); } }
900                        crate::base::FieldValue::TextList(svs) => {
901                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl3 = Some(v); } }
902                        }
903                        _ => {}
904                    }
905                }
906                "PssIEEE4B.tl4" => {
907                    match val {
908                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl4 = Some(v); } }
909                        crate::base::FieldValue::TextList(svs) => {
910                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl4 = Some(v); } }
911                        }
912                        _ => {}
913                    }
914                }
915                "PssIEEE4B.tl5" => {
916                    match val {
917                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl5 = Some(v); } }
918                        crate::base::FieldValue::TextList(svs) => {
919                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl5 = Some(v); } }
920                        }
921                        _ => {}
922                    }
923                }
924                "PssIEEE4B.tl6" => {
925                    match val {
926                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl6 = Some(v); } }
927                        crate::base::FieldValue::TextList(svs) => {
928                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl6 = Some(v); } }
929                        }
930                        _ => {}
931                    }
932                }
933                "PssIEEE4B.tl7" => {
934                    match val {
935                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl7 = Some(v); } }
936                        crate::base::FieldValue::TextList(svs) => {
937                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl7 = Some(v); } }
938                        }
939                        _ => {}
940                    }
941                }
942                "PssIEEE4B.tl8" => {
943                    match val {
944                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl8 = Some(v); } }
945                        crate::base::FieldValue::TextList(svs) => {
946                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl8 = Some(v); } }
947                        }
948                        _ => {}
949                    }
950                }
951                "PssIEEE4B.tl9" => {
952                    match val {
953                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tl9 = Some(v); } }
954                        crate::base::FieldValue::TextList(svs) => {
955                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tl9 = Some(v); } }
956                        }
957                        _ => {}
958                    }
959                }
960                "PssIEEE4B.vhmax" => {
961                    match val {
962                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vhmax = Some(v); } }
963                        crate::base::FieldValue::TextList(svs) => {
964                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vhmax = Some(v); } }
965                        }
966                        _ => {}
967                    }
968                }
969                "PssIEEE4B.vhmin" => {
970                    match val {
971                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vhmin = Some(v); } }
972                        crate::base::FieldValue::TextList(svs) => {
973                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vhmin = Some(v); } }
974                        }
975                        _ => {}
976                    }
977                }
978                "PssIEEE4B.vimax" => {
979                    match val {
980                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vimax = Some(v); } }
981                        crate::base::FieldValue::TextList(svs) => {
982                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vimax = Some(v); } }
983                        }
984                        _ => {}
985                    }
986                }
987                "PssIEEE4B.vimin" => {
988                    match val {
989                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vimin = Some(v); } }
990                        crate::base::FieldValue::TextList(svs) => {
991                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vimin = Some(v); } }
992                        }
993                        _ => {}
994                    }
995                }
996                "PssIEEE4B.vlmax" => {
997                    match val {
998                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vlmax = Some(v); } }
999                        crate::base::FieldValue::TextList(svs) => {
1000                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vlmax = Some(v); } }
1001                        }
1002                        _ => {}
1003                    }
1004                }
1005                "PssIEEE4B.vlmin" => {
1006                    match val {
1007                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vlmin = Some(v); } }
1008                        crate::base::FieldValue::TextList(svs) => {
1009                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vlmin = Some(v); } }
1010                        }
1011                        _ => {}
1012                    }
1013                }
1014                "PssIEEE4B.vstmax" => {
1015                    match val {
1016                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vstmax = Some(v); } }
1017                        crate::base::FieldValue::TextList(svs) => {
1018                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vstmax = Some(v); } }
1019                        }
1020                        _ => {}
1021                    }
1022                }
1023                "PssIEEE4B.vstmin" => {
1024                    match val {
1025                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vstmin = Some(v); } }
1026                        crate::base::FieldValue::TextList(svs) => {
1027                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vstmin = Some(v); } }
1028                        }
1029                        _ => {}
1030                    }
1031                }
1032                "PowerSystemStabilizerDynamics.ExcitationSystemDynamics" => {
1033                    if let crate::base::FieldValue::Resource(sv) = val {
1034                        obj.base.excitation_system_dynamics = Some(crate::base::MridRef { mrid: sv.clone() });
1035                    }
1036                }
1037                "DynamicsFunctionBlock.enabled" => {
1038                    match val {
1039                        crate::base::FieldValue::Text(sv) => { obj.base.base.enabled = Some(sv.trim() == "true"); }
1040                        crate::base::FieldValue::TextList(svs) => {
1041                            if let Some(sv) = svs.last() { obj.base.base.enabled = Some(sv.trim() == "true"); }
1042                        }
1043                        _ => {}
1044                    }
1045                }
1046                "IdentifiedObject.description" => {
1047                    match val {
1048                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.description = sv.clone(); }
1049                        crate::base::FieldValue::TextList(svs) => {
1050                            if let Some(sv) = svs.last() { obj.base.base.base.description = sv.clone(); }
1051                        }
1052                        _ => {}
1053                    }
1054                }
1055                "IdentifiedObject.energyIdentCodeEic" => {
1056                    match val {
1057                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.energy_ident_code_eic = sv.clone(); }
1058                        crate::base::FieldValue::TextList(svs) => {
1059                            if let Some(sv) = svs.last() { obj.base.base.base.energy_ident_code_eic = sv.clone(); }
1060                        }
1061                        _ => {}
1062                    }
1063                }
1064                "IdentifiedObject.mRID" => {
1065                    match val {
1066                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.m_rid = sv.clone(); }
1067                        crate::base::FieldValue::TextList(svs) => {
1068                            if let Some(sv) = svs.last() { obj.base.base.base.m_rid = sv.clone(); }
1069                        }
1070                        _ => {}
1071                    }
1072                }
1073                "IdentifiedObject.name" => {
1074                    match val {
1075                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.name = sv.clone(); }
1076                        crate::base::FieldValue::TextList(svs) => {
1077                            if let Some(sv) = svs.last() { obj.base.base.base.name = sv.clone(); }
1078                        }
1079                        _ => {}
1080                    }
1081                }
1082                "IdentifiedObject.shortName" => {
1083                    match val {
1084                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.short_name = sv.clone(); }
1085                        crate::base::FieldValue::TextList(svs) => {
1086                            if let Some(sv) = svs.last() { obj.base.base.base.short_name = sv.clone(); }
1087                        }
1088                        _ => {}
1089                    }
1090                }
1091                _ => {}
1092            }
1093        }
1094        obj
1095    }
1096}