ARM-DOE / pyart

The Python-ARM Radar Toolkit. A data model driven interactive toolkit for working with weather radar data.
https://arm-doe.github.io/pyart/
Other
516 stars 268 forks source link

algorithm of velocity composition when merging velocity from multiple radars #146

Closed miaoneng closed 7 years ago

miaoneng commented 10 years ago

I noticed that grid_from_radars function treats velocity field as same as reflectivity field. However, it possibly tends to be incorrect because velocity is different from reflectivity, is vector not scale. The way to calculate true velocity using two Doppler radars is described in book of "Doppler radar and weather observation", Chapter 9. Generally speaking, if we have a grid observed by two radars, we can use following equation to calculate velocity vector (u,v), where \theta is elevation and \phi azimuth and w_p is vertical speed (I usually assign it to zero if I cannot obtain them).
screen shot 2014-04-01 at 2 07 50 pm

scollis commented 10 years ago

Ahh.. But this assumes zero vertical motion, in the presence of which there is a projection of (w-wt)*k where wt is the fall velocity, and k is the k component of the propagation vector. @kirknorth is working on an implementation of a variational retrieval code using gridded radial velocities where we use the anelastic mass continuity equation as a constraint (thus necessitating Cartesian geometry) .. Your point is valid and we would definitely welcome any work in implementation of this! Just affirming the value in mapping radial velocities to a Cartesian grid.

kirknorth commented 10 years ago

@striges, you bring up a valid point that the Doppler (radial) velocity is a vector field and not a scalar field like reflectivity. Your equations for u and v are found in many introductory dual-Doppler wind retrieval papers. These wind retrievals are a separate problem from gridding though, and I believe you're confusing the two. Please see @jjhelmus response below regarding this.

As @scollis mentioned, I'm working on integrating a 3D-VAR retrieval scheme into Py-ART. Take a look at my winds branch and feel free to comment!

miaoneng commented 10 years ago

Hi @kirknorth, I think I should follow your branch and look into your code carefully! Em.. since you mentioned about 3D-VAR that means that we must have model guess and true observations. So could you let me know what kind of observation are you using or plan to use? Radiosonde?

miaoneng commented 10 years ago

Hi @scollis, In fact I am not really meaning to implement that because those equations at least requires two Doppler radars. That is not feasible in most cases. There is a project from Michael Bell (@mmbell) called Ground Based Velocity Track Display (https://github.com/mmbell/gbvtd) enable us to resolve low-level wind field using single Doppler radar. I am thinking about bridging this work to PyART but that is only an idea.

kirknorth commented 10 years ago

@striges, the observations are the radial velocity fields from one or more Doppler radars. A radiosonde profile can be used as a first guess and/or background field. The anelastic continuity equation is used as a model constraint, and all constraints (including observations) are weak constaints, i.e. they are approximately satisfied. A good reference is Gao et al. (1999).

jjhelmus commented 10 years ago

@striges Yes, Py-ART's gridding method should only be used to combine scalar fields from more than one radar, it will give poor results for vector or phase fields. Insuring that only scalar fields are gridded is left up to the user, it is difficult to determine if a field is a scalar, vector, phase, etc from that data in a Radar object, but the users should (hopefully) know this information. The plan is to include routines that can deal with doppler velocities soon and any contribution along these lines would be greatly appreciated.