|
1 | | -function [CT, CQ, OmegaU, PitchAngle] = SteadyState(Blade, Airfoil, Drivetrain, Control, U) |
| 1 | +function [CT, CQ, OmegaU, PitchAngle] = SteadyState(Blade, Airfoil, Drivetrain, Control, U, AirDensity) |
2 | 2 | % Initialise parameters |
3 | 3 | OmegaU = zeros(size(U)); |
4 | 4 | PitchAngle = zeros(size(U)); |
|
24 | 24 |
|
25 | 25 | % Update rotor torque curve points to new wind speed |
26 | 26 | [~, CQr] = PerformanceCoefficients(Blade, Airfoil, Beta(1), (Omega(1)/Drivetrain.Gearbox.Ratio)*Blade.Radius(end)/U(i)); |
27 | | - Qr(1) = 0.5*CQr*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
| 27 | + Qr(1) = 0.5*CQr*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
28 | 28 | [~, CQr] = PerformanceCoefficients(Blade, Airfoil, Beta(2), (Omega(2)/Drivetrain.Gearbox.Ratio)*Blade.Radius(end)/U(i)); |
29 | | - Qr(2) = 0.5*CQr*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
| 29 | + Qr(2) = 0.5*CQr*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
30 | 30 |
|
31 | 31 | % Move test section along control curve until control and rotor torque |
32 | 32 | % cross or until end of control curve is reached |
|
51 | 51 |
|
52 | 52 | % Determine torque from rotor performance |
53 | 53 | [~, CQr] = PerformanceCoefficients(Blade, Airfoil, Beta(2), (Omega(2)/Drivetrain.Gearbox.Ratio)*Blade.Radius(end)/U(i)); |
54 | | - Qr(2) = 0.5*CQr*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
| 54 | + Qr(2) = 0.5*CQr*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
55 | 55 | end |
56 | 56 |
|
57 | 57 | if strcmp(Region, 'lin') % Operation linear transition section of partial load control region |
|
78 | 78 | QcCross = Qc(1) + (OmegaCross-Omega(1))*(Qc(2)-Qc(1))/(Omega(2)-Omega(1)); |
79 | 79 | % Determine torque from rotor performance |
80 | 80 | [CTr, CQr] = PerformanceCoefficients(Blade, Airfoil, Beta(2), (OmegaCross/Drivetrain.Gearbox.Ratio)*Blade.Radius(end)/U(i)); |
81 | | - QrCross = 0.5*CQr*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
| 81 | + QrCross = 0.5*CQr*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
82 | 82 | Diff = (QrCross - QcCross)/Control.Torque.Demanded; |
83 | 83 |
|
84 | 84 | if abs(Diff) < Tolerance |
|
124 | 124 |
|
125 | 125 | % Determine torque from rotor performance |
126 | 126 | [CTr, CQr] = PerformanceCoefficients(Blade, Airfoil, Beta(2), (OmegaCross/Drivetrain.Gearbox.Ratio)*Blade.Radius(end)/U(i)); |
127 | | - QrCross = 0.5*CQr*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
| 127 | + QrCross = 0.5*CQr*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
128 | 128 | Diff = (QrCross - QcCross)/Control.Torque.Demanded; |
129 | 129 |
|
130 | 130 | if abs(Diff) < Tolerance |
|
172 | 172 |
|
173 | 173 | % Determine torque from rotor performance |
174 | 174 | [~, CQr] = PerformanceCoefficients(Blade, Airfoil, Beta(2), TSRFull); |
175 | | - Qr(2) = 0.5*CQr*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
| 175 | + Qr(2) = 0.5*CQr*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
176 | 176 |
|
177 | 177 | end |
178 | 178 |
|
|
192 | 192 | Beta(2) = Beta(1)+2; |
193 | 193 | % Determine torque from rotor performance |
194 | 194 | [~, CQr] = PerformanceCoefficients(Blade, Airfoil, Beta(2), TSRFull); |
195 | | - Qr(2) = 0.5*CQr*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
| 195 | + Qr(2) = 0.5*CQr*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
196 | 196 | success = false; |
197 | 197 |
|
198 | 198 | for iter = 1:20 |
|
201 | 201 |
|
202 | 202 | Beta(2) = interp1(Qr, Beta, Control.Torque.Demanded, 'linear', 'extrap'); |
203 | 203 | [CTr, CQr] = PerformanceCoefficients(Blade, Airfoil, Beta(2), TSRFull); |
204 | | - Qr(2) = 0.5*CQr*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
| 204 | + Qr(2) = 0.5*CQr*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio; |
205 | 205 | |
206 | 206 | Diff = (Qr(2) - Control.Torque.Demanded)/Control.Torque.Demanded; |
207 | 207 | if abs(Diff) < Tolerance |
|
215 | 215 |
|
216 | 216 | OmegaU(i) = OmegaC/Drivetrain.Gearbox.Ratio; |
217 | 217 | PitchAngle(i) = Beta(2); |
218 | | - CQ(i) = Control.Torque.Demanded/(0.5*1.225*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio); |
| 218 | + CQ(i) = Control.Torque.Demanded/(0.5*AirDensity*U(i)^2*pi*Blade.Radius(end)^3*Drivetrain.Gearbox.Efficiency/Drivetrain.Gearbox.Ratio); |
219 | 219 | CT(i) = CTr; |
220 | 220 | %} |
221 | 221 | end |
|
0 commit comments