@@ -32,28 +32,19 @@ class Source : public Appliance {
3232 explicit Source (SourceInput const & source_input, double u)
3333 : Appliance{source_input, u},
3434 u_ref_{source_input.u_ref },
35- u_ref_angle_{is_nan (source_input.u_ref_angle ) ? 0.0 : source_input.u_ref_angle } {
36- double const sk{is_nan (source_input.sk ) ? default_source_sk : source_input.sk };
37- double const rx_ratio{is_nan (source_input.rx_ratio ) ? default_source_rx_ratio : source_input.rx_ratio };
38- double const z01_ratio{is_nan (source_input.z01_ratio ) ? default_source_z01_ratio : source_input.z01_ratio };
39- calculate_y_ref (sk, rx_ratio, z01_ratio);
40- }
41-
42- // calculate y1 y0 ref
43- void calculate_y_ref (double sk, double rx_ratio, double z01_ratio) {
44- double const z_abs = base_power_3p / sk; // s_pu = s/base_s, z = u^2/s = 1/s = base_s/s_pu
45- double const x1 = z_abs / sqrt (rx_ratio * rx_ratio + 1.0 );
46- double const r1 = x1 * rx_ratio;
47- y1_ref_ = 1.0 / DoubleComplex{r1, x1};
48- y0_ref_ = y1_ref_ / z01_ratio;
49- }
35+ u_ref_angle_{is_nan (source_input.u_ref_angle ) ? 0.0 : source_input.u_ref_angle },
36+ sk_{is_nan (source_input.sk ) ? default_source_sk : source_input.sk },
37+ rx_ratio_{is_nan (source_input.rx_ratio ) ? default_source_rx_ratio : source_input.rx_ratio },
38+ z01_ratio_{is_nan (source_input.z01_ratio ) ? default_source_z01_ratio : source_input.z01_ratio } {}
5039
5140 template <symmetry_tag sym> SourceCalcParam math_param () const {
52- // internal element_admittance
53- SourceCalcParam param;
54- param.y0 = y0_ref_;
55- param.y1 = y1_ref_;
56- return param;
41+ // calculate y1 y0 ref
42+ double const z_abs = base_power_3p / sk_;
43+ double const x1 = z_abs / sqrt (rx_ratio_ * rx_ratio_ + 1.0 );
44+ double const r1 = x1 * rx_ratio_;
45+ DoubleComplex const y1_ref = 1.0 / DoubleComplex{r1, x1};
46+ DoubleComplex const y0_ref = y1_ref / z01_ratio_;
47+ return SourceCalcParam{.y1 = y1_ref, .y0 = y0_ref};
5748 }
5849
5950 // setter
@@ -117,9 +108,10 @@ class Source : public Appliance {
117108 private:
118109 double u_ref_;
119110 double u_ref_angle_;
120- // positive and zero sequence ref
121- DoubleComplex y1_ref_;
122- DoubleComplex y0_ref_;
111+ // source short circuit power
112+ double sk_;
113+ double rx_ratio_;
114+ double z01_ratio_;
123115
124116 double injection_direction () const final { return 1.0 ; }
125117};
0 commit comments