aeolus header

Modifying the NREL5MW

The NREL5MW turbine models is based on the virtual turbine described in [Jonkman et. al.] and it is therefore completely open. The turbine is implemented in standard Simulink blocks and it should therefore be usable by anyone with a license for Simulink 2009a or newer.

The model is based on static lookup table based aerodynamics, a 3rd order drive train model and a simple gain scheduled PI controller as described here.

5 quick steps

  • Open the turbines library and unlock it

  • Copy the NREL5MW Simulink block and give the copy a suitable name

  • Open and alter the new turbine model as needed.

  • Alter the nrel5mw/nrelvals.m file to fit the wanted parameter changes

  • Run nrelvals.m and follow instruction to load parameters into the new block

The parameters

The parameters are taken from or computed based on the data available in [Jonkman et. al.]. The file nrel5mw/nrelvals.m contains all the computations and if interactive=1 it will give instructions of how to store the parameters in the turbine block.

Turbulence
Davidson, P.A.
Oxford University Press, 2004
[BibTeX]

@book{Davidson:2004,
  author = {P. A. Davidson},
  title = {Turbulence},
  publisher = {Oxford University Press},
  year = {2004}
}

Analytical Modelling of Wind Speed Deficit in Large Offshore Wind Farms
Frandsen, S., Barthelmie, R., Pryor, S., Rathmann, O., Larsen, S and Højstrup, J
Wind Energy, 2006, Vol. 9, pp. 39-53
[BibTeX]

@article{Frandsen:2006,
  author = {Sten Frandsen and Rebecca Barthelmie and Sara Pryor and Ole Rathmann and Søren Larsen and Jørgen Højstrup},
  title = {Analytical Modelling of Wind Speed Deficit in Large Offshore Wind Farms},
  journal = {Wind Energy},
  year = {2006},
  volume = {9},
  pages = {39--53}
}

Aeolus Toolbox for Dynamic Wind Farm Model, Simulation and Control
Grunnet, J.D., Soltani, M., Knudsen, T., Kragelund, M. and Bak, T.
In Proc. of the 2010 European Wind Energy Conference, 2010
[BibTeX]

@conference{grunnet:2010,
  author = {Jacob Deleuran Grunnet and Mohsen Soltani and Torben Knudsen and Martin Kragelund and Thomas Bak},
  title = {Aeolus Toolbox for Dynamic Wind Farm Model, Simulation and Control},
  booktitle = {Proc. of the 2010 European Wind Energy Conference},
  year = {2010}
}

A note on wind generator interaction
Jensen, N.
Risø National Laboratory, 1983
[BibTeX]

@techreport{Jensen:1983,
  author = {N. Jensen},
  title = {A note on wind generator interaction},
  institution = {Risø National Laboratory},
  year = {1983}
}

Definition of a 5-MW Reference Wind Turbine for Offshore System Development
Jonkman, J., Butterfield, S., Musial, W. and Scott, G.
National Renewable Energy Laboratory, 2009
[BibTeX]

@techreport{NREL5MW,
  author = {J. Jonkman and S. Butterfield and W. Musial and G. Scott},
  title = {Definition of a 5-MW Reference Wind Turbine for Offshore System Development},
  institution = {National Renewable Energy Laboratory},
  url = {http://www.nrel.gov/wind/pdfs/38060.pdf},
  year = {2009}
}

Lateral coherence in isotropic turbulence and in the natural wind
Kristensen, L. and Jensen, N.O.
Boundary-Layer Meteorology, November, 1979, Vol. 17, pp. 353-373
[BibTeX] [DOI]

@article{kristensen:1979,
  author = {Kristensen, L. and Jensen, N.~O.},
  title = {Lateral coherence in isotropic turbulence and in the natural wind},
  journal = {Boundary-Layer Meteorology},
  year = {1979},
  volume = {17},
  pages = {353-373},
  doi = {http://dx.doi.org/10.1007/BF00117924}
}

Wake Meandering: A Pragmatic Approach
Larsen, G.C., Madsen, H.A., Thomsen, K. and Larsen, T.J.
Wind Energy, 2008, Vol. 11, pp. 377-395
[BibTeX]

@article{Larsen:2008b,
  author = {Gunner C. Larsen and Helge Aa. Madsen and Kenneeth Thomsen and Torben J. Larsen},
  title = {Wake Meandering: A Pragmatic Approach},
  journal = {Wind Energy},
  year = {2008},
  volume = {11},
  pages = {377--395}
}

Modeling and Simulation of Offshore Wind Farms for Farm Level Control
Soltani, M., Knudsen, T. and Bak, T.
In European Offshore Wind Conference and Exhibition (EOW) 2009, 2009
[BibTeX]

@inproceedings{mohsen:2009c,
  author = {Mohsen Soltani and Torben Knudsen and Thomas Bak},
  title = {Modeling and Simulation of Offshore Wind Farms for Farm Level Control},
  booktitle = {European Offshore Wind Conference and Exhibition (EOW) 2009},
  year = {2009}
}

Three-Dimensional Wind Simulation
Veers, P.S.
Sandia National Laboratories, 1988 (SAND88-0152 UC-261)
[BibTeX]

@techreport{Veers:1988,
  author = {Paul S. Veers},
  title = {Three-Dimensional Wind Simulation},
  institution = {Sandia National Laboratories},
  year = {1988},
  number = {SAND88-0152 UC-261}
}

Wind Models for Simulation of Power Fluctuations from Wind Farms
Sørensen, P., Hansen, A., AndrĂ©, P., Rosas, C.
Journal of Wind Engineering and Industrial Aerodynamics, 2002
[BibTeX]

@Article{Soerensen02,
  author = 	 {Poul Sørensen and Anca D. Hansen and Pedro AndrĂ© and Carvalho Rosas},
  title = 	 {Wind Models for Simulation of Power Fluctuations from Wind Farms},
  journal = 	 {Journal of Wind Engineering and Industrial Aerodynamics},
  year = 	 2002,
  volume = 	 90,
  pages = 	 {1381-1402}
}
Excerpts from nrelvals.m

%% NREL 5MW data generation.
%
% Calculates parameters for the NREL 5 MW turbine based on CT/CP tables and
% data available in [1].
% The cp and thrust tables for simwindfarm 1.0 and earlier can be found in
% nrel_cp.tsv and nrel_thrust.tsv.
%
% They were generated using wt_perf.exe (see https://wind.nrel.gov/designcodes/simulators/wtperf/)
% New versions of the tables has been added including the scripts to
% generate them. Everything can be found in the wt_perf/ subdirectory.
% See the README.txt file herin to get further details.
%
% Copyright 2009 - Aalborg University
% Author Jacob Grunnet - grunnet@es.aau.dk
% Modified by Mikael Svenstrup
%
%[1] Definition of a 5-MW Reference Wind Turbine for Offshore System Development
% J. Jonkman, S. Butterfield, W. Musial, and G. Scott

% ...

%% Basic wind turbine parameters used in calculations
rho=1.2231;         %Air density
R=63;               %Rotor radius
omega=12.1/60*2*pi;   %Rotor speed used in wt_perf
N=97;               %Gearbox ratio



%% CT and CP tables
%Load CP and thrust files (select which version of WT_Perf data you want
cp = load('wt_perf/nrel_cp_12rmp_v310.oup','-ascii');
F  = load('wt_perf/nrel_ct_12rmp_v310.oup','-ascii');

% ...

omega = cp(1)/60*2*pi;  %Extract the rotational speed that was used in wt_perf
beta=cp(2:end,1);       %Extract pitch
tsr=cp(1,2:end);        %Extract tip speed ratio
cp=cp(2:end,2:end);     %Extract power coefficent
F=F(2:end,2:end);   %Extract Thrust

%Convert thrust force to N (can also be changed in a setting in the .wtp file)
kN_to_N = 1000;
F=F*kN_to_N;



u=omega*R./tsr;     %Derived wind speeds

%Compute thrust coefficient for each TSR
ct =  2 * F / (rho*pi*R^2) .* repmat(tsr,length(beta),1).^2 / (omega^2 * R^2);


% ...

%% Make ENV and WT structure
env.rho=rho;

%CP and CT tables
wt.cp.table=cp;
wt.cp.beta=beta;
wt.cp.tsr=tsr;

wt.ct.table=ct;
wt.ct.beta=beta;
wt.ct.tsr=tsr;



% ...

%Blade properties
wt.blade.mass=17740; % [kg]

% ...


%Region 2 (optimal region)

% ...

%Rated torque and power
M_rated=43093.55; %[Nm]
P_rated=M_rated*wg_rated;

%Torque table generation
M_r1=0*wg1r; %Region 1
M_r15=M_2/(wg_2-wg_15)*(wg15r-wg_15); %region 1.5
M_r2=k_M*wg2r.^2; %region 2
M_r25=(P_rated/wg_3-M_25)/(wg_3-wg_25)*(wg25r-wg_25)+M_25; %region 2.5

M_r=[M_r1 M_r15 M_r2 M_r25]; %Full table

%% pitch controller

%Apparent inertia at the low speed shaft
I_DT=N^2*wt.gen.inertia+wt.rotor.inertia;

%Control specification parameters
damp=.7; %damping facator
wund=.6; %Undamped eigenfrequency
w_rot_r=12.1*pi/30; %Optimal rotor rate

%% Calculate lookup matrix for gain scheduling

% ...

%Uncomment to use values from NREL paper
dpdv=-28.24e6;
beta_k=6.302336; %Pitch angle causing doubling of power
beta_r=0:.1:90;
beta=beta_r;
gk=1+(beta_r-beta_opt)/beta_k;
gs=repmat(gk,size(gs,1),1);

%Calculate base propertional and integral gains
Kp=2*I_DT*w_rot_r*damp*wund/(N*dpdv);
Ki=I_DT*w_rot_r*wund^2/(N*dpdv);


%% Fill out ctrl part of data struct
%Pitch controller
wt.ctrl.pitch.beta=beta;

% ...

%Save public values
pub.rotor.radius=wt.rotor.radius;
pub.rated=5e6; %5MW

p.wt=wt;
p.env=env;
p.public=pub;