da_trh_to_td.inc
References to this file elsewhere.
1 subroutine da_trh_to_td (RH, T, TD, xp)
2
3 !---------------------------------------------------------------------
4 !
5 ! function F_TD_FROM_RH
6 ! **************************
7 !
8 ! Purpose:
9 ! -------
10 ! COMPUTE DEW POinT FROM TEMPERATURE AND RELATIVE HUMIDITY
11 !
12 ! Method:
13 ! ------
14 ! inVERT THE RELATION
15 !
16 ! RH = 100. * EXP (L_over_Rv * (1./T - 1./TD))
17 !
18 ! inPUT:
19 ! -----
20 ! T_K: TEMPERATURE in K
21 ! RH: RELAITVE HUMIDITY in %
22 !
23 ! outPUT:
24 ! ------
25 ! TD: DEW POinT in K
26 !
27 ! REFERENCES:
28 ! -----------
29 ! R. R. ROGERS AND M. K. YAU, 1989: A SHORT COURSE in CLOUD PHYSICS,
30 ! 3ND EDITION, PERGAMON PRESS, PAGE 14-19.
31 !
32 ! VERifICATION SET:
33 ! -----------------
34 ! T_K = 268.15 K,
35 ! TD_K = 262.55 K
36 ! RH = 65 %,
37 ! P_PA = 80000 Pa,
38 ! QV = 2.11E-03 kg/kg,
39 !
40 ! MODifICATIONS:
41 ! ------------
42 ! parallel implementation. -Al Bourgeois
43 !
44 !-------------------------------------------------------------------------
45
46 implicit none
47
48 type (xpose_type), intent(in) :: xp ! domain decomposition vars.
49
50 real, dimension(xp%ims:xp%ime,xp%jms:xp%jme,xp%kms:xp%kme), &
51 intent(inout) :: rh ! Relative Humidity.
52 real, dimension(xp%ims:xp%ime,xp%jms:xp%jme,xp%kms:xp%kme), &
53 intent(in) :: t ! Temperature.
54 real, dimension(xp%ims:xp%ime,xp%jms:xp%jme,xp%kms:xp%kme), &
55 intent(out) :: td ! Dew Point in K.
56
57 integer :: I, J, K
58
59 real :: inVDifFTD, inVTD
60
61 integer :: is,ie,js,je,ks,ke
62
63 if (trace_use) call da_trace_entry("da_trh_to_td")
64
65 is = xp%its
66 ie = xp%ite
67 js = xp%jts
68 je = xp%jte
69 ks = xp%kts
70 ke = xp%kte
71
72 do j=js,je
73 do k=ks,ke
74 do i=is,ie
75 if (RH(i,j,k) < 10.0) then
76 RH(i,j,k) = 10.0
77 else if (RH(i,j,k) > 105.0) then
78 RH(i,j,k) = 105.0
79 end if
80
81 inVDifFTD = LOG (RH(i,j,k)/100.) / L_over_Rv
82
83 inVTD = 1/T(i,j,k) - inVDifFTD
84
85 TD(i,j,k) = 1. / inVTD
86
87 if (TD(i,j,k) > T(i,j,k)) &
88 TD(i,j,k) = T(i,j,k)
89 end do
90 end do
91 end do
92
93 if (trace_use) call da_trace_exit("da_trh_to_td")
94
95 end subroutine da_trh_to_td
96
97