Code covered by the BSD License

### Highlights from 3D turbulent wind for wind energy: Kaimal and improved von Karman models

5.0
5.0 | 2 ratings Rate this file 30 Downloads (last 30 days) File Size: 9.5 KB File ID: #43049 Version: 1.4

# 3D turbulent wind for wind energy: Kaimal and improved von Karman models

### Francesco Perrone (view profile)

14 Aug 2013 (Updated )

Generation of 3D turbulent wind for aero-elastic purpose

File Information
Description

This submission is meant for all thos professional involved, on a daily base, with the generation of turbulent wind files directly portable to aero-elastic solvers, such as GH BLADED, FAST, Flex, etc.

The code structure is straight-forward as well as keen on possible further development.

The submission includes:
1) an external txt Input file
2) the core of the code

Supported turbulent Models:
1) Kaimal
2) Improved von Karman
In the case of Kaimal model, it is possible to switch between two different Coherence models:
1a) TurbSim-wise Coherence

Required Products MATLAB
MATLAB release MATLAB 7.14 (R2012a)
22 Apr 2015 Amore Fu

### Amore Fu (view profile)

Hi Francesco, would you please give us an example about the programe running?
Thanks !

13 Apr 2015 Lisa

### Lisa (view profile)

Hi Francesco,

I like your submissions about the to generate wind fields. Currently I try to understand the Improved von Karman part.

You calculate the spectrum by these lines of code:

Coh_u(idxl) = exp(-1.15*(eta1u.^(1.5)));
Coh_u(idxu) = Coh_u(idxl);
HH_u = chol( Coh_u , 'lower' )*sqrt(df_5*psd_u(ii));

The first line calculates the lower part of the coherence matrix. I think the second line copies the lower part to the upper part. I am not sure, but I think there is a mistake, the upper part of the matrix is not the transposed version of the lower part as it should be in my opinion. Instead its just a copy of the lower part and rearranged to fit into the upper part. This means the columns and rows of the upper part are interchanged.

But besides this, in line 3 you calculate the spectrum by multiplying the factorized coherence matrix with the power spectral density.

As far as I know the spectrum is defined as Pxy = Coh_u * sqrt(Pxx) * sqrt(Pyy). Since Pxx and Pyy are equal this means:
Pxy = Coh_u * psd_u.

In the referenced ESDU paper I find that Coh_u, as calculated in the first line, is in fact the root of the Coherence. This means, that the following should be calculated:
Pxy = Coh_u.^2 * psd_u

And to get the Ampltitude spectrum:
HH_u = chol(Pxy, 'lower')

Therefore a one-liner would look like this:

HH_u = chol(Coh_u.^2 * psd_u, 'lower');

but it looks like:

HH_u = chol(Coh_u, 'lower') * sqrt(psd_u);

Am I missing something?

Another thing is, that you could try to use sparse matrices to heavily speed up the chol function (at least for the Kaimal model). Like this:

full(chol(sparse(xxx), 'lower'));

Greetings

Vincent

14 Aug 2013 1.1

Image representative of the input file has been uploaded

19 Aug 2013 1.2

The source code has been updates since a necessary sub routine was missing.

20 Aug 2013 1.3

The code has been updated and definitively debugged.

27 Sep 2013 1.4

Name update