Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / var / da / da_radar / da_radial_velocity_adj.inc
bloba4dff0d4776577c1029360ce2357d9e58d1cb1fc
1 subroutine da_radial_velocity_adj(rv,p,u,v,w,qrn,ps,x,y,z,qrn9,rho)
3    !-----------------------------------------------------------------------
4    ! Purpose: adjoint of da_radial_velocity_lin
5    ! History:
6    !    08/2017 - bug fix for Vt (Siou-Ying Jiang, CWB, Taiwan)
7    !-----------------------------------------------------------------------
9    implicit none
11    real, intent(in)    :: x, y, z
12    real, intent(in)    :: p
13    real, intent(in)    :: qrn9
14    real, intent(in)    :: rho
15    real, intent(in)    :: ps
16    real, intent(inout) :: rv
17    real, intent(inout) :: u, v, w, qrn
19    real :: r, alpha, vt
20    real :: qrrc
21    real :: qrn_g, qrn9_g
23    qrn_g = qrn *1000. ! kg/kg -> g/kg
24    qrn9_g= qrn9*1000. ! kg/kg -> g/kg
25    qrrc = 0.01        ! g/kg
27    if (trace_use) call da_trace_entry("da_radial_velocity_adj")
29    r     = sqrt(x*x+y*y+z*z)
30    alpha = (ps/p)**0.4
32    rv = rv/r
33    u  = u + rv*x
34    v  = v + rv*y
35    w  = w + rv*z
36    vt = -rv*z
38    if (qrn9_g >  qrrc) then
39       qrn_g = qrn_g + vt*0.675*alpha*qrn9_g**(-0.875)*rho**0.125
40       qrn   = qrn_g * 0.001  ! g/kg -> kg/kg
41    end if
43    if (trace_use) call da_trace_exit("da_radial_velocity_adj")
45 end subroutine da_radial_velocity_adj