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 
>

Reply via email to