Thank's a lot!
My code looks now like this:
const Z_REF = 10.0 # reference height for wind profile law
const ALPHA = 0.23375 # exponent of the wind profile law for Cabauw
"""
calcWindAtHeight(v_wind_gnd, z)
Calculate the average wind speed for the given ground wind speed
`v_wind_gnd` at a given height `z`.
The ground wind speed is measured at the height `Z_REF`, a constant, that
must have been defined
before. The exponential wind profile law is used in combination with the
exponent `ALPHA`, that must
have been defined before, too. If `z` is an array, the method will return
an array.
"""
function calcWindAtHeight(v_wind_gnd, z::AbstractFloat)
v_wind_gnd * (z / Z_REF)^ALPHA
end
function calcWindAtHeight(v_wind_gnd, Z::AbstractArray)
[calcWindAtHeight(v_wind_gnd, z) for z in Z]
end
I tried to write the comment only once, now. Is this the correct way to
document
a method with two functions?
Uwe
On Sunday, February 28, 2016 at 8:56:57 PM UTC+1, FQ wrote:
>
> you can get the vectorized version in one line using a comprehension:
>
> calcWindAtHeight(v_wind_gnd, Z::AbstractArray) =
> [calcWindAtHeight(v_wind_gnd,z) for z in Z]
>
> i did a quick test and it seems to be about the same speed/slightly
> faster than your version.
>
> you could also use map and a lambda function:
> calcWindAtHeight(v_wind_gnd, Z::AbstractArray) =
> map((z)->calcWindAtHeight(v_wind_gnd,z),Z)
>
> this seems to be significantly slower though, so i'd recommend the
> comprehension.
>
> PS: if you do want to do speed tests, you can use the @time macro, just
> put it in front of your function call
>