From 21d4440d9c57c7462f702aec5ff1a0768d5d5a6a Mon Sep 17 00:00:00 2001 From: Nitish Bharambe Date: Wed, 20 Nov 2024 16:58:24 +0100 Subject: [PATCH] add fix Signed-off-by: Nitish Bharambe --- .../math_solver/observability.hpp | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/math_solver/observability.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/math_solver/observability.hpp index 01be820d5..0b481c574 100644 --- a/power_grid_model_c/power_grid_model/include/power_grid_model/math_solver/observability.hpp +++ b/power_grid_model_c/power_grid_model/include/power_grid_model/math_solver/observability.hpp @@ -45,17 +45,17 @@ Idx count_bus_injection_sensors(const Idx n_bus, const MeasuredValues& meas template std::tuple count_voltage_sensors(const Idx n_bus, const MeasuredValues& measured_values) { - Idx n_voltage_magnitude{}; - Idx n_voltage_phasor{}; + Idx n_voltage_sensor{}; + Idx n_voltage_phasor_sensor{}; for (Idx bus = 0; bus != n_bus; ++bus) { if (measured_values.has_voltage(bus)) { - n_voltage_magnitude++; + n_voltage_sensor++; if (measured_values.has_angle_measurement(bus)) { - n_voltage_phasor++; + n_voltage_phasor_sensor++; } } } - return std::make_tuple(n_voltage_magnitude, n_voltage_phasor); + return std::make_tuple(n_voltage_sensor, n_voltage_phasor_sensor); } } // namespace detail @@ -66,17 +66,19 @@ inline void necessary_observability_check(MeasuredValues const& measured_va Idx const n_bus{topo->n_bus()}; std::vector const& branch_bus_idx{topo->branch_bus_idx}; - auto const [n_voltage_magnitude, n_voltage_phasor] = detail::count_voltage_sensors(n_bus, measured_values); - if (n_voltage_magnitude + n_voltage_phasor < 1) { + auto const [n_voltage_sensor, n_voltage_phasor_sensor] = detail::count_voltage_sensors(n_bus, measured_values); + if (n_voltage_sensor < 1) { throw NotObservableError{}; } + Idx const n_injection_sensor = detail::count_bus_injection_sensors(n_bus, measured_values); Idx const n_branch_sensor = detail::count_branch_sensors(branch_bus_idx, n_bus, measured_values); + Idx const n_power_sensor = n_injection_sensor + n_branch_sensor; - if (n_voltage_phasor == 0 && n_branch_sensor + n_injection_sensor < n_bus - 1) { + if (n_voltage_phasor_sensor == 0 && n_power_sensor < n_bus - 1) { throw NotObservableError{}; } - if (n_voltage_phasor > 0 && n_branch_sensor + n_injection_sensor + n_voltage_phasor < n_bus) { + if (n_voltage_phasor_sensor > 0 && n_power_sensor + n_voltage_phasor_sensor < n_bus) { throw NotObservableError{}; } }