Rotating Winds: Error in Documentation? – in #8: General Questions

in #8: General Questions

Dear all,

Is there an error in the documentation for de-rotating model winds? In the model documentation – http://www2.cosmo-model.org/content/model/documentation/core/cosmoDyncsNumcs.pdf – section 3.3.3 (p. 27) equation 3.78 gives the following for de-rotating model winds (u, v) to winds in geographical coordinates (u_g, v_g):

u_g = u*cos(delta) + v*sin(delta)
v_g = -u*sin(delta) + v*cos(delta)

where sin(delta)=a/sqrt(a^2 + b^2) and cos(delta)=b/sqrt(a^2 + b^2). a and b are given as follows:

a = cos(lat_rot_npole)*sin(lon_g – lon_rot_npole)
b = cos(lat_g)*sin(lat_rot_npole) – sin(lat_g)*cos(lat_rot_npole)*cos(lon_g – lon_rot_npole)

This however does not produce the expected results, in disagreement with other functions like in CDO (rotuvb) and the recommended de-rotation formulae used in WRF and NCL .

In order for this to work, the longitude difference term in a and b (lon_g – lon_rot_npole) would have to be reversed and given as (lon_rot_npole – lon_g).

Alternatively, the longitude difference term could be left unchanged, but then the fomulae would need to be given as:

u_g = u*cos(delta) – v*sin(delta)
v_g = u*sin(delta) + v*cos(delta)

which is the form of the equations used by CDO and WRF .

Best,
EM.

  @edmundmeredith in #fb127c7

Dear all,

Is there an error in the documentation for de-rotating model winds? In the model documentation – http://www2.cosmo-model.org/content/model/documentation/core/cosmoDyncsNumcs.pdf – section 3.3.3 (p. 27) equation 3.78 gives the following for de-rotating model winds (u, v) to winds in geographical coordinates (u_g, v_g):

u_g = u*cos(delta) + v*sin(delta)
v_g = -u*sin(delta) + v*cos(delta)

where sin(delta)=a/sqrt(a^2 + b^2) and cos(delta)=b/sqrt(a^2 + b^2). a and b are given as follows:

a = cos(lat_rot_npole)*sin(lon_g – lon_rot_npole)
b = cos(lat_g)*sin(lat_rot_npole) – sin(lat_g)*cos(lat_rot_npole)*cos(lon_g – lon_rot_npole)

This however does not produce the expected results, in disagreement with other functions like in CDO (rotuvb) and the recommended de-rotation formulae used in WRF and NCL .

In order for this to work, the longitude difference term in a and b (lon_g – lon_rot_npole) would have to be reversed and given as (lon_rot_npole – lon_g).

Alternatively, the longitude difference term could be left unchanged, but then the fomulae would need to be given as:

u_g = u*cos(delta) – v*sin(delta)
v_g = u*sin(delta) + v*cos(delta)

which is the form of the equations used by CDO and WRF .

Best,
EM.

Rotating Winds: Error in Documentation?

Dear all,

Is there an error in the documentation for de-rotating model winds? In the model documentation – http://www2.cosmo-model.org/content/model/documentation/core/cosmoDyncsNumcs.pdf – section 3.3.3 (p. 27) equation 3.78 gives the following for de-rotating model winds (u, v) to winds in geographical coordinates (u_g, v_g):

u_g = u*cos(delta) + v*sin(delta)
v_g = -u*sin(delta) + v*cos(delta)

where sin(delta)=a/sqrt(a^2 + b^2) and cos(delta)=b/sqrt(a^2 + b^2). a and b are given as follows:

a = cos(lat_rot_npole)*sin(lon_g – lon_rot_npole)
b = cos(lat_g)*sin(lat_rot_npole) – sin(lat_g)*cos(lat_rot_npole)*cos(lon_g – lon_rot_npole)

This however does not produce the expected results, in disagreement with other functions like in CDO (rotuvb) and the recommended de-rotation formulae used in WRF and NCL .

In order for this to work, the longitude difference term in a and b (lon_g – lon_rot_npole) would have to be reversed and given as (lon_rot_npole – lon_g).

Alternatively, the longitude difference term could be left unchanged, but then the fomulae would need to be given as:

u_g = u*cos(delta) – v*sin(delta)
v_g = u*sin(delta) + v*cos(delta)

which is the form of the equations used by CDO and WRF .

Best,
EM.

View in channel

Hey Edmund,

In the COSMO (and EXTPAR ) source code inside utilities.f90 (and mo_utilities_extpar.f90 ) there is a subroutine uvrot2uv which uses the formula you cited, but(!) with the longitude-swapping-correction you already noticed.
I copied and used this part of the code a little while ago and tested the rotations, and everything seemed fine, so I think you are correct.

best
Rolf

  @rolfzentek in #51c8d24

Hey Edmund,

In the COSMO (and EXTPAR ) source code inside utilities.f90 (and mo_utilities_extpar.f90 ) there is a subroutine uvrot2uv which uses the formula you cited, but(!) with the longitude-swapping-correction you already noticed.
I copied and used this part of the code a little while ago and tested the rotations, and everything seemed fine, so I think you are correct.

best
Rolf

Hey Edmund,

In the COSMO (and EXTPAR ) source code inside utilities.f90 (and mo_utilities_extpar.f90 ) there is a subroutine uvrot2uv which uses the formula you cited, but(!) with the longitude-swapping-correction you already noticed.
I copied and used this part of the code a little while ago and tested the rotations, and everything seemed fine, so I think you are correct.

best
Rolf

Hi Rolf,

thanks for sharing your experience. It’s nice to have the issue confirmed by another user.
Hopefully the documentation will be corrected!

Best,
EM.

  @edmundmeredith in #ee175b1

Hi Rolf,

thanks for sharing your experience. It’s nice to have the issue confirmed by another user.
Hopefully the documentation will be corrected!

Best,
EM.

Hi Rolf,

thanks for sharing your experience. It’s nice to have the issue confirmed by another user.
Hopefully the documentation will be corrected!

Best,
EM.