1 subroutine da_trh_to_td (grid)
3 !---------------------------------------------------------------------
5 ! function f_td_from_rh
6 ! **************************
10 ! compute dew point from temperature and relative humidity
16 ! rh = 100.0 * exp (l_over_rv * (1.0/t - 1.0/td))
20 ! t_k: temperature in k
21 ! rh: relative humidity in %
29 ! R. R. Rogers and M. K. Yau, 1989: a short course in cloud physics,
30 ! 3nd edition, pergamon press, page 14-19.
38 ! qv = 2.11e-03 kg/kg,
42 ! parallel implementation. -al bourgeoits
44 !-------------------------------------------------------------------------
48 type (domain), intent(inout) :: grid
50 integer :: i, j, k, ij
52 real :: invdifftd, invtd
54 if (trace_use_dull) call da_trace_entry("da_trh_to_td")
57 !$OMP PRIVATE( ij, i, j, k, invdifftd, invtd )
58 do ij = 1 , grid%num_tiles
61 do j=grid%j_start(ij), grid%j_end(ij)
63 if (grid%xb%rh(i,j,k) < 10.0) then
64 grid%xb%rh(i,j,k) = 10.0
65 else if (grid%xb%rh(i,j,k) > 105.0) then
66 grid%xb%rh(i,j,k) = 105.0
69 invdifftd = log (grid%xb%rh(i,j,k)/100.0) / l_over_rv
71 invtd = 1/grid%xb%t(i,j,k) - invdifftd
73 grid%xb%td(i,j,k) = 1.0 / invtd
75 if (grid%xb%td(i,j,k) > grid%xb%t(i,j,k)) &
76 grid%xb%td(i,j,k) = grid%xb%t(i,j,k)
84 if (trace_use_dull) call da_trace_exit("da_trh_to_td")
86 end subroutine da_trh_to_td