@@ -473,14 +473,17 @@ template <symmetry_tag sym> class MeasuredValues {
473
473
}
474
474
475
475
if (is_normal (accumulated_inverse_p_variance) && is_normal (accumulated_inverse_q_variance)) {
476
- return PowerSensorCalcParam<sym>{accumulated_p_value / accumulated_inverse_p_variance +
477
- 1 .0i * accumulated_q_value / accumulated_inverse_q_variance,
478
- RealValue<sym>{1.0 } / accumulated_inverse_p_variance,
479
- RealValue<sym>{1.0 } / accumulated_inverse_q_variance};
476
+ return PowerSensorCalcParam<sym>{
477
+ .real_component = {.value = accumulated_p_value / accumulated_inverse_p_variance,
478
+ .variance = RealValue<sym>{1.0 } / accumulated_inverse_p_variance},
479
+ .imag_component = {.value = accumulated_q_value / accumulated_inverse_q_variance,
480
+ .variance = RealValue<sym>{1.0 } / accumulated_inverse_q_variance}};
480
481
}
481
- return PowerSensorCalcParam<sym>{accumulated_p_value + 1 .0i * accumulated_q_value,
482
- RealValue<sym>{std::numeric_limits<double >::infinity ()},
483
- RealValue<sym>{std::numeric_limits<double >::infinity ()}};
482
+ return PowerSensorCalcParam<sym>{
483
+ .real_component = {.value = accumulated_p_value,
484
+ .variance = RealValue<sym>{std::numeric_limits<double >::infinity ()}},
485
+ .imag_component = {.value = accumulated_q_value,
486
+ .variance = RealValue<sym>{std::numeric_limits<double >::infinity ()}}};
484
487
}
485
488
486
489
template <sensor_calc_param_type CalcParam, bool only_magnitude = false >
@@ -588,9 +591,9 @@ template <symmetry_tag sym> class MeasuredValues {
588
591
FlowVector& source_flow) const {
589
592
// residual normalized by variance
590
593
// mu = (sum[S_i] - S_cal) / sum[variance]
591
- auto const delta = bus_appliance_injection.value - s;
592
- ComplexValue<sym> const mu =
593
- real (delta) / bus_appliance_injection. p_variance + 1 .0i * imag (delta) / bus_appliance_injection.q_variance ;
594
+ auto const delta = ComplexValue<sym>{ bus_appliance_injection.value () - s} ;
595
+ ComplexValue<sym> const mu = real (delta) / bus_appliance_injection. real_component . variance +
596
+ 1 .0i * imag (delta) / bus_appliance_injection.imag_component . variance ;
594
597
595
598
// S_i = S_i_mea - var_i * mu
596
599
auto const calculate_injection = [&mu](auto const & power) {
0 commit comments