Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / var / da / da_physics / da_uv_to_sd_lin.inc
blobc8d3b0be1f3b4388b5041e16270c9f1933a13fdb
1 subroutine da_uv_to_sd_lin(spd,dir,u,v,ub,vb)
2    !-----------------------------------------------------------------------
3    ! Purpose: TBD
4    !-----------------------------------------------------------------------
6    implicit none
8    real, intent(in)     :: u, v
9    real, intent(inout)  :: ub, vb
10    real, intent(out)    :: spd, dir
11    
12    if (trace_use_dull) call da_trace_entry("da_uv_to_sd_lin")
14    if ( (ub*ub+vb*vb) == 0.0 ) then      ! Avoid division by zero
15       spd = 0.0
16       dir = 0.0
17       return
18       if (trace_use_dull) call da_trace_exit("da_uv_to_sd_lin")
19    end if
21    if (abs(ub - 0.0) <= 0.1) ub = (ub/abs(ub))*0.1
22    if (abs(vb - 0.0) <= 0.1) vb = (vb/abs(vb))*0.1
24    spd = (ub*u+vb*v)/sqrt(ub*ub+vb*vb)
25    dir = (vb*u-ub*v)/(ub*ub+vb*vb) * 180.0/pi
27    if (trace_use_dull) call da_trace_exit("da_uv_to_sd_lin")
29 end subroutine da_uv_to_sd_lin