@@ -116,16 +116,16 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
116
116
sub_timer = Timer (calculation_info, 2222 , " Linearize measurements" );
117
117
// get generated (measured/estimated) voltage phasor
118
118
// with current result voltage angle
119
- ComplexValueVector<sym> linearized_u = linearize_measurements (output.u , measured_values);
119
+ ComplexValueVector<sym> u = linearize_measurements (output.u , measured_values);
120
120
121
121
// prepare matrix
122
122
sub_timer = Timer (calculation_info, 2222 , " Prepare matrix, including pre-factorization" );
123
- prepare_matrix (y_bus, measured_values, linearized_u );
123
+ prepare_matrix (y_bus, measured_values, u );
124
124
// prefactorize
125
125
sparse_solver_.prefactorize (data_gain_, perm_, observability_result.use_perturbation ());
126
126
127
127
sub_timer = Timer (calculation_info, 2224 , " Calculate rhs" );
128
- prepare_rhs (y_bus, measured_values, linearized_u );
128
+ prepare_rhs (y_bus, measured_values, u );
129
129
// solve with prefactorization
130
130
sub_timer = Timer (calculation_info, 2225 , " Solve sparse linear equation (pre-factorized)" );
131
131
sparse_solver_.solve_with_prefactorized_matrix (data_gain_, perm_, x_rhs_, x_rhs_);
@@ -170,7 +170,7 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
170
170
}
171
171
172
172
void prepare_matrix (YBus<sym> const & y_bus, MeasuredValues<sym> const & measured_value,
173
- ComplexValueVector<sym> const & linearized_u ) {
173
+ ComplexValueVector<sym> const & u ) {
174
174
MathModelParam<sym> const & param = y_bus.math_model_param ();
175
175
IdxVector const & row_indptr = y_bus.row_indptr_lu ();
176
176
IdxVector const & col_indices = y_bus.col_indices_lu ();
@@ -206,7 +206,7 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
206
206
// G += (-Ys)^H * (variance^-1) * (-Ys)
207
207
auto const & shunt_power = measured_value.shunt_power (obj);
208
208
auto const shunt_current_conj =
209
- statistics::scale (shunt_power, ComplexValue<sym>{1.0 / linearized_u [row]});
209
+ statistics::scale (shunt_power, ComplexValue<sym>{1.0 / u [row]});
210
210
block.g () +=
211
211
dot (hermitian_transpose (param.shunt_param [obj]),
212
212
diagonal_inverse (
@@ -229,7 +229,7 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
229
229
// NOTE: not the current bus!
230
230
Idx const measured_bus = branch_bus_idx[obj][measured_side];
231
231
auto const current_conj =
232
- statistics::scale (power, ComplexValue<sym>{1.0 / linearized_u [measured_bus]});
232
+ statistics::scale (power, ComplexValue<sym>{1.0 / u [measured_bus]});
233
233
block.g () +=
234
234
dot (hermitian_transpose (param.branch_param [obj].value [measured_side * 2 + b0]),
235
235
diagonal_inverse (
@@ -250,7 +250,7 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
250
250
auto const & injection = measured_value.bus_injection (row);
251
251
block.r () = ComplexTensor<sym>{static_cast <ComplexValue<sym>>(
252
252
-(static_cast <IndependentComplexRandVar<sym>>(
253
- statistics::scale (injection, ComplexValue<sym>{1.0 / linearized_u [row]}))
253
+ statistics::scale (injection, ComplexValue<sym>{1.0 / u [row]}))
254
254
.variance ))};
255
255
}
256
256
}
@@ -279,7 +279,7 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
279
279
}
280
280
281
281
void prepare_rhs (YBus<sym> const & y_bus, MeasuredValues<sym> const & measured_value,
282
- ComplexValueVector<sym> const & linearized_u ) {
282
+ ComplexValueVector<sym> const & u ) {
283
283
MathModelParam<sym> const & param = y_bus.math_model_param ();
284
284
std::vector<BranchIdx> const & branch_bus_idx = y_bus.math_topology ().branch_bus_idx ;
285
285
@@ -292,7 +292,7 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
292
292
// fill block with voltage measurement
293
293
if (measured_value.has_voltage (bus)) {
294
294
// eta += u / variance
295
- rhs_block.eta () += linearized_u [bus] / measured_value.voltage_var (bus);
295
+ rhs_block.eta () += u [bus] / measured_value.voltage_var (bus);
296
296
}
297
297
// fill block with branch, shunt measurement, need to convert to current
298
298
for (Idx element_idx = y_bus.y_bus_entry_indptr ()[data_idx];
@@ -303,7 +303,7 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
303
303
if (type == YBusElementType::shunt) {
304
304
if (measured_value.has_shunt (obj)) {
305
305
PowerSensorCalcParam<sym> const & power = measured_value.shunt_power (obj);
306
- auto const current_conj = statistics::scale (power, ComplexValue<sym>{1.0 / linearized_u [bus]});
306
+ auto const current_conj = statistics::scale (power, ComplexValue<sym>{1.0 / u [bus]});
307
307
auto const rot_invariant_current_conj =
308
308
static_cast <IndependentComplexRandVar<sym>>(current_conj);
309
309
// eta += (-Ys)^H * (variance^-1) * i_shunt
@@ -327,7 +327,7 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
327
327
// NOTE: not the current bus!
328
328
Idx const measured_bus = branch_bus_idx[obj][measured_side];
329
329
auto const current_conj =
330
- statistics::scale (power, ComplexValue<sym>{1.0 / linearized_u [measured_bus]});
330
+ statistics::scale (power, ComplexValue<sym>{1.0 / u [measured_bus]});
331
331
auto const rot_invariant_current_conj =
332
332
static_cast <IndependentComplexRandVar<sym>>(current_conj);
333
333
// eta += Y{side, b}^H * (variance^-1) * i_branch_{f, t}
@@ -341,9 +341,8 @@ template <symmetry_tag sym_type> class IterativeLinearSESolver {
341
341
}
342
342
// fill block with injection measurement, need to convert to current
343
343
if (measured_value.has_bus_injection (bus)) {
344
- rhs_block.tau () = conj (
345
- statistics::scale (measured_value.bus_injection (bus), ComplexValue<sym>{1.0 / linearized_u[bus]})
346
- .value ());
344
+ rhs_block.tau () =
345
+ conj (statistics::scale (measured_value.bus_injection (bus), ComplexValue<sym>{1.0 / u[bus]}).value ());
347
346
}
348
347
}
349
348
}
0 commit comments