// Generated by cimgen — do not edit by hand.
#![allow(clippy::all, dead_code, unused)]
use cimdecoder::CimDataset;
use crate::Violation;
use crate::helpers::*;
pub fn validate_p61970_302_dynamics_ap_con_complex_shacl(dataset: &CimDataset) -> Vec<Violation> {
let mut v = Vec::new();
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_async_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_async_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_async_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_async_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_6(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_vs_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_vo_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_tw_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_tl_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_tl_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_td_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_ta_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec2a_disc_exc_cont_ieeedec2a_vd_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec2a_disc_exc_cont_ieeedec2a_td_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec2a_disc_exc_cont_ieeedec2a_td_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec3a_disc_exc_cont_ieeedec3a_td_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ks_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kf1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kh_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vlr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vfemax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kb_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ks_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_vemin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_vfemax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kn_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_efdn_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_vimin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_vimax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tf1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tf3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_th_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vfelim_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_kh_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vhmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_tj_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_tk_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_kdr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_kir_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vpidmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_tdr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vimin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vemin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ans_exc_ans_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ans_exc_ans_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ans_exc_ans_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ans_exc_ans_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr1_exc_avr1_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr1_exc_avr1_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr1_exc_avr1_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr1_exc_avr1_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_tf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_tf1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_tif_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t1if_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr5_exc_avr5_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_vmin5_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_vmin3_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_vmin1_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_xe_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_efdmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_efdmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_tf1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_trh_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_efdmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_kv_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_vrmin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_vbmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_vb1max_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_ki_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_kp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_xe_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_tsw_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_ts2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_ts1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_tnu_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_tfi_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_efmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_tb1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_ti4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_ti3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_te2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_upmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_tr4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_iefmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_tr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_ti_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_imin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_emin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kb_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ke_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kh_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vfemax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_efdn_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_vfemax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kn_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_vemin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_vimin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_vimax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_tf1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_tf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_tf3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_th_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vfelim_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_tj_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_kh_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_tk_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vhmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vemin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kdr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kia_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_tdr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kf1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kp_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kir_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kf3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_vemin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_tdr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_ve2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_ve1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_seve2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_vrmin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_kir_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_seve1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_kdr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_trh_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_vrmin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_kv_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_seefd2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_kd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_seefd1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_kp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_vrmin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_ki_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_efd1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_vemin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_efd2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tc1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vimax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vimin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tb1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_ki_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_kp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_vrmin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_efdmax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vimax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_xl_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_kg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_kp_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vimin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_ki_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vbmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vmmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vgmax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vmmin_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_km_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_tm_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vmmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vmmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vbmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_kg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_xl_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_kp_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_ki_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tb2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tc2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tub2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tub1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_toc1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_toc2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tob2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tuc2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tob1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_kr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tuc1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tc1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tb1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_kia_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_kpa_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_kg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_ilr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_klr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_kci_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vmin_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tia_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_kia_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_kl_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_kpa_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_kh_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_kf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_tr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_tf1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_r_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_tf2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_tf1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_tf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_efdmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_ta2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_ta3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_ta1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_ta4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_vfmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tb1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tf1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tb2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tc1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tc2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_ucmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_t4m_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_mesu_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_scrx_exc_scrx_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_scrx_exc_scrx_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_scrx_exc_scrx_k_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_scrx_exc_scrx_emin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_k_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_emin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_efdmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_urmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_emin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_uimin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_ti_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_vtmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_sbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_tr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_efdmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tb1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vimin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vimax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tc1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_kp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_te_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_efdmax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_ki_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_ka_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_kf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_tm_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_km_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vgmax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_ki_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vimax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_xl_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vimin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_kj_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_kg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_efdmax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_kp_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vbmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vgmax_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vbmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_kc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vmmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_kp_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_kg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_ki_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_xl_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_kpa_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vamin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vamax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_kcl_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vimin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_kia_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_tvd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_ilr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_klr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_ts_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_kg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_ts_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_kl_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tia_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_kpa_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vmin_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_kia_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_kh_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vrmin_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vrmax_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tfload_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tpelec_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_minerr_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_ta_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tdgov_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tb_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_teng_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tsb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tsa_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_vmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_kturb_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tact_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tdgov_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_teng_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tsb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_vmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_minerr_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tfload_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tact_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tpelec_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tsa_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_vmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_r_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_tltr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_r_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_vmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_b_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_y_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_tmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_t_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_etd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_ecr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_tt_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_x_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_tcd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_ty_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_ttc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_tsi_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_tac_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_ty_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_tm_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_tcm_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_tmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_etd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_kdroop_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_ecr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_t_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_tt_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_tcd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_tg_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_tf_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_rperm_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_qnl_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_at_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_velm_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_rperm_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_gmin_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_gmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_tw_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_dturb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_tr_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_tg_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_uc_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_tr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_tw_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_bturb_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_at_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_tt_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_tw_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tg_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tblade_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_gmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tw_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_rperm_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_rtemp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_gmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_tt_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_tturb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_valvmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_tx_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_twng_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_twnc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_ts_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_tw_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_uc_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_tr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_bturb_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_tturb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_tt_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_velmax_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_tw_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_treg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_tb_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_gmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_valvmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_tx_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_twng_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_twnc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_tv_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_ts_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_tt_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_gmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_tw_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tw_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tpe_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tdv_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_gmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_treg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_gatmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_velmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_tw_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_vmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_t3_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_t1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t3_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_k_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_uo_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_uc_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam2_gov_steam2_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam2_gov_steam2_t1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam2_gov_steam2_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_tn_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_td_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_kls_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_fcut_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t5lp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_rhp_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t5hp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t4lp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t1lp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_rlp_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t1hp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t3lp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t3hp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t4hp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tdp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_wwmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tlp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_trh_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tvip_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_thp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tvhp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tfp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_ten_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tw_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tip_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_wfmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_vmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_tt_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t3_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_trh_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tmp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tcm_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tdc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tam_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tf1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tv_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_ty_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_thp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_uo_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t3_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_uc_max_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_k_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_pmin_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_pmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t3_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_composite_load_composite_pfrac_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_composite_load_composite_pfrac_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_composite_load_composite_h_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_generic_non_linear_load_generic_non_linear_tq_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_generic_non_linear_load_generic_non_linear_tp_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_tv_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_tppo_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_tpo_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_tbkr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_pfrac_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_pfrac_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_h_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_mechanical_load_user_defined_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_mech_load1_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim2_overexc_lim2_voimin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x1_overexc_lim_x1_vlow_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x1_overexc_lim_x1_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x1_overexc_lim_x1_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x1_overexc_lim_x1_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x2_overexc_lim_x2_vlow_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x2_overexc_lim_x2_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x2_overexc_lim_x2_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x2_overexc_lim_x2_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pfv_ar_type1ieeepf_controller_pfv_ar_type1ieeepf_c_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pfv_ar_type1ieeepf_controller_pfv_ar_type1ieeepf_c_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pfv_ar_type1ieeev_ar_controller_pfv_ar_type1ieeev_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_tpe_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t9_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t10_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_tdelay_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tw3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tw1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tw4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_vstmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tw2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t9_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t11_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_vsi1min_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t10_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_vsi2min_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t9_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t10_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_lsmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_input_signal1type_in(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_input_signal2type_in(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tw2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tw1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tpe_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tl4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tl3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tl2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tl1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ppss_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ppss_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_vrmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_input_signal_type_in(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_vstmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_vsi2min_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t9_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_tw4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_tw1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_tw2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_vsi1min_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t10_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_tw3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t11_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_input_signal1type_in(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_input_signal2type_has_value(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_vstmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_tw3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_tw2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_tw1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl11_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th10_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_vlmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th9_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_vstmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti12_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti10_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti9_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti11_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl12_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th11_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_vimin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl9_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl10_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th12_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_dtc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_dtf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_dtp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_nav_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_nav_max_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_dtc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_ncl_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_tp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_dtf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_tf_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_dtp_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_tomsl_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_tomd_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_t4mom_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_t4m_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_t4f_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_vsmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_te_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tt_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_ta_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tx1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tx2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tb_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_vsmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_td_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_t4_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_t3_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_t2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_t1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_vsmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t6_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t5_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t4_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t3_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t2_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t1_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t6_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t5_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t10_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_vsmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t9_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t8_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t7_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_input_signal1type_in(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_input_signal2type_in(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_synchronous_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_synchronous_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_6(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_7(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_8(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_6(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_9(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_10(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_11(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_12(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_7(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_turb_lcfb1_turb_lcfb1_tpelec_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_turb_lcfb1_turb_lcfb1_mwbase_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam2_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_turbine_governor_user_defined_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_xone(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim2simplified_underexc_lim2simplified_vu_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_vulmin_less_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_vuimin_less_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_tu4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_tu3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_tu2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_tu1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_vuimin_less_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tuv_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tup_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tu1_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tu4_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tuq_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tu2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_vulmin_less_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tu3_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tul_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x1_underexc_lim_x1_tm_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x1_underexc_lim_x1_tf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x1_underexc_lim_x1_k_min_excl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x2_underexc_lim_x2_tm_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x2_underexc_lim_x2_tf2_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_v_adj_ieee_v_adj_ieee_vadjmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_v_adj_ieee_v_adj_ieee_taon_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_v_adj_ieee_v_adj_ieee_taoff_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_v_comp_ieee_type1_v_comp_ieee_type1_xc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_v_comp_ieee_type1_v_comp_ieee_type1_tr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_v_comp_ieee_type1_v_comp_ieee_type1_rc_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_v_comp_ieee_type2_v_comp_ieee_type2_tr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tufiltp3_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tpfiltp3_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tomegare_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tomegafi_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tdvs_min_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4a_iec_wind_cont_p_type4a_iec_tufi_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4a_iec_wind_cont_p_type4a_iec_tpor_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4b_iec_wind_cont_p_type4b_iec_tufi_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4b_iec_wind_cont_p_type4b_iec_tpor_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4b_iec_wind_cont_p_type4b_iec_tpae_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_pitch_angle_iec_wind_cont_pitch_angle_ie_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_pitch_angle_iec_wind_cont_pitch_angle_ie_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_pitch_angle_iec_wind_cont_pitch_angle_ie_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_rdroop_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_iqmin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_tufiltq_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_tqord_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_tpfiltq_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_umin_less_than(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_tpost_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_xdroop_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_q_lim_iec_wind_cont_q_lim_iec_qmin_less_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qpqu_lim_iec_wind_cont_qpqu_lim_iec_tufi_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qpqu_lim_iec_wind_cont_qpqu_lim_iec_tpfi_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_rotor_riec_wind_cont_rotor_riec_tpfiltrr_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_rotor_riec_wind_cont_rotor_riec_tomegafi_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_rotor_riec_wind_cont_rotor_riec_rmin_les_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_gen_type3a_iec_wind_gen_type3a_iec_tic_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_gen_type3b_iec_wind_gen_type3b_iec_two_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_gen_type3b_iec_wind_gen_type3b_iec_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_gen_type4iec_wind_gen_type4iec_tg_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_mech_iec_wind_mech_iec_hwtr_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_mech_iec_wind_mech_iec_hgen_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_pitch_cont_power_iec_wind_pitch_cont_power_ie_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_pitch_cont_power_iec_wind_pitch_cont_power_ie_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_pitch_cont_power_iec_wind_pitch_cont_power_ie_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_6(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_7(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_8(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_2(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_3(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_4(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_5(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_6(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_7(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_8(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_9(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_protection_iec_wind_protection_iec_tfma_min_incl(dataset));
v.extend(check_p61970_302_dynamics_ap_con_complex_shacl_wind_ref_frame_rot_iec_wind_ref_frame_rot_iec_tpll_etc(dataset));
v
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.damping.is_none() { continue; }
if obj.base.base.damping.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.damping-valueRange".to_string(),
class: "AsynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.damping".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.damping:valueRange".to_string(),
description: "Damping torque coefficient (D) (>= 0). A proportionality constant that, when multiplied by the angular velocity of the rotor poles with respect to the magnetic field (frequency), results in the damping torque. This value is often zero when the sources of damping torques (generator damper windings, load damping effects, etc.) are modelled in detail. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_resistance.is_none() { continue; }
if obj.base.base.stator_resistance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorResistance-valueRange".to_string(),
class: "AsynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.statorResistance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorResistance:valueRange".to_string(),
description: "Stator (armature) resistance (Rs) (>= 0). Typical value = 0,005.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_leakage_reactance.is_none() { continue; }
if obj.base.base.stator_leakage_reactance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorLeakageReactance-valueRange".to_string(),
class: "AsynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorLeakageReactance:valueRange".to_string(),
description: "Stator leakage reactance (Xl) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.saturation_factor.is_none() { continue; }
if obj.base.base.saturation_factor.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.saturationFactor-valueRange".to_string(),
class: "AsynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.saturationFactor".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.saturationFactor:valueRange".to_string(),
description: "Saturation factor at rated terminal voltage (S1) (>= 0). Not used by simplified model. Defined by defined by S(E1) in the SynchronousMachineSaturationParameters diagram. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_equivalent_circuit_rotating_m_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.inertia.is_none() { continue; }
if obj.base.base.inertia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.inertia-valueRange".to_string(),
class: "AsynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.inertia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.inertia:valueRange".to_string(),
description: "Inertia constant of generator or motor and mechanical load (H) (> 0). This is the specification for the stored energy in the rotating mass when operating at rated speed. For a generator, this includes the generator plus all other elements (turbine, exciter) on the same shaft and has units of MW x s. For a motor, it includes the motor plus its mechanical load. Conventional units are PU on the generator MVA base, usually expressed as MW x s / MVA or just s. This value is used in the accelerating power reference frame for operator training simulator solutions. Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.inertia.is_none() { continue; }
if obj.base.base.inertia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.inertia-valueRange".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.inertia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.inertia:valueRange".to_string(),
description: "Inertia constant of generator or motor and mechanical load (H) (> 0). This is the specification for the stored energy in the rotating mass when operating at rated speed. For a generator, this includes the generator plus all other elements (turbine, exciter) on the same shaft and has units of MW x s. For a motor, it includes the motor plus its mechanical load. Conventional units are PU on the generator MVA base, usually expressed as MW x s / MVA or just s. This value is used in the accelerating power reference frame for operator training simulator solutions. Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_async_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.tppo.is_none() { continue; }
if obj.tppo.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:AsynchronousMachineTimeConstantReactance.tppo-valueRange".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "AsynchronousMachineTimeConstantReactance.tppo".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:AsynchronousMachineTimeConstantReactance.tppo:valueRange".to_string(),
description: "Subtransient rotor time constant (T''o) (> 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_leakage_reactance.is_none() || obj.xpp.is_none() { continue; }
if !((obj.base.base.stator_leakage_reactance.unwrap() as f64) < obj.xpp.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:AsynchronousMachineTimeConstantReactance.xpp-valueRangePair".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is either equal to or greater than AsynchronousMachineTimeConstantReactance.xpp.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:AsynchronousMachineTimeConstantReactance.xpp:valueRangePair".to_string(),
description: "Subtransient reactance (unsaturated) (X'') (> RotatingMachineDynamics.statorLeakageReactance). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_leakage_reactance.is_none() { continue; }
if obj.base.base.stator_leakage_reactance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorLeakageReactance-valueRange".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorLeakageReactance:valueRange".to_string(),
description: "Stator leakage reactance (Xl) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_async_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.xpp.is_none() || obj.xp.is_none() { continue; }
if !((obj.xpp.unwrap() as f64) <= obj.xp.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:AsynchronousMachineTimeConstantReactance.xp-valueRangePair".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "AsynchronousMachineTimeConstantReactance.xpp".to_string(),
message: "The value is greater than AsynchronousMachineTimeConstantReactance.xp.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:AsynchronousMachineTimeConstantReactance.xp:valueRangePair".to_string(),
description: "Transient reactance (unsaturated) (X') (>= AsynchronousMachineTimeConstantReactance.xpp). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_async_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.tppo.is_none() || obj.tpo.is_none() { continue; }
if !((obj.tppo.unwrap() as f64) < obj.tpo.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:AsynchronousMachineTimeConstantReactance.tpo-valueRangePair".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "AsynchronousMachineTimeConstantReactance.tppo".to_string(),
message: "The value is either equal to or greater than AsynchronousMachineTimeConstantReactance.tpo.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:AsynchronousMachineTimeConstantReactance.tpo:valueRangePair".to_string(),
description: "Transient rotor time constant (T'o) (> AsynchronousMachineTimeConstantReactance.tppo). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.saturation_factor.is_none() { continue; }
if obj.base.base.saturation_factor.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.saturationFactor-valueRange".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.saturationFactor".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.saturationFactor:valueRange".to_string(),
description: "Saturation factor at rated terminal voltage (S1) (>= 0). Not used by simplified model. Defined by defined by S(E1) in the SynchronousMachineSaturationParameters diagram. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_resistance.is_none() { continue; }
if obj.base.base.stator_resistance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorResistance-valueRange".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.statorResistance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorResistance:valueRange".to_string(),
description: "Stator (armature) resistance (Rs) (>= 0). Typical value = 0,005.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_async_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.xp.is_none() || obj.xs.is_none() { continue; }
if !((obj.xp.unwrap() as f64) <= obj.xs.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:AsynchronousMachineTimeConstantReactance.xs-valueRangePair".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "AsynchronousMachineTimeConstantReactance.xp".to_string(),
message: "The value is greater than AsynchronousMachineTimeConstantReactance.xs.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:AsynchronousMachineTimeConstantReactance.xs:valueRangePair".to_string(),
description: "Synchronous reactance (Xs) (>= AsynchronousMachineTimeConstantReactance.xp). Typical value = 1,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_time_constant_reactance_rotat_etc_6(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.damping.is_none() { continue; }
if obj.base.base.damping.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.damping-valueRange".to_string(),
class: "AsynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.damping".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.damping:valueRange".to_string(),
description: "Damping torque coefficient (D) (>= 0). A proportionality constant that, when multiplied by the angular velocity of the rotor poles with respect to the magnetic field (frequency), results in the damping torque. This value is often zero when the sources of damping torques (generator damper windings, load damping effects, etc.) are modelled in detail. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.damping.is_none() { continue; }
if obj.base.base.damping.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.damping-valueRange".to_string(),
class: "AsynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.damping".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.damping:valueRange".to_string(),
description: "Damping torque coefficient (D) (>= 0). A proportionality constant that, when multiplied by the angular velocity of the rotor poles with respect to the magnetic field (frequency), results in the damping torque. This value is often zero when the sources of damping torques (generator damper windings, load damping effects, etc.) are modelled in detail. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.inertia.is_none() { continue; }
if obj.base.base.inertia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.inertia-valueRange".to_string(),
class: "AsynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.inertia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.inertia:valueRange".to_string(),
description: "Inertia constant of generator or motor and mechanical load (H) (> 0). This is the specification for the stored energy in the rotating mass when operating at rated speed. For a generator, this includes the generator plus all other elements (turbine, exciter) on the same shaft and has units of MW x s. For a motor, it includes the motor plus its mechanical load. Conventional units are PU on the generator MVA base, usually expressed as MW x s / MVA or just s. This value is used in the accelerating power reference frame for operator training simulator solutions. Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_resistance.is_none() { continue; }
if obj.base.base.stator_resistance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorResistance-valueRange".to_string(),
class: "AsynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.statorResistance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorResistance:valueRange".to_string(),
description: "Stator (armature) resistance (Rs) (>= 0). Typical value = 0,005.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.saturation_factor.is_none() { continue; }
if obj.base.base.saturation_factor.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.saturationFactor-valueRange".to_string(),
class: "AsynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.saturationFactor".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.saturationFactor:valueRange".to_string(),
description: "Saturation factor at rated terminal voltage (S1) (>= 0). Not used by simplified model. Defined by defined by S(E1) in the SynchronousMachineSaturationParameters diagram. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_asynchronous_machine_user_defined_rotating_machine_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("AsynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::AsynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_leakage_reactance.is_none() { continue; }
if obj.base.base.stator_leakage_reactance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorLeakageReactance-valueRange".to_string(),
class: "AsynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorLeakageReactance:valueRange".to_string(),
description: "Stator leakage reactance (Xl) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_vs_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC1A>() {
Some(o) => o, None => continue,
};
if obj.vsmin.is_none() || obj.vsmax.is_none() { continue; }
if !((obj.vsmin.unwrap() as f64) < obj.vsmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC1A.vsmin-valueRangePair".to_string(),
class: "DiscExcContIEEEDEC1A".to_string(),
property: "DiscExcContIEEEDEC1A.vsmin".to_string(),
message: "The value is either equal to or greater than DiscExcContIEEEDEC1A.vsmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC1A.vsmin:valueRangePair".to_string(),
description: "Limiter (V<sub>SMIN</sub>) (< DiscExcContIEEEDEC1A.vsmax). Typical value = -0,066.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_vo_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC1A>() {
Some(o) => o, None => continue,
};
if obj.vomin.is_none() || obj.vomax.is_none() { continue; }
if !((obj.vomin.unwrap() as f64) < obj.vomax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC1A.vomin-valueRangePair".to_string(),
class: "DiscExcContIEEEDEC1A".to_string(),
property: "DiscExcContIEEEDEC1A.vomin".to_string(),
message: "The value is either equal to or greater than DiscExcContIEEEDEC1A.vomax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC1A.vomin:valueRangePair".to_string(),
description: "Limiter (V<sub>OMIN</sub>) (< DiscExcContIEEEDEC1A.vomax). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_tw_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC1A>() {
Some(o) => o, None => continue,
};
if obj.tw5.is_none() { continue; }
if obj.tw5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC1A.tw5-valueRange".to_string(),
class: "DiscExcContIEEEDEC1A".to_string(),
property: "DiscExcContIEEEDEC1A.tw5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC1A.tw5:valueRange".to_string(),
description: "DEC washout time constant (T<sub>W</sub><sub>5</sub>) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_tl_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC1A>() {
Some(o) => o, None => continue,
};
if obj.tl2.is_none() { continue; }
if obj.tl2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC1A.tl2-valueRange".to_string(),
class: "DiscExcContIEEEDEC1A".to_string(),
property: "DiscExcContIEEEDEC1A.tl2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC1A.tl2:valueRange".to_string(),
description: "Time constant (T<sub>L</sub><sub>2</sub>) (>= 0). Typical value = 1,25.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_tl_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC1A>() {
Some(o) => o, None => continue,
};
if obj.tl1.is_none() { continue; }
if obj.tl1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC1A.tl1-valueRange".to_string(),
class: "DiscExcContIEEEDEC1A".to_string(),
property: "DiscExcContIEEEDEC1A.tl1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC1A.tl1:valueRange".to_string(),
description: "Time constant (T<sub>L</sub><sub>1</sub>) (>= 0). Typical value = 0,025.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_td_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC1A>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC1A.td-valueRange".to_string(),
class: "DiscExcContIEEEDEC1A".to_string(),
property: "DiscExcContIEEEDEC1A.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC1A.td:valueRange".to_string(),
description: "Time constant (T<sub>D</sub>) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec1a_disc_exc_cont_ieeedec1a_ta_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC1A>() {
Some(o) => o, None => continue,
};
if obj.tan.is_none() { continue; }
if obj.tan.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC1A.tan-valueRange".to_string(),
class: "DiscExcContIEEEDEC1A".to_string(),
property: "DiscExcContIEEEDEC1A.tan".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC1A.tan:valueRange".to_string(),
description: "Discontinuous controller time constant (T<sub>AN</sub>) (>= 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec2a_disc_exc_cont_ieeedec2a_vd_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC2A>() {
Some(o) => o, None => continue,
};
if obj.vdmin.is_none() || obj.vdmax.is_none() { continue; }
if !((obj.vdmin.unwrap() as f64) < obj.vdmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC2A.vdmin-valueRangePair".to_string(),
class: "DiscExcContIEEEDEC2A".to_string(),
property: "DiscExcContIEEEDEC2A.vdmin".to_string(),
message: "The value is either equal to or greater than DiscExcContIEEEDEC2A.vdmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC2A.vdmin:valueRangePair".to_string(),
description: "Limiter (V<sub>DMIN</sub>) (< DiscExcContIEEEDEC2A.vdmax). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec2a_disc_exc_cont_ieeedec2a_td_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC2A>() {
Some(o) => o, None => continue,
};
if obj.td2.is_none() { continue; }
if obj.td2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC2A.td2-valueRange".to_string(),
class: "DiscExcContIEEEDEC2A".to_string(),
property: "DiscExcContIEEEDEC2A.td2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC2A.td2:valueRange".to_string(),
description: "Discontinuous controller washout time constant (T<sub>D2</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec2a_disc_exc_cont_ieeedec2a_td_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC2A>() {
Some(o) => o, None => continue,
};
if obj.td1.is_none() { continue; }
if obj.td1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC2A.td1-valueRange".to_string(),
class: "DiscExcContIEEEDEC2A".to_string(),
property: "DiscExcContIEEEDEC2A.td1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC2A.td1:valueRange".to_string(),
description: "Discontinuous controller time constant (T<sub>D1</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_disc_exc_cont_ieeedec3a_disc_exc_cont_ieeedec3a_td_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("DiscExcContIEEEDEC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::DiscExcContIEEEDEC3A>() {
Some(o) => o, None => continue,
};
if obj.tdr.is_none() { continue; }
if obj.tdr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:DiscExcContIEEEDEC3A.tdr-valueRange".to_string(),
class: "DiscExcContIEEEDEC3A".to_string(),
property: "DiscExcContIEEEDEC3A.tdr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:DiscExcContIEEEDEC3A.tdr:valueRange".to_string(),
description: "Reset time delay (T<sub>DR</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.vamax-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>amax</sub>) (> 0). Typical value = 14,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.seve2-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>2</sub>, back of commutating reactance (Se[Ve<sub>2</sub>]) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ks_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.ks.is_none() { continue; }
if obj.ks.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.ks-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.ks".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.ks:valueRange".to_string(),
description: "Coefficient to allow different usage of the model-speed coefficient (Ks) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.seve1-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>1</sub>, back of commutating reactance (Se[Ve<sub>1</sub>]) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.ve2-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve2) (> 0). Typical value = 3,14.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.vamin-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>amin</sub>) (< 0). Typical value = -14,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.kf-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (Kf) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.kf2.is_none() { continue; }
if obj.kf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.kf2-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.kf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.kf2:valueRange".to_string(),
description: "Coefficient to allow different usage of the model (Kf2) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.kd-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (Kd) (>= 0). Typical value = 0,38.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.tc-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>c</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.ka-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 400.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.ve1-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve1) (> 0). Typical value = 4,18.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.te-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.tb-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.vrmin-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator outputs (Vrmin) (< 0). Typical value = -5,43.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.ta-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.kc-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.vrmax-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator outputs (Vrmax) (> 0). Typical value = 6,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.tf-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac1a_exc_ac1a_kf1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC1A>() {
Some(o) => o, None => continue,
};
if obj.kf1.is_none() { continue; }
if obj.kf1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC1A.kf1-valueRange".to_string(),
class: "ExcAC1A".to_string(),
property: "ExcAC1A.kf1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC1A.kf1:valueRange".to_string(),
description: "Coefficient to allow different usage of the model (Kf1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kh_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.kh.is_none() { continue; }
if obj.kh.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.kh-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.kh".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.kh:valueRange".to_string(),
description: "Exciter field current feedback gain (Kh) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vlr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.vlr.is_none() { continue; }
if obj.vlr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.vlr-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.vlr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.vlr:valueRange".to_string(),
description: "Maximum exciter field current (Vlr) (> 0). Typical value = 4,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.kf-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (Kf) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vfemax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.vfemax.is_none() { continue; }
if obj.vfemax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.vfemax-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.vfemax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.vfemax:valueRange".to_string(),
description: "Exciter field current limit reference (Vfemax) (>= 0). Typical value = 4,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.ve2-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>2</sub>) (> 0). Typical value = 3,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.tc-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.seve2-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>2</sub>, back of commutating reactance (Se[Ve<sub>2</sub>]) (>= 0). Typical value = 0,012.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kb_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.kb.is_none() { continue; }
if obj.kb.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.kb-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.kb".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.kb:valueRange".to_string(),
description: "Second stage regulator gain (Kb) (> 0). Exciter field current controller gain. Typical value = 25.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.ve1-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>1</sub>) (> 0). Typical value = 4,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.kd-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (Kd) (>= 0). Typical value = 0,35.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.vamin-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vamin) (< 0). Typical value = -8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.vrmin-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator outputs (Vrmin) (< 0). Typical value = -95.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.vamax-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vamax) (> 0). Typical value = 8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.ka-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 400.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.seve1-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>1</sub>, back of commutating reactance (Se[Ve<sub>1</sub>]) (>= 0). Typical value = 0,037.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.kc-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 0,28.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.vrmax-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator outputs (Vrmax) (> 0). Typical value = 105.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.tb-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.ta-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.tf-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.te-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 0,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac2a_exc_ac2a_ks_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC2A>() {
Some(o) => o, None => continue,
};
if obj.ks.is_none() { continue; }
if obj.ks.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC2A.ks-valueRange".to_string(),
class: "ExcAC2A".to_string(),
property: "ExcAC2A.ks".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC2A.ks:valueRange".to_string(),
description: "Coefficient to allow different usage of the model-speed coefficient (Ks) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.tc-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.kd-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (Kd) (>= 0). Typical value = 0,499.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.seve2-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>2</sub>, back of commutating reactance (Se[Ve<sub>2</sub>]) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.kc-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 0,104.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_vemin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.vemin.is_none() { continue; }
if obj.vemin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.vemin-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.vemin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.vemin:valueRange".to_string(),
description: "Minimum exciter voltage output (Vemin) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.seve1-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>1</sub>, back of commutating reactance (Se[Ve<sub>1</sub>]) (>= 0). Typical value = 1,143.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.ve2-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>2</sub>) (> 0). Typical value = 4,68.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.ka-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 45,62.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.kr.is_none() { continue; }
if obj.kr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.kr-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.kr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.kr:valueRange".to_string(),
description: "Constant associated with regulator and alternator field power supply (Kr) (> 0). Typical value =3,77.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_vfemax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.vfemax.is_none() { continue; }
if obj.vfemax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.vfemax-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.vfemax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.vfemax:valueRange".to_string(),
description: "Exciter field current limit reference (Vfemax) (>= 0). Typical value = 16.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.ta-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,013.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.te-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 1,17.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.ve1-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>1</sub>) (> 0). Typical value = 6.24.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.vamax-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vamax) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.kf-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (Kf) (>= 0). Typical value = 0,143.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_kn_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.kn.is_none() { continue; }
if obj.kn.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.kn-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.kn".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.kn:valueRange".to_string(),
description: "Excitation control system stabilizer gain (Kn) (>= 0). Typical value =0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.tb-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.vamin-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vamin) (< 0). Typical value = -0,95.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_efdn_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.efdn.is_none() { continue; }
if obj.efdn.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.efdn-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.efdn".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.efdn:valueRange".to_string(),
description: "Value of Efd at which feedback gain changes (Efdn) (> 0). Typical value = 2,36.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac3a_exc_ac3a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC3A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC3A.tf-valueRange".to_string(),
class: "ExcAC3A".to_string(),
property: "ExcAC3A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC3A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_vimin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() { continue; }
if obj.vimin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.vimin-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.vimin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.vimin:valueRange".to_string(),
description: "Minimum voltage regulator input limit (Vimin) (< 0). Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.vrmax-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 5,64.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.tb-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.kc-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_vimax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.vimax.is_none() { continue; }
if obj.vimax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.vimax-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.vimax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.vimax:valueRange".to_string(),
description: "Maximum voltage regulator input limit (Vimax) (> 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.ka-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 200.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.tc-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.ta-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,015.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac4a_exc_ac4a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC4A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC4A.vrmin-valueRange".to_string(),
class: "ExcAC4A".to_string(),
property: "ExcAC4A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC4A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0). Typical value = -4,53.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.tb-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.kf-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (Kf) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.tc-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.ta-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.efd1-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (Efd1) (> 0). Typical value = 5,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tf1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.tf1.is_none() { continue; }
if obj.tf1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.tf1-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.tf1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.tf1:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf1) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.te-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.vrmin-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0). Typical value =-7,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tf3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.tf3.is_none() { continue; }
if obj.tf3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.tf3-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.tf3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.tf3:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf3) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.ka-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 400.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_tf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.tf2-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.tf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.tf2:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf2) (>= 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.efd2-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (Efd2) (> 0). Typical value = 4,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.seefd1-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Efd<sub>1</sub> (Se[Efd<sub>1</sub>]) (>= 0). Typical value = 0,86.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.seefd2-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Efd<sub>2</sub> (Se[Efd<sub>2</sub>]) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac5a_exc_ac5a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC5A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC5A.vrmax-valueRange".to_string(),
class: "ExcAC5A".to_string(),
property: "ExcAC5A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC5A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 7,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.seve2-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>2</sub>, back of commutating reactance (Se[Ve<sub>2</sub>]) (>= 0). Typical value = 0,044.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.ve2-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>2</sub>) (> 0). Typical value = 5,55.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.te-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_th_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.th.is_none() { continue; }
if obj.th.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.th-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.th".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.th:valueRange".to_string(),
description: "Exciter field current limiter time constant (Th) (> 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.tb-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.ve1-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>1</sub>) (> 0). Typical value = 7,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vfelim_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.vfelim.is_none() { continue; }
if obj.vfelim.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.vfelim-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.vfelim".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.vfelim:valueRange".to_string(),
description: "Exciter field current limit reference (Vfelim) (> 0). Typical value = 19.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_kh_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.kh.is_none() { continue; }
if obj.kh.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.kh-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.kh".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.kh:valueRange".to_string(),
description: "Exciter field current limiter gain (Kh) (>= 0). Typical value = 92.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.vamin-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vamin) (< 0). Typical value = -75.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.tc-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.ta-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (>= 0). Typical value = 0,086.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vhmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.vhmax.is_none() { continue; }
if obj.vhmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.vhmax-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.vhmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.vhmax:valueRange".to_string(),
description: "Maximum field current limiter signal reference (Vhmax) (> 0). Typical value = 75.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.vamax-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vamax) (> 0). Typical value = 75.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.seve1-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>1</sub>, back of commutating reactance (Se[Ve<sub>1</sub>]) (>= 0). Typical value = 0,214.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.kd-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (Kd) (>= 0). Typical value = 1,91.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.kc-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 0,173.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.vrmin-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0). Typical value = -36.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.vrmax-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 44.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_tj_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.tj.is_none() { continue; }
if obj.tj.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.tj-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.tj".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.tj:valueRange".to_string(),
description: "Exciter field current limiter time constant (Tj) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.ka-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 536.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac6a_exc_ac6a_tk_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC6A>() {
Some(o) => o, None => continue,
};
if obj.tk.is_none() { continue; }
if obj.tk.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC6A.tk-valueRange".to_string(),
class: "ExcAC6A".to_string(),
property: "ExcAC6A.tk".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC6A.tk:valueRange".to_string(),
description: "Voltage regulator time constant (Tk) (>= 0). Typical value = 0,18.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_kdr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.kdr.is_none() { continue; }
if obj.kdr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.kdr-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.kdr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.kdr:valueRange".to_string(),
description: "Voltage regulator derivative gain (Kdr) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.ve1-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>1</sub>) (> 0). Typical value = 6,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.kc-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 0,55.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_kir_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.kir.is_none() { continue; }
if obj.kir.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.kir-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.kir".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.kir:valueRange".to_string(),
description: "Voltage regulator integral gain (Kir) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vpidmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.vpidmin.is_none() || obj.vpidmax.is_none() { continue; }
if !((obj.vpidmin.unwrap() as f64) < obj.vpidmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.vpidmin-valueRangePair".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.vpidmin".to_string(),
message: "The value is either equal to or greater than ExcAC8B.vpidmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.vpidmin:valueRangePair".to_string(),
description: "PID minimum controller output (Vpidmin) (< ExcAC8B.vpidmax). Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_tdr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.tdr.is_none() { continue; }
if obj.tdr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.tdr-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.tdr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.tdr:valueRange".to_string(),
description: "Lag time constant (Tdr) (> 0 if ExcAC8B.kdr > 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.kd-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (Kd) (>= 0). Typical value = 1,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.te-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 1,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.vrmin-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.ta-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vimin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() || obj.vimax.is_none() { continue; }
if !((obj.vimin.unwrap() as f64) < obj.vimax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.vimin-valueRangePair".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.vimin".to_string(),
message: "The value is either equal to or greater than ExcAC8B.vimax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.vimin:valueRangePair".to_string(),
description: "Input signal minimum (Vimin) (< ExcAC8B.vimax). Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.seve2-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>2</sub>, back of commutating reactance (Se[Ve<sub>2</sub>]) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.seve1-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>1</sub>, back of commutating reactance (Se[Ve<sub>1</sub>]) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.vrmax-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 35.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.ka-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_vemin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.vemin.is_none() { continue; }
if obj.vemin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.vemin-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.vemin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.vemin:valueRange".to_string(),
description: "Minimum exciter voltage output (Vemin) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ac8b_exc_ac8b_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAC8B>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAC8B.ve2-valueRange".to_string(),
class: "ExcAC8B".to_string(),
property: "ExcAC8B.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAC8B.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>2</sub>) (> 0). Typical value = 9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ans_exc_ans_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcANS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcANS>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcANS.tb-valueRange".to_string(),
class: "ExcANS".to_string(),
property: "ExcANS.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcANS.tb:valueRange".to_string(),
description: "Exciter time constant (T<sub>B</sub>) (>= 0). Typical value = 0,04.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ans_exc_ans_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcANS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcANS>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcANS.t3-valueRange".to_string(),
class: "ExcANS".to_string(),
property: "ExcANS.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcANS.t3:valueRange".to_string(),
description: "Time constant (T<sub>3</sub>) (>= 0). Typical value = 1,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ans_exc_ans_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcANS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcANS>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcANS.t2-valueRange".to_string(),
class: "ExcANS".to_string(),
property: "ExcANS.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcANS.t2:valueRange".to_string(),
description: "Time constant (T<sub>2</sub>) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ans_exc_ans_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcANS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcANS>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcANS.t1-valueRange".to_string(),
class: "ExcANS".to_string(),
property: "ExcANS.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcANS.t1:valueRange".to_string(),
description: "Time constant (T<sub>1</sub>) (>= 0). Typical value = 20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr1_exc_avr1_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR1>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR1.tf-valueRange".to_string(),
class: "ExcAVR1".to_string(),
property: "ExcAVR1.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR1.tf:valueRange".to_string(),
description: "Rate feedback time constant (T<sub>F</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr1_exc_avr1_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR1>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR1.te-valueRange".to_string(),
class: "ExcAVR1".to_string(),
property: "ExcAVR1.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR1.te:valueRange".to_string(),
description: "Exciter time constant (T<sub>E</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr1_exc_avr1_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR1>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR1.tb-valueRange".to_string(),
class: "ExcAVR1".to_string(),
property: "ExcAVR1.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR1.tb:valueRange".to_string(),
description: "AVR time constant (T<sub>B</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr1_exc_avr1_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR1>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR1.ta-valueRange".to_string(),
class: "ExcAVR1".to_string(),
property: "ExcAVR1.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR1.ta:valueRange".to_string(),
description: "AVR time constant (T<sub>A</sub>) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_tf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR2>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR2.tf2-valueRange".to_string(),
class: "ExcAVR2".to_string(),
property: "ExcAVR2.tf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR2.tf2:valueRange".to_string(),
description: "Rate feedback time constant (T<sub>F2</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_tf1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR2>() {
Some(o) => o, None => continue,
};
if obj.tf1.is_none() { continue; }
if obj.tf1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR2.tf1-valueRange".to_string(),
class: "ExcAVR2".to_string(),
property: "ExcAVR2.tf1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR2.tf1:valueRange".to_string(),
description: "Rate feedback time constant (T<sub>F1</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR2>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR2.te-valueRange".to_string(),
class: "ExcAVR2".to_string(),
property: "ExcAVR2.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR2.te:valueRange".to_string(),
description: "Exciter time constant (T<sub>E</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR2>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR2.tb-valueRange".to_string(),
class: "ExcAVR2".to_string(),
property: "ExcAVR2.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR2.tb:valueRange".to_string(),
description: "AVR time constant (T<sub>B</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr2_exc_avr2_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR2>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR2.ta-valueRange".to_string(),
class: "ExcAVR2".to_string(),
property: "ExcAVR2.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR2.ta:valueRange".to_string(),
description: "AVR time constant (T<sub>A</sub>) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR3>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR3.te-valueRange".to_string(),
class: "ExcAVR3".to_string(),
property: "ExcAVR3.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR3.te:valueRange".to_string(),
description: "Exciter time constant (T<sub>E</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR3>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR3.t4-valueRange".to_string(),
class: "ExcAVR3".to_string(),
property: "ExcAVR3.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR3.t4:valueRange".to_string(),
description: "AVR time constant (T<sub>4</sub>) (>= 0). Typical value = 0,07.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR3>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR3.t3-valueRange".to_string(),
class: "ExcAVR3".to_string(),
property: "ExcAVR3.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR3.t3:valueRange".to_string(),
description: "AVR time constant (T<sub>3</sub>) (>= 0). Typical value = 0,66.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR3>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR3.t2-valueRange".to_string(),
class: "ExcAVR3".to_string(),
property: "ExcAVR3.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR3.t2:valueRange".to_string(),
description: "AVR time constant (T<sub>2</sub>) (>= 0). Typical value = 1,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr3_exc_avr3_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR3>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR3.t1-valueRange".to_string(),
class: "ExcAVR3".to_string(),
property: "ExcAVR3.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR3.t1:valueRange".to_string(),
description: "AVR time constant (T<sub>1</sub>) (>= 0). Typical value = 20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_tif_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR4>() {
Some(o) => o, None => continue,
};
if obj.tif.is_none() { continue; }
if obj.tif.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR4.tif-valueRange".to_string(),
class: "ExcAVR4".to_string(),
property: "ExcAVR4.tif".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR4.tif:valueRange".to_string(),
description: "Exciter current feedback time constant (T<sub>IF</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR4>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR4.t4-valueRange".to_string(),
class: "ExcAVR4".to_string(),
property: "ExcAVR4.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR4.t4:valueRange".to_string(),
description: "AVR time constant (T<sub>4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR4>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR4.t3-valueRange".to_string(),
class: "ExcAVR4".to_string(),
property: "ExcAVR4.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR4.t3:valueRange".to_string(),
description: "AVR time constant (T<sub>3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR4>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR4.t2-valueRange".to_string(),
class: "ExcAVR4".to_string(),
property: "ExcAVR4.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR4.t2:valueRange".to_string(),
description: "AVR time constant (T<sub>2</sub>) (>= 0). Typical value = 1,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t1if_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR4>() {
Some(o) => o, None => continue,
};
if obj.t1if.is_none() { continue; }
if obj.t1if.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR4.t1if-valueRange".to_string(),
class: "ExcAVR4".to_string(),
property: "ExcAVR4.t1if".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR4.t1if:valueRange".to_string(),
description: "Exciter current feedback time constant (T<sub>1IF</sub>) (>= 0). Typical value = 60.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr4_exc_avr4_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR4>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR4.t1-valueRange".to_string(),
class: "ExcAVR4".to_string(),
property: "ExcAVR4.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR4.t1:valueRange".to_string(),
description: "AVR time constant (T<sub>1</sub>) (>= 0). Typical value = 4,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr5_exc_avr5_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR5").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR5>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR5.ta-valueRange".to_string(),
class: "ExcAVR5".to_string(),
property: "ExcAVR5.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR5.ta:valueRange".to_string(),
description: "Time constant (Ta) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.t4-valueRange".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.t4:valueRange".to_string(),
description: "Lag time constant (T<sub>4</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_vmin5_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.vmin5.is_none() || obj.vmax5.is_none() { continue; }
if !((obj.vmin5.unwrap() as f64) < obj.vmax5.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.vmin5-valueRangePair".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.vmin5".to_string(),
message: "The value is either equal to or greater than ExcAVR7.vmax5.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.vmin5:valueRangePair".to_string(),
description: "Lead-lag minimum limit (Vmin5) (< ExcAVR7.vmax5). Typical value = -2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.t5-valueRange".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.t5:valueRange".to_string(),
description: "Lead time constant (T<sub>5</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_vmin3_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.vmin3.is_none() || obj.vmax3.is_none() { continue; }
if !((obj.vmin3.unwrap() as f64) < obj.vmax3.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.vmin3-valueRangePair".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.vmin3".to_string(),
message: "The value is either equal to or greater than ExcAVR7.vmax3.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.vmin3:valueRangePair".to_string(),
description: "Lead-lag minimum limit (Vmin3) (< ExcAVR7.vmax3). Typical value = -5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.t1-valueRange".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.t1:valueRange".to_string(),
description: "Lead time constant (T<sub>1</sub>) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_vmin1_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.vmin1.is_none() || obj.vmax1.is_none() { continue; }
if !((obj.vmin1.unwrap() as f64) < obj.vmax1.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.vmin1-valueRangePair".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.vmin1".to_string(),
message: "The value is either equal to or greater than ExcAVR7.vmax1.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.vmin1:valueRangePair".to_string(),
description: "Lead-lag minimum limit (Vmin1) (< ExcAVR7.vmax1). Typical value = -5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.t2-valueRange".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.t2:valueRange".to_string(),
description: "Lag time constant (T<sub>2</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.t3-valueRange".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.t3:valueRange".to_string(),
description: "Lead time constant (T<sub>3</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_avr7_exc_avr7_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcAVR7").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcAVR7>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcAVR7.t6-valueRange".to_string(),
class: "ExcAVR7".to_string(),
property: "ExcAVR7.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcAVR7.t6:valueRange".to_string(),
description: "Lag time constant (T<sub>6</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_xe_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcBBC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcBBC>() {
Some(o) => o, None => continue,
};
if obj.xe.is_none() { continue; }
if obj.xe.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcBBC.xe-valueRange".to_string(),
class: "ExcBBC".to_string(),
property: "ExcBBC.xe".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcBBC.xe:valueRange".to_string(),
description: "Effective excitation transformer reactance (Xe) (>= 0). Xe models the regulation of the transformer/rectifier unit. Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcBBC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcBBC>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcBBC.vrmin-valueRangePair".to_string(),
class: "ExcBBC".to_string(),
property: "ExcBBC.vrmin".to_string(),
message: "The value is either equal to or greater than ExcBBC.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcBBC.vrmin:valueRangePair".to_string(),
description: "Minimum control element output (Vrmin) (< ExcBBC.vrmax). Typical value = -5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcBBC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcBBC>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcBBC.t4-valueRange".to_string(),
class: "ExcBBC".to_string(),
property: "ExcBBC.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcBBC.t4:valueRange".to_string(),
description: "Lead/lag time constant (T4) (>= 0). If = 0, block is bypassed. Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcBBC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcBBC>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcBBC.t3-valueRange".to_string(),
class: "ExcBBC".to_string(),
property: "ExcBBC.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcBBC.t3:valueRange".to_string(),
description: "Lead/lag time constant (T3) (>= 0). If = 0, block is bypassed. Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcBBC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcBBC>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcBBC.t2-valueRange".to_string(),
class: "ExcBBC".to_string(),
property: "ExcBBC.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcBBC.t2:valueRange".to_string(),
description: "Controller time constant (T2) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcBBC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcBBC>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcBBC.t1-valueRange".to_string(),
class: "ExcBBC".to_string(),
property: "ExcBBC.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcBBC.t1:valueRange".to_string(),
description: "Controller time constant (T1) (>= 0). Typical value = 6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_bbc_exc_bbc_efdmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcBBC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcBBC>() {
Some(o) => o, None => continue,
};
if obj.efdmin.is_none() || obj.efdmax.is_none() { continue; }
if !((obj.efdmin.unwrap() as f64) < obj.efdmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcBBC.efdmin-valueRangePair".to_string(),
class: "ExcBBC".to_string(),
property: "ExcBBC.efdmin".to_string(),
message: "The value is either equal to or greater than ExcBBC.efdmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcBBC.efdmin:valueRangePair".to_string(),
description: "Minimum open circuit exciter voltage (Efdmin) (< ExcBBC.efdmax). Typical value = -5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcCZ").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcCZ>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcCZ.vrmin-valueRangePair".to_string(),
class: "ExcCZ".to_string(),
property: "ExcCZ.vrmin".to_string(),
message: "The value is either equal to or greater than ExcCZ.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcCZ.vrmin:valueRangePair".to_string(),
description: "Voltage regulator minimum limit (Vrmin) (< ExcCZ.vrmax). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcCZ").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcCZ>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcCZ.te-valueRange".to_string(),
class: "ExcCZ".to_string(),
property: "ExcCZ.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcCZ.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcCZ").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcCZ>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcCZ.tc-valueRange".to_string(),
class: "ExcCZ".to_string(),
property: "ExcCZ.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcCZ.tc:valueRange".to_string(),
description: "Regulator integral time constant (Tc) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcCZ").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcCZ>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcCZ.ta-valueRange".to_string(),
class: "ExcCZ".to_string(),
property: "ExcCZ.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcCZ.ta:valueRange".to_string(),
description: "Regulator time constant (Ta) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_cz_exc_cz_efdmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcCZ").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcCZ>() {
Some(o) => o, None => continue,
};
if obj.efdmin.is_none() || obj.efdmax.is_none() { continue; }
if !((obj.efdmin.unwrap() as f64) < obj.efdmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcCZ.efdmin-valueRangePair".to_string(),
class: "ExcCZ".to_string(),
property: "ExcCZ.efdmin".to_string(),
message: "The value is either equal to or greater than ExcCZ.efdmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcCZ.efdmin:valueRangePair".to_string(),
description: "Exciter output minimum limit (Efdmin) (< ExcCZ.efdmax). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.ka-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 46.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.efd1-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (Efd<sub>1</sub>) (> 0). Typical value = 3,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.te-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 0,46.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.kf-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gain (Kf) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.efd2-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (Efd<sub>2</sub>) (> 0). Typical value = 2,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.tb-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.seefd1-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Efd<sub>1</sub> (Se[Eefd<sub>1</sub>]) (>= 0). Typical value = 0,33.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.vrmin-valueRangePair".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.vrmin".to_string(),
message: "The value is either equal to or greater than ExcDC1A.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0 and < ExcDC1A.vrmax). Typical value = -0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.vrmin-valueRangePair".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.vrmin".to_string(),
message: "The value is either equal to or greater than ExcDC1A.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0 and < ExcDC1A.vrmax). Typical value = -0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.tc-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.seefd2-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Efd<sub>2</sub> (Se[Eefd<sub>2</sub>]) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.tf-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc1a_exc_dc1a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC1A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC1A.ta-valueRange".to_string(),
class: "ExcDC1A".to_string(),
property: "ExcDC1A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC1A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,06.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.seefd2-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Efd<sub>2</sub> (Se[Efd<sub>2</sub>]) (>= 0). Typical value = 0,117.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_tf1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.tf1.is_none() { continue; }
if obj.tf1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.tf1-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.tf1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.tf1:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.efd1-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (Efd<sub>1</sub>) (> 0). Typical value = 3,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.kf-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gain (Kf) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.te-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 1,33.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.ta-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.tb-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.ka-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 300.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.vrmin-valueRangePair".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.vrmin".to_string(),
message: "The value is either equal to or greater than ExcDC2A.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0 and < ExcDC2A.vrmax). Typical value = -4,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.vrmin-valueRangePair".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.vrmin".to_string(),
message: "The value is either equal to or greater than ExcDC2A.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0 and < ExcDC2A.vrmax). Typical value = -4,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.seefd1-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Efd<sub>1</sub> (Se[Efd<sub>1</sub>]) (>= 0). Typical value = 0,279.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.tf-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (> 0). Typical value = 0,675.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.tc-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc2a_exc_dc2a_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC2A>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC2A.efd2-valueRange".to_string(),
class: "ExcDC2A".to_string(),
property: "ExcDC2A.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC2A.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (Efd<sub>2</sub>) (> 0). Typical value = 2,29.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_trh_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.trh.is_none() { continue; }
if obj.trh.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.trh-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.trh".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.trh:valueRange".to_string(),
description: "Rheostat travel time (Trh) (> 0). Typical value = 20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.seefd1-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Efd<sub>1</sub> (Se[Efd<sub>1</sub>]) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_efdmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.efdmin.is_none() || obj.efdmax.is_none() { continue; }
if !((obj.efdmin.unwrap() as f64) < obj.efdmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.efdmin-valueRangePair".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.efdmin".to_string(),
message: "The value is either equal to or greater than ExcDC3A.efdmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.efdmin:valueRangePair".to_string(),
description: "Minimum voltage exciter output limiter (Efdmin) (< ExcDC3A.efdmax). Typical value = -99.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_kv_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.kv.is_none() { continue; }
if obj.kv.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.kv-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.kv".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.kv:valueRange".to_string(),
description: "Fast raise/lower contact setting (Kv) (> 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.vrmax-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.efd2-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (Efd<sub>2</sub>) (> 0). Typical value = 3,45.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_vrmin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.vrmin-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.vrmin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.efd1-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (Efd<sub>1</sub>) (> 0). Typical value = 2,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.te-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 1,83.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a_exc_dc3a_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A.seefd2-valueRange".to_string(),
class: "ExcDC3A".to_string(),
property: "ExcDC3A.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Efd<sub>2</sub> (Se[Efd<sub>2</sub>]) (>= 0). Typical value = 0,35.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.vrmin-valueRangePair".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.vrmin".to_string(),
message: "The value is either equal to or greater than ExcDC3A1.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0 and < ExcDC3A1.vrmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.vrmin-valueRangePair".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.vrmin".to_string(),
message: "The value is either equal to or greater than ExcDC3A1.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0 and < ExcDC3A1.vrmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.ta-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_vbmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.vbmax.is_none() { continue; }
if obj.vbmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.vbmax-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.vbmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.vbmax:valueRange".to_string(),
description: "Available exciter voltage limiter (Vbmax) (> 0). Typical value = 11,63.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.te-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 1,83.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.tf-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (>= 0). Typical value = 0,675.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.ka-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 300.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.kf-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gain (Kf) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_vb1max_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.vb1max.is_none() { continue; }
if obj.vb1max.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.vb1max-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.vb1max".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.vb1max:valueRange".to_string(),
description: "Available exciter voltage limiter (Vb1max) (> 0). Typical value = 11,63.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_ki_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.ki.is_none() { continue; }
if obj.ki.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.ki-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.ki".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.ki:valueRange".to_string(),
description: "Potential circuit gain coefficient (Ki) (>= 0). Typical value = 4,83.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_dc3a1_exc_dc3a1_kp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcDC3A1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcDC3A1>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcDC3A1.kp-valueRange".to_string(),
class: "ExcDC3A1".to_string(),
property: "ExcDC3A1.kp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcDC3A1.kp:valueRange".to_string(),
description: "Potential circuit gain coefficient (Kp) (>= 0). Typical value = 4,37.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_xe_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN1>() {
Some(o) => o, None => continue,
};
if obj.xe.is_none() { continue; }
if obj.xe.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN1.xe-valueRange".to_string(),
class: "ExcELIN1".to_string(),
property: "ExcELIN1.xe".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN1.xe:valueRange".to_string(),
description: "Excitation transformer effective reactance (Xe) (>= 0). Xe represents the regulation of the transformer/rectifier unit. Typical value = 0,06.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_tsw_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN1>() {
Some(o) => o, None => continue,
};
if obj.tsw.is_none() { continue; }
if obj.tsw.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN1.tsw-valueRange".to_string(),
class: "ExcELIN1".to_string(),
property: "ExcELIN1.tsw".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN1.tsw:valueRange".to_string(),
description: "Stabilizer parameters (Tsw) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_ts2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN1>() {
Some(o) => o, None => continue,
};
if obj.ts2.is_none() { continue; }
if obj.ts2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN1.ts2-valueRange".to_string(),
class: "ExcELIN1".to_string(),
property: "ExcELIN1.ts2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN1.ts2:valueRange".to_string(),
description: "Stabilizer filter time constant (Ts2) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_ts1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN1>() {
Some(o) => o, None => continue,
};
if obj.ts1.is_none() { continue; }
if obj.ts1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN1.ts1-valueRange".to_string(),
class: "ExcELIN1".to_string(),
property: "ExcELIN1.ts1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN1.ts1:valueRange".to_string(),
description: "Stabilizer phase lag time constant (Ts1) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_tnu_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN1>() {
Some(o) => o, None => continue,
};
if obj.tnu.is_none() { continue; }
if obj.tnu.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN1.tnu-valueRange".to_string(),
class: "ExcELIN1".to_string(),
property: "ExcELIN1.tnu".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN1.tnu:valueRange".to_string(),
description: "Controller reset time constant (Tnu) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_tfi_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN1>() {
Some(o) => o, None => continue,
};
if obj.tfi.is_none() { continue; }
if obj.tfi.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN1.tfi-valueRange".to_string(),
class: "ExcELIN1".to_string(),
property: "ExcELIN1.tfi".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN1.tfi:valueRange".to_string(),
description: "Current transducer time constant (Tfi) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin1_exc_elin1_efmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN1>() {
Some(o) => o, None => continue,
};
if obj.efmin.is_none() || obj.efmax.is_none() { continue; }
if !((obj.efmin.unwrap() as f64) < obj.efmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN1.efmin-valueRangePair".to_string(),
class: "ExcELIN1".to_string(),
property: "ExcELIN1.efmin".to_string(),
message: "The value is either equal to or greater than ExcELIN1.efmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN1.efmin:valueRangePair".to_string(),
description: "Minimum open circuit excitation voltage (Efmin) (< ExcELIN1.efmax). Typical value = -5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.seve2-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>2</sub>, back of commutating reactance (Se[Ve<sub>2</sub>]) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_tb1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.tb1.is_none() { continue; }
if obj.tb1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.tb1-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.tb1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.tb1:valueRange".to_string(),
description: "Voltage controller derivative washout time constant (Tb1) (>= 0). Typical value = 12,45.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_ti4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.ti4.is_none() { continue; }
if obj.ti4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.ti4-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.ti4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.ti4:valueRange".to_string(),
description: "Time constant (T<sub>i4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.ve1-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>1</sub>) (> 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.seve1-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, Ve<sub>1</sub>, back of commutating reactance (Se[Ve<sub>1</sub>]) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.te-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.te:valueRange".to_string(),
description: "Time constant (Te) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_ti3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.ti3.is_none() { continue; }
if obj.ti3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.ti3-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.ti3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.ti3:valueRange".to_string(),
description: "Time constant (T<sub>i3</sub>) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_te2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.te2.is_none() { continue; }
if obj.te2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.te2-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.te2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.te2:valueRange".to_string(),
description: "Time Constant (T<sub>e2</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_upmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.upmin.is_none() || obj.upmax.is_none() { continue; }
if !((obj.upmin.unwrap() as f64) < obj.upmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.upmin-valueRangePair".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.upmin".to_string(),
message: "The value is either equal to or greater than ExcELIN2.upmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.upmin:valueRangePair".to_string(),
description: "Limiter (Upmin) (< ExcELIN2.upmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_tr4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.tr4.is_none() { continue; }
if obj.tr4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.tr4-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.tr4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.tr4:valueRange".to_string(),
description: "Time constant (T<sub>r4</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_iefmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.iefmin.is_none() || obj.iefmax.is_none() { continue; }
if !((obj.iefmin.unwrap() as f64) < obj.iefmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.iefmin-valueRangePair".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.iefmin".to_string(),
message: "The value is either equal to or greater than ExcELIN2.iefmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.iefmin:valueRangePair".to_string(),
description: "Limiter (I<sub>efmin</sub>) (< ExcELIN2.iefmax). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_elin2_exc_elin2_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcELIN2>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcELIN2.ve2-valueRange".to_string(),
class: "ExcELIN2".to_string(),
property: "ExcELIN2.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcELIN2.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (Ve<sub>2</sub>) (> 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_tr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcHU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcHU>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcHU.tr-valueRange".to_string(),
class: "ExcHU".to_string(),
property: "ExcHU.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcHU.tr:valueRange".to_string(),
description: "Filter time constant (Tr) (>= 0). If a voltage compensator is used in conjunction with this excitation system model, Tr should be set to 0. Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_ti_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcHU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcHU>() {
Some(o) => o, None => continue,
};
if obj.ti.is_none() { continue; }
if obj.ti.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcHU.ti-valueRange".to_string(),
class: "ExcHU".to_string(),
property: "ExcHU.ti".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcHU.ti:valueRange".to_string(),
description: "Minor loop PI control tag integration time constant (Ti) (>= 0). Typical value = 0,01333.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcHU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcHU>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcHU.te-valueRange".to_string(),
class: "ExcHU".to_string(),
property: "ExcHU.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcHU.te:valueRange".to_string(),
description: "Major loop PI tag integration time constant (Te) (>= 0). Typical value = 0,154.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_imin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcHU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcHU>() {
Some(o) => o, None => continue,
};
if obj.imin.is_none() || obj.imax.is_none() { continue; }
if !((obj.imin.unwrap() as f64) < obj.imax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcHU.imin-valueRangePair".to_string(),
class: "ExcHU".to_string(),
property: "ExcHU.imin".to_string(),
message: "The value is either equal to or greater than ExcBBC.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcHU.imin:valueRangePair".to_string(),
description: "Major loop PI tag output signal lower limit (Imin) (< ExcHU.imax). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_hu_exc_hu_emin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcHU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcHU>() {
Some(o) => o, None => continue,
};
if obj.emin.is_none() || obj.emax.is_none() { continue; }
if !((obj.emin.unwrap() as f64) < obj.emax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcHU.emin-valueRangePair".to_string(),
class: "ExcHU".to_string(),
property: "ExcHU.emin".to_string(),
message: "The value is either equal to or greater than ExcHU.emax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcHU.emin:valueRangePair".to_string(),
description: "Field voltage control signal lower limit on AVR base (Emin) (< ExcHU.emax). Typical value = -0,866.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.seve1-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E1</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E1</sub>]) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.ve2-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E2</sub>) (> 0). Typical value = 3,14.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.tb-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.vamax-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>AMAX</sub>) (> 0). Typical value = 14,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.ta-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.vrmin-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator outputs (V<sub>RMIN</sub>) (< 0). Typical value = -5,43.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.te-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.vrmax-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator outputs (V<sub>RMAX</sub>) (> 0). Typical value = 6,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.tf-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.kd-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (K<sub>D</sub>) (>= 0). Typical value = 0,38.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.seve2-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E2</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E2</sub>]) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.kf-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (K<sub>F</sub>) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.ve1-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E1</sub>) (> 0). Typical value = 4,18.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.tc-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.ka-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 400.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.kc-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac1a_exc_ieeeac1a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC1A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC1A.vamin-valueRange".to_string(),
class: "ExcIEEEAC1A".to_string(),
property: "ExcIEEEAC1A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC1A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>AMIN</sub>) (< 0). Typical value = -14,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kb_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.kb.is_none() { continue; }
if obj.kb.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.kb-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.kb".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.kb:valueRange".to_string(),
description: "Second stage regulator gain (K<sub>B</sub>) (> 0). Typical value = 25.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.seve1-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E1</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E1</sub>]) (>= 0). Typical value = 0,037.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.vrmin-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator outputs (V<sub>RMIN</sub>) (< 0). Typical value = -95.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ke_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.ke.is_none() { continue; }
if obj.ke.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.ke-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.ke".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.ke:valueRange".to_string(),
description: "Exciter constant related to self-excited field (K<sub>E</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.vamin-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>AMIN</sub>) (< 0). Typical value = -8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.vamax-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>AMAX</sub>) (> 0). Typical value = 8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.ve1-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E1</sub>) (> 0). Typical value = 4,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.kc-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,28.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.ve2-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E2</sub>) (> 0). Typical value = 3,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.tb-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.tc-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.tf-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.te-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 0,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kh_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.kh.is_none() { continue; }
if obj.kh.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.kh-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.kh".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.kh:valueRange".to_string(),
description: "Exciter field current feedback gain (K<sub>H</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.kd-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (K<sub>D</sub>) (>= 0). Typical value = 0,35.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.ka-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 400.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.vrmax-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator outputs (V<sub>RMAX</sub>) (> 0). Typical value = 105.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.ta-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_vfemax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.vfemax.is_none() { continue; }
if obj.vfemax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.vfemax-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.vfemax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.vfemax:valueRange".to_string(),
description: "Exciter field current limit reference (V<sub>FEMAX</sub>) (> 0). Typical value = 4,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.seve2-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E2</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E2</sub>]) (>= 0). Typical value = 0,012.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac2a_exc_ieeeac2a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC2A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC2A.kf-valueRange".to_string(),
class: "ExcIEEEAC2A".to_string(),
property: "ExcIEEEAC2A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC2A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (K<sub>F</sub>) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.kr.is_none() { continue; }
if obj.kr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.kr-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.kr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.kr:valueRange".to_string(),
description: "Constant associated with regulator and alternator field power supply (K<sub>R</sub>) (> 0). Typical value = 3,77.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.tb-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.ta-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,013.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.tf-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.kc-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,104.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.te-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 1,17.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.vamin-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>AMIN</sub>) (< 0). Typical value = -0,95.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.tc-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_efdn_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.efdn.is_none() { continue; }
if obj.efdn.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.efdn-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.efdn".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.efdn:valueRange".to_string(),
description: "Value of Efd at which feedback gain changes (E<sub>FDN</sub>) (> 0). Typical value = 2,36.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.kf-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (K<sub>F</sub>) (>= 0). Typical value = 0,143.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_vfemax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.vfemax.is_none() { continue; }
if obj.vfemax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.vfemax-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.vfemax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.vfemax:valueRange".to_string(),
description: "Exciter field current limit reference (V<sub>FEMAX</sub>) (>= 0). Typical value = 16.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.ve2-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E2</sub>) (> 0). Typical value = 4,68.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.ka-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 45,62.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.seve1-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E1</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E1</sub>]) (>= 0). Typical value = 1,143.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.vamax-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>AMAX</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.kd-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (K<sub>D</sub>) (>= 0). Typical value = 0,499.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_kn_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.kn.is_none() { continue; }
if obj.kn.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.kn-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.kn".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.kn:valueRange".to_string(),
description: "Excitation control system stabilizer gain (K<sub>N</sub>) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_vemin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.vemin.is_none() { continue; }
if obj.vemin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.vemin-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.vemin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.vemin:valueRange".to_string(),
description: "Minimum exciter voltage output (V<sub>EMIN</sub>) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.ve1-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E1</sub>) (> 0). Typical value = 6,24.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac3a_exc_ieeeac3a_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC3A>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC3A.seve2-valueRange".to_string(),
class: "ExcIEEEAC3A".to_string(),
property: "ExcIEEEAC3A.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC3A.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E2</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E2</sub>]) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.ka-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 200.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.tb-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.vrmin-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -4,53.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.tc-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_vimin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() { continue; }
if obj.vimin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.vimin-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.vimin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.vimin:valueRange".to_string(),
description: "Minimum voltage regulator input limit (V<sub>IMIN</sub>) (< 0). Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.ta-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,015.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_vimax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.vimax.is_none() { continue; }
if obj.vimax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.vimax-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.vimax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.vimax:valueRange".to_string(),
description: "Maximum voltage regulator input limit (V<sub>IMAX</sub>) (> 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.kc-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac4a_exc_ieeeac4a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC4A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC4A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC4A.vrmax-valueRange".to_string(),
class: "ExcIEEEAC4A".to_string(),
property: "ExcIEEEAC4A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC4A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 5,64.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_tf1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.tf1.is_none() { continue; }
if obj.tf1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.tf1-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.tf1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.tf1:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F1</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.ka-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 400.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.seefd2-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD2</sub> (S<sub>E</sub>[E<sub>FD2</sub>]) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.te-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.vrmin-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -7,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.seefd1-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD1</sub> (S<sub>E</sub>[E<sub>FD1</sub>]) (>= 0). Typical value = 0,86.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_tf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.tf2-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.tf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.tf2:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F2</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.ta-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.efd2-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD2</sub>) (> 0). Typical value = 4,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.efd1-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD1</sub>) (> 0). Typical value = 5,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.vrmax-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 7,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_tf3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.tf3.is_none() { continue; }
if obj.tf3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.tf3-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.tf3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.tf3:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F3</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac5a_exc_ieeeac5a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC5A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC5A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC5A.kf-valueRange".to_string(),
class: "ExcIEEEAC5A".to_string(),
property: "ExcIEEEAC5A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC5A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (K<sub>F</sub>) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_th_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.th.is_none() { continue; }
if obj.th.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.th-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.th".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.th:valueRange".to_string(),
description: "Exciter field current limiter time constant (T<sub>H</sub>) (> 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.ka-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 536.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.tb-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vfelim_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.vfelim.is_none() { continue; }
if obj.vfelim.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.vfelim-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.vfelim".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.vfelim:valueRange".to_string(),
description: "Exciter field current limit reference (V<sub>FELIM</sub>) (> 0). Typical value = 19.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.vrmin-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -36.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.ve2-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E2</sub>) (> 0). Typical value = 5,55.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_tj_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.tj.is_none() { continue; }
if obj.tj.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.tj-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.tj".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.tj:valueRange".to_string(),
description: "Exciter field current limiter time constant (T<sub>J</sub>) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.seve2-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E2</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E2</sub>]) (>= 0). Typical value = 0,044.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.ta-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (>= 0). Typical value = 0,086.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_kh_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.kh.is_none() { continue; }
if obj.kh.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.kh-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.kh".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.kh:valueRange".to_string(),
description: "Exciter field current limiter gain (K<sub>H</sub>) (>= 0). Typical value = 92.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.vamax-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>AMAX</sub>) (> 0). Typical value = 75.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.kd-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (K<sub>D</sub>) (>= 0). Typical value = 1,91.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.tc-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.kc-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,173.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.ve1-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E1</sub>) (> 0). Typical value = 7,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.seve1-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E1</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E1</sub>]) (>= 0). Typical value = 0,214.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_tk_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.tk.is_none() { continue; }
if obj.tk.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.tk-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.tk".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.tk:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>K</sub>) (>= 0). Typical value = 0,18.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.te-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.vrmax-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 44.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vhmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.vhmax.is_none() { continue; }
if obj.vhmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.vhmax-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.vhmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.vhmax:valueRange".to_string(),
description: "Maximum field current limiter signal reference (V<sub>HMAX</sub>) (> 0). Typical value = 75.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac6a_exc_ieeeac6a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC6A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC6A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC6A.vamin-valueRange".to_string(),
class: "ExcIEEEAC6A".to_string(),
property: "ExcIEEEAC6A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC6A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>AMIN</sub>) (< 0). Typical value = -75.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vemin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.vemin.is_none() { continue; }
if obj.vemin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.vemin-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.vemin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.vemin:valueRange".to_string(),
description: "Minimum exciter voltage output (V<sub>EMIN</sub>) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.vrmin-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -5,79.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kdr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kdr.is_none() { continue; }
if obj.kdr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kdr-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kdr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kdr:valueRange".to_string(),
description: "Voltage regulator derivative gain (K<sub>DR</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.tf-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kia_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kia.is_none() { continue; }
if obj.kia.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kia-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kia".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kia:valueRange".to_string(),
description: "Voltage regulator integral gain (K<sub>IA</sub>) (>= 0). Typical value = 59,69.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kc-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,18.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kf2.is_none() { continue; }
if obj.kf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kf2-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kf2:valueRange".to_string(),
description: "Excitation control system stabilizer gain (K<sub>F2</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.te-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 1,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.seve1-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E1</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E1</sub>]) (>= 0). Typical value = 0,44.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kd-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (K<sub>D</sub>) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_tdr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.tdr.is_none() { continue; }
if obj.tdr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.tdr-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.tdr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.tdr:valueRange".to_string(),
description: "Lag time constant (T<sub>DR</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.vamax-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>AMAX</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.seve2-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E2</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E2</sub>]) (>= 0). Typical value = 0,075.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.vrmax-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 5,79.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kf1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kf1.is_none() { continue; }
if obj.kf1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kf1-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kf1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kf1:valueRange".to_string(),
description: "Excitation control system stabilizer gain (K<sub>F1</sub>) (>= 0). Typical value = 0,212.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kp_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kp-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kp".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kp:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>P</sub>) (> 0). Typical value = 4,96.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.ve2-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E2</sub>) (> 0). Typical value = 3,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.ve1-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E1</sub>) (> 0). Typical value = 6,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.vamin-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>AMIN</sub>) (< 0). Typical value = -0,95.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kir_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kir.is_none() { continue; }
if obj.kir.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kir-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kir".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kir:valueRange".to_string(),
description: "Voltage regulator integral gain (K<sub>IR</sub>) (>= 0). Typical value = 4,24.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac7b_exc_ieeeac7b_kf3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC7B>() {
Some(o) => o, None => continue,
};
if obj.kf3.is_none() { continue; }
if obj.kf3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC7B.kf3-valueRange".to_string(),
class: "ExcIEEEAC7B".to_string(),
property: "ExcIEEEAC7B.kf3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC7B.kf3:valueRange".to_string(),
description: "Excitation control system stabilizer gain (K<sub>F3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_vemin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.vemin.is_none() { continue; }
if obj.vemin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.vemin-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.vemin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.vemin:valueRange".to_string(),
description: "Minimum exciter voltage output (V<sub>EMIN</sub>) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_tdr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.tdr.is_none() { continue; }
if obj.tdr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.tdr-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.tdr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.tdr:valueRange".to_string(),
description: "Lag time constant (T<sub>DR</sub>) (> 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.kd-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.kd:valueRange".to_string(),
description: "Demagnetizing factor, a function of exciter alternator reactances (K<sub>D</sub>) (>= 0). Typical value = 1,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_ve2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.ve2.is_none() { continue; }
if obj.ve2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.ve2-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.ve2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.ve2:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E2</sub>) (> 0). Typical value = 9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_ve1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.ve1.is_none() { continue; }
if obj.ve1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.ve1-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.ve1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.ve1:valueRange".to_string(),
description: "Exciter alternator output voltages back of commutating reactance at which saturation is defined (V<sub>E1</sub>) (> 0). Typical value = 6,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_seve2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.seve2.is_none() { continue; }
if obj.seve2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.seve2-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.seve2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.seve2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E2</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E2</sub>]) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.ka-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.kc-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,55.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_vrmin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.vrmin-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.vrmin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_kir_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.kir.is_none() { continue; }
if obj.kir.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.kir-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.kir".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.kir:valueRange".to_string(),
description: "Voltage regulator integral gain (K<sub>IR</sub>) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.ta-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.te-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 1,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_seve1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.seve1.is_none() { continue; }
if obj.seve1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.seve1-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.seve1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.seve1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, V<sub>E1</sub>, back of commutating reactance (S<sub>E</sub>[V<sub>E1</sub>]) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.vrmax-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 35.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeeac8b_exc_ieeeac8b_kdr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEAC8B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEAC8B>() {
Some(o) => o, None => continue,
};
if obj.kdr.is_none() { continue; }
if obj.kdr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEAC8B.kdr-valueRange".to_string(),
class: "ExcIEEEAC8B".to_string(),
property: "ExcIEEEAC8B.kdr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEAC8B.kdr:valueRange".to_string(),
description: "Voltage regulator derivative gain (K<sub>DR</sub>) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.seefd2-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD2</sub> (S<sub>E</sub>[E<sub>FD2</sub>]) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.seefd1-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD1</sub> (S<sub>E</sub>[E<sub>FD1</sub>]) (>= 0). Typical value = 0.33.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.kf-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gain (K<sub>F</sub>) (>= 0). Typical value = 0.1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.ka-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 46.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.tb-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.efd1-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD1</sub>) (> 0). Typical value = 3,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.ta-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,06.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.efd2-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD2</sub>) (> 0). Typical value = 2,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.vrmin-valueRangePair".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.vrmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEDC1A.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0 and < ExcIEEEDC1A.vrmax). Typical value = -0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.vrmin-valueRangePair".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.vrmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEDC1A.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0 and < ExcIEEEDC1A.vrmax). Typical value = -0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.tc-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.tf-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc1a_exc_ieeedc1a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC1A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC1A.te-valueRange".to_string(),
class: "ExcIEEEDC1A".to_string(),
property: "ExcIEEEDC1A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC1A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 0,46.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.efd2-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD2</sub>) (> 0). Typical value = 2,29.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.seefd2-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD2</sub> (S<sub>E</sub>[E<sub>FD2</sub>]) (>= 0). Typical value = 0,117.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.tf-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (> 0). Typical value = 0,675.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.seefd1-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD1</sub> (S<sub>E</sub>[E<sub>FD1</sub>]) (>= 0). Typical value = 0,279.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.kf-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gain (K<sub>F</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.tc-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.tb-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.vrmin-valueRangePair".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.vrmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEDC2A.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0 and < ExcIEEEDC2A.vrmax). Typical value = -4,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.vrmin-valueRangePair".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.vrmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEDC2A.vrmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0 and < ExcIEEEDC2A.vrmax). Typical value = -4,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.efd1-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD1</sub>) (> 0). Typical value = 3,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.ka-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 300.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.ta-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc2a_exc_ieeedc2a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC2A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC2A.te-valueRange".to_string(),
class: "ExcIEEEDC2A".to_string(),
property: "ExcIEEEDC2A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC2A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 1,33.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.seefd2-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD2</sub> (S<sub>E</sub>[E<sub>FD2</sub>]) (>= 0). Typical value = 0,068.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.te-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.efd2-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD2</sub>) (> 0). Typical value = 3,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_trh_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.trh.is_none() { continue; }
if obj.trh.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.trh-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.trh".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.trh:valueRange".to_string(),
description: "Rheostat travel time (T<sub>RH</sub>) (> 0). Typical value = 20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_vrmin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.vrmin-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.vrmin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_kv_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.kv.is_none() { continue; }
if obj.kv.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.kv-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.kv".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.kv:valueRange".to_string(),
description: "Fast raise/lower contact setting (K<sub>V</sub>) (> 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.seefd1-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD1</sub> (S<sub>E</sub>[E<sub>FD1</sub>]) (>= 0). Typical value = 0,267.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.vrmax-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc3a_exc_ieeedc3a_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC3A>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC3A.efd1-valueRange".to_string(),
class: "ExcIEEEDC3A".to_string(),
property: "ExcIEEEDC3A.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC3A.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD1</sub>) (> 0). Typical value = 3,375.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_seefd2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.seefd2.is_none() { continue; }
if obj.seefd2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.seefd2-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.seefd2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.seefd2:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD2</sub> (S<sub>E</sub>[E<sub>FD2</sub>]) (>= 0). Typical value = 0,27.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.tf-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_kd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.kd.is_none() { continue; }
if obj.kd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.kd-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.kd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.kd:valueRange".to_string(),
description: "Regulator derivative gain (K<sub>D</sub>) (>= 0). Typical value = 20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_seefd1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.seefd1.is_none() { continue; }
if obj.seefd1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.seefd1-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.seefd1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.seefd1:valueRange".to_string(),
description: "Exciter saturation function value at the corresponding exciter voltage, E<sub>FD1</sub> (S<sub>E</sub>[E<sub>FD1</sub>]) (>= 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_kp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.kp-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.kp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.kp:valueRange".to_string(),
description: "Regulator proportional gain (K<sub>P</sub>) (>= 0). Typical value = 20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_vrmin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.vrmin-valueRangePair".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.vrmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEDC4B.vrmax; or positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (<= 0 and < ExcIEEEDC4B.vrmax). Typical value = -0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.vrmin-valueRangePair".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.vrmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEDC4B.vrmax; or positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (<= 0 and < ExcIEEEDC4B.vrmax). Typical value = -0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.te-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_ki_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.ki.is_none() { continue; }
if obj.ki.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.ki-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.ki".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.ki:valueRange".to_string(),
description: "Regulator integral gain (K<sub>I</sub>) (>= 0). Typical value = 20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_efd1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.efd1.is_none() { continue; }
if obj.efd1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.efd1-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.efd1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.efd1:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD1</sub>) (> 0). Typical value = 1,75.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_vemin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.vemin.is_none() { continue; }
if obj.vemin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.vemin-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.vemin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.vemin:valueRange".to_string(),
description: "Minimum exciter voltage output (V<sub>EMIN</sub>) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.ta-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.kf-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gain (K<sub>F</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_efd2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.efd2.is_none() { continue; }
if obj.efd2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.efd2-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.efd2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.efd2:valueRange".to_string(),
description: "Exciter voltage at which exciter saturation is defined (E<sub>FD2</sub>) (> 0). Typical value = 2,33.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeedc4b_exc_ieeedc4b_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEDC4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEDC4B>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEDC4B.ka-valueRange".to_string(),
class: "ExcIEEEDC4B".to_string(),
property: "ExcIEEEDC4B.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEDC4B.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.kf-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (K<sub>F</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.ka-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 190.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tc1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.tc1.is_none() { continue; }
if obj.tc1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.tc1-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.tc1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.tc1:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C1</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.tb-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vimax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.vimax.is_none() { continue; }
if obj.vimax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.vimax-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.vimax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.vimax:valueRange".to_string(),
description: "Maximum voltage regulator input limit (V<sub>IMAX</sub>) (> 0). Typical value = 999.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vimin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() { continue; }
if obj.vimin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.vimin-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.vimin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.vimin:valueRange".to_string(),
description: "Minimum voltage regulator input limit (V<sub>IMIN</sub>) (< 0). Typical value = -999.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.ta-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tb1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.tb1.is_none() { continue; }
if obj.tb1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.tb1-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.tb1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.tb1:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B1</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.vamax-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>AMAX</sub>) (> 0). Typical value = 14,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.kc-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.vrmin-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator outputs (V<sub>RMIN</sub>) (< 0). Typical value = -6,7.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.tc-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.tf-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.vrmax-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator outputs (V<sub>RMAX</sub>) (> 0). Typical value = 7,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest1a_exc_ieeest1a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST1A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST1A.vamin-valueRange".to_string(),
class: "ExcIEEEST1A".to_string(),
property: "ExcIEEEST1A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST1A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>AMIN</sub>) (< 0). Typical value = -14,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.te-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (T<sub>E</sub>) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.vrmax-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator outputs (V<sub>RMAX</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.tf-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.ka-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). Typical value = 120.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.ta-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (> 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_ki_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.ki.is_none() { continue; }
if obj.ki.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.ki-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.ki".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.ki:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>I</sub>) (>= 0). Typical value = 8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_kp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.kp-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.kp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.kp:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>P</sub>) (>= 0). Typical value = 4,88.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.kc-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 1,82.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.kf-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (K<sub>F</sub>) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_vrmin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.vrmin-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.vrmin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator outputs (V<sub>RMIN</sub>) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest2a_exc_ieeest2a_efdmax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST2A>() {
Some(o) => o, None => continue,
};
if obj.efdmax.is_none() { continue; }
if obj.efdmax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST2A.efdmax-valueRange".to_string(),
class: "ExcIEEEST2A".to_string(),
property: "ExcIEEEST2A.efdmax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST2A.efdmax:valueRange".to_string(),
description: "Maximum field voltage (E<sub>FDMax</sub>) (>= 0). Typical value = 99.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.ka-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.ka:valueRange".to_string(),
description: "Voltage regulator gain (K<sub>A</sub>) (> 0). This is parameter K in the IEEE standard. Typical value = 200.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vimax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.vimax.is_none() { continue; }
if obj.vimax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.vimax-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.vimax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.vimax:valueRange".to_string(),
description: "Maximum voltage regulator input limit (V<sub>IMAX</sub>) (> 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_xl_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.xl.is_none() { continue; }
if obj.xl.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.xl-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.xl".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.xl:valueRange".to_string(),
description: "Reactance associated with potential source (X<sub>L</sub>) (>= 0). Typical value = 0,081.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.vrmin-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_kg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.kg.is_none() { continue; }
if obj.kg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.kg-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.kg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.kg:valueRange".to_string(),
description: "Feedback gain constant of the inner loop field regulator (K<sub>G</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_kp_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.kp-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.kp".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.kp:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>P</sub>) (> 0). Typical value = 6,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.kc-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vimin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() { continue; }
if obj.vimin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.vimin-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.vimin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.vimin:valueRange".to_string(),
description: "Minimum voltage regulator input limit (V<sub>IMIN</sub>) (< 0). Typical value = -0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.tc-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>C</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_ki_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.ki.is_none() { continue; }
if obj.ki.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.ki-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.ki".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.ki:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>I</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vbmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.vbmax.is_none() { continue; }
if obj.vbmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.vbmax-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.vbmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.vbmax:valueRange".to_string(),
description: "Maximum excitation voltage (V<sub>BMax</sub>) (> 0). Typical value = 6,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.vrmax-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vmmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.vmmax.is_none() { continue; }
if obj.vmmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.vmmax-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.vmmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.vmmax:valueRange".to_string(),
description: "Maximum inner loop output (V<sub>MMax</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vgmax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.vgmax.is_none() { continue; }
if obj.vgmax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.vgmax-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.vgmax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.vgmax:valueRange".to_string(),
description: "Maximum inner loop feedback voltage (V<sub>GMax</sub>) (>= 0). Typical value = 5,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.tb-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>B</sub>) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.ta-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_vmmin_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.vmmin.is_none() { continue; }
if obj.vmmin.unwrap() > 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.vmmin-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.vmmin".to_string(),
message: "The value is positive.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.vmmin:valueRange".to_string(),
description: "Minimum inner loop output (V<sub>MMin</sub>) (<= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_km_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.km.is_none() { continue; }
if obj.km.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.km-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.km".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.km:valueRange".to_string(),
description: "Forward gain constant of the inner loop field regulator (K<sub>M</sub>) (> 0). Typical value = 7,93.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest3a_exc_ieeest3a_tm_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST3A>() {
Some(o) => o, None => continue,
};
if obj.tm.is_none() { continue; }
if obj.tm.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST3A.tm-valueRange".to_string(),
class: "ExcIEEEST3A".to_string(),
property: "ExcIEEEST3A.tm".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST3A.tm:valueRange".to_string(),
description: "Forward time constant of inner loop field regulator (T<sub>M</sub>) (> 0). Typical value = 0,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.vrmin-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -0,87.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vmmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.vmmin.is_none() { continue; }
if obj.vmmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.vmmin-valueRangePair".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.vmmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEST4B.vmmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.vmmin:valueRangePair".to_string(),
description: "Minimum inner loop output (V<sub>MMin</sub>) (< ExcIEEEST4B.vmmax). Typical value = -99.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vmmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.vmmin.is_none() || obj.vmmax.is_none() { continue; }
if !((obj.vmmin.unwrap() as f64) < obj.vmmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.vmmin-valueRangePair".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.vmmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEST4B.vmmax; or positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.vmmin:valueRangePair".to_string(),
description: "Minimum inner loop output (V<sub>MMin</sub>) (< ExcIEEEST4B.vmmax). Typical value = -99.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vbmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.vbmax.is_none() { continue; }
if obj.vbmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.vbmax-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.vbmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.vbmax:valueRange".to_string(),
description: "Maximum excitation voltage (V<sub>BMax</sub>) (> 0). Typical value = 11,63.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.vrmax-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_kg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.kg.is_none() { continue; }
if obj.kg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.kg-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.kg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.kg:valueRange".to_string(),
description: "Feedback gain constant of the inner loop field regulator (K<sub>G</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.kc-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (K<sub>C</sub>) (>= 0). Typical value = 0,113.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.ta-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.ta:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>A</sub>) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_xl_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.xl.is_none() { continue; }
if obj.xl.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.xl-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.xl".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.xl:valueRange".to_string(),
description: "Reactance associated with potential source (X<sub>L</sub>) (>= 0). Typical value = 0,124.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_kp_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.kp-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.kp".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.kp:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>P</sub>) (> 0). Typical value = 9,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest4b_exc_ieeest4b_ki_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST4B>() {
Some(o) => o, None => continue,
};
if obj.ki.is_none() { continue; }
if obj.ki.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST4B.ki-valueRange".to_string(),
class: "ExcIEEEST4B".to_string(),
property: "ExcIEEEST4B.ki".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST4B.ki:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>I</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tb2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tb2.is_none() { continue; }
if obj.tb2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tb2-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tb2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tb2:valueRange".to_string(),
description: "Regulator lag time constant (T<sub>B2</sub>) (>= 0). Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tc2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tc2.is_none() { continue; }
if obj.tc2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tc2-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tc2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tc2:valueRange".to_string(),
description: "Regulator lead time constant (T<sub>C2</sub>) (>= 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tub2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tub2.is_none() { continue; }
if obj.tub2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tub2-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tub2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tub2:valueRange".to_string(),
description: "UEL lag time constant (T<sub>UB2</sub>) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tub1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tub1.is_none() { continue; }
if obj.tub1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tub1-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tub1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tub1:valueRange".to_string(),
description: "UEL lag time constant (T<sub>UB1</sub>) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_toc1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.toc1.is_none() { continue; }
if obj.toc1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.toc1-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.toc1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.toc1:valueRange".to_string(),
description: "OEL lead time constant (T<sub>OC1</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_toc2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.toc2.is_none() { continue; }
if obj.toc2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.toc2-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.toc2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.toc2:valueRange".to_string(),
description: "OEL lead time constant (T<sub>OC2</sub>) (>= 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tob2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tob2.is_none() { continue; }
if obj.tob2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tob2-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tob2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tob2:valueRange".to_string(),
description: "OEL lag time constant (T<sub>OB2</sub>) (>= 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.kc-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.kc:valueRange".to_string(),
description: "Rectifier regulation factor (K<sub>C</sub>) (>= 0). Typical value = 0,004.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tuc2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tuc2.is_none() { continue; }
if obj.tuc2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tuc2-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tuc2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tuc2:valueRange".to_string(),
description: "UEL lead time constant (T<sub>UC2</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.vrmax-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tob1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tob1.is_none() { continue; }
if obj.tob1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tob1-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tob1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tob1:valueRange".to_string(),
description: "OEL lag time constant (T<sub>OB1</sub>) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_kr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.kr.is_none() { continue; }
if obj.kr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.kr-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.kr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.kr:valueRange".to_string(),
description: "Regulator gain (K<sub>R</sub>) (> 0). Typical value = 200.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.t1-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.t1:valueRange".to_string(),
description: "Firing circuit time constant (T1) (>= 0). Typical value = 0,004.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tuc1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tuc1.is_none() { continue; }
if obj.tuc1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tuc1-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tuc1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tuc1:valueRange".to_string(),
description: "UEL lead time constant (T<sub>UC1</sub>) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tc1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tc1.is_none() { continue; }
if obj.tc1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tc1-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tc1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tc1:valueRange".to_string(),
description: "Regulator lead time constant (T<sub>C1</sub>) (>= 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.vrmin-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest5b_exc_ieeest5b_tb1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST5B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST5B>() {
Some(o) => o, None => continue,
};
if obj.tb1.is_none() { continue; }
if obj.tb1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST5B.tb1-valueRange".to_string(),
class: "ExcIEEEST5B".to_string(),
property: "ExcIEEEST5B.tb1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST5B.tb1:valueRange".to_string(),
description: "Regulator lag time constant (T<sub>B1</sub>) (>= 0). Typical value = 6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.tg-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.tg:valueRange".to_string(),
description: "Feedback time constant of inner loop field voltage regulator (T<sub>G</sub>) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_kia_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.kia.is_none() { continue; }
if obj.kia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.kia-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.kia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.kia:valueRange".to_string(),
description: "Voltage regulator integral gain (K<sub>IA</sub>) (> 0). Typical value = 45,094.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_kpa_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.kpa.is_none() { continue; }
if obj.kpa.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.kpa-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.kpa".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.kpa:valueRange".to_string(),
description: "Voltage regulator proportional gain (<u>K</u><u><sub>PA</sub></u>) (> 0). Typical value = 18,038.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.vrmin-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -3,85.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_kg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.kg.is_none() { continue; }
if obj.kg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.kg-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.kg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.kg:valueRange".to_string(),
description: "Feedback gain constant of the inner loop field regulator (K<sub>G</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_ilr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.ilr.is_none() { continue; }
if obj.ilr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.ilr-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.ilr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.ilr:valueRange".to_string(),
description: "Exciter output current limit reference (I<sub>LR</sub>) (> 0). Typical value = 4,164.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.vamax-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>AMAX</sub>) (> 0). Typical value = 4,81.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_klr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.klr.is_none() { continue; }
if obj.klr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.klr-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.klr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.klr:valueRange".to_string(),
description: "Exciter output current limiter gain (K<sub>LR</sub>) (> 0). Typical value = 17,33.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_kci_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.kci.is_none() { continue; }
if obj.kci.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.kci-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.kci".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.kci:valueRange".to_string(),
description: "Exciter output current limit adjustment (K<sub>CI</sub>) (> 0). Typical value = 1,0577.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.vamin-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>AMIN</sub>) (< 0). Typical value = -3,85.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest6b_exc_ieeest6b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST6B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST6B.vrmax-valueRange".to_string(),
class: "ExcIEEEST6B".to_string(),
property: "ExcIEEEST6B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST6B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 4,81.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.tc-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.tc:valueRange".to_string(),
description: "Regulator lead time constant (T<sub>C</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.vmax.is_none() { continue; }
if obj.vmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.vmax-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.vmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.vmax:valueRange".to_string(),
description: "Maximum voltage reference signal (V<sub>MAX</sub>) (> 0 and > ExcIEEEST7B.vmin). Typical value = 1,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vmin_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() { continue; }
if obj.vmin.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.vmin-valueRangePair".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.vmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEST7B.vmax; or negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.vmin:valueRangePair".to_string(),
description: "Minimum voltage reference signal (V<sub>MIN</sub>) (> 0 and < ExcIEEEST7B.vmax). Typical value = 0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() || obj.vmax.is_none() { continue; }
if !((obj.vmin.unwrap() as f64) < obj.vmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.vmin-valueRangePair".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.vmin".to_string(),
message: "The value is either equal to or greater than ExcIEEEST7B.vmax; or negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.vmin:valueRangePair".to_string(),
description: "Minimum voltage reference signal (V<sub>MIN</sub>) (> 0 and < ExcIEEEST7B.vmax). Typical value = 0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tia_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.tia.is_none() { continue; }
if obj.tia.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.tia-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.tia".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.tia:valueRange".to_string(),
description: "Feedback time constant (T<sub>IA</sub>) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.vrmax-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (V<sub>RMAX</sub>) (> 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.tf-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (T<sub>F</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_kia_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.kia.is_none() { continue; }
if obj.kia.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.kia-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.kia".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.kia:valueRange".to_string(),
description: "Voltage regulator integral gain (K<sub>IA</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.vrmin-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (V<sub>RMIN</sub>) (< 0). Typical value = -4,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_kl_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.kl.is_none() { continue; }
if obj.kl.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.kl-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.kl".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.kl:valueRange".to_string(),
description: "Low-value gate feedback gain (K<sub>L</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_kpa_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.kpa.is_none() { continue; }
if obj.kpa.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.kpa-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.kpa".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.kpa:valueRange".to_string(),
description: "Voltage regulator proportional gain (K<sub>PA</sub>) (> 0). Typical value = 40.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.tb-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.tb:valueRange".to_string(),
description: "Regulator lag time constant (T<sub>B</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_kh_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.kh.is_none() { continue; }
if obj.kh.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.kh-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.kh".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.kh:valueRange".to_string(),
description: "High-value gate feedback gain (K<sub>H</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ieeest7b_exc_ieeest7b_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcIEEEST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcIEEEST7B>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcIEEEST7B.tg-valueRange".to_string(),
class: "ExcIEEEST7B".to_string(),
property: "ExcIEEEST7B.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcIEEEST7B.tg:valueRange".to_string(),
description: "Feedback time constant of inner loop field voltage regulator (T<sub>G</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_kf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcNI").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcNI>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcNI.kf-valueRange".to_string(),
class: "ExcNI".to_string(),
property: "ExcNI.kf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcNI.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gain (Kf) (> 0). Typical value 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcNI").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcNI>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcNI.ka-valueRange".to_string(),
class: "ExcNI".to_string(),
property: "ExcNI.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcNI.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 210.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_tr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcNI").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcNI>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcNI.tr-valueRange".to_string(),
class: "ExcNI".to_string(),
property: "ExcNI.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcNI.tr:valueRange".to_string(),
description: "Time constant (Tr) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcNI").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcNI>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcNI.vrmin-valueRangePair".to_string(),
class: "ExcNI".to_string(),
property: "ExcNI.vrmin".to_string(),
message: "The value is either equal to or greater than ExcNI.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcNI.vrmin:valueRangePair".to_string(),
description: "Minimum voltage regulator ouput (Vrmin) (< ExcNI.vrmax). Typical value = -2,0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_tf1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcNI").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcNI>() {
Some(o) => o, None => continue,
};
if obj.tf1.is_none() { continue; }
if obj.tf1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcNI.tf1-valueRange".to_string(),
class: "ExcNI".to_string(),
property: "ExcNI.tf1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcNI.tf1:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf1) (> 0). Typical value = 1,0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_r_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcNI").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcNI>() {
Some(o) => o, None => continue,
};
if obj.r.is_none() { continue; }
if obj.r.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcNI.r-valueRange".to_string(),
class: "ExcNI".to_string(),
property: "ExcNI.r".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcNI.r:valueRange".to_string(),
description: "rc / rfd (R) (>= 0).
0 means exciter has negative current capability
> 0 means exciter does not have negative current capability.
Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_tf2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcNI").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcNI>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcNI.tf2-valueRange".to_string(),
class: "ExcNI".to_string(),
property: "ExcNI.tf2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcNI.tf2:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf2) (> 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_ni_exc_ni_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcNI").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcNI>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcNI.ta-valueRange".to_string(),
class: "ExcNI".to_string(),
property: "ExcNI.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcNI.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.t3-valueRange".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.t3:valueRange".to_string(),
description: "Time constant (T<sub>3</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.t2-valueRange".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.t2:valueRange".to_string(),
description: "Time constant (T<sub>2</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.t1-valueRange".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.t1:valueRange".to_string(),
description: "Time constant (T<sub>1</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.tf-valueRange".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.tf:valueRange".to_string(),
description: "Time constant (T<sub>F</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.t6-valueRange".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.t6:valueRange".to_string(),
description: "Time constant (T<sub>6</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.te-valueRange".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.te:valueRange".to_string(),
description: "Time constant (T<sub>E</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.vrmin-valueRangePair".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.vrmin".to_string(),
message: "The value is either equal to or greater than ExcOEX3T.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.vrmin:valueRangePair".to_string(),
description: "Limiter (V<sub>RMIN</sub>) (< ExcOEX3T.vrmax). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.t4-valueRange".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.t4:valueRange".to_string(),
description: "Time constant (T<sub>4</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_oex3t_exc_oex3t_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcOEX3T").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcOEX3T>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcOEX3T.t5-valueRange".to_string(),
class: "ExcOEX3T".to_string(),
property: "ExcOEX3T.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcOEX3T.t5:valueRange".to_string(),
description: "Time constant (T<sub>5</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.vrmin-valueRangePair".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.vrmin".to_string(),
message: "The value is either equal to or greater than ExcPIC.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.vrmin:valueRangePair".to_string(),
description: "Voltage regulator minimum limit (V<sub>rmin</sub>) (< ExcPIC.vrmax). Typical value = -0,87.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_tf1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.tf1.is_none() { continue; }
if obj.tf1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.tf1-valueRange".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.tf1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.tf1:valueRange".to_string(),
description: "Rate feedback time constant (T<sub>f1</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_tf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.tf2-valueRange".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.tf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.tf2:valueRange".to_string(),
description: "Rate feedback lag time constant (T<sub>f2</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_efdmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.efdmin.is_none() || obj.efdmax.is_none() { continue; }
if !((obj.efdmin.unwrap() as f64) < obj.efdmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.efdmin-valueRangePair".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.efdmin".to_string(),
message: "The value is either equal to or greater than ExcPIC.efdmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.efdmin:valueRangePair".to_string(),
description: "Exciter minimum limit (E<sub>fdmin</sub>) (< ExcPIC.efdmax). Typical value = -0,87.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_ta2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.ta2.is_none() { continue; }
if obj.ta2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.ta2-valueRange".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.ta2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.ta2:valueRange".to_string(),
description: "Voltage regulator time constant (T<sub>a2</sub>) (>= 0). Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.te-valueRange".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.te:valueRange".to_string(),
description: "Exciter time constant (T<sub>e</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_ta3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.ta3.is_none() { continue; }
if obj.ta3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.ta3-valueRange".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.ta3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.ta3:valueRange".to_string(),
description: "Lead time constant (T<sub>a3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_ta1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.ta1.is_none() { continue; }
if obj.ta1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.ta1-valueRange".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.ta1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.ta1:valueRange".to_string(),
description: "PI controller time constant (T<sub>a1</sub>) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_pic_exc_pic_ta4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcPIC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcPIC>() {
Some(o) => o, None => continue,
};
if obj.ta4.is_none() { continue; }
if obj.ta4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcPIC.ta4-valueRange".to_string(),
class: "ExcPIC".to_string(),
property: "ExcPIC.ta4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcPIC.ta4:valueRange".to_string(),
description: "Lag time constant (T<sub>a4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.kf-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.kf:valueRange".to_string(),
description: "Rate feedback gain (Kf) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_vfmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.vfmin.is_none() || obj.vfmax.is_none() { continue; }
if !((obj.vfmin.unwrap() as f64) < obj.vfmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.vfmin-valueRangePair".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.vfmin".to_string(),
message: "The value is either equal to or greater than ExcREXS.vfmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.vfmin:valueRangePair".to_string(),
description: "Minimum exciter field current (Vfmin) (< ExcREXS.vfmax). Typical value = -20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tb1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.tb1.is_none() { continue; }
if obj.tb1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.tb1-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.tb1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.tb1:valueRange".to_string(),
description: "Lag time constant (Tb1) (>= 0). If = 0, block is bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tf1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.tf1.is_none() { continue; }
if obj.tf1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.tf1-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.tf1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.tf1:valueRange".to_string(),
description: "Feedback lead time constant (Tf1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.te-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.te:valueRange".to_string(),
description: "Exciter field time constant (Te) (> 0). Typical value = 1,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.vrmin-valueRangePair".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.vrmin".to_string(),
message: "The value is either equal to or greater than ExcREXS.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.vrmin:valueRangePair".to_string(),
description: "Minimum controller output (Vrmin) (< ExcREXS.vrmax). Typical value = -20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tb2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.tb2.is_none() { continue; }
if obj.tb2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.tb2-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.tb2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.tb2:valueRange".to_string(),
description: "Lag time constant (Tb2) (>= 0). If = 0, block is bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tc1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.tc1.is_none() { continue; }
if obj.tc1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.tc1-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.tc1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.tc1:valueRange".to_string(),
description: "Lead time constant (Tc1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.tf-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.tf:valueRange".to_string(),
description: "Rate feedback time constant (Tf) (>= 0). If = 0, the feedback path is not used. Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.ta-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (>= 0). If = 0, block is bypassed. Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.tf2-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.tf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.tf2:valueRange".to_string(),
description: "Feedback lag time constant (Tf2) (>= 0). If = 0, block is bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.tp-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.tp:valueRange".to_string(),
description: "Field current bridge time constant (Tp) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rexs_exc_rexs_tc2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcREXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcREXS>() {
Some(o) => o, None => continue,
};
if obj.tc2.is_none() { continue; }
if obj.tc2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcREXS.tc2-valueRange".to_string(),
class: "ExcREXS".to_string(),
property: "ExcREXS.tc2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcREXS.tc2:valueRange".to_string(),
description: "Lead time constant (Tc2) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_ucmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcRQB>() {
Some(o) => o, None => continue,
};
if obj.ucmin.is_none() || obj.ucmax.is_none() { continue; }
if !((obj.ucmin.unwrap() as f64) < obj.ucmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcRQB.ucmin-valueRangePair".to_string(),
class: "ExcRQB".to_string(),
property: "ExcRQB.ucmin".to_string(),
message: "The value is either equal to or greater than ExcRQB.ucmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcRQB.ucmin:valueRangePair".to_string(),
description: "Minimum voltage reference limit (UCMIN) (< ExcRQB.ucmax). Typical value = 0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcRQB>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcRQB.tf-valueRange".to_string(),
class: "ExcRQB".to_string(),
property: "ExcRQB.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcRQB.tf:valueRange".to_string(),
description: "Exciter time constant (TF) (>= 0). Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcRQB>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcRQB.te-valueRange".to_string(),
class: "ExcRQB".to_string(),
property: "ExcRQB.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcRQB.te:valueRange".to_string(),
description: "Lead lag time constant (TE) (>= 0). Typical value = 0,22.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcRQB>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcRQB.tc-valueRange".to_string(),
class: "ExcRQB".to_string(),
property: "ExcRQB.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcRQB.tc:valueRange".to_string(),
description: "Lead lag time constant (TC) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_t4m_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcRQB>() {
Some(o) => o, None => continue,
};
if obj.t4m.is_none() { continue; }
if obj.t4m.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcRQB.t4m-valueRange".to_string(),
class: "ExcRQB".to_string(),
property: "ExcRQB.t4m".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcRQB.t4m:valueRange".to_string(),
description: "Input time constant (T4M) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_rqb_exc_rqb_mesu_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcRQB>() {
Some(o) => o, None => continue,
};
if obj.mesu.is_none() { continue; }
if obj.mesu.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcRQB.mesu-valueRange".to_string(),
class: "ExcRQB".to_string(),
property: "ExcRQB.mesu".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcRQB.mesu:valueRange".to_string(),
description: "Voltage input time constant (MESU) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_scrx_exc_scrx_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSCRX").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSCRX>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSCRX.te-valueRange".to_string(),
class: "ExcSCRX".to_string(),
property: "ExcSCRX.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSCRX.te:valueRange".to_string(),
description: "Time constant of gain block (Te) (> 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_scrx_exc_scrx_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSCRX").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSCRX>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSCRX.tb-valueRange".to_string(),
class: "ExcSCRX".to_string(),
property: "ExcSCRX.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSCRX.tb:valueRange".to_string(),
description: "Denominator time constant of lag-lead block (Tb) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_scrx_exc_scrx_k_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSCRX").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSCRX>() {
Some(o) => o, None => continue,
};
if obj.k.is_none() { continue; }
if obj.k.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSCRX.k-valueRange".to_string(),
class: "ExcSCRX".to_string(),
property: "ExcSCRX.k".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSCRX.k:valueRange".to_string(),
description: "Gain (K) (> 0). Typical value = 200.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_scrx_exc_scrx_emin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSCRX").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSCRX>() {
Some(o) => o, None => continue,
};
if obj.emin.is_none() || obj.emax.is_none() { continue; }
if !((obj.emin.unwrap() as f64) < obj.emax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSCRX.emin-valueRangePair".to_string(),
class: "ExcSCRX".to_string(),
property: "ExcSCRX.emin".to_string(),
message: "The value is either equal to or greater than ExcSCRX.emax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSCRX.emin:valueRangePair".to_string(),
description: "Minimum field voltage output (Emin) (< ExcSCRX.emax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSEXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSEXS>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSEXS.te-valueRange".to_string(),
class: "ExcSEXS".to_string(),
property: "ExcSEXS.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSEXS.te:valueRange".to_string(),
description: "Time constant of gain block (Te) (> 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSEXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSEXS>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSEXS.tc-valueRange".to_string(),
class: "ExcSEXS".to_string(),
property: "ExcSEXS.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSEXS.tc:valueRange".to_string(),
description: "PI controller phase lead time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSEXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSEXS>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSEXS.tb-valueRange".to_string(),
class: "ExcSEXS".to_string(),
property: "ExcSEXS.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSEXS.tb:valueRange".to_string(),
description: "Denominator time constant of lag-lead block (Tb) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_k_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSEXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSEXS>() {
Some(o) => o, None => continue,
};
if obj.k.is_none() { continue; }
if obj.k.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSEXS.k-valueRange".to_string(),
class: "ExcSEXS".to_string(),
property: "ExcSEXS.k".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSEXS.k:valueRange".to_string(),
description: "Gain (K) (> 0). Typical value = 100.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_emin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSEXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSEXS>() {
Some(o) => o, None => continue,
};
if obj.emin.is_none() || obj.emax.is_none() { continue; }
if !((obj.emin.unwrap() as f64) < obj.emax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSEXS.emin-valueRangePair".to_string(),
class: "ExcSEXS".to_string(),
property: "ExcSEXS.emin".to_string(),
message: "The value is either equal to or greater than ExcSEXS.emax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSEXS.emin:valueRangePair".to_string(),
description: "Minimum field voltage output (Emin) (< ExcSEXS.emax). Typical value = -5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sexs_exc_sexs_efdmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSEXS").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSEXS>() {
Some(o) => o, None => continue,
};
if obj.efdmin.is_none() || obj.efdmax.is_none() { continue; }
if !((obj.efdmin.unwrap() as f64) < obj.efdmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSEXS.efdmin-valueRangePair".to_string(),
class: "ExcSEXS".to_string(),
property: "ExcSEXS.efdmin".to_string(),
message: "The value is either equal to or greater than ExcSEXS.efdmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSEXS.efdmin:valueRangePair".to_string(),
description: "Field voltage clipping minimum limit (Efdmin) (< ExcSEXS.efdmax). Typical value = -5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.tc-valueRange".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.tc:valueRange".to_string(),
description: "PI controller phase lead time constant (Tc) (>= 0). Typical value = 8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_urmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.urmin.is_none() || obj.urmax.is_none() { continue; }
if !((obj.urmin.unwrap() as f64) < obj.urmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.urmin-valueRangePair".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.urmin".to_string(),
message: "The value is either equal to or greater than ExcSK.urmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.urmin:valueRangePair".to_string(),
description: "Minimum controller output (URmin) (< ExcSK.urmax). Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_emin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.emin.is_none() || obj.emax.is_none() { continue; }
if !((obj.emin.unwrap() as f64) < obj.emax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.emin-valueRangePair".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.emin".to_string(),
message: "The value is either equal to or greater than ExcSK.emax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.emin:valueRangePair".to_string(),
description: "Minimum field voltage output (Emin) (< ExcSK.emax). Typical value = -20.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.tp-valueRange".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.tp:valueRange".to_string(),
description: "Time constant (Tp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_uimin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.uimin.is_none() || obj.uimax.is_none() { continue; }
if !((obj.uimin.unwrap() as f64) < obj.uimax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.uimin-valueRangePair".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.uimin".to_string(),
message: "The value is either equal to or greater than ExcSK.uimax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.uimin:valueRangePair".to_string(),
description: "Minimum error (UImin) (< ExcSK.uimax). Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_ti_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.ti.is_none() { continue; }
if obj.ti.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.ti-valueRange".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.ti".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.ti:valueRange".to_string(),
description: "PI controller phase lead time constant (Ti) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_vtmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.vtmin.is_none() || obj.vtmax.is_none() { continue; }
if !((obj.vtmin.unwrap() as f64) < obj.vtmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.vtmin-valueRangePair".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.vtmin".to_string(),
message: "The value is either equal to or greater than ExcSK.vtmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.vtmin:valueRangePair".to_string(),
description: "Minimum terminal voltage input (Vtmin) (< ExcSK.vtmax). Determines the range of voltage deadband. Typical value = 0,95.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_sbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.sbase.is_none() { continue; }
if obj.sbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.sbase-valueRange".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.sbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.sbase:valueRange".to_string(),
description: "Apparent power of the unit (Sbase) (> 0). Unit = MVA. Typical value = 259.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_tr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.tr-valueRange".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.tr:valueRange".to_string(),
description: "Voltage transducer time constant (Tr) (>= 0). Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.te-valueRange".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.te:valueRange".to_string(),
description: "Time constant of gain block (Te) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_sk_exc_sk_efdmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcSK>() {
Some(o) => o, None => continue,
};
if obj.efdmin.is_none() || obj.efdmax.is_none() { continue; }
if !((obj.efdmin.unwrap() as f64) < obj.efdmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcSK.efdmin-valueRangePair".to_string(),
class: "ExcSK".to_string(),
property: "ExcSK.efdmin".to_string(),
message: "The value is either equal to or greater than ExcSK.efdmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcSK.efdmin:valueRangePair".to_string(),
description: "Field voltage clipping lower level limit (Efdmin) (< ExcSK.efdmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.tc-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.vamin-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vamin) (< 0). Typical value = -999.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.tb-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.kf-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (Kf) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.kc-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.ka-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 190.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.vrmax-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator outputs (Vrmax) (> 0) . Typical value = 7,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.tf-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.ta-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.vamax-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vamax) (> 0). Typical value = 999.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tb1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.tb1.is_none() { continue; }
if obj.tb1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.tb1-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.tb1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.tb1:valueRange".to_string(),
description: "Voltage regulator time constant (Tb1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vimin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() { continue; }
if obj.vimin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.vimin-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.vimin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.vimin:valueRange".to_string(),
description: "Minimum voltage regulator input limit (Vimin) (< 0). Typical value = -999.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vimax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.vimax.is_none() { continue; }
if obj.vimax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.vimax-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.vimax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.vimax:valueRange".to_string(),
description: "Maximum voltage regulator input limit (Vimax) (> 0). Typical value = 999.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.vrmin-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator outputs (Vrmin) (< 0). Typical value = -6,7.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st1a_exc_st1a_tc1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST1A>() {
Some(o) => o, None => continue,
};
if obj.tc1.is_none() { continue; }
if obj.tc1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST1A.tc1-valueRange".to_string(),
class: "ExcST1A".to_string(),
property: "ExcST1A.tc1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST1A.tc1:valueRange".to_string(),
description: "Voltage regulator time constant (Tc1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_kp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.kp-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.kp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.kp:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>p</sub>) (>= 0). Typical value = 4,88.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.tc-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_te_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.te-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.te".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.te:valueRange".to_string(),
description: "Exciter time constant, integration rate associated with exciter control (Te) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_efdmax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.efdmax.is_none() { continue; }
if obj.efdmax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.efdmax-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.efdmax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.efdmax:valueRange".to_string(),
description: "Maximum field voltage (Efdmax) (>= 0). Typical value = 99.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_ki_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.ki.is_none() { continue; }
if obj.ki.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.ki-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.ki".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.ki:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>i</sub>) (>= 0). Typical value = 8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.vrmin-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator outputs (Vrmin) (< 0). Typical value = -1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.tf-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (>= 0). Typical value = 0,7.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.tb-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.vrmax-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator outputs (Vrmax) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_ka_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.ka.is_none() { continue; }
if obj.ka.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.ka-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.ka".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.ka:valueRange".to_string(),
description: "Voltage regulator gain (Ka) (> 0). Typical value = 120.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_kf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.kf.is_none() { continue; }
if obj.kf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.kf-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.kf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.kf:valueRange".to_string(),
description: "Excitation control system stabilizer gains (kf) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.ta-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (> 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st2a_exc_st2a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST2A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST2A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST2A.kc-valueRange".to_string(),
class: "ExcST2A".to_string(),
property: "ExcST2A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST2A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 1,82.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.tb-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.tb:valueRange".to_string(),
description: "Voltage regulator time constant (Tb) (>= 0). Typical value = 6,67.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_tm_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.tm.is_none() { continue; }
if obj.tm.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.tm-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.tm".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.tm:valueRange".to_string(),
description: "Forward time constant of inner loop field regulator (Tm) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_km_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.km.is_none() { continue; }
if obj.km.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.km-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.km".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.km:valueRange".to_string(),
description: "Forward gain constant of the inner loop field regulator (Km) (> 0). Typical value = 7,04.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.tc-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.tc:valueRange".to_string(),
description: "Voltage regulator time constant (Tc) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vgmax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.vgmax.is_none() { continue; }
if obj.vgmax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.vgmax-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.vgmax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.vgmax:valueRange".to_string(),
description: "Maximum inner loop feedback voltage (Vgmax) (>= 0). Typical value = 6,53.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_ki_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.ki.is_none() { continue; }
if obj.ki.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.ki-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.ki".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.ki:valueRange".to_string(),
description: "Potential circuit gain coefficient (K<sub>i</sub>) (>= 0). Typical value = 4,83.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vimax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.vimax.is_none() { continue; }
if obj.vimax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.vimax-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.vimax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.vimax:valueRange".to_string(),
description: "Maximum voltage regulator input limit (Vimax) (> 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_xl_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.xl.is_none() { continue; }
if obj.xl.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.xl-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.xl".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.xl:valueRange".to_string(),
description: "Reactance associated with potential source (Xl) (>= 0). Typical value = 0,09.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vimin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() { continue; }
if obj.vimin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.vimin-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.vimin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.vimin:valueRange".to_string(),
description: "Minimum voltage regulator input limit (Vimin) (< 0). Typical value = -0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_kj_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.kj.is_none() { continue; }
if obj.kj.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.kj-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.kj".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.kj:valueRange".to_string(),
description: "AVR gain (Kj) (> 0). Typical value = 200.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.vrmax-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.vrmin-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0). Typical value = -1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_kg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.kg.is_none() { continue; }
if obj.kg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.kg-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.kg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.kg:valueRange".to_string(),
description: "Feedback gain constant of the inner loop field regulator (Kg) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_efdmax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.efdmax.is_none() { continue; }
if obj.efdmax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.efdmax-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.efdmax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.efdmax:valueRange".to_string(),
description: "Maximum AVR output (Efdmax) (>= 0). Typical value = 6,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.kc-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 1,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_kp_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.kp-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.kp".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.kp:valueRange".to_string(),
description: "Potential source gain (K<sub>p</sub>) (> 0). Typical value = 4,37.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st3a_exc_st3a_vbmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST3A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST3A>() {
Some(o) => o, None => continue,
};
if obj.vbmax.is_none() { continue; }
if obj.vbmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST3A.vbmax-valueRange".to_string(),
class: "ExcST3A".to_string(),
property: "ExcST3A.vbmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST3A.vbmax:valueRange".to_string(),
description: "Maximum excitation voltage (Vbmax) (> 0). Typical value = 8,63.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vgmax_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.vgmax.is_none() { continue; }
if obj.vgmax.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.vgmax-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.vgmax".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.vgmax:valueRange".to_string(),
description: "Maximum inner loop feedback voltage (Vgmax) (>= 0). Typical value = 5,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vbmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.vbmax.is_none() { continue; }
if obj.vbmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.vbmax-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.vbmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.vbmax:valueRange".to_string(),
description: "Maximum excitation voltage (Vbmax) (> 0). Typical value = 11,63.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_kc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.kc.is_none() { continue; }
if obj.kc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.kc-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.kc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.kc:valueRange".to_string(),
description: "Rectifier loading factor proportional to commutating reactance (Kc) (>= 0). Typical value = 0,113.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vmmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.vmmin.is_none() || obj.vmmax.is_none() { continue; }
if !((obj.vmmin.unwrap() as f64) < obj.vmmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.vmmin-valueRangePair".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.vmmin".to_string(),
message: "The value is either equal to or greater than ExcST4B.vmmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.vmmin:valueRangePair".to_string(),
description: "Minimum inner loop output (Vmmin) (< ExcST4B.vmmax). Typical value = -99.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_kp_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.kp.is_none() { continue; }
if obj.kp.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.kp-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.kp".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.kp:valueRange".to_string(),
description: "Potential circuit gain coefficient (Kp) (> 0). Typical value = 9,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_kg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.kg.is_none() { continue; }
if obj.kg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.kg-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.kg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.kg:valueRange".to_string(),
description: "Feedback gain constant of the inner loop field regulator (Kg) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_ki_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.ki.is_none() { continue; }
if obj.ki.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.ki-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.ki".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.ki:valueRange".to_string(),
description: "Potential circuit gain coefficient (Ki) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_xl_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.xl.is_none() { continue; }
if obj.xl.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.xl-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.xl".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.xl:valueRange".to_string(),
description: "Reactance associated with potential source (Xl) (>= 0). Typical value = 0,124.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.vrmin-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0). Typical value = -0,87.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.ta-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.ta:valueRange".to_string(),
description: "Voltage regulator time constant (Ta) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st4b_exc_st4b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST4B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST4B.vrmax-valueRange".to_string(),
class: "ExcST4B".to_string(),
property: "ExcST4B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST4B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_kpa_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.kpa.is_none() { continue; }
if obj.kpa.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.kpa-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.kpa".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.kpa:valueRange".to_string(),
description: "Voltage regulator proportional gain (Kpa) (> 0). Typical value = 18,038.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vamin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.vamin.is_none() { continue; }
if obj.vamin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.vamin-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.vamin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.vamin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vamin) (< 0). Typical value = -3,85.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vamax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.vamax.is_none() { continue; }
if obj.vamax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.vamax-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.vamax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.vamax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vamax) (> 0). Typical value = 4,81.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_kcl_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.kcl.is_none() { continue; }
if obj.kcl.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.kcl-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.kcl".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.kcl:valueRange".to_string(),
description: "Exciter output current limit adjustment (Kcl) (> 0). Typical value = 1,0577.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.vrmin-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0). Typical value = -3,85.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vimin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() || obj.vimax.is_none() { continue; }
if !((obj.vimin.unwrap() as f64) < obj.vimax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.vimin-valueRangePair".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.vimin".to_string(),
message: "The value is either equal to or greater than ExcST6B.vimax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.vimin:valueRangePair".to_string(),
description: "Minimum voltage regulator input limit (Vimin) (< ExcST6B.vimax). Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_kia_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.kia.is_none() { continue; }
if obj.kia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.kia-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.kia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.kia:valueRange".to_string(),
description: "Voltage regulator integral gain (Kia) (> 0). Typical value = 45,094.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_tvd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.tvd.is_none() { continue; }
if obj.tvd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.tvd-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.tvd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.tvd:valueRange".to_string(),
description: "Voltage regulator derivative gain (Tvd) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_ilr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.ilr.is_none() { continue; }
if obj.ilr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.ilr-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.ilr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.ilr:valueRange".to_string(),
description: "Exciter output current limit reference (Ilr) (> 0). Typical value = 4,164.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_klr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.klr.is_none() { continue; }
if obj.klr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.klr-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.klr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.klr:valueRange".to_string(),
description: "Exciter output current limit adjustment (Kcl) (> 0). Typical value = 17,33.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_ts_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.ts.is_none() { continue; }
if obj.ts.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.ts-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.ts".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.ts:valueRange".to_string(),
description: "Rectifier firing time constant (Ts) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_kg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.kg.is_none() { continue; }
if obj.kg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.kg-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.kg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.kg:valueRange".to_string(),
description: "Feedback gain constant of the inner loop field regulator (Kg) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.vrmax-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 4,81.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st6b_exc_st6b_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST6B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST6B>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST6B.tg-valueRange".to_string(),
class: "ExcST6B".to_string(),
property: "ExcST6B.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST6B.tg:valueRange".to_string(),
description: "Feedback time constant of inner loop field voltage regulator (Tg) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_ts_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.ts.is_none() { continue; }
if obj.ts.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.ts-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.ts".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.ts:valueRange".to_string(),
description: "Rectifier firing time constant (Ts) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_kl_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.kl.is_none() { continue; }
if obj.kl.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.kl-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.kl".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.kl:valueRange".to_string(),
description: "Low-value gate feedback gain (Kl) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.tb-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.tb:valueRange".to_string(),
description: "Regulator lag time constant (Tb) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tia_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.tia.is_none() { continue; }
if obj.tia.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.tia-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.tia".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.tia:valueRange".to_string(),
description: "Feedback time constant (Tia) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.tf-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.tf:valueRange".to_string(),
description: "Excitation control system stabilizer time constant (Tf) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.tc-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.tc:valueRange".to_string(),
description: "Regulator lead time constant (Tc) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_kpa_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.kpa.is_none() { continue; }
if obj.kpa.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.kpa-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.kpa".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.kpa:valueRange".to_string(),
description: "Voltage regulator proportional gain (Kpa) (> 0). Typical value = 40.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vmin_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() { continue; }
if obj.vmin.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.vmin-valueRangePair".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.vmin".to_string(),
message: "The value is either equal to or greater than ExcST7B.vmax; or negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.vmin:valueRangePair".to_string(),
description: "Minimum voltage reference signal (Vmin) (> 0 and < ExcST7B.vmax). Typical value = 0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() || obj.vmax.is_none() { continue; }
if !((obj.vmin.unwrap() as f64) < obj.vmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.vmin-valueRangePair".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.vmin".to_string(),
message: "The value is either equal to or greater than ExcST7B.vmax; or negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.vmin:valueRangePair".to_string(),
description: "Minimum voltage reference signal (Vmin) (> 0 and < ExcST7B.vmax). Typical value = 0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.vmax.is_none() { continue; }
if obj.vmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.vmax-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.vmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.vmax:valueRange".to_string(),
description: "Maximum voltage reference signal (Vmax) (> 0 and > ExcST7B.vmin)). Typical value = 1,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_kia_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.kia.is_none() { continue; }
if obj.kia.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.kia-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.kia".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.kia:valueRange".to_string(),
description: "Voltage regulator integral gain (Kia) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_kh_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.kh.is_none() { continue; }
if obj.kh.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.kh-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.kh".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.kh:valueRange".to_string(),
description: "High-value gate feedback gain (Kh) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.tg-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.tg:valueRange".to_string(),
description: "Feedback time constant of inner loop field voltage regulator (Tg) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vrmin_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() { continue; }
if obj.vrmin.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.vrmin-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.vrmin".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.vrmin:valueRange".to_string(),
description: "Minimum voltage regulator output (Vrmin) (< 0). Typical value = -4,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_exc_st7b_exc_st7b_vrmax_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("ExcST7B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::ExcST7B>() {
Some(o) => o, None => continue,
};
if obj.vrmax.is_none() { continue; }
if obj.vrmax.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:ExcST7B.vrmax-valueRange".to_string(),
class: "ExcST7B".to_string(),
property: "ExcST7B.vrmax".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:ExcST7B.vrmax:valueRange".to_string(),
description: "Maximum voltage regulator output (Vrmax) (> 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tfload_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.tfload.is_none() { continue; }
if obj.tfload.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.tfload-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.tfload".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.tfload:valueRange".to_string(),
description: "Load-limiter time constant (Tfload) (> 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tpelec_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.tpelec.is_none() { continue; }
if obj.tpelec.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.tpelec-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.tpelec".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.tpelec:valueRange".to_string(),
description: "Electrical power transducer time constant (Tpelec) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.tc-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.tc:valueRange".to_string(),
description: "Turbine lead time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_minerr_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.minerr.is_none() || obj.maxerr.is_none() { continue; }
if !((obj.minerr.unwrap() as f64) < obj.maxerr.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.minerr-valueRangePair".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.minerr".to_string(),
message: "The value is either equal to or greater than GovCT1.maxerr.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.minerr:valueRangePair".to_string(),
description: "Minimum value for speed error signal (minerr) (< GovCT1.maxerr). Typical value = -0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_ta_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.ta-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.ta".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.ta:valueRange".to_string(),
description: "Acceleration limiter time constant (Ta) (> 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tdgov_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.tdgov.is_none() { continue; }
if obj.tdgov.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.tdgov-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.tdgov".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.tdgov:valueRange".to_string(),
description: "Governor derivative controller time constant (Tdgov) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tb_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.tb-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.tb".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.tb:valueRange".to_string(),
description: "Turbine lag time constant (Tb) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_teng_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.teng.is_none() { continue; }
if obj.teng.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.teng-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.teng".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.teng:valueRange".to_string(),
description: "Transport time delay for diesel engine used in representing diesel engines where there is a small but measurable transport delay between a change in fuel flow setting and the development of torque (Teng) (>= 0). Teng should be zero in all but special cases where this transport delay is of particular concern. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.mwbase-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tsb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.tsb.is_none() { continue; }
if obj.tsb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.tsb-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.tsb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.tsb:valueRange".to_string(),
description: "Temperature detection lag time constant (Tsb) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tsa_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.tsa.is_none() { continue; }
if obj.tsa.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.tsa-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.tsa".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.tsa:valueRange".to_string(),
description: "Temperature detection lead time constant (Tsa) (>= 0). Typical value = 4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_vmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() || obj.vmax.is_none() { continue; }
if !((obj.vmin.unwrap() as f64) < obj.vmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.vmin-valueRangePair".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.vmin".to_string(),
message: "The value is either equal to or greater than GovCT1.vmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.vmin:valueRangePair".to_string(),
description: "Minimum valve position limit (Vmin) (< GovCT1.vmax). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_kturb_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.kturb.is_none() { continue; }
if obj.kturb.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.kturb-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.kturb".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.kturb:valueRange".to_string(),
description: "Turbine gain (Kturb) (> 0). Typical value = 1,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_gov_ct1_tact_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
if obj.tact.is_none() { continue; }
if obj.tact.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT1.tact-valueRange".to_string(),
class: "GovCT1".to_string(),
property: "GovCT1.tact".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT1.tact:valueRange".to_string(),
description: "Actuator time constant (Tact) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.tb-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.tb:valueRange".to_string(),
description: "Turbine lag time constant (Tb) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tdgov_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.tdgov.is_none() { continue; }
if obj.tdgov.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.tdgov-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.tdgov".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.tdgov:valueRange".to_string(),
description: "Governor derivative controller time constant (Tdgov) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_teng_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.teng.is_none() { continue; }
if obj.teng.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.teng-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.teng".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.teng:valueRange".to_string(),
description: "Transport time delay for diesel engine used in representing diesel engines where there is a small but measurable transport delay between a change in fuel flow setting and the development of torque (Teng) (>= 0). Teng should be zero in all but special cases where this transport delay is of particular concern. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tsb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.tsb.is_none() { continue; }
if obj.tsb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.tsb-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.tsb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.tsb:valueRange".to_string(),
description: "Temperature detection lag time constant (Tsb) (>= 0). Typical value = 50.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_vmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() || obj.vmax.is_none() { continue; }
if !((obj.vmin.unwrap() as f64) < obj.vmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.vmin-valueRangePair".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.vmin".to_string(),
message: "The value is either equal to or greater than GovCT2.vmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.vmin:valueRangePair".to_string(),
description: "Minimum valve position limit (Vmin) (< GovCT2.vmax). Typical value = 0,175.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.ta-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.ta:valueRange".to_string(),
description: "Acceleration limiter time constant (Ta) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.tc-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.tc:valueRange".to_string(),
description: "Turbine lead time constant (Tc) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_minerr_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.minerr.is_none() || obj.maxerr.is_none() { continue; }
if !((obj.minerr.unwrap() as f64) < obj.maxerr.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.minerr-valueRangePair".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.minerr".to_string(),
message: "The value is either equal to or greater than GovCT2.maxerr.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.minerr:valueRangePair".to_string(),
description: "Minimum value for speed error signal (Minerr) (< GovCT2.maxerr). Typical value = -1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tfload_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.tfload.is_none() { continue; }
if obj.tfload.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.tfload-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.tfload".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.tfload:valueRange".to_string(),
description: "Load limiter time constant (Tfload) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tact_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.tact.is_none() { continue; }
if obj.tact.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.tact-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.tact".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.tact:valueRange".to_string(),
description: "Actuator time constant (Tact) (>= 0). Typical value = 0,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tpelec_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.tpelec.is_none() { continue; }
if obj.tpelec.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.tpelec-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.tpelec".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.tpelec:valueRange".to_string(),
description: "Electrical power transducer time constant (Tpelec) (>= 0). Typical value = 2,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_tsa_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.tsa.is_none() { continue; }
if obj.tsa.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.tsa-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.tsa".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.tsa:valueRange".to_string(),
description: "Temperature detection lead time constant (Tsa) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_gov_ct2_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovCT2.mwbase-valueRange".to_string(),
class: "GovCT2".to_string(),
property: "GovCT2.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovCT2.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_vmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() || obj.vmax.is_none() { continue; }
if !((obj.vmin.unwrap() as f64) < obj.vmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST.vmin-valueRangePair".to_string(),
class: "GovGAST".to_string(),
property: "GovGAST.vmin".to_string(),
message: "The value is either equal to or greater than GovGAST.vmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST.vmin:valueRangePair".to_string(),
description: "Minimum turbine power, PU of MWbase (Vmin) (< GovGAST.vmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST.t3-valueRange".to_string(),
class: "GovGAST".to_string(),
property: "GovGAST.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST.t3:valueRange".to_string(),
description: "Turbine exhaust temperature time constant (T3) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST.t2-valueRange".to_string(),
class: "GovGAST".to_string(),
property: "GovGAST.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST.t2:valueRange".to_string(),
description: "Turbine power time constant (T2) (>= 0). T2 represents delay due to internal energy storage of the gas turbine engine. T2 can be used to give a rough approximation to the delay associated with acceleration of the compressor spool of a multi-shaft engine, or with the compressibility of gas in the plenum of a free power turbine of an aero-derivative unit, for example. Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST.t1-valueRange".to_string(),
class: "GovGAST".to_string(),
property: "GovGAST.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST.t1:valueRange".to_string(),
description: "Governor mechanism time constant (T1) (>= 0). T1 represents the natural valve positioning time constant of the governor for small disturbances, as seen when rate limiting is not in effect. Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_r_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST>() {
Some(o) => o, None => continue,
};
if obj.r.is_none() { continue; }
if obj.r.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST.r-valueRange".to_string(),
class: "GovGAST".to_string(),
property: "GovGAST.r".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST.r:valueRange".to_string(),
description: "Permanent droop (R) (>0). Typical value = 0,04.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_gov_gast_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST.mwbase-valueRange".to_string(),
class: "GovGAST".to_string(),
property: "GovGAST.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.t3-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.t3:valueRange".to_string(),
description: "Turbine exhaust temperature time constant (T3) (>= 0). T3 represents delay in the exhaust temperature and load limiting system. Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_tltr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.tltr.is_none() { continue; }
if obj.tltr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.tltr-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.tltr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.tltr:valueRange".to_string(),
description: "Valve position averaging time constant (Tltr) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.t1-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.t1:valueRange".to_string(),
description: "Governor mechanism time constant (T1) (>= 0). T1 represents the natural valve positioning time constant of the governor for small disturbances, as seen when rate limiting is not in effect. Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.t4-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.t4:valueRange".to_string(),
description: "Governor lead time constant (T4) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_r_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.r.is_none() { continue; }
if obj.r.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.r-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.r".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.r:valueRange".to_string(),
description: "Permanent droop (R) (>0). Typical value = 0,04.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.mwbase-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_vmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() || obj.vmax.is_none() { continue; }
if !((obj.vmin.unwrap() as f64) < obj.vmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.vmin-valueRangePair".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.vmin".to_string(),
message: "The value is either equal to or greater than GovGAST1.vmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.vmin:valueRangePair".to_string(),
description: "Minimum turbine power, PU of MWbase (Vmin) (< GovGAST1.vmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_b_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.b.is_none() { continue; }
if obj.b.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.b-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.b".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.b:valueRange".to_string(),
description: "Turbine power time constant denominator scale factor (b) (>0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.t2-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.t2:valueRange".to_string(),
description: "Turbine power time constant (T2) (>= 0). T2 represents delay due to internal energy storage of the gas turbine engine. T2 can be used to give a rough approximation to the delay associated with acceleration of the compressor spool of a multi-shaft engine, or with the compressibility of gas in the plenum of the free power turbine of an aero-derivative unit, for example. Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_gov_gast1_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST1.t5-valueRange".to_string(),
class: "GovGAST1".to_string(),
property: "GovGAST1.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST1.t5:valueRange".to_string(),
description: "Governor lag time constant (T5) (>= 0). If = 0, entire gain and lead-lag block is bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_y_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.y.is_none() { continue; }
if obj.y.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.y-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.y".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.y:valueRange".to_string(),
description: "Governor lag time constant (Y) (> 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_tmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.tmin.is_none() || obj.tmax.is_none() { continue; }
if !((obj.tmin.unwrap() as f64) < obj.tmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.tmin-valueRangePair".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.tmin".to_string(),
message: "The value is either equal to or greater than GovGAST2.tmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.tmin:valueRangePair".to_string(),
description: "Minimum turbine limit (Tmin) (< GovGAST2.tmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_t_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.t.is_none() { continue; }
if obj.t.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.t-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.t".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.t:valueRange".to_string(),
description: "Fuel control time constant (T) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_etd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.etd.is_none() { continue; }
if obj.etd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.etd-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.etd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.etd:valueRange".to_string(),
description: "Turbine and exhaust delay (Etd) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_ecr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.ecr.is_none() { continue; }
if obj.ecr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.ecr-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.ecr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.ecr:valueRange".to_string(),
description: "Combustion reaction time delay (Ecr) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.t4-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.t4:valueRange".to_string(),
description: "Thermocouple time constant (T4) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_tt_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.tt.is_none() { continue; }
if obj.tt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.tt-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.tt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.tt:valueRange".to_string(),
description: "Temperature controller integration rate (Tt) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_x_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.x.is_none() { continue; }
if obj.x.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.x-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.x".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.x:valueRange".to_string(),
description: "Governor lead time constant (X) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.t3-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.t3:valueRange".to_string(),
description: "Radiation shield time constant (T3) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.t5-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.t5:valueRange".to_string(),
description: "Temperature control time constant (T5) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_tcd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.tcd.is_none() { continue; }
if obj.tcd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.tcd-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.tcd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.tcd:valueRange".to_string(),
description: "Compressor discharge time constant (Tcd) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.mwbase-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_gov_gast2_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST2.tf-valueRange".to_string(),
class: "GovGAST2".to_string(),
property: "GovGAST2.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST2.tf:valueRange".to_string(),
description: "Fuel system time constant (Tf) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_ty_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST3>() {
Some(o) => o, None => continue,
};
if obj.ty.is_none() { continue; }
if obj.ty.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST3.ty-valueRange".to_string(),
class: "GovGAST3".to_string(),
property: "GovGAST3.ty".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST3.ty:valueRange".to_string(),
description: "Time constant of fuel valve positioner (Ty) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_ttc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST3>() {
Some(o) => o, None => continue,
};
if obj.ttc.is_none() { continue; }
if obj.ttc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST3.ttc-valueRange".to_string(),
class: "GovGAST3".to_string(),
property: "GovGAST3.ttc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST3.ttc:valueRange".to_string(),
description: "Time constant of thermocouple (Ttc) (>= 0). Typical value = 2,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_tsi_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST3>() {
Some(o) => o, None => continue,
};
if obj.tsi.is_none() { continue; }
if obj.tsi.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST3.tsi-valueRange".to_string(),
class: "GovGAST3".to_string(),
property: "GovGAST3.tsi".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST3.tsi:valueRange".to_string(),
description: "Time constant of radiation shield (Tsi) (>= 0). Typical value = 15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST3>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST3.tg-valueRange".to_string(),
class: "GovGAST3".to_string(),
property: "GovGAST3.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST3.tg:valueRange".to_string(),
description: "Time constant of speed governor (Tg) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST3>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST3.td-valueRange".to_string(),
class: "GovGAST3".to_string(),
property: "GovGAST3.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST3.td:valueRange".to_string(),
description: "Temperature controller derivative gain (Td) (>= 0). Typical value = 3,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST3>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST3.tc-valueRange".to_string(),
class: "GovGAST3".to_string(),
property: "GovGAST3.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST3.tc:valueRange".to_string(),
description: "Compressor discharge volume time constant (Tc) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_gov_gast3_tac_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST3>() {
Some(o) => o, None => continue,
};
if obj.tac.is_none() { continue; }
if obj.tac.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST3.tac-valueRange".to_string(),
class: "GovGAST3".to_string(),
property: "GovGAST3.tac".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST3.tac:valueRange".to_string(),
description: "Fuel control time constant (Tac) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_ty_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST4>() {
Some(o) => o, None => continue,
};
if obj.ty.is_none() { continue; }
if obj.ty.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST4.ty-valueRange".to_string(),
class: "GovGAST4".to_string(),
property: "GovGAST4.ty".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST4.ty:valueRange".to_string(),
description: "Time constant of fuel valve positioner (Ty) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_tm_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST4>() {
Some(o) => o, None => continue,
};
if obj.tm.is_none() { continue; }
if obj.tm.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST4.tm-valueRange".to_string(),
class: "GovGAST4".to_string(),
property: "GovGAST4.tm".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST4.tm:valueRange".to_string(),
description: "Compressor discharge volume time constant (Tm) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_tcm_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST4>() {
Some(o) => o, None => continue,
};
if obj.tcm.is_none() { continue; }
if obj.tcm.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST4.tcm-valueRange".to_string(),
class: "GovGAST4".to_string(),
property: "GovGAST4.tcm".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST4.tcm:valueRange".to_string(),
description: "Fuel control time constant (Tcm) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST4>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST4.tc-valueRange".to_string(),
class: "GovGAST4".to_string(),
property: "GovGAST4.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST4.tc:valueRange".to_string(),
description: "Maximum gate closing velocity (TC) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_gov_gast4_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST4>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGAST4.ta-valueRange".to_string(),
class: "GovGAST4".to_string(),
property: "GovGAST4.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGAST4.ta:valueRange".to_string(),
description: "Maximum gate opening velocity (TA) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.t4-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.t4:valueRange".to_string(),
description: "Thermocouple time constant (T4) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.t5-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.t5:valueRange".to_string(),
description: "Temperature control time constant (T5) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_tmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.tmin.is_none() || obj.tmax.is_none() { continue; }
if !((obj.tmin.unwrap() as f64) < obj.tmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.tmin-valueRangePair".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.tmin".to_string(),
message: "The value is either equal to or greater than GovGASTWD.tmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.tmin:valueRangePair".to_string(),
description: "Minimum turbine limit (Tmin) (< GovGASTWD.tmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.t3-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.t3:valueRange".to_string(),
description: "Radiation shield time constant (T3) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.tf-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.tf:valueRange".to_string(),
description: "Fuel system time constant (Tf) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.td-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.td:valueRange".to_string(),
description: "Power transducer time constant (Td) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_etd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.etd.is_none() { continue; }
if obj.etd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.etd-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.etd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.etd:valueRange".to_string(),
description: "Turbine and exhaust delay (Etd) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_kdroop_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.kdroop.is_none() { continue; }
if obj.kdroop.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.kdroop-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.kdroop".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.kdroop:valueRange".to_string(),
description: "(Kdroop) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_ecr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.ecr.is_none() { continue; }
if obj.ecr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.ecr-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.ecr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.ecr:valueRange".to_string(),
description: "Combustion reaction time delay (Ecr) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_t_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.t.is_none() { continue; }
if obj.t.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.t-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.t".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.t:valueRange".to_string(),
description: "Fuel control time constant (T) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.mwbase-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_tt_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.tt.is_none() { continue; }
if obj.tt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.tt-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.tt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.tt:valueRange".to_string(),
description: "Temperature controller integration rate (Tt) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_gov_gastwd_tcd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
if obj.tcd.is_none() { continue; }
if obj.tcd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovGASTWD.tcd-valueRange".to_string(),
class: "GovGASTWD".to_string(),
property: "GovGASTWD.tcd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovGASTWD.tcd:valueRange".to_string(),
description: "Compressor discharge time constant (Tcd) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_tg_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.tg-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.tg".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.tg:valueRange".to_string(),
description: "Gate servo time constant (Tg) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_tf_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.tf-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.tf".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.tf:valueRange".to_string(),
description: "Filter time constant (Tf) (> 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.mwbase-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_rperm_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.rperm.is_none() || obj.rtemp.is_none() { continue; }
if !((obj.rperm.unwrap() as f64) < obj.rtemp.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.rperm-valueRangePair".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.rperm".to_string(),
message: "The value of GovHydro1.rperm is either equal to or greater than GovHydro1.rtemp.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.rtemp:valueRangePair".to_string(),
description: "Temporary droop (r) (GovHydro1.rtemp > GovHydro1.rperm). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_qnl_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.qnl.is_none() { continue; }
if obj.qnl.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.qnl-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.qnl".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.qnl:valueRange".to_string(),
description: "No-load flow at nominal head (qnl) (>= 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_at_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.at.is_none() { continue; }
if obj.at.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.at-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.at".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.at:valueRange".to_string(),
description: "Turbine gain (At) (> 0). Typical value = 1,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_velm_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.velm.is_none() { continue; }
if obj.velm.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.velm-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.velm".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.velm:valueRange".to_string(),
description: "Maximum gate velocity (Vlem) (> 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_rperm_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.rperm.is_none() { continue; }
if obj.rperm.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.rperm-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.rperm".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.rperm:valueRange".to_string(),
description: "Permanent droop (R) (> 0). Typical value = 0,04.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_gmin_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.gmin.is_none() { continue; }
if obj.gmin.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.gmin-valueRangePair".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.gmin".to_string(),
message: "The value is either equal to or greater than GovHydro1.gmax; or negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.gmin:valueRangePair".to_string(),
description: "Minimum gate opening (Gmin) (>= 0 and < GovHydro1.gmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_gmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.gmin.is_none() || obj.gmax.is_none() { continue; }
if !((obj.gmin.unwrap() as f64) < obj.gmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.gmin-valueRangePair".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.gmin".to_string(),
message: "The value is either equal to or greater than GovHydro1.gmax; or negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.gmin:valueRangePair".to_string(),
description: "Minimum gate opening (Gmin) (>= 0 and < GovHydro1.gmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_tw_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.tw-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.tw".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_dturb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.dturb.is_none() { continue; }
if obj.dturb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.dturb-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.dturb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.dturb:valueRange".to_string(),
description: "Turbine damping factor (Dturb) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_gov_hydro1_tr_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro1.tr-valueRange".to_string(),
class: "GovHydro1".to_string(),
property: "GovHydro1.tr".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro1.tr:valueRange".to_string(),
description: "Washout time constant (Tr) (> 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_tg_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro2.tg-valueRange".to_string(),
class: "GovHydro2".to_string(),
property: "GovHydro2.tg".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro2.tg:valueRange".to_string(),
description: "Gate servo time constant (Tg) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_uc_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
if obj.uc.is_none() { continue; }
if obj.uc.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro2.uc-valueRange".to_string(),
class: "GovHydro2".to_string(),
property: "GovHydro2.uc".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro2.uc:valueRange".to_string(),
description: "Maximum gate closing velocity (Uc) (< 0). Unit = PU / s. Typical value = -0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro2.tp-valueRange".to_string(),
class: "GovHydro2".to_string(),
property: "GovHydro2.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro2.tp:valueRange".to_string(),
description: "Pilot servo valve time constant (Tp) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro2.mwbase-valueRange".to_string(),
class: "GovHydro2".to_string(),
property: "GovHydro2.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro2.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_tr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro2.tr-valueRange".to_string(),
class: "GovHydro2".to_string(),
property: "GovHydro2.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro2.tr:valueRange".to_string(),
description: "Dashpot time constant (Tr) (>= 0). Typical value = 12.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_tw_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro2.tw-valueRange".to_string(),
class: "GovHydro2".to_string(),
property: "GovHydro2.tw".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro2.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_bturb_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
if obj.bturb.is_none() { continue; }
if obj.bturb.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro2.bturb-valueRange".to_string(),
class: "GovHydro2".to_string(),
property: "GovHydro2.bturb".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro2.bturb:valueRange".to_string(),
description: "Turbine denominator multiplier (Bturb) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_gov_hydro2_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro2.pmin-valueRangePair".to_string(),
class: "GovHydro2".to_string(),
property: "GovHydro2.pmin".to_string(),
message: "The value is either equal to or greater than GovHydro2.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro2.pmin:valueRangePair".to_string(),
description: "Minimum gate opening (Pmin) (< GovHydro2.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_at_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
if obj.at.is_none() { continue; }
if obj.at.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro3.at-valueRange".to_string(),
class: "GovHydro3".to_string(),
property: "GovHydro3.at".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro3.at:valueRange".to_string(),
description: "Turbine gain (At) (>0). Typical value = 1,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro3.mwbase-valueRange".to_string(),
class: "GovHydro3".to_string(),
property: "GovHydro3.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro3.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro3.pmin-valueRangePair".to_string(),
class: "GovHydro3".to_string(),
property: "GovHydro3.pmin".to_string(),
message: "The value is either equal to or greater than GovHydro3.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro3.pmin:valueRangePair".to_string(),
description: "Minimum gate opening, PU of MWbase (Pmin) (< GovHydro3.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro3.tp-valueRange".to_string(),
class: "GovHydro3".to_string(),
property: "GovHydro3.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro3.tp:valueRange".to_string(),
description: "Gate servo time constant (Tp) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro3.tf-valueRange".to_string(),
class: "GovHydro3".to_string(),
property: "GovHydro3.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro3.tf:valueRange".to_string(),
description: "Washout time constant (Tf) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro3.td-valueRange".to_string(),
class: "GovHydro3".to_string(),
property: "GovHydro3.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro3.td:valueRange".to_string(),
description: "Input filter time constant (Td) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_tt_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
if obj.tt.is_none() { continue; }
if obj.tt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro3.tt-valueRange".to_string(),
class: "GovHydro3".to_string(),
property: "GovHydro3.tt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro3.tt:valueRange".to_string(),
description: "Power feedback time constant (Tt) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_gov_hydro3_tw_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro3.tw-valueRange".to_string(),
class: "GovHydro3".to_string(),
property: "GovHydro3.tw".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro3.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (>= 0). If = 0, block is bypassed. Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tg_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.tg-valueRange".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.tg".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.tg:valueRange".to_string(),
description: "Gate servo time constant (Tg) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tblade_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.tblade.is_none() { continue; }
if obj.tblade.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.tblade-valueRange".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.tblade".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.tblade:valueRange".to_string(),
description: "Blade servo time constant (Tblade) (>= 0). Typical value = 100.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_gmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.gmin.is_none() || obj.gmax.is_none() { continue; }
if !((obj.gmin.unwrap() as f64) < obj.gmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.gmin-valueRangePair".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.gmin".to_string(),
message: "The value is either equal to or greater than GovHydro4.gmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.gmin:valueRangePair".to_string(),
description: "Minimum gate opening, PU of MWbase (Gmin) (< GovHydro4.gmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tw_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.tw-valueRange".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.tw".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_rperm_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.rperm.is_none() { continue; }
if obj.rperm.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.rperm-valueRange".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.rperm".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.rperm:valueRange".to_string(),
description: "Permanent droop (Rperm) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.mwbase-valueRange".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.tr-valueRange".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.tr:valueRange".to_string(),
description: "Dashpot time constant (Tr) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.tp-valueRange".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.tp:valueRange".to_string(),
description: "Pilot servo time constant (Tp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_gov_hydro4_rtemp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
if obj.rtemp.is_none() { continue; }
if obj.rtemp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydro4.rtemp-valueRange".to_string(),
class: "GovHydro4".to_string(),
property: "GovHydro4.rtemp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydro4.rtemp:valueRange".to_string(),
description: "Temporary droop (Rtemp) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroDD.mwbase-valueRange".to_string(),
class: "GovHydroDD".to_string(),
property: "GovHydroDD.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroDD.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (>0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_gmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
if obj.gmin.is_none() || obj.gmax.is_none() { continue; }
if !((obj.gmin.unwrap() as f64) < obj.gmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroDD.gmin-valueRangePair".to_string(),
class: "GovHydroDD".to_string(),
property: "GovHydroDD.gmin".to_string(),
message: "The value is either equal to or greater than GovHydroDD.gmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroDD.gmin:valueRangePair".to_string(),
description: "Minimum gate opening (Gmin) (< GovHydroDD.gmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_tt_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
if obj.tt.is_none() { continue; }
if obj.tt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroDD.tt-valueRange".to_string(),
class: "GovHydroDD".to_string(),
property: "GovHydroDD.tt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroDD.tt:valueRange".to_string(),
description: "Power feedback time constant (Tt) (>= 0). If = 0, block is bypassed. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroDD.td-valueRange".to_string(),
class: "GovHydroDD".to_string(),
property: "GovHydroDD.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroDD.td:valueRange".to_string(),
description: "Input filter time constant (Td) (>= 0). If = 0, block is bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroDD.pmin-valueRangePair".to_string(),
class: "GovHydroDD".to_string(),
property: "GovHydroDD.pmin".to_string(),
message: "The value is either equal to or greater than GovHydroDD.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroDD.pmin:valueRangePair".to_string(),
description: "Minimum gate opening, PU of MWbase (Pmin) (> GovHydroDD.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroDD.tf-valueRange".to_string(),
class: "GovHydroDD".to_string(),
property: "GovHydroDD.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroDD.tf:valueRange".to_string(),
description: "Washout time constant (Tf) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroDD.tp-valueRange".to_string(),
class: "GovHydroDD".to_string(),
property: "GovHydroDD.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroDD.tp:valueRange".to_string(),
description: "Gate servo time constant (Tp) (>= 0). If = 0, block is bypassed. Typical value = 0,35.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_gov_hydro_dd_tturb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
if obj.tturb.is_none() { continue; }
if obj.tturb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroDD.tturb-valueRange".to_string(),
class: "GovHydroDD".to_string(),
property: "GovHydroDD.tturb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroDD.tturb:valueRange".to_string(),
description: "Turbine time constant (Tturb) (>= 0). See parameter detail 3. Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_valvmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroFrancis").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroFrancis>() {
Some(o) => o, None => continue,
};
if obj.valvmin.is_none() || obj.valvmax.is_none() { continue; }
if !((obj.valvmin.unwrap() as f64) < obj.valvmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroFrancis.valvmin-valueRangePair".to_string(),
class: "GovHydroFrancis".to_string(),
property: "GovHydroFrancis.valvmin".to_string(),
message: "The value is either equal to or greater than GovHydroFrancis.valvmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroFrancis.valvmin:valueRangePair".to_string(),
description: "Minimum gate opening (ValvMin) (< GovHydroFrancis.valvmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_tx_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroFrancis").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroFrancis>() {
Some(o) => o, None => continue,
};
if obj.tx.is_none() { continue; }
if obj.tx.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroFrancis.tx-valueRange".to_string(),
class: "GovHydroFrancis".to_string(),
property: "GovHydroFrancis.tx".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroFrancis.tx:valueRange".to_string(),
description: "Derivative feedback gain (Tx) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_twng_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroFrancis").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroFrancis>() {
Some(o) => o, None => continue,
};
if obj.twng.is_none() { continue; }
if obj.twng.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroFrancis.twng-valueRange".to_string(),
class: "GovHydroFrancis".to_string(),
property: "GovHydroFrancis.twng".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroFrancis.twng:valueRange".to_string(),
description: "Water tunnel and surge chamber inertia time constant (Twng) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_twnc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroFrancis").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroFrancis>() {
Some(o) => o, None => continue,
};
if obj.twnc.is_none() { continue; }
if obj.twnc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroFrancis.twnc-valueRange".to_string(),
class: "GovHydroFrancis".to_string(),
property: "GovHydroFrancis.twnc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroFrancis.twnc:valueRange".to_string(),
description: "Water inertia time constant (Twnc) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_ts_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroFrancis").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroFrancis>() {
Some(o) => o, None => continue,
};
if obj.ts.is_none() { continue; }
if obj.ts.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroFrancis.ts-valueRange".to_string(),
class: "GovHydroFrancis".to_string(),
property: "GovHydroFrancis.ts".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroFrancis.ts:valueRange".to_string(),
description: "Gate servo time constant (Ts) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroFrancis").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroFrancis>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroFrancis.td-valueRange".to_string(),
class: "GovHydroFrancis".to_string(),
property: "GovHydroFrancis.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroFrancis.td:valueRange".to_string(),
description: "Washout time constant (Td) (>= 0). Typical value = 6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_gov_hydro_francis_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroFrancis").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroFrancis>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroFrancis.ta-valueRange".to_string(),
class: "GovHydroFrancis".to_string(),
property: "GovHydroFrancis.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroFrancis.ta:valueRange".to_string(),
description: "Derivative gain (Ta) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE0>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE0.t4-valueRange".to_string(),
class: "GovHydroIEEE0".to_string(),
property: "GovHydroIEEE0.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE0.t4:valueRange".to_string(),
description: "Water starting time (T4) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE0>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE0.t3-valueRange".to_string(),
class: "GovHydroIEEE0".to_string(),
property: "GovHydroIEEE0.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE0.t3:valueRange".to_string(),
description: "Gate actuator time constant (T3) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE0>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE0.t2-valueRange".to_string(),
class: "GovHydroIEEE0".to_string(),
property: "GovHydroIEEE0.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE0.t2:valueRange".to_string(),
description: "Governor lead time constant (T2) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE0>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE0.t1-valueRange".to_string(),
class: "GovHydroIEEE0".to_string(),
property: "GovHydroIEEE0.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE0.t1:valueRange".to_string(),
description: "Governor lag time constant (T1) (>= 0). Typical value = 0,25.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_gov_hydro_ieee0_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE0>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE0.mwbase-valueRange".to_string(),
class: "GovHydroIEEE0".to_string(),
property: "GovHydroIEEE0.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE0.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE2.tg-valueRange".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "GovHydroIEEE2.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE2.tg:valueRange".to_string(),
description: "Gate servo time constant (Tg) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE2.mwbase-valueRange".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "GovHydroIEEE2.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE2.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_tw_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE2.tw-valueRange".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "GovHydroIEEE2.tw".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE2.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_uc_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
if obj.uc.is_none() { continue; }
if obj.uc.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE2.uc-valueRange".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "GovHydroIEEE2.uc".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE2.uc:valueRange".to_string(),
description: "Maximum gate closing velocity (Uc) (<0). Typical value = -0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_tr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE2.tr-valueRange".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "GovHydroIEEE2.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE2.tr:valueRange".to_string(),
description: "Dashpot time constant (Tr) (>= 0). Typical value = 12.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE2.tp-valueRange".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "GovHydroIEEE2.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE2.tp:valueRange".to_string(),
description: "Pilot servo valve time constant (Tp) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE2.pmin-valueRangePair".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "GovHydroIEEE2.pmin".to_string(),
message: "The value is either equal to or greater than GovHydroIEEE2.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE2.pmin:valueRangePair".to_string(),
description: "Minimum gate opening (Pmin) (<GovHydroIEEE2.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_gov_hydro_ieee2_bturb_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
if obj.bturb.is_none() { continue; }
if obj.bturb.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroIEEE2.bturb-valueRange".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "GovHydroIEEE2.bturb".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroIEEE2.bturb:valueRange".to_string(),
description: "Turbine denominator multiplier (Bturb) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_tturb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID>() {
Some(o) => o, None => continue,
};
if obj.tturb.is_none() { continue; }
if obj.tturb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID.tturb-valueRange".to_string(),
class: "GovHydroPID".to_string(),
property: "GovHydroPID.tturb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID.tturb:valueRange".to_string(),
description: "Turbine time constant (Tturb) (>= 0). See Parameter detail 3. Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_tt_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID>() {
Some(o) => o, None => continue,
};
if obj.tt.is_none() { continue; }
if obj.tt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID.tt-valueRange".to_string(),
class: "GovHydroPID".to_string(),
property: "GovHydroPID.tt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID.tt:valueRange".to_string(),
description: "Power feedback time constant (Tt) (>= 0). If = 0, block is bypassed. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID.tp-valueRange".to_string(),
class: "GovHydroPID".to_string(),
property: "GovHydroPID.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID.tp:valueRange".to_string(),
description: "Gate servo time constant (Tp) (>= 0). If = 0, block is bypassed. Typical value = 0,35.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID.tf-valueRange".to_string(),
class: "GovHydroPID".to_string(),
property: "GovHydroPID.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID.tf:valueRange".to_string(),
description: "Washout time constant (Tf) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID.td-valueRange".to_string(),
class: "GovHydroPID".to_string(),
property: "GovHydroPID.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID.td:valueRange".to_string(),
description: "Input filter time constant (Td) (>= 0). If = 0, block is bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID.pmin-valueRangePair".to_string(),
class: "GovHydroPID".to_string(),
property: "GovHydroPID.pmin".to_string(),
message: "The value is either equal to or greater than GovHydroPID.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID.pmin:valueRangePair".to_string(),
description: "Minimum gate opening, PU of MWbase (Pmin) (< GovHydroPID.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_gov_hydro_pid_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID.mwbase-valueRange".to_string(),
class: "GovHydroPID".to_string(),
property: "GovHydroPID.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_velmax_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID2>() {
Some(o) => o, None => continue,
};
if obj.velmax.is_none() || obj.velmin.is_none() { continue; }
if !((obj.velmax.unwrap() as f64) < obj.velmin.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID2.velmax-valueRangePair".to_string(),
class: "GovHydroPID2".to_string(),
property: "GovHydroPID2.velmax".to_string(),
message: "The value is either equal to or greater than GovHydroPID2.velmin.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID2.velmax:valueRangePair".to_string(),
description: "Maximum gate opening velocity (Velmax) (< GovHydroPID2.velmin). Unit = PU / s. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_tw_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID2>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID2.tw-valueRange".to_string(),
class: "GovHydroPID2".to_string(),
property: "GovHydroPID2.tw".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID2.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_treg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID2>() {
Some(o) => o, None => continue,
};
if obj.treg.is_none() { continue; }
if obj.treg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID2.treg-valueRange".to_string(),
class: "GovHydroPID2".to_string(),
property: "GovHydroPID2.treg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID2.treg:valueRange".to_string(),
description: "Speed detector time constant (Treg) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_tb_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID2>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID2.tb-valueRange".to_string(),
class: "GovHydroPID2".to_string(),
property: "GovHydroPID2.tb".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID2.tb:valueRange".to_string(),
description: "Gate servo time constant (Tb) (> 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID2>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID2.ta-valueRange".to_string(),
class: "GovHydroPID2".to_string(),
property: "GovHydroPID2.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID2.ta:valueRange".to_string(),
description: "Controller time constant (Ta) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID2>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID2.mwbase-valueRange".to_string(),
class: "GovHydroPID2".to_string(),
property: "GovHydroPID2.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID2.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (>0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_gov_hydro_pid2_gmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID2>() {
Some(o) => o, None => continue,
};
if obj.gmin.is_none() || obj.gmax.is_none() { continue; }
if !((obj.gmin.unwrap() as f64) < obj.gmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPID2.gmin-valueRangePair".to_string(),
class: "GovHydroPID2".to_string(),
property: "GovHydroPID2.gmin".to_string(),
message: "The value is either equal to or greater than GovHydroPID2.gmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPID2.gmin:valueRangePair".to_string(),
description: "Minimum gate opening (Gmin) (> GovHydroPID2.gmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_valvmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPelton").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPelton>() {
Some(o) => o, None => continue,
};
if obj.valvmin.is_none() || obj.valvmax.is_none() { continue; }
if !((obj.valvmin.unwrap() as f64) < obj.valvmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPelton.valvmin-valueRangePair".to_string(),
class: "GovHydroPelton".to_string(),
property: "GovHydroPelton.valvmin".to_string(),
message: "The value is either equal to or greater than GovHydroPelton.valvmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPelton.valvmin:valueRangePair".to_string(),
description: "Minimum gate opening (ValvMin) (< GovHydroPelton.valvmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_tx_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPelton").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPelton>() {
Some(o) => o, None => continue,
};
if obj.tx.is_none() { continue; }
if obj.tx.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPelton.tx-valueRange".to_string(),
class: "GovHydroPelton".to_string(),
property: "GovHydroPelton.tx".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPelton.tx:valueRange".to_string(),
description: "Electronic integrator time constant (Tx) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_twng_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPelton").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPelton>() {
Some(o) => o, None => continue,
};
if obj.twng.is_none() { continue; }
if obj.twng.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPelton.twng-valueRange".to_string(),
class: "GovHydroPelton".to_string(),
property: "GovHydroPelton.twng".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPelton.twng:valueRange".to_string(),
description: "Water tunnel and surge chamber inertia time constant (Twng) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_twnc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPelton").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPelton>() {
Some(o) => o, None => continue,
};
if obj.twnc.is_none() { continue; }
if obj.twnc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPelton.twnc-valueRange".to_string(),
class: "GovHydroPelton".to_string(),
property: "GovHydroPelton.twnc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPelton.twnc:valueRange".to_string(),
description: "Water inertia time constant (Twnc) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_tv_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPelton").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPelton>() {
Some(o) => o, None => continue,
};
if obj.tv.is_none() { continue; }
if obj.tv.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPelton.tv-valueRange".to_string(),
class: "GovHydroPelton".to_string(),
property: "GovHydroPelton.tv".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPelton.tv:valueRange".to_string(),
description: "Servomotor integrator time constant (Tv) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_ts_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPelton").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPelton>() {
Some(o) => o, None => continue,
};
if obj.ts.is_none() { continue; }
if obj.ts.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPelton.ts-valueRange".to_string(),
class: "GovHydroPelton".to_string(),
property: "GovHydroPelton.ts".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPelton.ts:valueRange".to_string(),
description: "Gate servo time constant (Ts) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_gov_hydro_pelton_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPelton").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPelton>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroPelton.ta-valueRange".to_string(),
class: "GovHydroPelton".to_string(),
property: "GovHydroPelton.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroPelton.ta:valueRange".to_string(),
description: "Derivative gain (accelerometer time constant) (Ta) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_tt_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.tt.is_none() { continue; }
if obj.tt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.tt-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.tt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.tt:valueRange".to_string(),
description: "Power feedback time constant (Tt) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.td-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.td:valueRange".to_string(),
description: "Input filter time constant (Td) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_gmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.gmin.is_none() || obj.gmax.is_none() { continue; }
if !((obj.gmin.unwrap() as f64) < obj.gmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.gmin-valueRangePair".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.gmin".to_string(),
message: "The value is either equal to or greater than GovHydroR.gmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.gmin:valueRangePair".to_string(),
description: "Minimum governor output (Gmin) (< GovHydroR.gmax). Typical value = -0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.mwbase-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.t2-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.t2:valueRange".to_string(),
description: "Lag time constant 1 (T2) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.t3-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.t3:valueRange".to_string(),
description: "Lead time constant 2 (T3) (>= 0). Typical value = 1,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.t4-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.t4:valueRange".to_string(),
description: "Lag time constant 2 (T4) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.t8.is_none() { continue; }
if obj.t8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.t8-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.t8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.t8:valueRange".to_string(),
description: "Lag time constant 4 (T8) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_tw_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.tw-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.tw".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.pmin-valueRangePair".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.pmin".to_string(),
message: "The value is either equal to or greater than GovHydroR.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.pmin:valueRangePair".to_string(),
description: "Minimum gate opening, PU of MWbase (Pmin) (< GovHydroR.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.t1-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.t1:valueRange".to_string(),
description: "Lead time constant 1 (T1) (>= 0). Typical value = 1,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.tp-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.tp:valueRange".to_string(),
description: "Gate servo time constant (Tp) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.t5-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.t5:valueRange".to_string(),
description: "Lead time constant 3 (T5) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.t6-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.t6:valueRange".to_string(),
description: "Lag time constant 3 (T6) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_gov_hydro_r_t7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
if obj.t7.is_none() { continue; }
if obj.t7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroR.t7-valueRange".to_string(),
class: "GovHydroR".to_string(),
property: "GovHydroR.t7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroR.t7:valueRange".to_string(),
description: "Lead time constant 4 (T7) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tw_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWEH.tw-valueRange".to_string(),
class: "GovHydroWEH".to_string(),
property: "GovHydroWEH.tw".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWEH.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (> 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tpe_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
if obj.tpe.is_none() { continue; }
if obj.tpe.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWEH.tpe-valueRange".to_string(),
class: "GovHydroWEH".to_string(),
property: "GovHydroWEH.tpe".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWEH.tpe:valueRange".to_string(),
description: "Electrical power droop time constant (Tpe) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tdv_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
if obj.tdv.is_none() { continue; }
if obj.tdv.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWEH.tdv-valueRange".to_string(),
class: "GovHydroWEH".to_string(),
property: "GovHydroWEH.tdv".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWEH.tdv:valueRange".to_string(),
description: "Distributive valve time lag time constant (Tdv) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWEH.mwbase-valueRange".to_string(),
class: "GovHydroWEH".to_string(),
property: "GovHydroWEH.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWEH.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_gmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
if obj.gmin.is_none() || obj.gmax.is_none() { continue; }
if !((obj.gmin.unwrap() as f64) < obj.gmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWEH.gmin-valueRangePair".to_string(),
class: "GovHydroWEH".to_string(),
property: "GovHydroWEH.gmin".to_string(),
message: "The value is either equal to or greater than GovHydroWEH.gmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWEH.gmin:valueRangePair".to_string(),
description: "Minimum gate position (Gmin) (< GovHydroWEH.gmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWEH.tp-valueRange".to_string(),
class: "GovHydroWEH".to_string(),
property: "GovHydroWEH.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWEH.tp:valueRange".to_string(),
description: "Pilot valve time lag time constant (Tp) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWEH.td-valueRange".to_string(),
class: "GovHydroWEH".to_string(),
property: "GovHydroWEH.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWEH.td:valueRange".to_string(),
description: "Derivative controller time constant (Td) (>= 0). Limits the derivative characteristic beyond a breakdown frequency to avoid amplification of high-frequency noise.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_gov_hydro_weh_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWEH.tg-valueRange".to_string(),
class: "GovHydroWEH".to_string(),
property: "GovHydroWEH.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWEH.tg:valueRange".to_string(),
description: "Value to allow the distribution valve controller to advance beyond the gate movement rate limit (Tg) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWPID.tb-valueRange".to_string(),
class: "GovHydroWPID".to_string(),
property: "GovHydroWPID.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWPID.tb:valueRange".to_string(),
description: "Gate servo time constant (Tb) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWPID.pmin-valueRangePair".to_string(),
class: "GovHydroWPID".to_string(),
property: "GovHydroWPID.pmin".to_string(),
message: "The value is either equal to or greater than GovHydroWPID.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWPID.pmin:valueRangePair".to_string(),
description: "Minimum power output (Pmin) (< GovHydroWPID.pmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_treg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
if obj.treg.is_none() { continue; }
if obj.treg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWPID.treg-valueRange".to_string(),
class: "GovHydroWPID".to_string(),
property: "GovHydroWPID.treg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWPID.treg:valueRange".to_string(),
description: "Speed detector time constant (Treg) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_gatmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
if obj.gatmin.is_none() || obj.gatmax.is_none() { continue; }
if !((obj.gatmin.unwrap() as f64) < obj.gatmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWPID.gatmin-valueRangePair".to_string(),
class: "GovHydroWPID".to_string(),
property: "GovHydroWPID.gatmin".to_string(),
message: "The value is either equal to or greater than GovHydroWPID.gatmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWPID.gatmin:valueRangePair".to_string(),
description: "Gate opening limit minimum (Gatmin) (< GovHydroWPID.gatmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWPID.mwbase-valueRange".to_string(),
class: "GovHydroWPID".to_string(),
property: "GovHydroWPID.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWPID.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWPID.ta-valueRange".to_string(),
class: "GovHydroWPID".to_string(),
property: "GovHydroWPID.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWPID.ta:valueRange".to_string(),
description: "Controller time constant (Ta) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_velmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
if obj.velmin.is_none() || obj.velmax.is_none() { continue; }
if !((obj.velmin.unwrap() as f64) < obj.velmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWPID.velmin-valueRangePair".to_string(),
class: "GovHydroWPID".to_string(),
property: "GovHydroWPID.velmin".to_string(),
message: "The value is either equal to or greater than GovHydroWPID.velmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWPID.velmin:valueRangePair".to_string(),
description: "Maximum gate closing velocity (Velmin) (< GovHydroWPID.velmax). Unit = PU / s. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_gov_hydro_wpid_tw_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovHydroWPID.tw-valueRange".to_string(),
class: "GovHydroWPID".to_string(),
property: "GovHydroWPID.tw".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovHydroWPID.tw:valueRange".to_string(),
description: "Water inertia time constant (Tw) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_vmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam0>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() || obj.vmax.is_none() { continue; }
if !((obj.vmin.unwrap() as f64) < obj.vmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam0.vmin-valueRangePair".to_string(),
class: "GovSteam0".to_string(),
property: "GovSteam0.vmin".to_string(),
message: "The value is either equal to or greater than GovSteam0.vmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam0.vmin:valueRangePair".to_string(),
description: "Minimum valve position, PU of mwcap (Vmin) (< GovSteam0.vmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_t3_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam0>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam0.t3-valueRange".to_string(),
class: "GovSteam0".to_string(),
property: "GovSteam0.t3".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam0.t3:valueRange".to_string(),
description: "Reheater time constant (T3) (> 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam0>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam0.t2-valueRange".to_string(),
class: "GovSteam0".to_string(),
property: "GovSteam0.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam0.t2:valueRange".to_string(),
description: "Numerator time constant of T2/T3 block (T2) (>= 0). Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_t1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam0>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam0.t1-valueRange".to_string(),
class: "GovSteam0".to_string(),
property: "GovSteam0.t1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam0.t1:valueRange".to_string(),
description: "Steam bowl time constant (T1) (> 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_gov_steam0_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam0>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam0.mwbase-valueRange".to_string(),
class: "GovSteam0".to_string(),
property: "GovSteam0.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam0.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t3_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.t3-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.t3".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.t3:valueRange".to_string(),
description: "Valve positioner time constant (T3) (> 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.mwbase-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.t2-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.t2:valueRange".to_string(),
description: "Governor lead time constant (T2) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_k_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.k.is_none() { continue; }
if obj.k.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.k-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.k".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.k:valueRange".to_string(),
description: "Governor gain (reciprocal of droop) (K) (> 0). Typical value = 25.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.t1-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.t1:valueRange".to_string(),
description: "Governor lag time constant (T1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.t7.is_none() { continue; }
if obj.t7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.t7-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.t7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.t7:valueRange".to_string(),
description: "Time constant of fourth boiler pass (T7) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_uo_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.uo.is_none() { continue; }
if obj.uo.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.uo-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.uo".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.uo:valueRange".to_string(),
description: "Maximum valve opening velocity (Uo) (> 0). Unit = PU / s. Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.t6-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.t6:valueRange".to_string(),
description: "Time constant of third boiler pass (T6) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.pmin-valueRangePair".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.pmin".to_string(),
message: "The value is either equal to or greater than GovSteam1.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.pmin:valueRangePair".to_string(),
description: "Minimum valve opening (Pmin) (>= 0 and < GovSteam1.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.t5-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.t5:valueRange".to_string(),
description: "Time constant of second boiler pass (T5) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_uc_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.uc.is_none() { continue; }
if obj.uc.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.uc-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.uc".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.uc:valueRange".to_string(),
description: "Maximum valve closing velocity (Uc) (< 0). Unit = PU / s. Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_gov_steam1_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam1.t4-valueRange".to_string(),
class: "GovSteam1".to_string(),
property: "GovSteam1.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam1.t4:valueRange".to_string(),
description: "Inlet piping/steam bowl time constant (T4) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam2_gov_steam2_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam2>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam2.t2-valueRange".to_string(),
class: "GovSteam2".to_string(),
property: "GovSteam2.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam2.t2:valueRange".to_string(),
description: "Governor lead time constant (T<sub>2</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam2_gov_steam2_t1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam2>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam2.t1-valueRange".to_string(),
class: "GovSteam2".to_string(),
property: "GovSteam2.t1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam2.t1:valueRange".to_string(),
description: "Governor lag time constant (T<sub>1</sub>) (> 0). Typical value = 0,45.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam2_gov_steam2_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam2>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteam2.pmin-valueRangePair".to_string(),
class: "GovSteam2".to_string(),
property: "GovSteam2.pmin".to_string(),
message: "The value is either equal to or greater than GovSteam2.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteam2.pmin:valueRangePair".to_string(),
description: "Minimum fuel flow (P<sub>MIN</sub>) (< GovSteam2.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_tn_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamBB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamBB>() {
Some(o) => o, None => continue,
};
if obj.tn.is_none() { continue; }
if obj.tn.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamBB.tn-valueRange".to_string(),
class: "GovSteamBB".to_string(),
property: "GovSteamBB.tn".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamBB.tn:valueRange".to_string(),
description: "Time constant (Tn) (> 0). Typical value = 1,0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_td_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamBB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamBB>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamBB.td-valueRange".to_string(),
class: "GovSteamBB".to_string(),
property: "GovSteamBB.td".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamBB.td:valueRange".to_string(),
description: "Time constant (Td) (> 0). Typical value = 1,0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamBB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamBB>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamBB.pmin-valueRangePair".to_string(),
class: "GovSteamBB".to_string(),
property: "GovSteamBB.pmin".to_string(),
message: "The value is either equal to or greater than GovSteamBB.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamBB.pmin:valueRangePair".to_string(),
description: "Low power limit (Pmin) (< GovSteamBB.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_kls_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamBB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamBB>() {
Some(o) => o, None => continue,
};
if obj.kls.is_none() { continue; }
if obj.kls.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamBB.kls-valueRange".to_string(),
class: "GovSteamBB".to_string(),
property: "GovSteamBB.kls".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamBB.kls:valueRange".to_string(),
description: "Gain (Kls) (> 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_gov_steam_bb_fcut_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamBB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamBB>() {
Some(o) => o, None => continue,
};
if obj.fcut.is_none() { continue; }
if obj.fcut.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamBB.fcut-valueRange".to_string(),
class: "GovSteamBB".to_string(),
property: "GovSteamBB.fcut".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamBB.fcut:valueRange".to_string(),
description: "Frequency deadband (f<sub>cut</sub>) (>= 0). Typical value = 0,002.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t5lp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.t5lp.is_none() { continue; }
if obj.t5lp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.t5lp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.t5lp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.t5lp:valueRange".to_string(),
description: "LP reheater time constant (T5lp) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_rhp_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.rhp.is_none() { continue; }
if obj.rhp.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.rhp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.rhp".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.rhp:valueRange".to_string(),
description: "HP governor droop (Rhp) (> 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t5hp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.t5hp.is_none() { continue; }
if obj.t5hp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.t5hp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.t5hp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.t5hp:valueRange".to_string(),
description: "HP reheater time constant (T5hp) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t4lp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.t4lp.is_none() { continue; }
if obj.t4lp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.t4lp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.t4lp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.t4lp:valueRange".to_string(),
description: "LP turbine time constant (T4lp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t1lp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.t1lp.is_none() { continue; }
if obj.t1lp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.t1lp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.t1lp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.t1lp:valueRange".to_string(),
description: "LP governor time constant (T1lp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_rlp_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.rlp.is_none() { continue; }
if obj.rlp.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.rlp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.rlp".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.rlp:valueRange".to_string(),
description: "LP governor droop (Rlp) (> 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t1hp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.t1hp.is_none() { continue; }
if obj.t1hp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.t1hp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.t1hp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.t1hp:valueRange".to_string(),
description: "HP governor time constant (T1hp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.mwbase-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t3lp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.t3lp.is_none() { continue; }
if obj.t3lp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.t3lp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.t3lp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.t3lp:valueRange".to_string(),
description: "LP turbine time constant (T3lp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t3hp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.t3hp.is_none() { continue; }
if obj.t3hp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.t3hp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.t3hp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.t3hp:valueRange".to_string(),
description: "HP turbine time constant (T3hp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_cc_gov_steam_cc_t4hp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamCC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamCC>() {
Some(o) => o, None => continue,
};
if obj.t4hp.is_none() { continue; }
if obj.t4hp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamCC.t4hp-valueRange".to_string(),
class: "GovSteamCC".to_string(),
property: "GovSteamCC.t4hp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamCC.t4hp:valueRange".to_string(),
description: "HP turbine time constant (T4hp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tdp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tdp.is_none() { continue; }
if obj.tdp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tdp-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tdp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tdp:valueRange".to_string(),
description: "Derivative time constant of the power controller (Tdp) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_wwmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.wwmin.is_none() || obj.wwmax.is_none() { continue; }
if !((obj.wwmin.unwrap() as f64) < obj.wwmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.wwmin-valueRangePair".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.wwmin".to_string(),
message: "The value is either equal to or greater than GovSteamEU.wwmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.wwmin:valueRangePair".to_string(),
description: "Lower limit for the speed governor frequency correction (Wwmin) (< GovSteamEU.wwmax). Typical value = -1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tp-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tp:valueRange".to_string(),
description: "Power transducer time constant (Tp) (>= 0). Typical value = 0,07.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tlp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tlp.is_none() { continue; }
if obj.tlp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tlp-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tlp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tlp:valueRange".to_string(),
description: "Low pressure (LP) time constant of the turbine (Tlp) (>= 0). Typical value = 0,45.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_trh_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.trh.is_none() { continue; }
if obj.trh.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.trh-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.trh".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.trh:valueRange".to_string(),
description: "Reheater time constant of the turbine (Trh) (>= 0). Typical value = 8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tvip_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tvip.is_none() { continue; }
if obj.tvip.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tvip-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tvip".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tvip:valueRange".to_string(),
description: "Intercept valves servo time constant (Tvip) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tb-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tb:valueRange".to_string(),
description: "Boiler time constant (Tb) (>= 0). Typical value = 100.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_thp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.thp.is_none() { continue; }
if obj.thp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.thp-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.thp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.thp:valueRange".to_string(),
description: "High pressure (HP) time constant of the turbine (Thp) (>= 0). Typical value = 0,31.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tvhp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tvhp.is_none() { continue; }
if obj.tvhp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tvhp-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tvhp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tvhp:valueRange".to_string(),
description: "Control valves servo time constant (Tvhp) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tf-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tf:valueRange".to_string(),
description: "Frequency transducer time constant (Tf) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tfp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tfp.is_none() { continue; }
if obj.tfp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tfp-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tfp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tfp:valueRange".to_string(),
description: "Time constant of the power controller (Tfp) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_ten_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.ten.is_none() { continue; }
if obj.ten.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.ten-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.ten".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.ten:valueRange".to_string(),
description: "Electro hydraulic transducer (Ten) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tw_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tw.is_none() { continue; }
if obj.tw.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tw-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tw".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tw:valueRange".to_string(),
description: "Speed transducer time constant (Tw) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.mwbase-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_tip_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.tip.is_none() { continue; }
if obj.tip.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.tip-valueRange".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.tip".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.tip:valueRange".to_string(),
description: "Integral time constant of the power controller (Tip) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_gov_steam_eu_wfmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
if obj.wfmin.is_none() || obj.wfmax.is_none() { continue; }
if !((obj.wfmin.unwrap() as f64) < obj.wfmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamEU.wfmin-valueRangePair".to_string(),
class: "GovSteamEU".to_string(),
property: "GovSteamEU.wfmin".to_string(),
message: "The value is either equal to or greater than GovSteamEU.wfmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamEU.wfmin:valueRangePair".to_string(),
description: "Lower limit for frequency correction (Wfmin) (< GovSteamEU.wfmax). Typical value = -0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV2.tc-valueRange".to_string(),
class: "GovSteamFV2".to_string(),
property: "GovSteamFV2.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV2.tc:valueRange".to_string(),
description: "Time after initial time for valve to become fully open (Tc) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV2.t1-valueRange".to_string(),
class: "GovSteamFV2".to_string(),
property: "GovSteamFV2.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV2.t1:valueRange".to_string(),
description: "Governor time constant (T1) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_vmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
if obj.vmin.is_none() || obj.vmax.is_none() { continue; }
if !((obj.vmin.unwrap() as f64) < obj.vmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV2.vmin-valueRangePair".to_string(),
class: "GovSteamFV2".to_string(),
property: "GovSteamFV2.vmin".to_string(),
message: "The value is either equal to or greater than GovSteamFV2.vmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV2.vmin:valueRangePair".to_string(),
description: "(Vmin) (< GovSteamFV2.vmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV2.tb-valueRange".to_string(),
class: "GovSteamFV2".to_string(),
property: "GovSteamFV2.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV2.tb:valueRange".to_string(),
description: "Time after initial time for valve to begin opening (Tb) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV2.ta-valueRange".to_string(),
class: "GovSteamFV2".to_string(),
property: "GovSteamFV2.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV2.ta:valueRange".to_string(),
description: "Time after initial time for valve to close (Ta) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_tt_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
if obj.tt.is_none() { continue; }
if obj.tt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV2.tt-valueRange".to_string(),
class: "GovSteamFV2".to_string(),
property: "GovSteamFV2.tt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV2.tt:valueRange".to_string(),
description: "Time constant with which power falls off after intercept valve closure (Tt) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV2.t3-valueRange".to_string(),
class: "GovSteamFV2".to_string(),
property: "GovSteamFV2.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV2.t3:valueRange".to_string(),
description: "Reheater time constant (T3) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_gov_steam_fv2_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV2.mwbase-valueRange".to_string(),
class: "GovSteamFV2".to_string(),
property: "GovSteamFV2.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV2.mwbase:valueRange".to_string(),
description: "Alternate base used instead of machine base in equipment model if necessary (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.ta-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.ta:valueRange".to_string(),
description: "Time to close intercept valve (IV) (Ta) (>= 0). Typical value = 0,97.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.tb-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.tb:valueRange".to_string(),
description: "Time until IV starts to reopen (Tb) (>= 0). Typical value = 0,98.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.t2-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.t2:valueRange".to_string(),
description: "Governor lag time constant (T2) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.t6-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.t6:valueRange".to_string(),
description: "Time constant of crossover or third boiler pass (T6) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.tc-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.tc:valueRange".to_string(),
description: "Time until IV is fully open (Tc) (>= 0). Typical value = 0,99.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.t4-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.t4:valueRange".to_string(),
description: "Inlet piping/steam bowl time constant (T4) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.pmin-valueRangePair".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.pmin".to_string(),
message: "The value is either equal to or greater than GovSteamFV3.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.pmin:valueRangePair".to_string(),
description: "Minimum valve opening, PU of MWbase (Pmin) (< GovSteamFV3.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.mwbase-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.t1-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.t1:valueRange".to_string(),
description: "Governor lead time constant (T1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_gov_steam_fv3_t3_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV3.t3-valueRange".to_string(),
class: "GovSteamFV3".to_string(),
property: "GovSteamFV3.t3".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV3.t3:valueRange".to_string(),
description: "Valve positioner time constant (T3) (> 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_trh_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.trh.is_none() { continue; }
if obj.trh.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.trh-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.trh".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.trh:valueRange".to_string(),
description: "Reheater time constant of the turbine (Trh) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.tc-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.tc:valueRange".to_string(),
description: "Control valves rate closing time (Tc) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tmp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.tmp.is_none() { continue; }
if obj.tmp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.tmp-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.tmp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.tmp:valueRange".to_string(),
description: "Low pressure (LP) time constant of the turbine (Tmp) (>= 0). Typical value = 0,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.tf2-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.tf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.tf2:valueRange".to_string(),
description: "Time constant of steam chest (Tf2) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tcm_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.tcm.is_none() { continue; }
if obj.tcm.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.tcm-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.tcm".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.tcm:valueRange".to_string(),
description: "Intercept valves rate closing time (Tcm) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tdc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.tdc.is_none() { continue; }
if obj.tdc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.tdc-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.tdc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.tdc:valueRange".to_string(),
description: "Derivative time constant of pressure regulator (Tdc) (>= 0). Typical value = 90.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tam_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.tam.is_none() { continue; }
if obj.tam.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.tam-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.tam".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.tam:valueRange".to_string(),
description: "Intercept valves rate opening time (Tam) (>= 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tf1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.tf1.is_none() { continue; }
if obj.tf1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.tf1-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.tf1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.tf1:valueRange".to_string(),
description: "Time constant of fuel regulation (Tf1) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_tv_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.tv.is_none() { continue; }
if obj.tv.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.tv-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.tv".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.tv:valueRange".to_string(),
description: "Boiler time constant (Tv) (>= 0). Typical value = 60.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_ty_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.ty.is_none() { continue; }
if obj.ty.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.ty-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.ty".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.ty:valueRange".to_string(),
description: "Control valves servo time constant (Ty) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.ta-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.ta:valueRange".to_string(),
description: "Control valves rate opening time (Ta) (>= 0). Typical value = 0,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_gov_steam_fv4_thp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
if obj.thp.is_none() { continue; }
if obj.thp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamFV4.thp-valueRange".to_string(),
class: "GovSteamFV4".to_string(),
property: "GovSteamFV4.thp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamFV4.thp:valueRange".to_string(),
description: "High pressure (HP) time constant of the turbine (Thp) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.t2-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.t2:valueRange".to_string(),
description: "Governor lead time constant (T2) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.pmin-valueRangePair".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.pmin".to_string(),
message: "The value is either equal to or greater than GovSteamIEEE1.pmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.pmin:valueRangePair".to_string(),
description: "Minimum valve opening (Pmin) (>= 0 and < GovSteamIEEE1.pmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.t1-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.t1:valueRange".to_string(),
description: "Governor lag time constant (T1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.t6-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.t6:valueRange".to_string(),
description: "Time constant of third boiler pass (T6) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_uo_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.uo.is_none() { continue; }
if obj.uo.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.uo-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.uo".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.uo:valueRange".to_string(),
description: "Maximum valve opening velocity (Uo) (> 0). Unit = PU / s. Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.t4-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.t4:valueRange".to_string(),
description: "Inlet piping/steam bowl time constant (T4) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t3_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.t3-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.t3".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.t3:valueRange".to_string(),
description: "Valve positioner time constant (T3) (> 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_uc_max_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.uc.is_none() { continue; }
if obj.uc.unwrap() >= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.uc-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.uc".to_string(),
message: "The value is positive or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.uc:valueRange".to_string(),
description: "Maximum valve closing velocity (Uc) (< 0). Unit = PU / s. Typical value = -10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.mwbase-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_k_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.k.is_none() { continue; }
if obj.k.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.k-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.k".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.k:valueRange".to_string(),
description: "Governor gain (reciprocal of droop) (K) (> 0). Typical value = 25.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.t7.is_none() { continue; }
if obj.t7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.t7-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.t7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.t7:valueRange".to_string(),
description: "Time constant of fourth boiler pass (T7) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_gov_steam_ieee1_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamIEEE1.t5-valueRange".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "GovSteamIEEE1.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamIEEE1.t5:valueRange".to_string(),
description: "Time constant of second boiler pass (T5) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.t1-valueRange".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.t1:valueRange".to_string(),
description: "Controller lag (T1) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_pmin_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() { continue; }
if obj.pmin.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.pmin-valueRangePair".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.pmin".to_string(),
message: "The value is either equal to or greater than GovSteamSGO.pmax; or negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.pmin:valueRangePair".to_string(),
description: "Lower power limit (Pmin) (>= 0 and < GovSteamSGO.pmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_pmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.pmin.is_none() || obj.pmax.is_none() { continue; }
if !((obj.pmin.unwrap() as f64) < obj.pmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.pmin-valueRangePair".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.pmin".to_string(),
message: "The value is either equal to or greater than GovSteamSGO.pmax; or negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.pmin:valueRangePair".to_string(),
description: "Lower power limit (Pmin) (>= 0 and < GovSteamSGO.pmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.t5-valueRange".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.t5:valueRange".to_string(),
description: "Reheater delay including hot and cold leads (T5) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.t2-valueRange".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.t2:valueRange".to_string(),
description: "Controller lead compensation (T2) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.t4-valueRange".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.t4:valueRange".to_string(),
description: "Delay due to steam inlet volumes associated with steam chest and inlet piping (T4) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t3_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.t3-valueRange".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.t3".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.t3:valueRange".to_string(),
description: "Governor lag (T3) (> 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.mwbase-valueRange".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_gov_steam_sgo_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:GovSteamSGO.t6-valueRange".to_string(),
class: "GovSteamSGO".to_string(),
property: "GovSteamSGO.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:GovSteamSGO.t6:valueRange".to_string(),
description: "Delay due to IP-LP turbine, crossover pipes and LP end hoods (T6) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_composite_load_composite_pfrac_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadComposite").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadComposite>() {
Some(o) => o, None => continue,
};
if obj.pfrac.is_none() { continue; }
if obj.pfrac.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadComposite.pfrac-valueRange".to_string(),
class: "LoadComposite".to_string(),
property: "LoadComposite.pfrac".to_string(),
message: "The value is outside the range [0,1].".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadComposite.pfrac:valueRange".to_string(),
description: "Fraction of constant-power load to be represented by this motor model (P<sub>FRAC</sub>) (>= 0,0 and <= 1,0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_composite_load_composite_pfrac_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadComposite").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadComposite>() {
Some(o) => o, None => continue,
};
if obj.pfrac.is_none() { continue; }
if obj.pfrac.unwrap() > 1_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadComposite.pfrac-valueRange".to_string(),
class: "LoadComposite".to_string(),
property: "LoadComposite.pfrac".to_string(),
message: "The value is outside the range [0,1].".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadComposite.pfrac:valueRange".to_string(),
description: "Fraction of constant-power load to be represented by this motor model (P<sub>FRAC</sub>) (>= 0,0 and <= 1,0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_composite_load_composite_h_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadComposite").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadComposite>() {
Some(o) => o, None => continue,
};
if obj.h.is_none() { continue; }
if obj.h.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadComposite.h-valueRange".to_string(),
class: "LoadComposite".to_string(),
property: "LoadComposite.h".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadComposite.h:valueRange".to_string(),
description: "Inertia constant (H) (>= 0). Typical value = 2,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_generic_non_linear_load_generic_non_linear_tq_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadGenericNonLinear").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadGenericNonLinear>() {
Some(o) => o, None => continue,
};
if obj.tq.is_none() { continue; }
if obj.tq.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadGenericNonLinear.tq-valueRange".to_string(),
class: "LoadGenericNonLinear".to_string(),
property: "LoadGenericNonLinear.tq".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadGenericNonLinear.tq:valueRange".to_string(),
description: "Time constant of lag function of reactive power (T<sub>Q</sub>) (> 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_generic_non_linear_load_generic_non_linear_tp_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadGenericNonLinear").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadGenericNonLinear>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadGenericNonLinear.tp-valueRange".to_string(),
class: "LoadGenericNonLinear".to_string(),
property: "LoadGenericNonLinear.tp".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadGenericNonLinear.tp:valueRange".to_string(),
description: "Time constant of lag function of active power (T<sub>P</sub>) (> 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_tv_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadMotor").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadMotor>() {
Some(o) => o, None => continue,
};
if obj.tv.is_none() { continue; }
if obj.tv.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadMotor.tv-valueRange".to_string(),
class: "LoadMotor".to_string(),
property: "LoadMotor.tv".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadMotor.tv:valueRange".to_string(),
description: "Voltage trip pickup time (Tv) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_tppo_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadMotor").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadMotor>() {
Some(o) => o, None => continue,
};
if obj.tppo.is_none() { continue; }
if obj.tppo.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadMotor.tppo-valueRange".to_string(),
class: "LoadMotor".to_string(),
property: "LoadMotor.tppo".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadMotor.tppo:valueRange".to_string(),
description: "Subtransient rotor time constant (Tppo) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_tpo_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadMotor").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadMotor>() {
Some(o) => o, None => continue,
};
if obj.tpo.is_none() { continue; }
if obj.tpo.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadMotor.tpo-valueRange".to_string(),
class: "LoadMotor".to_string(),
property: "LoadMotor.tpo".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadMotor.tpo:valueRange".to_string(),
description: "Transient rotor time constant (Tpo) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_tbkr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadMotor").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadMotor>() {
Some(o) => o, None => continue,
};
if obj.tbkr.is_none() { continue; }
if obj.tbkr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadMotor.tbkr-valueRange".to_string(),
class: "LoadMotor".to_string(),
property: "LoadMotor.tbkr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadMotor.tbkr:valueRange".to_string(),
description: "Circuit breaker operating time (Tbkr) (>= 0). Typical value = 0,08.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_pfrac_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadMotor").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadMotor>() {
Some(o) => o, None => continue,
};
if obj.pfrac.is_none() { continue; }
if obj.pfrac.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadMotor.pfrac-valueRange".to_string(),
class: "LoadMotor".to_string(),
property: "LoadMotor.pfrac".to_string(),
message: "The value is outside the range [0,1].".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadMotor.pfrac:valueRange".to_string(),
description: "Fraction of constant-power load to be represented by this motor model (Pfrac) (>= 0,0 and <= 1,0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_pfrac_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadMotor").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadMotor>() {
Some(o) => o, None => continue,
};
if obj.pfrac.is_none() { continue; }
if obj.pfrac.unwrap() > 1_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadMotor.pfrac-valueRange".to_string(),
class: "LoadMotor".to_string(),
property: "LoadMotor.pfrac".to_string(),
message: "The value is outside the range [0,1].".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadMotor.pfrac:valueRange".to_string(),
description: "Fraction of constant-power load to be represented by this motor model (Pfrac) (>= 0,0 and <= 1,0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_load_motor_load_motor_h_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("LoadMotor").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::LoadMotor>() {
Some(o) => o, None => continue,
};
if obj.h.is_none() { continue; }
if obj.h.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:LoadMotor.h-valueRange".to_string(),
class: "LoadMotor".to_string(),
property: "LoadMotor.h".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:LoadMotor.h:valueRange".to_string(),
description: "Inertia constant (H) (>= 0). Typical value = 0,4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_mechanical_load_user_defined_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("MechanicalLoadUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::MechanicalLoadUserDefined>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:MechanicalLoadDynamics".to_string(),
class: "MechanicalLoadUserDefined".to_string(),
property: "C:302:DY:MechanicalLoadDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:MechanicalLoadDynamics:associationsCondition".to_string(),
description: "MechanicalLoadDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_mech_load1_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("MechLoad1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::MechLoad1>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:MechanicalLoadDynamics".to_string(),
class: "MechLoad1".to_string(),
property: "C:302:DY:MechanicalLoadDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:MechanicalLoadDynamics:associationsCondition".to_string(),
description: "MechanicalLoadDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim2_overexc_lim2_voimin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLim2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLim2>() {
Some(o) => o, None => continue,
};
if obj.voimin.is_none() || obj.voimax.is_none() { continue; }
if !((obj.voimin.unwrap() as f64) < obj.voimax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLim2.voimin-valueRangePair".to_string(),
class: "OverexcLim2".to_string(),
property: "OverexcLim2.voimin".to_string(),
message: "The value is either equal to or greater than OverexcLim2.voimax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLim2.voimin:valueRangePair".to_string(),
description: "Minimum error signal (V<sub>OIMIN</sub>) (< OverexcLim2.voimax). Typical value = -9999.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x1_overexc_lim_x1_vlow_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLimX1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLimX1>() {
Some(o) => o, None => continue,
};
if obj.vlow.is_none() { continue; }
if obj.vlow.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLimX1.vlow-valueRange".to_string(),
class: "OverexcLimX1".to_string(),
property: "OverexcLimX1.vlow".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLimX1.vlow:valueRange".to_string(),
description: "Low voltage limit (V<sub>LOW</sub>) (> 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x1_overexc_lim_x1_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLimX1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLimX1>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLimX1.t3-valueRange".to_string(),
class: "OverexcLimX1".to_string(),
property: "OverexcLimX1.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLimX1.t3:valueRange".to_string(),
description: "Time to trip the exciter at the high voltage point on the inverse time characteristic (TIME<sub>3</sub>) (>= 0). Typical value = 15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x1_overexc_lim_x1_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLimX1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLimX1>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLimX1.t2-valueRange".to_string(),
class: "OverexcLimX1".to_string(),
property: "OverexcLimX1.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLimX1.t2:valueRange".to_string(),
description: "Time to trip the exciter at the mid voltage point on the inverse time characteristic (TIME<sub>2</sub>) (>= 0). Typical value = 40.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x1_overexc_lim_x1_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLimX1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLimX1>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLimX1.t1-valueRange".to_string(),
class: "OverexcLimX1".to_string(),
property: "OverexcLimX1.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLimX1.t1:valueRange".to_string(),
description: "Time to trip the exciter at the low voltage point on the inverse time characteristic (TIME<sub>1</sub>) (>= 0). Typical value = 120.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x2_overexc_lim_x2_vlow_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLimX2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLimX2>() {
Some(o) => o, None => continue,
};
if obj.vlow.is_none() { continue; }
if obj.vlow.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLimX2.vlow-valueRange".to_string(),
class: "OverexcLimX2".to_string(),
property: "OverexcLimX2.vlow".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLimX2.vlow:valueRange".to_string(),
description: "Low voltage limit (V<sub>LOW</sub>) (> 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x2_overexc_lim_x2_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLimX2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLimX2>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLimX2.t3-valueRange".to_string(),
class: "OverexcLimX2".to_string(),
property: "OverexcLimX2.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLimX2.t3:valueRange".to_string(),
description: "Time to trip the exciter at the high voltage or current point on the inverse time characteristic (TIME<sub>3</sub>) (>= 0). Typical value = 15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x2_overexc_lim_x2_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLimX2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLimX2>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLimX2.t2-valueRange".to_string(),
class: "OverexcLimX2".to_string(),
property: "OverexcLimX2.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLimX2.t2:valueRange".to_string(),
description: "Time to trip the exciter at the mid voltage or current point on the inverse time characteristic (TIME<sub>2</sub>) (>= 0). Typical value = 40.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_overexc_lim_x2_overexc_lim_x2_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("OverexcLimX2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::OverexcLimX2>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:OverexcLimX2.t1-valueRange".to_string(),
class: "OverexcLimX2".to_string(),
property: "OverexcLimX2.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:OverexcLimX2.t1:valueRange".to_string(),
description: "Time to trip the exciter at the low voltage or current point on the inverse time characteristic (TIME<sub>1</sub>) (>= 0). Typical value = 120.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pfv_ar_type1ieeepf_controller_pfv_ar_type1ieeepf_c_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PFVArType1IEEEPFController").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PFVArType1IEEEPFController>() {
Some(o) => o, None => continue,
};
if obj.vvtmin.is_none() || obj.vvtmax.is_none() { continue; }
if !((obj.vvtmin.unwrap() as f64) < obj.vvtmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PFVArType1IEEEPFController.vvtmin-valueRangePair".to_string(),
class: "PFVArType1IEEEPFController".to_string(),
property: "PFVArType1IEEEPFController.vvtmin".to_string(),
message: "The value is either equal to or greater than PFVArType1IEEEPFController.vvtmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PFVArType1IEEEPFController.vvtmin:valueRangePair".to_string(),
description: "Minimum machine terminal voltage needed to enable pf/var controller (V<sub>VTMIN</sub>) (< PFVArType1IEEEPFController.vvtmax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pfv_ar_type1ieeepf_controller_pfv_ar_type1ieeepf_c_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PFVArType1IEEEPFController").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PFVArType1IEEEPFController>() {
Some(o) => o, None => continue,
};
if obj.tpfc.is_none() { continue; }
if obj.tpfc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PFVArType1IEEEPFController.tpfc-valueRange".to_string(),
class: "PFVArType1IEEEPFController".to_string(),
property: "PFVArType1IEEEPFController.tpfc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PFVArType1IEEEPFController.tpfc:valueRange".to_string(),
description: "PF controller time delay (T<sub>PFC</sub>) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pfv_ar_type1ieeev_ar_controller_pfv_ar_type1ieeev_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PFVArType1IEEEVArController").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PFVArType1IEEEVArController>() {
Some(o) => o, None => continue,
};
if obj.tvarc.is_none() { continue; }
if obj.tvarc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PFVArType1IEEEVArController.tvarc-valueRange".to_string(),
class: "PFVArType1IEEEVArController".to_string(),
property: "PFVArType1IEEEVArController.tvarc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PFVArType1IEEEVArController.tvarc:valueRange".to_string(),
description: "Var controller time delay (T<sub>VARC</sub>) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_tpe_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1>() {
Some(o) => o, None => continue,
};
if obj.tpe.is_none() { continue; }
if obj.tpe.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1.tpe-valueRange".to_string(),
class: "Pss1".to_string(),
property: "Pss1.tpe".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1.tpe:valueRange".to_string(),
description: "Electric power filter time constant (T<sub>PE</sub>) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t9_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1>() {
Some(o) => o, None => continue,
};
if obj.t9.is_none() { continue; }
if obj.t9.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1.t9-valueRange".to_string(),
class: "Pss1".to_string(),
property: "Pss1.t9".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1.t9:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>9</sub>) (>= 0). If = 0, both blocks are bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1>() {
Some(o) => o, None => continue,
};
if obj.t8.is_none() { continue; }
if obj.t8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1.t8-valueRange".to_string(),
class: "Pss1".to_string(),
property: "Pss1.t8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1.t8:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>8</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1>() {
Some(o) => o, None => continue,
};
if obj.t7.is_none() { continue; }
if obj.t7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1.t7-valueRange".to_string(),
class: "Pss1".to_string(),
property: "Pss1.t7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1.t7:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>7</sub>) (>= 0). If = 0, both blocks are bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1.t6-valueRange".to_string(),
class: "Pss1".to_string(),
property: "Pss1.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1.t6:valueRange".to_string(),
description: "Filter time constant (T<sub>6</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1.t5-valueRange".to_string(),
class: "Pss1".to_string(),
property: "Pss1.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1.t5:valueRange".to_string(),
description: "Washout (T<sub>5</sub>) (>= 0). Typical value = 3,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1_pss1_t10_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1>() {
Some(o) => o, None => continue,
};
if obj.t10.is_none() { continue; }
if obj.t10.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1.t10-valueRange".to_string(),
class: "Pss1".to_string(),
property: "Pss1.t10".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1.t10:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>10</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_tdelay_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1A>() {
Some(o) => o, None => continue,
};
if obj.tdelay.is_none() { continue; }
if obj.tdelay.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1A.tdelay-valueRange".to_string(),
class: "Pss1A".to_string(),
property: "Pss1A.tdelay".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1A.tdelay:valueRange".to_string(),
description: "Time constant (Tdelay) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1A>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1A.t1-valueRange".to_string(),
class: "Pss1A".to_string(),
property: "Pss1A.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1A.t1:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>1</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1A>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1A.t4-valueRange".to_string(),
class: "Pss1A".to_string(),
property: "Pss1A.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1A.t4:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>4</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1A>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1A.t3-valueRange".to_string(),
class: "Pss1A".to_string(),
property: "Pss1A.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1A.t3:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>3</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1A>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1A.t2-valueRange".to_string(),
class: "Pss1A".to_string(),
property: "Pss1A.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1A.t2:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>2</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1A>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1A.t5-valueRange".to_string(),
class: "Pss1A".to_string(),
property: "Pss1A.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1A.t5:valueRange".to_string(),
description: "Washout time constant (T<sub>5</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1A.vrmin-valueRangePair".to_string(),
class: "Pss1A".to_string(),
property: "Pss1A.vrmin".to_string(),
message: "The value is either equal to or greater than Pss1A.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1A.vrmin:valueRangePair".to_string(),
description: "Minimum stabilizer output (Vrmin) (< Pss1A.vrmax). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss1a_pss1a_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss1A>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss1A.t6-valueRange".to_string(),
class: "Pss1A".to_string(),
property: "Pss1A.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss1A.t6:valueRange".to_string(),
description: "Transducer time constant (T<sub>6</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.tb-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.tb:valueRange".to_string(),
description: "Lag time constant (T<sub>b</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tw3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.tw3.is_none() { continue; }
if obj.tw3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.tw3-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.tw3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.tw3:valueRange".to_string(),
description: "First washout on signal #2 (T<sub>w3</sub>) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t6-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t6:valueRange".to_string(),
description: "Time constant on signal #1 (T<sub>6</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t2-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t2:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>2</sub>) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t1-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t1:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>1</sub>) (>= 0). Typical value = 0,12.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tw1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.tw1.is_none() { continue; }
if obj.tw1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.tw1-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.tw1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.tw1:valueRange".to_string(),
description: "First washout on signal #1 (T<sub>w1</sub>) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t8.is_none() { continue; }
if obj.t8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t8-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t8:valueRange".to_string(),
description: "Lead of ramp tracking filter (T<sub>8</sub>) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tw4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.tw4.is_none() { continue; }
if obj.tw4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.tw4-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.tw4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.tw4:valueRange".to_string(),
description: "Second washout on signal #2 (T<sub>w4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_vstmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.vstmin.is_none() || obj.vstmax.is_none() { continue; }
if !((obj.vstmin.unwrap() as f64) < obj.vstmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.vstmin-valueRangePair".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.vstmin".to_string(),
message: "The value is either equal to or greater than Pss2B.vstmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.vstmin:valueRangePair".to_string(),
description: "Stabilizer output minimum limit (Vstmin) (< Pss2B.vstmax). Typical value = -0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_tw2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.tw2.is_none() { continue; }
if obj.tw2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.tw2-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.tw2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.tw2:valueRange".to_string(),
description: "Second washout on signal #1 (T<sub>w2</sub>) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.ta-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.ta:valueRange".to_string(),
description: "Lead constant (T<sub>a</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t9_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t9.is_none() { continue; }
if obj.t9.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t9-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t9".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t9:valueRange".to_string(),
description: "Lag of ramp tracking filter (T<sub>9</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t3-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t3:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>3</sub>) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t11_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t11.is_none() { continue; }
if obj.t11.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t11-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t11".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t11:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>11</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_vsi1min_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.vsi1min.is_none() || obj.vsi1max.is_none() { continue; }
if !((obj.vsi1min.unwrap() as f64) < obj.vsi1max.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.vsi1min-valueRangePair".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.vsi1min".to_string(),
message: "The value is either equal to or greater than Pss2B.vsi1max.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.vsi1min:valueRangePair".to_string(),
description: "Input signal #1 minimum limit (Vsi1min) (< Pss2B.vsi1max). Typical value = -2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t10_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t10.is_none() { continue; }
if obj.t10.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t10-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t10".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t10:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>10</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t4-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t4:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>4</sub>) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_t7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.t7.is_none() { continue; }
if obj.t7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.t7-valueRange".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.t7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.t7:valueRange".to_string(),
description: "Time constant on signal #2 (T<sub>7</sub>) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2b_pss2b_vsi2min_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2B>() {
Some(o) => o, None => continue,
};
if obj.vsi2min.is_none() || obj.vsi2max.is_none() { continue; }
if !((obj.vsi2min.unwrap() as f64) < obj.vsi2max.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2B.vsi2min-valueRangePair".to_string(),
class: "Pss2B".to_string(),
property: "Pss2B.vsi2min".to_string(),
message: "The value is either equal to or greater than Pss2B.vsi2max.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2B.vsi2min:valueRangePair".to_string(),
description: "Input signal #2 minimum limit (Vsi2min) (< Pss2B.vsi2max). Typical value = -2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t1-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t1:valueRange".to_string(),
description: "Time constant (T<sub>1</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t4-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t4:valueRange".to_string(),
description: "Time constant (T<sub>4</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t8.is_none() { continue; }
if obj.t8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t8-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t8:valueRange".to_string(),
description: "Time constant (T<sub>8</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t9_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t9.is_none() { continue; }
if obj.t9.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t9-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t9".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t9:valueRange".to_string(),
description: "Time constant (T<sub>9</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t7.is_none() { continue; }
if obj.t7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t7-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t7:valueRange".to_string(),
description: "Time constant (T<sub>7</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t2-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t2:valueRange".to_string(),
description: "Time constant (T<sub>2</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t5-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t5:valueRange".to_string(),
description: "Time constant (T<sub>5</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t3-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t3:valueRange".to_string(),
description: "Time constant (T<sub>3</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t10_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t10.is_none() { continue; }
if obj.t10.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t10-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t10".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t10:valueRange".to_string(),
description: "Time constant (T<sub>10</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_lsmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.lsmin.is_none() || obj.lsmax.is_none() { continue; }
if !((obj.lsmin.unwrap() as f64) < obj.lsmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.lsmin-valueRangePair".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.lsmin".to_string(),
message: "The value is either equal to or greater than Pss2ST.lsmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.lsmin:valueRangePair".to_string(),
description: "Limiter (L<sub>SMIN</sub>) (< Pss2ST.lsmax). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.t6-valueRange".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.t6:valueRange".to_string(),
description: "Time constant (T<sub>6</sub>) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_input_signal1type_in(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
const ALLOWED: &[&str] = &["InputSignalKind.busVoltage", "InputSignalKind.generatorElectricalPower", "InputSignalKind.generatorAcceleratingPower", "InputSignalKind.busVoltageDerivative", "InputSignalKind.rotorAngularFrequencyDeviation", "InputSignalKind.busFrequencyDeviation"];
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.input_signal1type.is_none() { continue; }
if !ALLOWED.contains(&obj.input_signal1type.as_ref().map_or("", |u| u.uri.as_str())) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.inputSignal1Type-allowedValues".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.inputSignal1Type".to_string(),
message: "Not allowed value for input signal #1.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.inputSignal1Type:allowedValues".to_string(),
description: "Type of input signal #1 (rotorAngularFrequencyDeviation, busFrequencyDeviation, generatorElectricalPower, generatorAcceleratingPower, busVoltage, or busVoltageDerivative). Typical value = rotorAngularFrequencyDeviation.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss2st_pss2st_input_signal2type_in(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
const ALLOWED: &[&str] = &["InputSignalKind.busVoltage", "InputSignalKind.generatorElectricalPower", "InputSignalKind.generatorAcceleratingPower", "InputSignalKind.busVoltageDerivative", "InputSignalKind.rotorAngularFrequencyDeviation", "InputSignalKind.busFrequencyDeviation"];
for mrid in dataset.by_type.get("Pss2ST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss2ST>() {
Some(o) => o, None => continue,
};
if obj.input_signal2type.is_none() { continue; }
if !ALLOWED.contains(&obj.input_signal2type.as_ref().map_or("", |u| u.uri.as_str())) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss2ST.inputSignal2Type-allowedValues".to_string(),
class: "Pss2ST".to_string(),
property: "Pss2ST.inputSignal2Type".to_string(),
message: "Not allowed value for input signal #2.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss2ST.inputSignal2Type:allowedValues".to_string(),
description: "Type of input signal #2 (rotorAngularFrequencyDeviation, busFrequencyDeviation, generatorElectricalPower, generatorAcceleratingPower, busVoltage, or busVoltageDerivative - shall be different than Pss2ST.inputSignal1Type). Typical value = busVoltageDerivative.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tw2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss5").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss5>() {
Some(o) => o, None => continue,
};
if obj.tw2.is_none() { continue; }
if obj.tw2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss5.tw2-valueRange".to_string(),
class: "Pss5".to_string(),
property: "Pss5.tw2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss5.tw2:valueRange".to_string(),
description: "Second washout (T<sub>W2</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tw1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss5").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss5>() {
Some(o) => o, None => continue,
};
if obj.tw1.is_none() { continue; }
if obj.tw1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss5.tw1-valueRange".to_string(),
class: "Pss5".to_string(),
property: "Pss5.tw1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss5.tw1:valueRange".to_string(),
description: "First washout (T<sub>W1</sub>) (>= 0). Typical value = 3,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tpe_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss5").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss5>() {
Some(o) => o, None => continue,
};
if obj.tpe.is_none() { continue; }
if obj.tpe.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss5.tpe-valueRange".to_string(),
class: "Pss5".to_string(),
property: "Pss5.tpe".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss5.tpe:valueRange".to_string(),
description: "Electric power filter time constant (T<sub>PE</sub>) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tl4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss5").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss5>() {
Some(o) => o, None => continue,
};
if obj.tl4.is_none() { continue; }
if obj.tl4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss5.tl4-valueRange".to_string(),
class: "Pss5".to_string(),
property: "Pss5.tl4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss5.tl4:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>L4</sub>) (>= 0). If = 0, both blocks are bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tl3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss5").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss5>() {
Some(o) => o, None => continue,
};
if obj.tl3.is_none() { continue; }
if obj.tl3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss5.tl3-valueRange".to_string(),
class: "Pss5".to_string(),
property: "Pss5.tl3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss5.tl3:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>L3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tl2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss5").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss5>() {
Some(o) => o, None => continue,
};
if obj.tl2.is_none() { continue; }
if obj.tl2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss5.tl2-valueRange".to_string(),
class: "Pss5".to_string(),
property: "Pss5.tl2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss5.tl2:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>L2</sub>) (>= 0). If = 0, both blocks are bypassed. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss5_pss5_tl1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("Pss5").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::Pss5>() {
Some(o) => o, None => continue,
};
if obj.tl1.is_none() { continue; }
if obj.tl1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:Pss5.tl1-valueRange".to_string(),
class: "Pss5".to_string(),
property: "Pss5.tl1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:Pss5.tl1:valueRange".to_string(),
description: "Lead/lag time constant (T<sub>L1</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssELIN2>() {
Some(o) => o, None => continue,
};
if obj.ts6.is_none() { continue; }
if obj.ts6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssELIN2.ts6-valueRange".to_string(),
class: "PssELIN2".to_string(),
property: "PssELIN2.ts6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssELIN2.ts6:valueRange".to_string(),
description: "Time constant (Ts6) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssELIN2>() {
Some(o) => o, None => continue,
};
if obj.ts5.is_none() { continue; }
if obj.ts5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssELIN2.ts5-valueRange".to_string(),
class: "PssELIN2".to_string(),
property: "PssELIN2.ts5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssELIN2.ts5:valueRange".to_string(),
description: "Time constant (Ts5) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssELIN2>() {
Some(o) => o, None => continue,
};
if obj.ts4.is_none() { continue; }
if obj.ts4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssELIN2.ts4-valueRange".to_string(),
class: "PssELIN2".to_string(),
property: "PssELIN2.ts4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssELIN2.ts4:valueRange".to_string(),
description: "Time constant (Ts4) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssELIN2>() {
Some(o) => o, None => continue,
};
if obj.ts3.is_none() { continue; }
if obj.ts3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssELIN2.ts3-valueRange".to_string(),
class: "PssELIN2".to_string(),
property: "PssELIN2.ts3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssELIN2.ts3:valueRange".to_string(),
description: "Time constant (Ts3) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssELIN2>() {
Some(o) => o, None => continue,
};
if obj.ts2.is_none() { continue; }
if obj.ts2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssELIN2.ts2-valueRange".to_string(),
class: "PssELIN2".to_string(),
property: "PssELIN2.ts2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssELIN2.ts2:valueRange".to_string(),
description: "Time constant (Ts2) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ts1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssELIN2>() {
Some(o) => o, None => continue,
};
if obj.ts1.is_none() { continue; }
if obj.ts1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssELIN2.ts1-valueRange".to_string(),
class: "PssELIN2".to_string(),
property: "PssELIN2.ts1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssELIN2.ts1:valueRange".to_string(),
description: "Time constant (Ts1) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ppss_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssELIN2>() {
Some(o) => o, None => continue,
};
if obj.ppss.is_none() { continue; }
if obj.ppss.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssELIN2.ppss-valueRange".to_string(),
class: "PssELIN2".to_string(),
property: "PssELIN2.ppss".to_string(),
message: "The value is outside the range [0,4].".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssELIN2.ppss:valueRange".to_string(),
description: "Coefficient (p_PSS) (>= 0 and <= 4). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_elin2_pss_elin2_ppss_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssELIN2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssELIN2>() {
Some(o) => o, None => continue,
};
if obj.ppss.is_none() { continue; }
if obj.ppss.unwrap() > 4_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssELIN2.ppss-valueRange".to_string(),
class: "PssELIN2".to_string(),
property: "PssELIN2.ppss".to_string(),
message: "The value is outside the range [0,4].".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssELIN2.ppss:valueRange".to_string(),
description: "Coefficient (p_PSS) (>= 0 and <= 4). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_vrmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE1A>() {
Some(o) => o, None => continue,
};
if obj.vrmin.is_none() || obj.vrmax.is_none() { continue; }
if !((obj.vrmin.unwrap() as f64) < obj.vrmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE1A.vrmin-valueRangePair".to_string(),
class: "PssIEEE1A".to_string(),
property: "PssIEEE1A.vrmin".to_string(),
message: "The value is either equal to or greater than PssIEEE1A.vrmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE1A.vrmin:valueRangePair".to_string(),
description: "Minimum stabilizer output (Vrmin) (< PssIEEE1A.vrmax). Typical value = -0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE1A>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE1A.t6-valueRange".to_string(),
class: "PssIEEE1A".to_string(),
property: "PssIEEE1A.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE1A.t6:valueRange".to_string(),
description: "Transducer time constant (T6) (>= 0). Typical value = 0,01.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE1A>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE1A.t5-valueRange".to_string(),
class: "PssIEEE1A".to_string(),
property: "PssIEEE1A.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE1A.t5:valueRange".to_string(),
description: "Washout time constant (T5) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE1A>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE1A.t4-valueRange".to_string(),
class: "PssIEEE1A".to_string(),
property: "PssIEEE1A.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE1A.t4:valueRange".to_string(),
description: "Lead/lag time constant (T4) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE1A>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE1A.t3-valueRange".to_string(),
class: "PssIEEE1A".to_string(),
property: "PssIEEE1A.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE1A.t3:valueRange".to_string(),
description: "Lead/lag time constant (T3) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE1A>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE1A.t2-valueRange".to_string(),
class: "PssIEEE1A".to_string(),
property: "PssIEEE1A.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE1A.t2:valueRange".to_string(),
description: "Lead/lag time constant (T2) (>= 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE1A>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE1A.t1-valueRange".to_string(),
class: "PssIEEE1A".to_string(),
property: "PssIEEE1A.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE1A.t1:valueRange".to_string(),
description: "Lead/lag time constant (T1) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee1a_pss_ieee1a_input_signal_type_in(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
const ALLOWED: &[&str] = &["InputSignalKind.generatorElectricalPower", "InputSignalKind.rotorAngularFrequencyDeviation", "InputSignalKind.busFrequencyDeviation"];
for mrid in dataset.by_type.get("PssIEEE1A").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE1A>() {
Some(o) => o, None => continue,
};
if obj.input_signal_type.is_none() { continue; }
if !ALLOWED.contains(&obj.input_signal_type.as_ref().map_or("", |u| u.uri.as_str())) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE1A.inputSignalType-allowedValues".to_string(),
class: "PssIEEE1A".to_string(),
property: "PssIEEE1A.inputSignalType".to_string(),
message: "Not allowed value for input signal.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE1A.inputSignalType:allowedValues".to_string(),
description: "Type of input signal (rotorAngularFrequencyDeviation, generatorElectricalPower, or busFrequencyDeviation). Typical value = rotorAngularFrequencyDeviation.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_vstmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.vstmin.is_none() || obj.vstmax.is_none() { continue; }
if !((obj.vstmin.unwrap() as f64) < obj.vstmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.vstmin-valueRangePair".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.vstmin".to_string(),
message: "The value is either equal to or greater than PssIEEE2B.vstmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.vstmin:valueRangePair".to_string(),
description: "Stabilizer output minimum limit (Vstmin) (< PssIEEE2B.vstmax). Typical value = -0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_vsi2min_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.vsi2min.is_none() || obj.vsi2max.is_none() { continue; }
if !((obj.vsi2min.unwrap() as f64) < obj.vsi2max.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.vsi2min-valueRangePair".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.vsi2min".to_string(),
message: "The value is either equal to or greater than PssIEEE2B.vsi2max.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.vsi2min:valueRangePair".to_string(),
description: "Input signal #2 minimum limit (Vsi2min) (< PssIEEE2B.vsi2max). Typical value = -2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t4-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t4:valueRange".to_string(),
description: "Lead/lag time constant (T4) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t7.is_none() { continue; }
if obj.t7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t7-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t7:valueRange".to_string(),
description: "Time constant on signal #2 (T7) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t9_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t9.is_none() { continue; }
if obj.t9.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t9-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t9".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t9:valueRange".to_string(),
description: "Lag of ramp tracking filter (T9) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_tw4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.tw4.is_none() { continue; }
if obj.tw4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.tw4-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.tw4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.tw4:valueRange".to_string(),
description: "Second washout on signal #2 (Tw4) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_tw1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.tw1.is_none() { continue; }
if obj.tw1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.tw1-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.tw1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.tw1:valueRange".to_string(),
description: "First washout on signal #1 (Tw1) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_tw2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.tw2.is_none() { continue; }
if obj.tw2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.tw2-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.tw2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.tw2:valueRange".to_string(),
description: "Second washout on signal #1 (Tw2) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_vsi1min_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.vsi1min.is_none() || obj.vsi1max.is_none() { continue; }
if !((obj.vsi1min.unwrap() as f64) < obj.vsi1max.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.vsi1min-valueRangePair".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.vsi1min".to_string(),
message: "The value is either equal to or greater than PssIEEE2B.vsi1max.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.vsi1min:valueRangePair".to_string(),
description: "Input signal #1 minimum limit (Vsi1min) (< PssIEEE2B.vsi1max). Typical value = -2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t2-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t2:valueRange".to_string(),
description: "Lead/lag time constant (T2) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t6-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t6:valueRange".to_string(),
description: "Time constant on signal #1 (T6) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t10_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t10.is_none() { continue; }
if obj.t10.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t10-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t10".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t10:valueRange".to_string(),
description: "Lead/lag time constant (T10) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t1-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t1:valueRange".to_string(),
description: "Lead/lag time constant (T1) (>= 0). Typical value = 0,12.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_tw3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.tw3.is_none() { continue; }
if obj.tw3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.tw3-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.tw3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.tw3:valueRange".to_string(),
description: "First washout on signal #2 (Tw3) (>= 0). Typical value = 2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t8.is_none() { continue; }
if obj.t8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t8-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t8:valueRange".to_string(),
description: "Lead of ramp tracking filter (T8) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t11_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t11.is_none() { continue; }
if obj.t11.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t11-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t11".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t11:valueRange".to_string(),
description: "Lead/lag time constant (T11) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.t3-valueRange".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.t3:valueRange".to_string(),
description: "Lead/lag time constant (T3) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_input_signal1type_in(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
const ALLOWED: &[&str] = &["InputSignalKind.rotorAngularFrequencyDeviation", "InputSignalKind.busFrequencyDeviation"];
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.input_signal1type.is_none() { continue; }
if !ALLOWED.contains(&obj.input_signal1type.as_ref().map_or("", |u| u.uri.as_str())) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.inputSignal1Type-allowedValues".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.inputSignal1Type".to_string(),
message: "Not allowed value for input signal #1.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.inputSignal1Type:allowedValues".to_string(),
description: "Type of input signal #1 (rotorAngularFrequencyDeviation, busFrequencyDeviation). Typical value = rotorAngularFrequencyDeviation.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee2b_pss_ieee2b_input_signal2type_has_value(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE2B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE2B>() {
Some(o) => o, None => continue,
};
if obj.input_signal2type.as_ref().map_or(true, |u| u.uri != "InputSignalKind.generatorElectricalPower") {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE2B.inputSignal2Type-allowedValues".to_string(),
class: "PssIEEE2B".to_string(),
property: "PssIEEE2B.inputSignal2Type".to_string(),
message: "Not allowed value for input signal #2.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE2B.inputSignal2Type:allowedValues".to_string(),
description: "Type of input signal #2 (generatorElectricalPower). Typical value = generatorElectricalPower.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_vstmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE3B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE3B>() {
Some(o) => o, None => continue,
};
if obj.vstmin.is_none() || obj.vstmax.is_none() { continue; }
if !((obj.vstmin.unwrap() as f64) < obj.vstmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE3B.vstmin-valueRangePair".to_string(),
class: "PssIEEE3B".to_string(),
property: "PssIEEE3B.vstmin".to_string(),
message: "The value is either equal to or greater than PssIEEE3B.vstmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE3B.vstmin:valueRangePair".to_string(),
description: "Stabilizer output minimum limit (Vstmin) (< PssIEEE3B.vstmax). Typical value = -0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_tw3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE3B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE3B>() {
Some(o) => o, None => continue,
};
if obj.tw3.is_none() { continue; }
if obj.tw3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE3B.tw3-valueRange".to_string(),
class: "PssIEEE3B".to_string(),
property: "PssIEEE3B.tw3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE3B.tw3:valueRange".to_string(),
description: "Washout time constant (Tw3) (>= 0). Typical value = 0,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_tw2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE3B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE3B>() {
Some(o) => o, None => continue,
};
if obj.tw2.is_none() { continue; }
if obj.tw2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE3B.tw2-valueRange".to_string(),
class: "PssIEEE3B".to_string(),
property: "PssIEEE3B.tw2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE3B.tw2:valueRange".to_string(),
description: "Washout time constant (Tw2) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_tw1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE3B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE3B>() {
Some(o) => o, None => continue,
};
if obj.tw1.is_none() { continue; }
if obj.tw1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE3B.tw1-valueRange".to_string(),
class: "PssIEEE3B".to_string(),
property: "PssIEEE3B.tw1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE3B.tw1:valueRange".to_string(),
description: "Washout time constant (Tw1) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE3B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE3B>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE3B.t2-valueRange".to_string(),
class: "PssIEEE3B".to_string(),
property: "PssIEEE3B.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE3B.t2:valueRange".to_string(),
description: "Transducer time constant (T2) (>= 0). Typical value = 0,012.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee3b_pss_ieee3b_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE3B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE3B>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE3B.t1-valueRange".to_string(),
class: "PssIEEE3B".to_string(),
property: "PssIEEE3B.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE3B.t1:valueRange".to_string(),
description: "Transducer time constant (T1) (>= 0). Typical value = 0,012.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl5.is_none() { continue; }
if obj.tl5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl5-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl5:valueRange".to_string(),
description: "Low band time constant (T<sub>L5</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl7.is_none() { continue; }
if obj.tl7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl7-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl7:valueRange".to_string(),
description: "Low band time constant (T<sub>L7</sub>) (>= 0). Typical value = 2,075.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl11_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl11.is_none() { continue; }
if obj.tl11.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl11-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl11".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl11:valueRange".to_string(),
description: "Low band time constant (T<sub>L11</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th10_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th10.is_none() { continue; }
if obj.th10.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th10-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th10".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th10:valueRange".to_string(),
description: "High band time constant (T<sub>H10</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_vlmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.vlmin.is_none() || obj.vlmax.is_none() { continue; }
if !((obj.vlmin.unwrap() as f64) < obj.vlmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.vlmin-valueRangePair".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.vlmin".to_string(),
message: "The value is either equal to or greater than PssIEEE4B.vlmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.vlmin:valueRangePair".to_string(),
description: "Low band output minimum limit (V<sub>Lmin</sub>) (< PssIEEE4B.vlmax). Typical value = -0,075.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th9_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th9.is_none() { continue; }
if obj.th9.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th9-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th9".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th9:valueRange".to_string(),
description: "High band time constant (T<sub>H9</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_vstmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.vstmin.is_none() || obj.vstmax.is_none() { continue; }
if !((obj.vstmin.unwrap() as f64) < obj.vstmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.vstmin-valueRangePair".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.vstmin".to_string(),
message: "The value is either equal to or greater than PssIEEE4B.vstmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.vstmin:valueRangePair".to_string(),
description: "PSS output minimum limit (V<sub>STmin</sub>) (< PssIEEE4B.vstmax). Typical value = -0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti5.is_none() { continue; }
if obj.ti5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti5-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti5:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I5</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th7.is_none() { continue; }
if obj.th7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th7-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th7:valueRange".to_string(),
description: "High band time constant (T<sub>H7</sub>) (>= 0). Typical value = 0,01816.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti12_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti12.is_none() { continue; }
if obj.ti12.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti12-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti12".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti12:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I12</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th5.is_none() { continue; }
if obj.th5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th5-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th5:valueRange".to_string(),
description: "High band time constant (T<sub>H5</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti10_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti10.is_none() { continue; }
if obj.ti10.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti10-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti10".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti10:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I10</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti9_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti9.is_none() { continue; }
if obj.ti9.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti9-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti9".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti9:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I9</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl1.is_none() { continue; }
if obj.tl1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl1-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl1:valueRange".to_string(),
description: "Low band time constant (T<sub>L1</sub>) (>= 0). Typical value = 1,73.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti7.is_none() { continue; }
if obj.ti7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti7-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti7:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I7</sub>) (>= 0). Typical value = 0,2075.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th4.is_none() { continue; }
if obj.th4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th4-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th4:valueRange".to_string(),
description: "High band time constant (T<sub>H4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti8.is_none() { continue; }
if obj.ti8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti8-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti8:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I8</sub>) (>= 0). Typical value = 0,2491.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti6.is_none() { continue; }
if obj.ti6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti6-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti6:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I6</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl2.is_none() { continue; }
if obj.tl2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl2-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl2:valueRange".to_string(),
description: "Low band time constant (T<sub>L2</sub>) (>= 0). Typical value = 2,075.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl3.is_none() { continue; }
if obj.tl3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl3-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl3:valueRange".to_string(),
description: "Low band time constant (T<sub>L3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th8.is_none() { continue; }
if obj.th8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th8-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th8:valueRange".to_string(),
description: "High band time constant (T<sub>H8</sub>) (>= 0). Typical value = 0,02179.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti11_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti11.is_none() { continue; }
if obj.ti11.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti11-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti11".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti11:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I11</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl12_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl12.is_none() { continue; }
if obj.tl12.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl12-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl12".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl12:valueRange".to_string(),
description: "Low band time constant (T<sub>L12</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th11_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th11.is_none() { continue; }
if obj.th11.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th11-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th11".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th11:valueRange".to_string(),
description: "High band time constant (T<sub>H11</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti3.is_none() { continue; }
if obj.ti3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti3-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti3:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th3.is_none() { continue; }
if obj.th3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th3-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th3:valueRange".to_string(),
description: "High band time constant (T<sub>H3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th1.is_none() { continue; }
if obj.th1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th1-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th1:valueRange".to_string(),
description: "High band time constant (T<sub>H1</sub>) (>= 0). Typical value = 0,01513.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl4.is_none() { continue; }
if obj.tl4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl4-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl4:valueRange".to_string(),
description: "Low band time constant (T<sub>L4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl6.is_none() { continue; }
if obj.tl6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl6-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl6:valueRange".to_string(),
description: "Low band time constant (T<sub>L6</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_vimin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.vimin.is_none() || obj.vimax.is_none() { continue; }
if !((obj.vimin.unwrap() as f64) < obj.vimax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.vimin-valueRangePair".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.vimin".to_string(),
message: "The value is either equal to or greater than PssIEEE4B.vimax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.vimin:valueRangePair".to_string(),
description: "Intermediate band output minimum limit (V<sub>Imin</sub>) (< PssIEEE4B.vimax). Typical value = -0,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl9_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl9.is_none() { continue; }
if obj.tl9.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl9-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl9".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl9:valueRange".to_string(),
description: "Low band time constant (T<sub>L9</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl10_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl10.is_none() { continue; }
if obj.tl10.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl10-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl10".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl10:valueRange".to_string(),
description: "Low band time constant (T<sub>L10</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_tl8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.tl8.is_none() { continue; }
if obj.tl8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.tl8-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.tl8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.tl8:valueRange".to_string(),
description: "Low band time constant (T<sub>L8</sub>) (>= 0). Typical value = 2,491.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th12_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th12.is_none() { continue; }
if obj.th12.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th12-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th12".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th12:valueRange".to_string(),
description: "High band time constant (T<sub>H12</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th6.is_none() { continue; }
if obj.th6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th6-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th6:valueRange".to_string(),
description: "High band time constant (T<sub>H6</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti4.is_none() { continue; }
if obj.ti4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti4-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti4:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti1.is_none() { continue; }
if obj.ti1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti1-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti1:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I1</sub>) (>= 0). Typical value = 0,173.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_ti2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.ti2.is_none() { continue; }
if obj.ti2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.ti2-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.ti2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.ti2:valueRange".to_string(),
description: "Intermediate band time constant (T<sub>I2</sub>) (>= 0). Typical value = 0,2075.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ieee4b_pss_ieee4b_th2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssIEEE4B").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssIEEE4B>() {
Some(o) => o, None => continue,
};
if obj.th2.is_none() { continue; }
if obj.th2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssIEEE4B.th2-valueRange".to_string(),
class: "PssIEEE4B".to_string(),
property: "PssIEEE4B.th2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssIEEE4B.th2:valueRange".to_string(),
description: "High band time constant (T<sub>H2</sub>) (>= 0). Typical value = 0,01816.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.tf-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.tf:valueRange".to_string(),
description: "Time constant (Tf) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.t1-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.t1:valueRange".to_string(),
description: "Time constant (T1) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.t3-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.t3:valueRange".to_string(),
description: "Time constant (T3) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.t2-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.t2:valueRange".to_string(),
description: "Time constant (T2) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.t4-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.t4:valueRange".to_string(),
description: "Time constant (T4) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.tp-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.tp:valueRange".to_string(),
description: "Time constant (Tp) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_dtc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.dtc.is_none() { continue; }
if obj.dtc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.dtc-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.dtc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.dtc:valueRange".to_string(),
description: "Time step related to activation of controls (deltatc) (>= 0). Typical value = 0,025.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_dtf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.dtf.is_none() { continue; }
if obj.dtf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.dtf-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.dtf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.dtf:valueRange".to_string(),
description: "Time step frequency calculation (deltatf) (>= 0). Typical value = 0,025.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist1_pss_ptist1_dtp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST1>() {
Some(o) => o, None => continue,
};
if obj.dtp.is_none() { continue; }
if obj.dtp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST1.dtp-valueRange".to_string(),
class: "PssPTIST1".to_string(),
property: "PssPTIST1.dtp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST1.dtp:valueRange".to_string(),
description: "Time step active power calculation (deltatp) (>= 0). Typical value = 0,0125.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_nav_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.nav.is_none() { continue; }
if obj.nav.unwrap() < 1_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.nav-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.nav".to_string(),
message: "The value is outside the range [1,16].".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.nav:valueRange".to_string(),
description: "Number of control outputs to average (NAV) (1 <= NAV <= 16). Typical value = 4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_nav_max_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.nav.is_none() { continue; }
if obj.nav.unwrap() > 16_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.nav-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.nav".to_string(),
message: "The value is outside the range [1,16].".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.nav:valueRange".to_string(),
description: "Number of control outputs to average (NAV) (1 <= NAV <= 16). Typical value = 4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.t3-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.t3:valueRange".to_string(),
description: "Time constant (T3) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.t5-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.t5:valueRange".to_string(),
description: "Time constant (T5) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_dtc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.dtc.is_none() { continue; }
if obj.dtc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.dtc-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.dtc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.dtc:valueRange".to_string(),
description: "Time step related to activation of controls (deltatc) (>= 0). Typical value = 0,025 (0,03 for 50 Hz).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_ncl_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.ncl.is_none() { continue; }
if obj.ncl.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.ncl-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.ncl".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.ncl:valueRange".to_string(),
description: "Number of counts at limit to active limit function (NCL) (> 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_tp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.tp.is_none() { continue; }
if obj.tp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.tp-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.tp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.tp:valueRange".to_string(),
description: "Time constant (Tp) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_dtf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.dtf.is_none() { continue; }
if obj.dtf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.dtf-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.dtf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.dtf:valueRange".to_string(),
description: "Time step frequency calculation (deltatf) (>= 0). Typical value = 0,025 (0,03 for 50 Hz).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_tf_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.tf.is_none() { continue; }
if obj.tf.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.tf-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.tf".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.tf:valueRange".to_string(),
description: "Time constant (Tf) (>= 0). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.t4-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.t4:valueRange".to_string(),
description: "Time constant (T4) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.t2-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.t2:valueRange".to_string(),
description: "Time constant (T2) (>= 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.t1-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.t1:valueRange".to_string(),
description: "Time constant (T1) (>= 0). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_dtp_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.dtp.is_none() { continue; }
if obj.dtp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.dtp-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.dtp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.dtp:valueRange".to_string(),
description: "Time step active power calculation (deltatp) (>= 0). Typical value = 0,0125 (0,015 for 50 Hz).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_ptist3_pss_ptist3_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssPTIST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssPTIST3>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssPTIST3.t6-valueRange".to_string(),
class: "PssPTIST3".to_string(),
property: "PssPTIST3.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssPTIST3.t6:valueRange".to_string(),
description: "Time constant (T6) (>= 0). ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_tomsl_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssRQB>() {
Some(o) => o, None => continue,
};
if obj.tomsl.is_none() { continue; }
if obj.tomsl.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssRQB.tomsl-valueRange".to_string(),
class: "PssRQB".to_string(),
property: "PssRQB.tomsl".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssRQB.tomsl:valueRange".to_string(),
description: "Speed time constant (TOMSL) (>= 0). Typical value = 0,04.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_tomd_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssRQB>() {
Some(o) => o, None => continue,
};
if obj.tomd.is_none() { continue; }
if obj.tomd.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssRQB.tomd-valueRange".to_string(),
class: "PssRQB".to_string(),
property: "PssRQB.tomd".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssRQB.tomd:valueRange".to_string(),
description: "Speed delay (TOMD) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_t4mom_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssRQB>() {
Some(o) => o, None => continue,
};
if obj.t4mom.is_none() { continue; }
if obj.t4mom.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssRQB.t4mom-valueRange".to_string(),
class: "PssRQB".to_string(),
property: "PssRQB.t4mom".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssRQB.t4mom:valueRange".to_string(),
description: "Speed time constant (T4MOM) (>= 0). Typical value = 1,27.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_t4m_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssRQB>() {
Some(o) => o, None => continue,
};
if obj.t4m.is_none() { continue; }
if obj.t4m.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssRQB.t4m-valueRange".to_string(),
class: "PssRQB".to_string(),
property: "PssRQB.t4m".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssRQB.t4m:valueRange".to_string(),
description: "Input time constant (T4M) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_rqb_pss_rqb_t4f_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssRQB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssRQB>() {
Some(o) => o, None => continue,
};
if obj.t4f.is_none() { continue; }
if obj.t4f.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssRQB.t4f-valueRange".to_string(),
class: "PssRQB".to_string(),
property: "PssRQB.t4f".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssRQB.t4f:valueRange".to_string(),
description: "Lead lag time constant (T4F) (>= 0). Typical value = 0,045.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_vsmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.vsmin.is_none() || obj.vsmax.is_none() { continue; }
if !((obj.vsmin.unwrap() as f64) < obj.vsmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.vsmin-valueRangePair".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.vsmin".to_string(),
message: "The value is either equal to or greater than PssSB4.vsmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.vsmin:valueRangePair".to_string(),
description: "Limiter (Vsmin) (< PssSB4.vsmax). Typical value = -0,062.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.tc-valueRange".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.tc:valueRange".to_string(),
description: "Time constant (Tc) (>= 0). Typical value = 0,035.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_te_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.te.is_none() { continue; }
if obj.te.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.te-valueRange".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.te".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.te:valueRange".to_string(),
description: "Time constant (Te) (>= 0). Typical value = 0,0169.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tt_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.tt.is_none() { continue; }
if obj.tt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.tt-valueRange".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.tt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.tt:valueRange".to_string(),
description: "Time constant (Tt) (>= 0). Typical value = 0,18.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_ta_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.ta.is_none() { continue; }
if obj.ta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.ta-valueRange".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.ta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.ta:valueRange".to_string(),
description: "Time constant (Ta) (>= 0). Typical value = 0,37.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tx1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.tx1.is_none() { continue; }
if obj.tx1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.tx1-valueRange".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.tx1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.tx1:valueRange".to_string(),
description: "Reset time constant (Tx1) (>= 0). Typical value = 0,035.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.td-valueRange".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.td:valueRange".to_string(),
description: "Time constant (Td) (>= 0). Typical value = 0,0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tx2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.tx2.is_none() { continue; }
if obj.tx2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.tx2-valueRange".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.tx2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.tx2:valueRange".to_string(),
description: "Time constant (Tx2) (>= 0). Typical value = 5,0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sb4_pss_sb4_tb_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSB4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSB4>() {
Some(o) => o, None => continue,
};
if obj.tb.is_none() { continue; }
if obj.tb.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSB4.tb-valueRange".to_string(),
class: "PssSB4".to_string(),
property: "PssSB4.tb".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSB4.tb:valueRange".to_string(),
description: "Time constant (Tb) (>= 0). Typical value = 0,37.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_vsmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSH>() {
Some(o) => o, None => continue,
};
if obj.vsmin.is_none() || obj.vsmax.is_none() { continue; }
if !((obj.vsmin.unwrap() as f64) < obj.vsmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSH.vsmin-valueRangePair".to_string(),
class: "PssSH".to_string(),
property: "PssSH.vsmin".to_string(),
message: "The value is either equal to or greater than PssSH.vsmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSH.vsmin:valueRangePair".to_string(),
description: "Output minimum limit (Vsmin) (< PssSH.vsmax). Typical value = -0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_td_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSH>() {
Some(o) => o, None => continue,
};
if obj.td.is_none() { continue; }
if obj.td.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSH.td-valueRange".to_string(),
class: "PssSH".to_string(),
property: "PssSH.td".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSH.td:valueRange".to_string(),
description: "Input time constant (T<sub>d</sub>) (>= 0). Typical value = 10.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_t4_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSH>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSH.t4-valueRange".to_string(),
class: "PssSH".to_string(),
property: "PssSH.t4".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSH.t4:valueRange".to_string(),
description: "Time constant 4 (T4) (> 0). Typical value = 1,913.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_t3_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSH>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSH.t3-valueRange".to_string(),
class: "PssSH".to_string(),
property: "PssSH.t3".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSH.t3:valueRange".to_string(),
description: "Time constant 3 (T3) (> 0). Typical value = 1,068.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_t2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSH>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSH.t2-valueRange".to_string(),
class: "PssSH".to_string(),
property: "PssSH.t2".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSH.t2:valueRange".to_string(),
description: "Time constant 2 (T2) (> 0). Typical value = 0,086.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sh_pss_sh_t1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSH>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSH.t1-valueRange".to_string(),
class: "PssSH".to_string(),
property: "PssSH.t1".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSH.t1:valueRange".to_string(),
description: "Time constant 1 (T1) (> 0). Typical value = 0,076.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_vsmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSK>() {
Some(o) => o, None => continue,
};
if obj.vsmin.is_none() || obj.vsmax.is_none() { continue; }
if !((obj.vsmin.unwrap() as f64) < obj.vsmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSK.vsmin-valueRangePair".to_string(),
class: "PssSK".to_string(),
property: "PssSK.vsmin".to_string(),
message: "The value is either equal to or greater than PssSK.vsmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSK.vsmin:valueRangePair".to_string(),
description: "Stabilizer output minimum limit (V<sub>SMIN</sub>) (< PssSK.vsmax). Typical value = -0.4.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t6_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSK>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() <= 0.005_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSK.t6-valueRange".to_string(),
class: "PssSK".to_string(),
property: "PssSK.t6".to_string(),
message: "The value is less than or equal to 0.005.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSK.t6:valueRange".to_string(),
description: "Filter time constant (T<sub>6</sub>) (> 0,005). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t5_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSK>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() <= 0.005_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSK.t5-valueRange".to_string(),
class: "PssSK".to_string(),
property: "PssSK.t5".to_string(),
message: "The value is less than or equal to 0.005.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSK.t5:valueRange".to_string(),
description: "Denominator time constant (T<sub>5</sub>) (> 0,005). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t4_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSK>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() <= 0.005_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSK.t4-valueRange".to_string(),
class: "PssSK".to_string(),
property: "PssSK.t4".to_string(),
message: "The value is less than or equal to 0.005.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSK.t4:valueRange".to_string(),
description: "Filter time constant (T<sub>4</sub>) (> 0,005). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t3_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSK>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() <= 0.005_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSK.t3-valueRange".to_string(),
class: "PssSK".to_string(),
property: "PssSK.t3".to_string(),
message: "The value is less than or equal to 0.005.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSK.t3:valueRange".to_string(),
description: "Denominator time constant (T<sub>3</sub>) (> 0,005). Typical value = 0,22.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t2_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSK>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() <= 0.005_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSK.t2-valueRange".to_string(),
class: "PssSK".to_string(),
property: "PssSK.t2".to_string(),
message: "The value is less than or equal to 0.005.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSK.t2:valueRange".to_string(),
description: "Filter time constant (T<sub>2</sub>) (> 0,005). Typical value = 0,35.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_sk_pss_sk_t1_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssSK").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssSK>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() <= 0.005_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssSK.t1-valueRange".to_string(),
class: "PssSK".to_string(),
property: "PssSK.t1".to_string(),
message: "The value is less than or equal to 0.005.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssSK.t1:valueRange".to_string(),
description: "Denominator time constant (T<sub>1</sub>) (> 0,005). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t6_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t6.is_none() { continue; }
if obj.t6.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t6-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t6".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t6:valueRange".to_string(),
description: "Lag time constant (T<sub>6</sub>) (>= 0). Typical value = 1,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t5_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t5.is_none() { continue; }
if obj.t5.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t5-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t5".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t5:valueRange".to_string(),
description: "Lead time constant (T<sub>5</sub>) (>= 0). Typical value = 1,7.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t1-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t1:valueRange".to_string(),
description: "Input signal 1 transducer time constant (T<sub>1</sub>) (>= 0). Typical value = 0,037.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t4.is_none() { continue; }
if obj.t4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t4-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t4:valueRange".to_string(),
description: "Stabilizer washout time lag constant (T<sub>4</sub>) (>= 0). Typical value = 9,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t2.is_none() { continue; }
if obj.t2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t2-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t2:valueRange".to_string(),
description: "Input signal 2 transducer time constant (T<sub>2</sub>) (>= 0). Typical value = 0,0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t10_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t10.is_none() { continue; }
if obj.t10.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t10-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t10".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t10:valueRange".to_string(),
description: "Lag time constant (T<sub>10</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t3.is_none() { continue; }
if obj.t3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t3-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t3:valueRange".to_string(),
description: "Stabilizer washout time constant (T<sub>3</sub>) (>= 0). Typical value = 9,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_vsmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.vsmin.is_none() || obj.vsmax.is_none() { continue; }
if !((obj.vsmin.unwrap() as f64) < obj.vsmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.vsmin-valueRangePair".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.vsmin".to_string(),
message: "The value is either equal to or greater than PssWECC.vsmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.vsmin:valueRangePair".to_string(),
description: "Minimum output signal (Vsmin) (< PssWECC.vsmax). Typical value = -0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t9_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t9.is_none() { continue; }
if obj.t9.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t9-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t9".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t9:valueRange".to_string(),
description: "Lead time constant (T<sub>9</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t8_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t8.is_none() { continue; }
if obj.t8.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t8-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t8".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t8:valueRange".to_string(),
description: "Lag time constant (T<sub>8</sub>) (>= 0). Typical value = 1,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_t7_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.t7.is_none() { continue; }
if obj.t7.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.t7-valueRange".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.t7".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.t7:valueRange".to_string(),
description: "Lead time constant (T<sub>7</sub>) (>= 0). Typical value = 1,7.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_input_signal1type_in(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
const ALLOWED: &[&str] = &["InputSignalKind.busVoltage", "InputSignalKind.generatorElectricalPower", "InputSignalKind.generatorAcceleratingPower", "InputSignalKind.busVoltageDerivative", "InputSignalKind.rotorAngularFrequencyDeviation", "InputSignalKind.busFrequencyDeviation"];
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.input_signal1type.is_none() { continue; }
if !ALLOWED.contains(&obj.input_signal1type.as_ref().map_or("", |u| u.uri.as_str())) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.inputSignal1Type-allowedValues".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.inputSignal1Type".to_string(),
message: "Not allowed value for input signal #1.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.inputSignal1Type:allowedValues".to_string(),
description: "Type of input signal #1 (rotorAngularFrequencyDeviation, busFrequencyDeviation, generatorElectricalPower, generatorAcceleratingPower, busVoltage, or busVoltageDerivative). Typical value = rotorAngularFrequencyDeviation.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_pss_wecc_pss_wecc_input_signal2type_in(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
const ALLOWED: &[&str] = &["InputSignalKind.busVoltage", "InputSignalKind.generatorElectricalPower", "InputSignalKind.generatorAcceleratingPower", "InputSignalKind.busVoltageDerivative", "InputSignalKind.rotorAngularFrequencyDeviation", "InputSignalKind.busFrequencyDeviation"];
for mrid in dataset.by_type.get("PssWECC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::PssWECC>() {
Some(o) => o, None => continue,
};
if obj.input_signal2type.is_none() { continue; }
if !ALLOWED.contains(&obj.input_signal2type.as_ref().map_or("", |u| u.uri.as_str())) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:PssWECC.inputSignal2Type-allowedValues".to_string(),
class: "PssWECC".to_string(),
property: "PssWECC.inputSignal2Type".to_string(),
message: "Not allowed value for input signal #2.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:PssWECC.inputSignal2Type:allowedValues".to_string(),
description: "Type of input signal #2 (rotorAngularFrequencyDeviation, busFrequencyDeviation, generatorElectricalPower, generatorAcceleratingPower, busVoltage, busVoltageDerivative - shall be different than PssWECC.inputSignal1Type). Typical value = busVoltageDerivative.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.saturation_factor.is_none() { continue; }
if obj.base.base.base.saturation_factor.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.saturationFactor-valueRange".to_string(),
class: "SynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.saturationFactor".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.saturationFactor:valueRange".to_string(),
description: "Saturation factor at rated terminal voltage (S1) (>= 0). Not used by simplified model. Defined by defined by S(E1) in the SynchronousMachineSaturationParameters diagram. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.stator_resistance.is_none() { continue; }
if obj.base.base.base.stator_resistance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorResistance-valueRange".to_string(),
class: "SynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.statorResistance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorResistance:valueRange".to_string(),
description: "Stator (armature) resistance (Rs) (>= 0). Typical value = 0,005.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.damping.is_none() { continue; }
if obj.base.base.base.damping.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.damping-valueRange".to_string(),
class: "SynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.damping".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.damping:valueRange".to_string(),
description: "Damping torque coefficient (D) (>= 0). A proportionality constant that, when multiplied by the angular velocity of the rotor poles with respect to the magnetic field (frequency), results in the damping torque. This value is often zero when the sources of damping torques (generator damper windings, load damping effects, etc.) are modelled in detail. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_synchronous_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.efd_base_ratio.is_none() { continue; }
if obj.base.efd_base_ratio.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineDetailed.efdBaseRatio-valueRange".to_string(),
class: "SynchronousMachineEquivalentCircuit".to_string(),
property: "SynchronousMachineDetailed.efdBaseRatio".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineDetailed.efdBaseRatio:valueRange".to_string(),
description: "Ratio (exciter voltage/generator voltage) of Efd bases of exciter and generator models (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_synchronous_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.saturation_factor_q_axis.is_none() { continue; }
if obj.base.saturation_factor_q_axis.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineDetailed.saturationFactorQAxis-valueRange".to_string(),
class: "SynchronousMachineEquivalentCircuit".to_string(),
property: "SynchronousMachineDetailed.saturationFactorQAxis".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineDetailed.saturationFactorQAxis:valueRange".to_string(),
description: "Quadrature-axis saturation factor at rated terminal voltage (S1q) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.inertia.is_none() { continue; }
if obj.base.base.base.inertia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.inertia-valueRange".to_string(),
class: "SynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.inertia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.inertia:valueRange".to_string(),
description: "Inertia constant of generator or motor and mechanical load (H) (> 0). This is the specification for the stored energy in the rotating mass when operating at rated speed. For a generator, this includes the generator plus all other elements (turbine, exciter) on the same shaft and has units of MW x s. For a motor, it includes the motor plus its mechanical load. Conventional units are PU on the generator MVA base, usually expressed as MW x s / MVA or just s. This value is used in the accelerating power reference frame for operator training simulator solutions. Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_equivalent_circuit_rotating_ma_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineEquivalentCircuit").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineEquivalentCircuit>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.stator_leakage_reactance.is_none() { continue; }
if obj.base.base.base.stator_leakage_reactance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorLeakageReactance-valueRange".to_string(),
class: "SynchronousMachineEquivalentCircuit".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorLeakageReactance:valueRange".to_string(),
description: "Stator leakage reactance (Xl) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineSimplified").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineSimplified>() {
Some(o) => o, None => continue,
};
if obj.base.base.inertia.is_none() { continue; }
if obj.base.base.inertia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.inertia-valueRange".to_string(),
class: "SynchronousMachineSimplified".to_string(),
property: "RotatingMachineDynamics.inertia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.inertia:valueRange".to_string(),
description: "Inertia constant of generator or motor and mechanical load (H) (> 0). This is the specification for the stored energy in the rotating mass when operating at rated speed. For a generator, this includes the generator plus all other elements (turbine, exciter) on the same shaft and has units of MW x s. For a motor, it includes the motor plus its mechanical load. Conventional units are PU on the generator MVA base, usually expressed as MW x s / MVA or just s. This value is used in the accelerating power reference frame for operator training simulator solutions. Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineSimplified").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineSimplified>() {
Some(o) => o, None => continue,
};
if obj.base.base.damping.is_none() { continue; }
if obj.base.base.damping.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.damping-valueRange".to_string(),
class: "SynchronousMachineSimplified".to_string(),
property: "RotatingMachineDynamics.damping".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.damping:valueRange".to_string(),
description: "Damping torque coefficient (D) (>= 0). A proportionality constant that, when multiplied by the angular velocity of the rotor poles with respect to the magnetic field (frequency), results in the damping torque. This value is often zero when the sources of damping torques (generator damper windings, load damping effects, etc.) are modelled in detail. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineSimplified").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineSimplified>() {
Some(o) => o, None => continue,
};
if obj.base.base.saturation_factor.is_none() { continue; }
if obj.base.base.saturation_factor.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.saturationFactor-valueRange".to_string(),
class: "SynchronousMachineSimplified".to_string(),
property: "RotatingMachineDynamics.saturationFactor".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.saturationFactor:valueRange".to_string(),
description: "Saturation factor at rated terminal voltage (S1) (>= 0). Not used by simplified model. Defined by defined by S(E1) in the SynchronousMachineSaturationParameters diagram. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineSimplified").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineSimplified>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_leakage_reactance.is_none() { continue; }
if obj.base.base.stator_leakage_reactance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorLeakageReactance-valueRange".to_string(),
class: "SynchronousMachineSimplified".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorLeakageReactance:valueRange".to_string(),
description: "Stator leakage reactance (Xl) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_simplified_rotating_machine_dy_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineSimplified").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineSimplified>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_resistance.is_none() { continue; }
if obj.base.base.stator_resistance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorResistance-valueRange".to_string(),
class: "SynchronousMachineSimplified".to_string(),
property: "RotatingMachineDynamics.statorResistance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorResistance:valueRange".to_string(),
description: "Stator (armature) resistance (Rs) (>= 0). Typical value = 0,005.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.tppqo.is_none() || obj.tpqo.is_none() { continue; }
if !((obj.tppqo.unwrap() as f64) < obj.tpqo.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.tpqo-valueRangePair".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.tppqo".to_string(),
message: "The value is greater than or equal to SynchronousMachineTimeConstantReactance.tpqo.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.tpqo:valueRangePair".to_string(),
description: "Quadrature-axis transient rotor time constant (T'qo) (> SynchronousMachineTimeConstantReactance.tppqo). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.tppdo.is_none() || obj.tpdo.is_none() { continue; }
if !((obj.tppdo.unwrap() as f64) < obj.tpdo.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.tpdo-valueRangePair".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.tppdo".to_string(),
message: "The value is greater than or equal to SynchronousMachineTimeConstantReactance.tpdo.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.tpdo:valueRangePair".to_string(),
description: "Direct-axis transient rotor time constant (T'do) (> SynchronousMachineTimeConstantReactance.tppdo). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.stator_resistance.is_none() { continue; }
if obj.base.base.base.stator_resistance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorResistance-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.statorResistance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorResistance:valueRange".to_string(),
description: "Stator (armature) resistance (Rs) (>= 0). Typical value = 0,005.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.stator_leakage_reactance.is_none() { continue; }
if obj.base.base.base.stator_leakage_reactance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorLeakageReactance-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorLeakageReactance:valueRange".to_string(),
description: "Stator leakage reactance (Xl) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.efd_base_ratio.is_none() { continue; }
if obj.base.efd_base_ratio.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineDetailed.efdBaseRatio-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineDetailed.efdBaseRatio".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineDetailed.efdBaseRatio:valueRange".to_string(),
description: "Ratio (exciter voltage/generator voltage) of Efd bases of exciter and generator models (> 0). Typical value = 1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.x_direct_trans.is_none() || obj.x_direct_sync.is_none() { continue; }
if !((obj.x_direct_trans.unwrap() as f64) <= obj.x_direct_sync.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.xDirectSync-valueRangePair".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.xDirectTrans".to_string(),
message: "The value is greater than SynchronousMachineTimeConstantReactance.xDirectSync.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.xDirectSync:valueRangePair".to_string(),
description: "Direct-axis synchronous reactance (Xd) (>= SynchronousMachineTimeConstantReactance.xDirectTrans). The quotient of a sustained value of that AC component of armature voltage that is produced by the total direct-axis flux due to direct-axis armature current and the value of the AC component of this current, the machine running at rated speed. Typical value = 1,8.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.saturation_factor.is_none() { continue; }
if obj.base.base.base.saturation_factor.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.saturationFactor-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.saturationFactor".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.saturationFactor:valueRange".to_string(),
description: "Saturation factor at rated terminal voltage (S1) (>= 0). Not used by simplified model. Defined by defined by S(E1) in the SynchronousMachineSaturationParameters diagram. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.tppqo.is_none() { continue; }
if obj.tppqo.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.tppqo-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.tppqo".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.tppqo:valueRange".to_string(),
description: "Quadrature-axis subtransient rotor time constant (T''qo) (> 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_6(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.x_direct_subtrans.is_none() || obj.x_direct_trans.is_none() { continue; }
if !((obj.x_direct_subtrans.unwrap() as f64) <= obj.x_direct_trans.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.xDirectTrans-valueRangePair".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.xDirectSubtrans".to_string(),
message: "The value is greater than SynchronousMachineTimeConstantReactance.xDirectTrans.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.xDirectTrans:valueRangePair".to_string(),
description: "Direct-axis transient reactance (unsaturated) (X'd) (>= SynchronousMachineTimeConstantReactance.xDirectSubtrans). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.damping.is_none() { continue; }
if obj.base.base.base.damping.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.damping-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.damping".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.damping:valueRange".to_string(),
description: "Damping torque coefficient (D) (>= 0). A proportionality constant that, when multiplied by the angular velocity of the rotor poles with respect to the magnetic field (frequency), results in the damping torque. This value is often zero when the sources of damping torques (generator damper windings, load damping effects, etc.) are modelled in detail. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_7(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.saturation_factor_q_axis.is_none() { continue; }
if obj.base.saturation_factor_q_axis.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineDetailed.saturationFactorQAxis-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineDetailed.saturationFactorQAxis".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineDetailed.saturationFactorQAxis:valueRange".to_string(),
description: "Quadrature-axis saturation factor at rated terminal voltage (S1q) (>= 0). Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_8(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.x_quad_trans.is_none() || obj.x_quad_sync.is_none() { continue; }
if !((obj.x_quad_trans.unwrap() as f64) <= obj.x_quad_sync.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.xQuadSync-valueRangePair".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.xQuadTrans".to_string(),
message: "The value is greater than SynchronousMachineTimeConstantReactance.xQuadSync.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.xQuadSync:valueRangePair".to_string(),
description: "Quadrature-axis synchronous reactance (Xq) (>= SynchronousMachineTimeConstantReactance.xQuadTrans).
The ratio of the component of reactive armature voltage, due to the quadrature-axis component of armature current, to this component of current, under steady state conditions and at rated frequency. Typical value = 1,6.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.stator_leakage_reactance.is_none() || obj.x_quad_subtrans.is_none() { continue; }
if !((obj.base.base.base.stator_leakage_reactance.unwrap() as f64) < obj.x_quad_subtrans.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.xQuadSubtrans-valueRangePair".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is greater than or equal to SynchronousMachineTimeConstantReactance.xQuadSubtrans.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.xQuadSubtrans:valueRangePair".to_string(),
description: "Quadrature-axis subtransient reactance (X''q) (> RotatingMachineDynamics.statorLeakageReactance). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_6(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.stator_leakage_reactance.is_none() || obj.x_direct_subtrans.is_none() { continue; }
if !((obj.base.base.base.stator_leakage_reactance.unwrap() as f64) < obj.x_direct_subtrans.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.xDirectSubtrans-valueRangePair".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is greater than or equal to SynchronousMachineTimeConstantReactance.xDirectSubtrans.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.xDirectSubtrans:valueRangePair".to_string(),
description: "Direct-axis subtransient reactance (unsaturated) (X''d) (> RotatingMachineDynamics.statorLeakageReactance). Typical value = 0,2.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_9(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.tppdo.is_none() { continue; }
if obj.tppdo.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.tppdo-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.tppdo".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.tppdo:valueRange".to_string(),
description: "Direct-axis subtransient rotor time constant (T''do) (> 0). Typical value = 0,03.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_10(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.tc.is_none() { continue; }
if obj.tc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.tc-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.tc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.tc:valueRange".to_string(),
description: "Damping time constant for âCanayâ reactance (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_11(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.ks.is_none() { continue; }
if obj.ks.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.ks-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.ks".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.ks:valueRange".to_string(),
description: "Saturation loading correction factor (Ks) (>= 0). Used only by type J model. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_synchr_etc_12(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.x_quad_subtrans.is_none() || obj.x_quad_trans.is_none() { continue; }
if !((obj.x_quad_subtrans.unwrap() as f64) <= obj.x_quad_trans.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:SynchronousMachineTimeConstantReactance.xQuadTrans-valueRangePair".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "SynchronousMachineTimeConstantReactance.xQuadSubtrans".to_string(),
message: "The value is greater than SynchronousMachineTimeConstantReactance.xQuadTrans.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:SynchronousMachineTimeConstantReactance.xQuadTrans:valueRangePair".to_string(),
description: "Quadrature-axis transient reactance (X'q) (>= SynchronousMachineTimeConstantReactance.xQuadSubtrans). Typical value = 0,3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_time_constant_reactance_rotati_etc_7(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineTimeConstantReactance").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineTimeConstantReactance>() {
Some(o) => o, None => continue,
};
if obj.base.base.base.inertia.is_none() { continue; }
if obj.base.base.base.inertia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.inertia-valueRange".to_string(),
class: "SynchronousMachineTimeConstantReactance".to_string(),
property: "RotatingMachineDynamics.inertia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.inertia:valueRange".to_string(),
description: "Inertia constant of generator or motor and mechanical load (H) (> 0). This is the specification for the stored energy in the rotating mass when operating at rated speed. For a generator, this includes the generator plus all other elements (turbine, exciter) on the same shaft and has units of MW x s. For a motor, it includes the motor plus its mechanical load. Conventional units are PU on the generator MVA base, usually expressed as MW x s / MVA or just s. This value is used in the accelerating power reference frame for operator training simulator solutions. Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.saturation_factor.is_none() { continue; }
if obj.base.base.saturation_factor.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.saturationFactor-valueRange".to_string(),
class: "SynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.saturationFactor".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.saturationFactor:valueRange".to_string(),
description: "Saturation factor at rated terminal voltage (S1) (>= 0). Not used by simplified model. Defined by defined by S(E1) in the SynchronousMachineSaturationParameters diagram. Typical value = 0,02.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_resistance.is_none() { continue; }
if obj.base.base.stator_resistance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorResistance-valueRange".to_string(),
class: "SynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.statorResistance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorResistance:valueRange".to_string(),
description: "Stator (armature) resistance (Rs) (>= 0). Typical value = 0,005.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.inertia.is_none() { continue; }
if obj.base.base.inertia.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.inertia-valueRange".to_string(),
class: "SynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.inertia".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.inertia:valueRange".to_string(),
description: "Inertia constant of generator or motor and mechanical load (H) (> 0). This is the specification for the stored energy in the rotating mass when operating at rated speed. For a generator, this includes the generator plus all other elements (turbine, exciter) on the same shaft and has units of MW x s. For a motor, it includes the motor plus its mechanical load. Conventional units are PU on the generator MVA base, usually expressed as MW x s / MVA or just s. This value is used in the accelerating power reference frame for operator training simulator solutions. Typical value = 3.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.stator_leakage_reactance.is_none() { continue; }
if obj.base.base.stator_leakage_reactance.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.statorLeakageReactance-valueRange".to_string(),
class: "SynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.statorLeakageReactance".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.statorLeakageReactance:valueRange".to_string(),
description: "Stator leakage reactance (Xl) (>= 0). Typical value = 0,15.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_synchronous_machine_user_defined_rotating_machine_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("SynchronousMachineUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::SynchronousMachineUserDefined>() {
Some(o) => o, None => continue,
};
if obj.base.base.damping.is_none() { continue; }
if obj.base.base.damping.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:RotatingMachineDynamics.damping-valueRange".to_string(),
class: "SynchronousMachineUserDefined".to_string(),
property: "RotatingMachineDynamics.damping".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:RotatingMachineDynamics.damping:valueRange".to_string(),
description: "Damping torque coefficient (D) (>= 0). A proportionality constant that, when multiplied by the angular velocity of the rotor poles with respect to the magnetic field (frequency), results in the damping torque. This value is often zero when the sources of damping torques (generator damper windings, load damping effects, etc.) are modelled in detail. Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_turb_lcfb1_turb_lcfb1_tpelec_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("TurbLCFB1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::TurbLCFB1>() {
Some(o) => o, None => continue,
};
if obj.tpelec.is_none() { continue; }
if obj.tpelec.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbLCFB1.tpelec-valueRange".to_string(),
class: "TurbLCFB1".to_string(),
property: "TurbLCFB1.tpelec".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbLCFB1.tpelec:valueRange".to_string(),
description: "Power transducer time constant (Tpelec) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_turb_lcfb1_turb_lcfb1_mwbase_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("TurbLCFB1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::TurbLCFB1>() {
Some(o) => o, None => continue,
};
if obj.mwbase.is_none() { continue; }
if obj.mwbase.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbLCFB1.mwbase-valueRange".to_string(),
class: "TurbLCFB1".to_string(),
property: "TurbLCFB1.mwbase".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbLCFB1.mwbase:valueRange".to_string(),
description: "Base for power values (MWbase) (> 0). Unit = MW.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee0_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE0>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroIEEE0".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast4_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST4>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovGAST4".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv2_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV2>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteamFV2".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gastwd_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGASTWD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGASTWD>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovGASTWD".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroPID".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pid2_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPID2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPID2>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroPID2".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro4_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro4>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydro4".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast3_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST3>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovGAST3".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_ieee1_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamIEEE1>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteamIEEE1".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_dd_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroDD").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroDD>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroDD".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_bb_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamBB").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamBB>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteamBB".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast2_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST2>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovGAST2".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovGAST".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_francis_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroFrancis").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroFrancis>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroFrancis".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam0_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam0").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam0>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteam0".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv4_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV4").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV4>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteamFV4".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro1_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro1>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydro1".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_wpid_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWPID").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWPID>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroWPID".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct1_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT1>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovCT1".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_ieee2_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroIEEE2>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroIEEE2".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam2_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam2>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteam2".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_pelton_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroPelton").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroPelton>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroPelton".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam1_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteam1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteam1>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteam1".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_eu_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamEU").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamEU>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteamEU".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_turbine_governor_user_defined_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("TurbineGovernorUserDefined").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::TurbineGovernorUserDefined>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "TurbineGovernorUserDefined".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro3_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro3>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydro3".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_gast1_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovGAST1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovGAST1>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovGAST1".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_ct2_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovCT2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovCT2>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovCT2".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_weh_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroWEH").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroWEH>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroWEH".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro_r_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydroR").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydroR>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydroR".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_hydro2_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovHydro2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovHydro2>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovHydro2".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_sgo_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamSGO").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamSGO>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteamSGO".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_gov_steam_fv3_xone(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("GovSteamFV3").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::GovSteamFV3>() {
Some(o) => o, None => continue,
};
let mut pass_count = 0usize;
if obj.base.asynchronous_machine_dynamics.is_some() { pass_count += 1; }
if obj.base.synchronous_machine_dynamics.is_some() { pass_count += 1; }
if pass_count != 1 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:TurbineGovernorDynamics".to_string(),
class: "GovSteamFV3".to_string(),
property: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
message: "Required association to either SynchronousMachineDynamics or to AsynchronousMachineDynamics is missing.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:TurbineGovernorDynamics:associationsCondition".to_string(),
description: "TurbineGovernorDynamics shall have either an association to SynchronousMachineDynamics or to AsynchronousMachineDynamics.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim2simplified_underexc_lim2simplified_vu_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLim2Simplified").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLim2Simplified>() {
Some(o) => o, None => continue,
};
if obj.vuimin.is_none() || obj.vuimax.is_none() { continue; }
if !((obj.vuimin.unwrap() as f64) < obj.vuimax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLim2Simplified.vuimin-valueRangePair".to_string(),
class: "UnderexcLim2Simplified".to_string(),
property: "UnderexcLim2Simplified.vuimin".to_string(),
message: "The value is either equal to or greater than UnderexcLim2Simplified.vuimax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLim2Simplified.vuimin:valueRangePair".to_string(),
description: "Minimum error signal (V<sub>UIMIN</sub>) (< UnderexcLim2Simplified.vuimax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_vulmin_less_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE1>() {
Some(o) => o, None => continue,
};
if obj.vulmin.is_none() || obj.vulmax.is_none() { continue; }
if !((obj.vulmin.unwrap() as f64) < obj.vulmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE1.vulmin-valueRangePair".to_string(),
class: "UnderexcLimIEEE1".to_string(),
property: "UnderexcLimIEEE1.vulmin".to_string(),
message: "The value is either equal to or greater than UnderexcLimIEEE1.vulmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE1.vulmin:valueRangePair".to_string(),
description: "UEL output minimum limit (V<sub>ULMIN</sub>) (< UnderexcLimIEEE1.vulmax). Typical value = -18.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_vuimin_less_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE1>() {
Some(o) => o, None => continue,
};
if obj.vuimin.is_none() || obj.vuimax.is_none() { continue; }
if !((obj.vuimin.unwrap() as f64) < obj.vuimax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE1.vuimin-valueRangePair".to_string(),
class: "UnderexcLimIEEE1".to_string(),
property: "UnderexcLimIEEE1.vuimin".to_string(),
message: "The value is either equal to or greater than UnderexcLimIEEE1.vuimax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE1.vuimin:valueRangePair".to_string(),
description: "UEL integrator output minimum limit (V<sub>UIMIN</sub>) (< UnderexcLimIEEE1.vuimax).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_tu4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE1>() {
Some(o) => o, None => continue,
};
if obj.tu4.is_none() { continue; }
if obj.tu4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE1.tu4-valueRange".to_string(),
class: "UnderexcLimIEEE1".to_string(),
property: "UnderexcLimIEEE1.tu4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE1.tu4:valueRange".to_string(),
description: "UEL lag time constant (T<sub>U4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_tu3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE1>() {
Some(o) => o, None => continue,
};
if obj.tu3.is_none() { continue; }
if obj.tu3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE1.tu3-valueRange".to_string(),
class: "UnderexcLimIEEE1".to_string(),
property: "UnderexcLimIEEE1.tu3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE1.tu3:valueRange".to_string(),
description: "UEL lead time constant (T<sub>U3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_tu2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE1>() {
Some(o) => o, None => continue,
};
if obj.tu2.is_none() { continue; }
if obj.tu2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE1.tu2-valueRange".to_string(),
class: "UnderexcLimIEEE1".to_string(),
property: "UnderexcLimIEEE1.tu2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE1.tu2:valueRange".to_string(),
description: "UEL lag time constant (T<sub>U2</sub>) (>= 0). Typical value = 0,05.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee1_underexc_lim_ieee1_tu1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE1>() {
Some(o) => o, None => continue,
};
if obj.tu1.is_none() { continue; }
if obj.tu1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE1.tu1-valueRange".to_string(),
class: "UnderexcLimIEEE1".to_string(),
property: "UnderexcLimIEEE1.tu1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE1.tu1:valueRange".to_string(),
description: "UEL lead time constant (T<sub>U1</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_vuimin_less_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.vuimin.is_none() || obj.vuimax.is_none() { continue; }
if !((obj.vuimin.unwrap() as f64) < obj.vuimax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.vuimin-valueRangePair".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.vuimin".to_string(),
message: "The value is either equal to or greater than UnderexcLimIEEE2.vuimax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.vuimin:valueRangePair".to_string(),
description: "UEL integrator output minimum limit (V<sub>UIMIN</sub>) (< UnderexcLimIEEE2.vuimax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tuv_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tuv.is_none() { continue; }
if obj.tuv.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.tuv-valueRange".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.tuv".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.tuv:valueRange".to_string(),
description: "Voltage filter time constant (T<sub>UV</sub>) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tup_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tup.is_none() { continue; }
if obj.tup.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.tup-valueRange".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.tup".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.tup:valueRange".to_string(),
description: "Real power filter time constant (T<sub>UP</sub>) (>= 0). Typical value = 5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tu1_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tu1.is_none() { continue; }
if obj.tu1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.tu1-valueRange".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.tu1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.tu1:valueRange".to_string(),
description: "UEL lead time constant (T<sub>U1</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tu4_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tu4.is_none() { continue; }
if obj.tu4.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.tu4-valueRange".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.tu4".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.tu4:valueRange".to_string(),
description: "UEL lag time constant (T<sub>U4</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tuq_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tuq.is_none() { continue; }
if obj.tuq.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.tuq-valueRange".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.tuq".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.tuq:valueRange".to_string(),
description: "Reactive power filter time constant (T<sub>UQ</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tu2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tu2.is_none() { continue; }
if obj.tu2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.tu2-valueRange".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.tu2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.tu2:valueRange".to_string(),
description: "UEL lag time constant (T<sub>U2</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_vulmin_less_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.vulmin.is_none() || obj.vulmax.is_none() { continue; }
if !((obj.vulmin.unwrap() as f64) < obj.vulmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.vulmin-valueRangePair".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.vulmin".to_string(),
message: "The value is either equal to or greater than UnderexcLimIEEE2.vulmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.vulmin:valueRangePair".to_string(),
description: "UEL output minimum limit (V<sub>ULMIN</sub>) (< UnderexcLimIEEE2.vulmax). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tu3_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tu3.is_none() { continue; }
if obj.tu3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.tu3-valueRange".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.tu3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.tu3:valueRange".to_string(),
description: "UEL lead time constant (T<sub>U3</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_ieee2_underexc_lim_ieee2_tul_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimIEEE2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimIEEE2>() {
Some(o) => o, None => continue,
};
if obj.tul.is_none() { continue; }
if obj.tul.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimIEEE2.tul-valueRange".to_string(),
class: "UnderexcLimIEEE2".to_string(),
property: "UnderexcLimIEEE2.tul".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimIEEE2.tul:valueRange".to_string(),
description: "Time constant associated with optional integrator feedback input signal to UEL (T<sub>UL</sub>) (>= 0). Typical value = 0.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x1_underexc_lim_x1_tm_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimX1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimX1>() {
Some(o) => o, None => continue,
};
if obj.tm.is_none() { continue; }
if obj.tm.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimX1.tm-valueRange".to_string(),
class: "UnderexcLimX1".to_string(),
property: "UnderexcLimX1.tm".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimX1.tm:valueRange".to_string(),
description: "Minimum excitation limit time constant (T<sub>M</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x1_underexc_lim_x1_tf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimX1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimX1>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimX1.tf2-valueRange".to_string(),
class: "UnderexcLimX1".to_string(),
property: "UnderexcLimX1.tf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimX1.tf2:valueRange".to_string(),
description: "Differential time constant (T<sub>F2</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x1_underexc_lim_x1_k_min_excl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimX1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimX1>() {
Some(o) => o, None => continue,
};
if obj.k.is_none() { continue; }
if obj.k.unwrap() <= 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimX1.k-valueRange".to_string(),
class: "UnderexcLimX1".to_string(),
property: "UnderexcLimX1.k".to_string(),
message: "The value is negative or zero.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimX1.k:valueRange".to_string(),
description: "Minimum excitation limit slope (K) (> 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x2_underexc_lim_x2_tm_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimX2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimX2>() {
Some(o) => o, None => continue,
};
if obj.tm.is_none() { continue; }
if obj.tm.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimX2.tm-valueRange".to_string(),
class: "UnderexcLimX2".to_string(),
property: "UnderexcLimX2.tm".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimX2.tm:valueRange".to_string(),
description: "Minimum excitation limit time constant (T<sub>M</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_underexc_lim_x2_underexc_lim_x2_tf2_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("UnderexcLimX2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::UnderexcLimX2>() {
Some(o) => o, None => continue,
};
if obj.tf2.is_none() { continue; }
if obj.tf2.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:UnderexcLimX2.tf2-valueRange".to_string(),
class: "UnderexcLimX2".to_string(),
property: "UnderexcLimX2.tf2".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:UnderexcLimX2.tf2:valueRange".to_string(),
description: "Differential time constant (T<sub>F2</sub>) (>= 0).".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_v_adj_ieee_v_adj_ieee_vadjmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("VAdjIEEE").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::VAdjIEEE>() {
Some(o) => o, None => continue,
};
if obj.vadjmin.is_none() || obj.vadjmax.is_none() { continue; }
if !((obj.vadjmin.unwrap() as f64) < obj.vadjmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:VAdjIEEE.vadjmin-valueRangePair".to_string(),
class: "VAdjIEEE".to_string(),
property: "VAdjIEEE.vadjmin".to_string(),
message: "The value is either equal to or greater than VAdjIEEE.vadjmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:VAdjIEEE.vadjmin:valueRangePair".to_string(),
description: "Minimum output of the adjuster (V<sub>ADJMIN</sub>) (< VAdjIEEE.vadjmax). Typical value = 0,9.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_v_adj_ieee_v_adj_ieee_taon_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("VAdjIEEE").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::VAdjIEEE>() {
Some(o) => o, None => continue,
};
if obj.taon.is_none() { continue; }
if obj.taon.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:VAdjIEEE.taon-valueRange".to_string(),
class: "VAdjIEEE".to_string(),
property: "VAdjIEEE.taon".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:VAdjIEEE.taon:valueRange".to_string(),
description: "Time that adjuster pulses are on (T<sub>AON</sub>) (>= 0). Typical value = 0,1.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_v_adj_ieee_v_adj_ieee_taoff_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("VAdjIEEE").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::VAdjIEEE>() {
Some(o) => o, None => continue,
};
if obj.taoff.is_none() { continue; }
if obj.taoff.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:VAdjIEEE.taoff-valueRange".to_string(),
class: "VAdjIEEE".to_string(),
property: "VAdjIEEE.taoff".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:VAdjIEEE.taoff:valueRange".to_string(),
description: "Time that adjuster pulses are off (T<sub>AOFF</sub>) (>= 0). Typical value = 0,5.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_v_comp_ieee_type1_v_comp_ieee_type1_xc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("VCompIEEEType1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::VCompIEEEType1>() {
Some(o) => o, None => continue,
};
if obj.xc.is_none() { continue; }
if obj.xc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:VCompIEEEType1.xc-valueRange".to_string(),
class: "VCompIEEEType1".to_string(),
property: "VCompIEEEType1.xc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:VCompIEEEType1.xc:valueRange".to_string(),
description: "<font color=\\\"#0f0f0f\\\">Reactive component of compensation of a generator (Xc) (>= 0).</font>".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_v_comp_ieee_type1_v_comp_ieee_type1_tr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("VCompIEEEType1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::VCompIEEEType1>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:VCompIEEEType1.tr-valueRange".to_string(),
class: "VCompIEEEType1".to_string(),
property: "VCompIEEEType1.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:VCompIEEEType1.tr:valueRange".to_string(),
description: "<font color=\\\"#0f0f0f\\\">Time constant which is used for the combined voltage sensing and compensation signal (Tr) (>= 0).</font>".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_v_comp_ieee_type1_v_comp_ieee_type1_rc_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("VCompIEEEType1").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::VCompIEEEType1>() {
Some(o) => o, None => continue,
};
if obj.rc.is_none() { continue; }
if obj.rc.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:VCompIEEEType1.rc-valueRange".to_string(),
class: "VCompIEEEType1".to_string(),
property: "VCompIEEEType1.rc".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:VCompIEEEType1.rc:valueRange".to_string(),
description: "<font color=\\\"#0f0f0f\\\">Resistive component of compensation of a generator (Rc) (>= 0).</font>".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_v_comp_ieee_type2_v_comp_ieee_type2_tr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("VCompIEEEType2").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::VCompIEEEType2>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:VCompIEEEType2.tr-valueRange".to_string(),
class: "VCompIEEEType2".to_string(),
property: "VCompIEEEType2.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:VCompIEEEType2.tr:valueRange".to_string(),
description: "<font color=\\\"#0f0f0f\\\">Time constant which is used for the combined voltage sensing and compensation signal (Tr) (>= 0).</font>".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tufiltp3_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType3IEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType3IEC>() {
Some(o) => o, None => continue,
};
if obj.tufiltp3.is_none() { continue; }
if obj.tufiltp3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType3IEC.tufiltp3-valueRange".to_string(),
class: "WindContPType3IEC".to_string(),
property: "WindContPType3IEC.tufiltp3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType3IEC.tufiltp3:valueRange".to_string(),
description: "Filter time constant for voltage measurement (T<sub>ufiltp3</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tpfiltp3_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType3IEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType3IEC>() {
Some(o) => o, None => continue,
};
if obj.tpfiltp3.is_none() { continue; }
if obj.tpfiltp3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType3IEC.tpfiltp3-valueRange".to_string(),
class: "WindContPType3IEC".to_string(),
property: "WindContPType3IEC.tpfiltp3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType3IEC.tpfiltp3:valueRange".to_string(),
description: "Filter time constant for power measurement (T<sub>pfiltp3</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tomegare_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType3IEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType3IEC>() {
Some(o) => o, None => continue,
};
if obj.tomegaref.is_none() { continue; }
if obj.tomegaref.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType3IEC.tomegaref-valueRange".to_string(),
class: "WindContPType3IEC".to_string(),
property: "WindContPType3IEC.tomegaref".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType3IEC.tomegaref:valueRange".to_string(),
description: "Time constant in speed reference filter (T<sub>omega,ref</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tomegafi_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType3IEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType3IEC>() {
Some(o) => o, None => continue,
};
if obj.tomegafiltp3.is_none() { continue; }
if obj.tomegafiltp3.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType3IEC.tomegafiltp3-valueRange".to_string(),
class: "WindContPType3IEC".to_string(),
property: "WindContPType3IEC.tomegafiltp3".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType3IEC.tomegafiltp3:valueRange".to_string(),
description: "Filter time constant for generator speed measurement (T<sub>omegafiltp3</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type3iec_wind_cont_p_type3iec_tdvs_min_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType3IEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType3IEC>() {
Some(o) => o, None => continue,
};
if obj.tdvs.is_none() { continue; }
if obj.tdvs.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType3IEC.tdvs-valueRange".to_string(),
class: "WindContPType3IEC".to_string(),
property: "WindContPType3IEC.tdvs".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType3IEC.tdvs:valueRange".to_string(),
description: "Time<sub> </sub>delay after deep voltage sags (T<sub>DVS</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4a_iec_wind_cont_p_type4a_iec_tufi_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType4aIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType4aIEC>() {
Some(o) => o, None => continue,
};
if obj.tufiltp4a.is_none() { continue; }
if obj.tufiltp4a.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType4aIEC.tufiltp4a-valueRange".to_string(),
class: "WindContPType4aIEC".to_string(),
property: "WindContPType4aIEC.tufiltp4a".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType4aIEC.tufiltp4a:valueRange".to_string(),
description: "Voltage measurement filter time constant (T<sub>ufiltp4A</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4a_iec_wind_cont_p_type4a_iec_tpor_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType4aIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType4aIEC>() {
Some(o) => o, None => continue,
};
if obj.tpordp4a.is_none() { continue; }
if obj.tpordp4a.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType4aIEC.tpordp4a-valueRange".to_string(),
class: "WindContPType4aIEC".to_string(),
property: "WindContPType4aIEC.tpordp4a".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType4aIEC.tpordp4a:valueRange".to_string(),
description: "Time constant in power order lag (T<sub>pordp4A</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4b_iec_wind_cont_p_type4b_iec_tufi_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType4bIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType4bIEC>() {
Some(o) => o, None => continue,
};
if obj.tufiltp4b.is_none() { continue; }
if obj.tufiltp4b.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType4bIEC.tufiltp4b-valueRange".to_string(),
class: "WindContPType4bIEC".to_string(),
property: "WindContPType4bIEC.tufiltp4b".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType4bIEC.tufiltp4b:valueRange".to_string(),
description: "Voltage measurement filter time constant (T<sub>ufiltp4B</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4b_iec_wind_cont_p_type4b_iec_tpor_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType4bIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType4bIEC>() {
Some(o) => o, None => continue,
};
if obj.tpordp4b.is_none() { continue; }
if obj.tpordp4b.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType4bIEC.tpordp4b-valueRange".to_string(),
class: "WindContPType4bIEC".to_string(),
property: "WindContPType4bIEC.tpordp4b".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType4bIEC.tpordp4b:valueRange".to_string(),
description: "Time constant in power order lag (T<sub>pordp4B</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_p_type4b_iec_wind_cont_p_type4b_iec_tpae_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPType4bIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPType4bIEC>() {
Some(o) => o, None => continue,
};
if obj.tpaero.is_none() { continue; }
if obj.tpaero.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPType4bIEC.tpaero-valueRange".to_string(),
class: "WindContPType4bIEC".to_string(),
property: "WindContPType4bIEC.tpaero".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPType4bIEC.tpaero:valueRange".to_string(),
description: "Time constant in aerodynamic power response (T<sub>paero</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_pitch_angle_iec_wind_cont_pitch_angle_ie_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPitchAngleIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPitchAngleIEC>() {
Some(o) => o, None => continue,
};
if obj.ttheta.is_none() { continue; }
if obj.ttheta.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPitchAngleIEC.ttheta-valueRange".to_string(),
class: "WindContPitchAngleIEC".to_string(),
property: "WindContPitchAngleIEC.ttheta".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPitchAngleIEC.ttheta:valueRange".to_string(),
description: "Pitch time constant (ttheta) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_pitch_angle_iec_wind_cont_pitch_angle_ie_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPitchAngleIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPitchAngleIEC>() {
Some(o) => o, None => continue,
};
if obj.thetamin.is_none() || obj.thetamax.is_none() { continue; }
if !((obj.thetamin.unwrap() as f64) < obj.thetamax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPitchAngleIEC.thetamin-valueRangePair".to_string(),
class: "WindContPitchAngleIEC".to_string(),
property: "WindContPitchAngleIEC.thetamin".to_string(),
message: "The value is either equal to or greater than WindContPitchAngleIEC.thetamax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPitchAngleIEC.thetamin:valueRangePair".to_string(),
description: "Minimum pitch angle (theta<sub>min</sub>) (< WindContPitchAngleIEC.thetamax). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_pitch_angle_iec_wind_cont_pitch_angle_ie_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContPitchAngleIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContPitchAngleIEC>() {
Some(o) => o, None => continue,
};
if obj.dthetamin.is_none() || obj.dthetamax.is_none() { continue; }
if !((obj.dthetamin.unwrap() as f64) < obj.dthetamax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContPitchAngleIEC.dthetamin-valueRangePair".to_string(),
class: "WindContPitchAngleIEC".to_string(),
property: "WindContPitchAngleIEC.dthetamin".to_string(),
message: "The value is either equal to or greater than WindContPitchAngleIEC.dthetamax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContPitchAngleIEC.dthetamin:valueRangePair".to_string(),
description: "Maximum pitch negative ramp rate (dtheta<sub>min</sub>) (< WindContPitchAngleIEC.dthetamax). It is a type-dependent parameter. Unit = degrees / s. ".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_rdroop_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQIEC>() {
Some(o) => o, None => continue,
};
if obj.rdroop.is_none() { continue; }
if obj.rdroop.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQIEC.rdroop-valueRange".to_string(),
class: "WindContQIEC".to_string(),
property: "WindContQIEC.rdroop".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQIEC.rdroop:valueRange".to_string(),
description: "Resistive component of voltage drop impedance (r<sub>droop</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_iqmin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQIEC>() {
Some(o) => o, None => continue,
};
if obj.iqmin.is_none() || obj.iqmax.is_none() { continue; }
if !((obj.iqmin.unwrap() as f64) < obj.iqmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQIEC.iqmin-valueRangePair".to_string(),
class: "WindContQIEC".to_string(),
property: "WindContQIEC.iqmin".to_string(),
message: "The value is either equal to or greater than WindContQIEC.iqmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQIEC.iqmin:valueRangePair".to_string(),
description: "Minimum reactive current injection (i<sub>qmin</sub>) (< WindContQIEC.iqmax). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_tufiltq_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQIEC>() {
Some(o) => o, None => continue,
};
if obj.tufiltq.is_none() { continue; }
if obj.tufiltq.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQIEC.tufiltq-valueRange".to_string(),
class: "WindContQIEC".to_string(),
property: "WindContQIEC.tufiltq".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQIEC.tufiltq:valueRange".to_string(),
description: "Voltage measurement filter time constant (T<sub>ufiltq</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_tqord_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQIEC>() {
Some(o) => o, None => continue,
};
if obj.tqord.is_none() { continue; }
if obj.tqord.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQIEC.tqord-valueRange".to_string(),
class: "WindContQIEC".to_string(),
property: "WindContQIEC.tqord".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQIEC.tqord:valueRange".to_string(),
description: "Time constant in reactive power order lag (T<sub>qord</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_tpfiltq_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQIEC>() {
Some(o) => o, None => continue,
};
if obj.tpfiltq.is_none() { continue; }
if obj.tpfiltq.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQIEC.tpfiltq-valueRange".to_string(),
class: "WindContQIEC".to_string(),
property: "WindContQIEC.tpfiltq".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQIEC.tpfiltq:valueRange".to_string(),
description: "Power measurement filter time constant (T<sub>pfiltq</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_umin_less_than(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQIEC>() {
Some(o) => o, None => continue,
};
if obj.umin.is_none() || obj.umax.is_none() { continue; }
if !((obj.umin.unwrap() as f64) < obj.umax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQIEC.umin-valueRangePair".to_string(),
class: "WindContQIEC".to_string(),
property: "WindContQIEC.umin".to_string(),
message: "The value is either equal to or greater than WindContQIEC.umax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQIEC.umin:valueRangePair".to_string(),
description: "Minimum voltage in voltage PI controller integral term (u<sub>min</sub>) (< WindContQIEC.umax). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_tpost_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQIEC>() {
Some(o) => o, None => continue,
};
if obj.tpost.is_none() { continue; }
if obj.tpost.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQIEC.tpost-valueRange".to_string(),
class: "WindContQIEC".to_string(),
property: "WindContQIEC.tpost".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQIEC.tpost:valueRange".to_string(),
description: "Length of time period where post fault reactive power is injected (T<sub>post</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qiec_wind_cont_qiec_xdroop_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQIEC>() {
Some(o) => o, None => continue,
};
if obj.xdroop.is_none() { continue; }
if obj.xdroop.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQIEC.xdroop-valueRange".to_string(),
class: "WindContQIEC".to_string(),
property: "WindContQIEC.xdroop".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQIEC.xdroop:valueRange".to_string(),
description: "Inductive component of voltage drop impedance (x<sub>droop</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_q_lim_iec_wind_cont_q_lim_iec_qmin_less_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQLimIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQLimIEC>() {
Some(o) => o, None => continue,
};
if obj.qmin.is_none() || obj.qmax.is_none() { continue; }
if !((obj.qmin.unwrap() as f64) < obj.qmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQLimIEC.qmin-valueRangePair".to_string(),
class: "WindContQLimIEC".to_string(),
property: "WindContQLimIEC.qmin".to_string(),
message: "The value is either equal to or greater than WindContQLimIEC.qmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQLimIEC.qmin:valueRangePair".to_string(),
description: "Minimum reactive power (q<sub>min</sub>) (< WindContQLimIEC.qmax). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qpqu_lim_iec_wind_cont_qpqu_lim_iec_tufi_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQPQULimIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQPQULimIEC>() {
Some(o) => o, None => continue,
};
if obj.tufiltql.is_none() { continue; }
if obj.tufiltql.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQPQULimIEC.tufiltql-valueRange".to_string(),
class: "WindContQPQULimIEC".to_string(),
property: "WindContQPQULimIEC.tufiltql".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQPQULimIEC.tufiltql:valueRange".to_string(),
description: "Voltage measurement filter time constant for Q capacity (T<sub>ufiltql</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_qpqu_lim_iec_wind_cont_qpqu_lim_iec_tpfi_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContQPQULimIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContQPQULimIEC>() {
Some(o) => o, None => continue,
};
if obj.tpfiltql.is_none() { continue; }
if obj.tpfiltql.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContQPQULimIEC.tpfiltql-valueRange".to_string(),
class: "WindContQPQULimIEC".to_string(),
property: "WindContQPQULimIEC.tpfiltql".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContQPQULimIEC.tpfiltql:valueRange".to_string(),
description: "Power measurement filter time constant for Q capacity (T<sub>pfiltql</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_rotor_riec_wind_cont_rotor_riec_tpfiltrr_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContRotorRIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContRotorRIEC>() {
Some(o) => o, None => continue,
};
if obj.tpfiltrr.is_none() { continue; }
if obj.tpfiltrr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContRotorRIEC.tpfiltrr-valueRange".to_string(),
class: "WindContRotorRIEC".to_string(),
property: "WindContRotorRIEC.tpfiltrr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContRotorRIEC.tpfiltrr:valueRange".to_string(),
description: "Filter time constant for power measurement (T<sub>pfiltrr</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_rotor_riec_wind_cont_rotor_riec_tomegafi_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContRotorRIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContRotorRIEC>() {
Some(o) => o, None => continue,
};
if obj.tomegafiltrr.is_none() { continue; }
if obj.tomegafiltrr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContRotorRIEC.tomegafiltrr-valueRange".to_string(),
class: "WindContRotorRIEC".to_string(),
property: "WindContRotorRIEC.tomegafiltrr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContRotorRIEC.tomegafiltrr:valueRange".to_string(),
description: "Filter time constant for generator speed measurement (T<sub>omegafiltrr</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_cont_rotor_riec_wind_cont_rotor_riec_rmin_les_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindContRotorRIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindContRotorRIEC>() {
Some(o) => o, None => continue,
};
if obj.rmin.is_none() || obj.rmax.is_none() { continue; }
if !((obj.rmin.unwrap() as f64) < obj.rmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindContRotorRIEC.rmin-valueRangePair".to_string(),
class: "WindContRotorRIEC".to_string(),
property: "WindContRotorRIEC.rmin".to_string(),
message: "The value is either equal to or greater than WindContRotorRIEC.rmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindContRotorRIEC.rmin:valueRangePair".to_string(),
description: "Minimum rotor resistance (r<sub>min</sub>) (< WindContRotorRIEC.rmax). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_gen_type3a_iec_wind_gen_type3a_iec_tic_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindGenType3aIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindGenType3aIEC>() {
Some(o) => o, None => continue,
};
if obj.tic.is_none() { continue; }
if obj.tic.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindGenType3aIEC.tic-valueRange".to_string(),
class: "WindGenType3aIEC".to_string(),
property: "WindGenType3aIEC.tic".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindGenType3aIEC.tic:valueRange".to_string(),
description: "Current PI controller integration time constant (T<sub>Ic</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_gen_type3b_iec_wind_gen_type3b_iec_two_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindGenType3bIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindGenType3bIEC>() {
Some(o) => o, None => continue,
};
if obj.two.is_none() { continue; }
if obj.two.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindGenType3bIEC.two-valueRange".to_string(),
class: "WindGenType3bIEC".to_string(),
property: "WindGenType3bIEC.two".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindGenType3bIEC.two:valueRange".to_string(),
description: "Time constant for crowbar washout filter (T<sub>wo</sub>) (>= 0). It is a case-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_gen_type3b_iec_wind_gen_type3b_iec_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindGenType3bIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindGenType3bIEC>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindGenType3bIEC.tg-valueRange".to_string(),
class: "WindGenType3bIEC".to_string(),
property: "WindGenType3bIEC.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindGenType3bIEC.tg:valueRange".to_string(),
description: "Current generation time constant (T<sub>g</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_gen_type4iec_wind_gen_type4iec_tg_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindGenType4IEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindGenType4IEC>() {
Some(o) => o, None => continue,
};
if obj.tg.is_none() { continue; }
if obj.tg.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindGenType4IEC.tg-valueRange".to_string(),
class: "WindGenType4IEC".to_string(),
property: "WindGenType4IEC.tg".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindGenType4IEC.tg:valueRange".to_string(),
description: "Time constant (T<sub>g</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_mech_iec_wind_mech_iec_hwtr_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindMechIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindMechIEC>() {
Some(o) => o, None => continue,
};
if obj.hwtr.is_none() { continue; }
if obj.hwtr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindMechIEC.hwtr-valueRange".to_string(),
class: "WindMechIEC".to_string(),
property: "WindMechIEC.hwtr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindMechIEC.hwtr:valueRange".to_string(),
description: "Inertia constant of wind turbine rotor (H<sub>WTR</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_mech_iec_wind_mech_iec_hgen_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindMechIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindMechIEC>() {
Some(o) => o, None => continue,
};
if obj.hgen.is_none() { continue; }
if obj.hgen.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindMechIEC.hgen-valueRange".to_string(),
class: "WindMechIEC".to_string(),
property: "WindMechIEC.hgen".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindMechIEC.hgen:valueRange".to_string(),
description: "Inertia constant of generator (H<sub>gen</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_pitch_cont_power_iec_wind_pitch_cont_power_ie_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPitchContPowerIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPitchContPowerIEC>() {
Some(o) => o, None => continue,
};
if obj.tr.is_none() { continue; }
if obj.tr.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPitchContPowerIEC.tr-valueRange".to_string(),
class: "WindPitchContPowerIEC".to_string(),
property: "WindPitchContPowerIEC.tr".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPitchContPowerIEC.tr:valueRange".to_string(),
description: "Voltage measurement time constant (T<sub>r</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_pitch_cont_power_iec_wind_pitch_cont_power_ie_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPitchContPowerIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPitchContPowerIEC>() {
Some(o) => o, None => continue,
};
if obj.t1.is_none() { continue; }
if obj.t1.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPitchContPowerIEC.t1-valueRange".to_string(),
class: "WindPitchContPowerIEC".to_string(),
property: "WindPitchContPowerIEC.t1".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPitchContPowerIEC.t1:valueRange".to_string(),
description: "Lag time constant (T<sub>1</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_pitch_cont_power_iec_wind_pitch_cont_power_ie_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPitchContPowerIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPitchContPowerIEC>() {
Some(o) => o, None => continue,
};
if obj.dpmin.is_none() || obj.dpmax.is_none() { continue; }
if !((obj.dpmin.unwrap() as f64) < obj.dpmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPitchContPowerIEC.dpmin-valueRangePair".to_string(),
class: "WindPitchContPowerIEC".to_string(),
property: "WindPitchContPowerIEC.dpmin".to_string(),
message: "The value is either equal to or greater than WindPitchContPowerIEC.dpmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPitchContPowerIEC.dpmin:valueRangePair".to_string(),
description: "Rate limit for decreasing power (dp<sub>min</sub>) (< WindPitchContPowerIEC.dpmax). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantFreqPcontrolIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantFreqPcontrolIEC>() {
Some(o) => o, None => continue,
};
if obj.twppfiltp.is_none() { continue; }
if obj.twppfiltp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantFreqPcontrolIEC.twppfiltp-valueRange".to_string(),
class: "WindPlantFreqPcontrolIEC".to_string(),
property: "WindPlantFreqPcontrolIEC.twppfiltp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantFreqPcontrolIEC.twppfiltp:valueRange".to_string(),
description: "Filter time constant for active power measurement (T<sub>WPpfiltp</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantFreqPcontrolIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantFreqPcontrolIEC>() {
Some(o) => o, None => continue,
};
if obj.twpffiltp.is_none() { continue; }
if obj.twpffiltp.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantFreqPcontrolIEC.twpffiltp-valueRange".to_string(),
class: "WindPlantFreqPcontrolIEC".to_string(),
property: "WindPlantFreqPcontrolIEC.twpffiltp".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantFreqPcontrolIEC.twpffiltp:valueRange".to_string(),
description: "Filter time constant for frequency measurement (T<sub>WPffiltp</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantFreqPcontrolIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantFreqPcontrolIEC>() {
Some(o) => o, None => continue,
};
if obj.tpfv.is_none() { continue; }
if obj.tpfv.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantFreqPcontrolIEC.tpfv-valueRange".to_string(),
class: "WindPlantFreqPcontrolIEC".to_string(),
property: "WindPlantFreqPcontrolIEC.tpfv".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantFreqPcontrolIEC.tpfv:valueRange".to_string(),
description: "Lag time constant in reference value transfer function (T<sub>pfv</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantFreqPcontrolIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantFreqPcontrolIEC>() {
Some(o) => o, None => continue,
};
if obj.kiwppmin.is_none() || obj.kiwppmax.is_none() { continue; }
if !((obj.kiwppmin.unwrap() as f64) < obj.kiwppmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantFreqPcontrolIEC.kiwppmin-valueRangePair".to_string(),
class: "WindPlantFreqPcontrolIEC".to_string(),
property: "WindPlantFreqPcontrolIEC.kiwppmin".to_string(),
message: "The value is either equal to or greater than WindPlantFreqPcontrolIEC.kiwppmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantFreqPcontrolIEC.kiwppmin:valueRangePair".to_string(),
description: "Minimum PI integrator term (K<sub>IWPpmin</sub>) (< WindPlantFreqPcontrolIEC.kiwppmax). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantFreqPcontrolIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantFreqPcontrolIEC>() {
Some(o) => o, None => continue,
};
if obj.dprefmin.is_none() || obj.dprefmax.is_none() { continue; }
if !((obj.dprefmin.unwrap() as f64) < obj.dprefmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantFreqPcontrolIEC.dprefmin-valueRangePair".to_string(),
class: "WindPlantFreqPcontrolIEC".to_string(),
property: "WindPlantFreqPcontrolIEC.dprefmin".to_string(),
message: "The value is either equal to or greater than WindPlantFreqPcontrolIEC.dprefmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantFreqPcontrolIEC.dprefmin:valueRangePair".to_string(),
description: "Minimum (negative) ramp rate of p<sub>WTref</sub> request from the plant controller to the wind turbines (dp<sub>refmin</sub>) (< WindPlantFreqPcontrolIEC.dprefmax). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_6(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantFreqPcontrolIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantFreqPcontrolIEC>() {
Some(o) => o, None => continue,
};
if obj.dpwprefmin.is_none() || obj.dpwprefmax.is_none() { continue; }
if !((obj.dpwprefmin.unwrap() as f64) < obj.dpwprefmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantFreqPcontrolIEC.dpwprefmin-valueRangePair".to_string(),
class: "WindPlantFreqPcontrolIEC".to_string(),
property: "WindPlantFreqPcontrolIEC.dpwprefmin".to_string(),
message: "The value is either equal to or greater than WindPlantFreqPcontrolIEC.dpwprefmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantFreqPcontrolIEC.dpwprefmin:valueRangePair".to_string(),
description: "Maximum negative ramp rate for wind plant power reference (dp<sub>WPrefmin</sub>) (< WindPlantFreqPcontrolIEC.dpwprefmax). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_7(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantFreqPcontrolIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantFreqPcontrolIEC>() {
Some(o) => o, None => continue,
};
if obj.prefmin.is_none() || obj.prefmax.is_none() { continue; }
if !((obj.prefmin.unwrap() as f64) < obj.prefmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantFreqPcontrolIEC.prefmin-valueRangePair".to_string(),
class: "WindPlantFreqPcontrolIEC".to_string(),
property: "WindPlantFreqPcontrolIEC.prefmin".to_string(),
message: "The value is either equal to or greater than WindPlantFreqPcontrolIEC.prefmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantFreqPcontrolIEC.prefmin:valueRangePair".to_string(),
description: "Minimum p<sub>WTref</sub> request from the plant controller to the wind turbines (p<sub>refmin</sub>) (< WindPlantFreqPcontrolIEC.prefmax). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_freq_pcontrol_iec_wind_plant_freq_pcont_etc_8(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantFreqPcontrolIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantFreqPcontrolIEC>() {
Some(o) => o, None => continue,
};
if obj.tpft.is_none() { continue; }
if obj.tpft.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantFreqPcontrolIEC.tpft-valueRange".to_string(),
class: "WindPlantFreqPcontrolIEC".to_string(),
property: "WindPlantFreqPcontrolIEC.tpft".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantFreqPcontrolIEC.tpft:valueRange".to_string(),
description: "Lead time constant in reference value transfer function (T<sub>pft</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.xrefmin.is_none() || obj.xrefmax.is_none() { continue; }
if !((obj.xrefmin.unwrap() as f64) < obj.xrefmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.xrefmin-valueRangePair".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.xrefmin".to_string(),
message: "The value is either equal to or greater than WindPlantReactiveControlIEC.xrefmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.xrefmin:valueRangePair".to_string(),
description: "Minimum x<sub>WTref</sub> (q<sub>WTref</sub> or delta u<sub>WTref</sub>) request from the plant controller (x<sub>refmin</sub>) (< WindPlantReactiveControlIEC.xrefmax). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_2(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.twpufiltq.is_none() { continue; }
if obj.twpufiltq.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.twpufiltq-valueRange".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.twpufiltq".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.twpufiltq:valueRange".to_string(),
description: "Filter time constant for voltage measurement (T<sub>WPufiltq</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_3(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.txft.is_none() { continue; }
if obj.txft.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.txft-valueRange".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.txft".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.txft:valueRange".to_string(),
description: "Lead time constant in reference value transfer function (T<sub>xft</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_4(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.txfv.is_none() { continue; }
if obj.txfv.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.txfv-valueRange".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.txfv".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.txfv:valueRange".to_string(),
description: "Lag time constant in reference value transfer function (T<sub>xfv</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_5(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.kiwpxmin.is_none() || obj.kiwpxmax.is_none() { continue; }
if !((obj.kiwpxmin.unwrap() as f64) < obj.kiwpxmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.kiwpxmin-valueRangePair".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.kiwpxmin".to_string(),
message: "The value is either equal to or greater than WindPlantReactiveControlIEC.kiwpxmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.kiwpxmin:valueRangePair".to_string(),
description: "Minimum reactive power/voltage reference from integration (K<sub>IWPxmin</sub>) (< WindPlantReactiveControlIEC.kiwpxmax). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_6(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.twppfiltq.is_none() { continue; }
if obj.twppfiltq.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.twppfiltq-valueRange".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.twppfiltq".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.twppfiltq:valueRange".to_string(),
description: "Filter time constant for active power measurement (T<sub>WPpfiltq</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_7(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.tuqfilt.is_none() { continue; }
if obj.tuqfilt.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.tuqfilt-valueRange".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.tuqfilt".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.tuqfilt:valueRange".to_string(),
description: "Filter time constant for voltage-dependent reactive power (T<sub>uqfilt</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_8(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.twpqfiltq.is_none() { continue; }
if obj.twpqfiltq.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.twpqfiltq-valueRange".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.twpqfiltq".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.twpqfiltq:valueRange".to_string(),
description: "Filter time constant for reactive power measurement (T<sub>WPqfiltq</sub>) (>= 0). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_plant_reactive_control_iec_wind_plant_reactiv_etc_9(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindPlantReactiveControlIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindPlantReactiveControlIEC>() {
Some(o) => o, None => continue,
};
if obj.dxrefmin.is_none() || obj.dxrefmax.is_none() { continue; }
if !((obj.dxrefmin.unwrap() as f64) < obj.dxrefmax.unwrap() as f64) {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindPlantReactiveControlIEC.dxrefmin-valueRangePair".to_string(),
class: "WindPlantReactiveControlIEC".to_string(),
property: "WindPlantReactiveControlIEC.dxrefmin".to_string(),
message: "The value is either equal to or greater than WindPlantReactiveControlIEC.dxrefmax.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindPlantReactiveControlIEC.dxrefmin:valueRangePair".to_string(),
description: "Maximum negative ramp rate for wind turbine reactive power/voltage reference (dx<sub>refmin</sub>) (< WindPlantReactiveControlIEC.dxrefmax). It is a project-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_protection_iec_wind_protection_iec_tfma_min_incl(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindProtectionIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindProtectionIEC>() {
Some(o) => o, None => continue,
};
if obj.tfma.is_none() { continue; }
if obj.tfma.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindProtectionIEC.tfma-valueRange".to_string(),
class: "WindProtectionIEC".to_string(),
property: "WindProtectionIEC.tfma".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindProtectionIEC.tfma:valueRange".to_string(),
description: "Time interval of moving average window (TfMA) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}
pub fn check_p61970_302_dynamics_ap_con_complex_shacl_wind_ref_frame_rot_iec_wind_ref_frame_rot_iec_tpll_etc(dataset: &CimDataset) -> Vec<Violation> {
let mut violations = Vec::new();
for mrid in dataset.by_type.get("WindRefFrameRotIEC").into_iter().flatten() {
let entry = &dataset.entries[mrid];
let obj = match entry.element.as_any()
.downcast_ref::<cimstructs::WindRefFrameRotIEC>() {
Some(o) => o, None => continue,
};
if obj.tpll.is_none() { continue; }
if obj.tpll.unwrap() < 0_f64 {
violations.push(Violation {
object_id: mrid.clone(),
rule_id: "dyu:WindRefFrameRotIEC.tpll-valueRange".to_string(),
class: "WindRefFrameRotIEC".to_string(),
property: "WindRefFrameRotIEC.tpll".to_string(),
message: "The value is negative.".to_string(),
severity: "sh:Violation".to_string(),
name: "C:302:DY:WindRefFrameRotIEC.tpll:valueRange".to_string(),
description: "Time constant for PLL first order filter model (T<sub>PLL</sub>) (>= 0). It is a type-dependent parameter.".to_string(),
});
}
}
violations
}