Skip to main content

cimstructs/
ExcIEEEAC7B.rs

1/// IEEE 421.5-2005 type AC7B model. The model represents excitation systems which consist of an AC alternator with either stationary or rotating rectifiers to produce the DC field requirements. It is an upgrade to earlier AC excitation systems, which replace only the controls but retain the AC alternator and diode rectifier bridge. Reference: IEEE 421.5-2005, 6.7. Note, however, that in IEEE 421.5-2005, the [1 / sTE] block is shown as [1 / (1 + sTE)], which is incorrect.
2#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
3pub struct ExcIEEEAC7B {
4    #[serde(flatten)]
5    pub base: super::ExcitationSystemDynamics,
6    /// Rectifier loading factor proportional to commutating reactance (KC) (>= 0). Typical value = 0,18.
7    #[serde(skip_serializing_if = "Option::is_none")]
8    pub kc: Option<f64>,
9    /// Demagnetizing factor, a function of exciter alternator reactances (KD) (>= 0). Typical value = 0,02.
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub kd: Option<f64>,
12    /// Voltage regulator derivative gain (KDR) (>= 0). Typical value = 0.
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub kdr: Option<f64>,
15    /// Exciter constant related to self-excited field (KE). Typical value = 1.
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub ke: Option<f64>,
18    /// Excitation control system stabilizer gain (KF1) (>= 0). Typical value = 0,212.
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub kf1: Option<f64>,
21    /// Excitation control system stabilizer gain (KF2) (>= 0). Typical value = 0.
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub kf2: Option<f64>,
24    /// Excitation control system stabilizer gain (KF3) (>= 0). Typical value = 0.
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub kf3: Option<f64>,
27    /// Voltage regulator integral gain (KIA) (>= 0). Typical value = 59,69.
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub kia: Option<f64>,
30    /// Voltage regulator integral gain (KIR) (>= 0). Typical value = 4,24.
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub kir: Option<f64>,
33    /// Exciter field voltage lower limit parameter (KL). Typical value = 10.
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub kl: Option<f64>,
36    /// Potential circuit gain coefficient (KP) (> 0). Typical value = 4,96.
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub kp: Option<f64>,
39    /// Voltage regulator proportional gain (KPA) (> 0 if ExcIEEEAC7B.kia = 0). Typical value = 65,36.
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub kpa: Option<f64>,
42    /// Voltage regulator proportional gain (KPR) (> 0 if ExcIEEEAC7B.kir = 0). Typical value = 4,24.
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub kpr: Option<f64>,
45    /// Exciter saturation function value at the corresponding exciter voltage, VE1, back of commutating reactance (SE[VE1]) (>= 0). Typical value = 0,44.
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub seve1: Option<f64>,
48    /// Exciter saturation function value at the corresponding exciter voltage, VE2, back of commutating reactance (SE[VE2]) (>= 0). Typical value = 0,075.
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub seve2: Option<f64>,
51    /// Lag time constant (TDR) (>= 0). Typical value = 0.
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub tdr: Option<f64>,
54    /// Exciter time constant, integration rate associated with exciter control (TE) (> 0). Typical value = 1,1.
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub te: Option<f64>,
57    /// Excitation control system stabilizer time constant (TF) (> 0). Typical value = 1.
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub tf: Option<f64>,
60    /// Maximum voltage regulator output (VAMAX) (> 0). Typical value = 1.
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub vamax: Option<f64>,
63    /// Minimum voltage regulator output (VAMIN) (< 0). Typical value = -0,95.
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub vamin: Option<f64>,
66    /// Exciter alternator output voltages back of commutating reactance at which saturation is defined (VE1) (> 0). Typical value = 6,3.
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub ve1: Option<f64>,
69    /// Exciter alternator output voltages back of commutating reactance at which saturation is defined (VE2) (> 0). Typical value = 3,02.
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub ve2: Option<f64>,
72    /// Minimum exciter voltage output (VEMIN) (<= 0). Typical value = 0.
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub vemin: Option<f64>,
75    /// Exciter field current limit reference (VFEMAX). Typical value = 6,9.
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub vfemax: Option<f64>,
78    /// Maximum voltage regulator output (VRMAX) (> 0). Typical value = 5,79.
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub vrmax: Option<f64>,
81    /// Minimum voltage regulator output (VRMIN) (< 0). Typical value = -5,79.
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub vrmin: Option<f64>,
84}
85impl crate::base::CimElement for ExcIEEEAC7B {
86    fn mrid(&self) -> &str { &self.base.base.base.id }
87    fn type_name(&self) -> &'static str { "ExcIEEEAC7B" }
88    fn as_any(&self) -> &dyn std::any::Any { self }
89    fn to_json_value(&self) -> serde_json::Value {
90        serde_json::to_value(self).unwrap_or(serde_json::Value::Null)
91    }
92    fn to_block(&self) -> crate::base::RdfBlock {
93        let mut block = self.base.to_block();
94        block.type_name = "ExcIEEEAC7B".to_string();
95        if let Some(v) = self.kc {
96            block.fields.insert("ExcIEEEAC7B.kc".into(), crate::base::FieldValue::Text(v.to_string()));
97        }
98        if let Some(v) = self.kd {
99            block.fields.insert("ExcIEEEAC7B.kd".into(), crate::base::FieldValue::Text(v.to_string()));
100        }
101        if let Some(v) = self.kdr {
102            block.fields.insert("ExcIEEEAC7B.kdr".into(), crate::base::FieldValue::Text(v.to_string()));
103        }
104        if let Some(v) = self.ke {
105            block.fields.insert("ExcIEEEAC7B.ke".into(), crate::base::FieldValue::Text(v.to_string()));
106        }
107        if let Some(v) = self.kf1 {
108            block.fields.insert("ExcIEEEAC7B.kf1".into(), crate::base::FieldValue::Text(v.to_string()));
109        }
110        if let Some(v) = self.kf2 {
111            block.fields.insert("ExcIEEEAC7B.kf2".into(), crate::base::FieldValue::Text(v.to_string()));
112        }
113        if let Some(v) = self.kf3 {
114            block.fields.insert("ExcIEEEAC7B.kf3".into(), crate::base::FieldValue::Text(v.to_string()));
115        }
116        if let Some(v) = self.kia {
117            block.fields.insert("ExcIEEEAC7B.kia".into(), crate::base::FieldValue::Text(v.to_string()));
118        }
119        if let Some(v) = self.kir {
120            block.fields.insert("ExcIEEEAC7B.kir".into(), crate::base::FieldValue::Text(v.to_string()));
121        }
122        if let Some(v) = self.kl {
123            block.fields.insert("ExcIEEEAC7B.kl".into(), crate::base::FieldValue::Text(v.to_string()));
124        }
125        if let Some(v) = self.kp {
126            block.fields.insert("ExcIEEEAC7B.kp".into(), crate::base::FieldValue::Text(v.to_string()));
127        }
128        if let Some(v) = self.kpa {
129            block.fields.insert("ExcIEEEAC7B.kpa".into(), crate::base::FieldValue::Text(v.to_string()));
130        }
131        if let Some(v) = self.kpr {
132            block.fields.insert("ExcIEEEAC7B.kpr".into(), crate::base::FieldValue::Text(v.to_string()));
133        }
134        if let Some(v) = self.seve1 {
135            block.fields.insert("ExcIEEEAC7B.seve1".into(), crate::base::FieldValue::Text(v.to_string()));
136        }
137        if let Some(v) = self.seve2 {
138            block.fields.insert("ExcIEEEAC7B.seve2".into(), crate::base::FieldValue::Text(v.to_string()));
139        }
140        if let Some(v) = self.tdr {
141            block.fields.insert("ExcIEEEAC7B.tdr".into(), crate::base::FieldValue::Text(v.to_string()));
142        }
143        if let Some(v) = self.te {
144            block.fields.insert("ExcIEEEAC7B.te".into(), crate::base::FieldValue::Text(v.to_string()));
145        }
146        if let Some(v) = self.tf {
147            block.fields.insert("ExcIEEEAC7B.tf".into(), crate::base::FieldValue::Text(v.to_string()));
148        }
149        if let Some(v) = self.vamax {
150            block.fields.insert("ExcIEEEAC7B.vamax".into(), crate::base::FieldValue::Text(v.to_string()));
151        }
152        if let Some(v) = self.vamin {
153            block.fields.insert("ExcIEEEAC7B.vamin".into(), crate::base::FieldValue::Text(v.to_string()));
154        }
155        if let Some(v) = self.ve1 {
156            block.fields.insert("ExcIEEEAC7B.ve1".into(), crate::base::FieldValue::Text(v.to_string()));
157        }
158        if let Some(v) = self.ve2 {
159            block.fields.insert("ExcIEEEAC7B.ve2".into(), crate::base::FieldValue::Text(v.to_string()));
160        }
161        if let Some(v) = self.vemin {
162            block.fields.insert("ExcIEEEAC7B.vemin".into(), crate::base::FieldValue::Text(v.to_string()));
163        }
164        if let Some(v) = self.vfemax {
165            block.fields.insert("ExcIEEEAC7B.vfemax".into(), crate::base::FieldValue::Text(v.to_string()));
166        }
167        if let Some(v) = self.vrmax {
168            block.fields.insert("ExcIEEEAC7B.vrmax".into(), crate::base::FieldValue::Text(v.to_string()));
169        }
170        if let Some(v) = self.vrmin {
171            block.fields.insert("ExcIEEEAC7B.vrmin".into(), crate::base::FieldValue::Text(v.to_string()));
172        }
173        block
174    }
175}
176
177impl ExcIEEEAC7B {
178    pub fn from_block(b: &crate::base::RdfBlock) -> Self {
179        let mut obj = Self::default();
180        obj.base.base.base.id.clone_from(&b.mrid);
181        for (key, val) in &b.fields {
182            match key.as_str() {
183                "ExcIEEEAC7B.kc" => {
184                    match val {
185                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kc = Some(v); } }
186                        crate::base::FieldValue::TextList(svs) => {
187                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kc = Some(v); } }
188                        }
189                        _ => {}
190                    }
191                }
192                "ExcIEEEAC7B.kd" => {
193                    match val {
194                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kd = Some(v); } }
195                        crate::base::FieldValue::TextList(svs) => {
196                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kd = Some(v); } }
197                        }
198                        _ => {}
199                    }
200                }
201                "ExcIEEEAC7B.kdr" => {
202                    match val {
203                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kdr = Some(v); } }
204                        crate::base::FieldValue::TextList(svs) => {
205                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kdr = Some(v); } }
206                        }
207                        _ => {}
208                    }
209                }
210                "ExcIEEEAC7B.ke" => {
211                    match val {
212                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ke = Some(v); } }
213                        crate::base::FieldValue::TextList(svs) => {
214                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ke = Some(v); } }
215                        }
216                        _ => {}
217                    }
218                }
219                "ExcIEEEAC7B.kf1" => {
220                    match val {
221                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kf1 = Some(v); } }
222                        crate::base::FieldValue::TextList(svs) => {
223                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kf1 = Some(v); } }
224                        }
225                        _ => {}
226                    }
227                }
228                "ExcIEEEAC7B.kf2" => {
229                    match val {
230                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kf2 = Some(v); } }
231                        crate::base::FieldValue::TextList(svs) => {
232                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kf2 = Some(v); } }
233                        }
234                        _ => {}
235                    }
236                }
237                "ExcIEEEAC7B.kf3" => {
238                    match val {
239                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kf3 = Some(v); } }
240                        crate::base::FieldValue::TextList(svs) => {
241                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kf3 = Some(v); } }
242                        }
243                        _ => {}
244                    }
245                }
246                "ExcIEEEAC7B.kia" => {
247                    match val {
248                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kia = Some(v); } }
249                        crate::base::FieldValue::TextList(svs) => {
250                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kia = Some(v); } }
251                        }
252                        _ => {}
253                    }
254                }
255                "ExcIEEEAC7B.kir" => {
256                    match val {
257                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kir = Some(v); } }
258                        crate::base::FieldValue::TextList(svs) => {
259                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kir = Some(v); } }
260                        }
261                        _ => {}
262                    }
263                }
264                "ExcIEEEAC7B.kl" => {
265                    match val {
266                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kl = Some(v); } }
267                        crate::base::FieldValue::TextList(svs) => {
268                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kl = Some(v); } }
269                        }
270                        _ => {}
271                    }
272                }
273                "ExcIEEEAC7B.kp" => {
274                    match val {
275                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kp = Some(v); } }
276                        crate::base::FieldValue::TextList(svs) => {
277                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kp = Some(v); } }
278                        }
279                        _ => {}
280                    }
281                }
282                "ExcIEEEAC7B.kpa" => {
283                    match val {
284                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kpa = Some(v); } }
285                        crate::base::FieldValue::TextList(svs) => {
286                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kpa = Some(v); } }
287                        }
288                        _ => {}
289                    }
290                }
291                "ExcIEEEAC7B.kpr" => {
292                    match val {
293                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.kpr = Some(v); } }
294                        crate::base::FieldValue::TextList(svs) => {
295                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.kpr = Some(v); } }
296                        }
297                        _ => {}
298                    }
299                }
300                "ExcIEEEAC7B.seve1" => {
301                    match val {
302                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.seve1 = Some(v); } }
303                        crate::base::FieldValue::TextList(svs) => {
304                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.seve1 = Some(v); } }
305                        }
306                        _ => {}
307                    }
308                }
309                "ExcIEEEAC7B.seve2" => {
310                    match val {
311                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.seve2 = Some(v); } }
312                        crate::base::FieldValue::TextList(svs) => {
313                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.seve2 = Some(v); } }
314                        }
315                        _ => {}
316                    }
317                }
318                "ExcIEEEAC7B.tdr" => {
319                    match val {
320                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tdr = Some(v); } }
321                        crate::base::FieldValue::TextList(svs) => {
322                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tdr = Some(v); } }
323                        }
324                        _ => {}
325                    }
326                }
327                "ExcIEEEAC7B.te" => {
328                    match val {
329                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.te = Some(v); } }
330                        crate::base::FieldValue::TextList(svs) => {
331                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.te = Some(v); } }
332                        }
333                        _ => {}
334                    }
335                }
336                "ExcIEEEAC7B.tf" => {
337                    match val {
338                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.tf = Some(v); } }
339                        crate::base::FieldValue::TextList(svs) => {
340                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.tf = Some(v); } }
341                        }
342                        _ => {}
343                    }
344                }
345                "ExcIEEEAC7B.vamax" => {
346                    match val {
347                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vamax = Some(v); } }
348                        crate::base::FieldValue::TextList(svs) => {
349                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vamax = Some(v); } }
350                        }
351                        _ => {}
352                    }
353                }
354                "ExcIEEEAC7B.vamin" => {
355                    match val {
356                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vamin = Some(v); } }
357                        crate::base::FieldValue::TextList(svs) => {
358                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vamin = Some(v); } }
359                        }
360                        _ => {}
361                    }
362                }
363                "ExcIEEEAC7B.ve1" => {
364                    match val {
365                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ve1 = Some(v); } }
366                        crate::base::FieldValue::TextList(svs) => {
367                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ve1 = Some(v); } }
368                        }
369                        _ => {}
370                    }
371                }
372                "ExcIEEEAC7B.ve2" => {
373                    match val {
374                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.ve2 = Some(v); } }
375                        crate::base::FieldValue::TextList(svs) => {
376                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.ve2 = Some(v); } }
377                        }
378                        _ => {}
379                    }
380                }
381                "ExcIEEEAC7B.vemin" => {
382                    match val {
383                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vemin = Some(v); } }
384                        crate::base::FieldValue::TextList(svs) => {
385                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vemin = Some(v); } }
386                        }
387                        _ => {}
388                    }
389                }
390                "ExcIEEEAC7B.vfemax" => {
391                    match val {
392                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vfemax = Some(v); } }
393                        crate::base::FieldValue::TextList(svs) => {
394                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vfemax = Some(v); } }
395                        }
396                        _ => {}
397                    }
398                }
399                "ExcIEEEAC7B.vrmax" => {
400                    match val {
401                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vrmax = Some(v); } }
402                        crate::base::FieldValue::TextList(svs) => {
403                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vrmax = Some(v); } }
404                        }
405                        _ => {}
406                    }
407                }
408                "ExcIEEEAC7B.vrmin" => {
409                    match val {
410                        crate::base::FieldValue::Text(sv) => { if let Ok(v) = sv.trim().parse() { obj.vrmin = Some(v); } }
411                        crate::base::FieldValue::TextList(svs) => {
412                            if let Some(sv) = svs.last() { if let Ok(v) = sv.trim().parse() { obj.vrmin = Some(v); } }
413                        }
414                        _ => {}
415                    }
416                }
417                "ExcitationSystemDynamics.SynchronousMachineDynamics" => {
418                    if let crate::base::FieldValue::Resource(sv) = val {
419                        obj.base.synchronous_machine_dynamics = Some(crate::base::MridRef { mrid: sv.clone() });
420                    }
421                }
422                "DynamicsFunctionBlock.enabled" => {
423                    match val {
424                        crate::base::FieldValue::Text(sv) => { obj.base.base.enabled = Some(sv.trim() == "true"); }
425                        crate::base::FieldValue::TextList(svs) => {
426                            if let Some(sv) = svs.last() { obj.base.base.enabled = Some(sv.trim() == "true"); }
427                        }
428                        _ => {}
429                    }
430                }
431                "IdentifiedObject.description" => {
432                    match val {
433                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.description = sv.clone(); }
434                        crate::base::FieldValue::TextList(svs) => {
435                            if let Some(sv) = svs.last() { obj.base.base.base.description = sv.clone(); }
436                        }
437                        _ => {}
438                    }
439                }
440                "IdentifiedObject.energyIdentCodeEic" => {
441                    match val {
442                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.energy_ident_code_eic = sv.clone(); }
443                        crate::base::FieldValue::TextList(svs) => {
444                            if let Some(sv) = svs.last() { obj.base.base.base.energy_ident_code_eic = sv.clone(); }
445                        }
446                        _ => {}
447                    }
448                }
449                "IdentifiedObject.mRID" => {
450                    match val {
451                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.m_rid = sv.clone(); }
452                        crate::base::FieldValue::TextList(svs) => {
453                            if let Some(sv) = svs.last() { obj.base.base.base.m_rid = sv.clone(); }
454                        }
455                        _ => {}
456                    }
457                }
458                "IdentifiedObject.name" => {
459                    match val {
460                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.name = sv.clone(); }
461                        crate::base::FieldValue::TextList(svs) => {
462                            if let Some(sv) = svs.last() { obj.base.base.base.name = sv.clone(); }
463                        }
464                        _ => {}
465                    }
466                }
467                "IdentifiedObject.shortName" => {
468                    match val {
469                        crate::base::FieldValue::Text(sv) => { obj.base.base.base.short_name = sv.clone(); }
470                        crate::base::FieldValue::TextList(svs) => {
471                            if let Some(sv) = svs.last() { obj.base.base.base.short_name = sv.clone(); }
472                        }
473                        _ => {}
474                    }
475                }
476                _ => {}
477            }
478        }
479        obj
480    }
481}