64 REAL,
INTENT(IN) :: PP
65 REAL,
INTENT(IN) :: PQ
67 REAL(KIND=JPRB) :: ZHOOK_HANDLE
68 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:PE_FROM_PQ_0D',0,zhook_handle)
69 pe = pq * pp /(0.622 + 0.378 * pq)
70 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:PE_FROM_PQ_0D',1,zhook_handle)
75 REAL,
DIMENSION(:),
INTENT(IN) :: PP
76 REAL,
DIMENSION(:),
INTENT(IN) :: PQ
77 REAL,
DIMENSION(SIZE(PQ)) :: PE
78 REAL(KIND=JPRB) :: ZHOOK_HANDLE
79 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:PE_FROM_PQ_1D',0,zhook_handle)
80 pe(:) = pq(:) * pp(:) /(0.622 + 0.378 * pq(:))
81 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:PE_FROM_PQ_1D',1,zhook_handle)
90 REAL,
INTENT(IN) :: PT
91 REAL,
INTENT(IN) :: PQ
96 REAL(KIND=JPRB) :: ZHOOK_HANDLE
98 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:TD_FROM_TQ_0D',0,zhook_handle)
100 alpha = log(zpe/1000.)
101 IF (pt .GE.
xtt .AND. pt .GE. 93.+
xtt)
THEN 102 ptd =
xtt+6.54+14.526*alpha+0.7389*alpha*alpha+0.09486*alpha**3 &
103 +0.4569*(zpe/1000.)**0.1984
104 ELSE IF (pt .LT.
xtt)
THEN 105 ptd =
xtt+6.09+12.608*alpha+0.4959*alpha*alpha
110 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:TD_FROM_TQ_0D',1,zhook_handle)
117 REAL,
DIMENSION(:),
INTENT(IN) :: PT
118 REAL,
DIMENSION(:),
INTENT(IN) :: PQ
119 REAL,
DIMENSION(SIZE(PQ)) :: PTD
121 REAL,
DIMENSION(SIZE(PQ)) :: ALPHA
122 REAL,
DIMENSION(SIZE(PQ)) :: ZPE
123 REAL(KIND=JPRB) :: ZHOOK_HANDLE
125 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:TD_FROM_TQ_1D',0,zhook_handle)
127 alpha(:) = log(zpe(:)/1000.)
128 WHERE (pt .GE.
xtt .AND. pt .GE. 93.+
xtt)
129 ptd =
xtt+6.54+14.526*alpha+0.7389*alpha*alpha+0.09486*alpha**3 &
130 +0.4569*(zpe/1000.)**0.1984
131 ELSEWHERE (pt .LT.
xtt)
132 ptd =
xtt+6.09+12.608*alpha+0.4959*alpha*alpha
136 ptd(:) = min(ptd(:), pt(:))
137 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:TD_FROM_TQ_1D',1,zhook_handle)
146 REAL,
INTENT(IN) :: PT
147 REAL,
INTENT(IN) :: PP
148 REAL,
INTENT(IN) :: PTWB
151 REAL(KIND=JPRB) :: ZHOOK_HANDLE
153 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:RV_FROM_TPTWB_0D',0,zhook_handle)
154 zrvsat =
qsat(pt, pp) / (1 -
qsat(pt, pp))
155 prv = ((2501. - 2.326*(ptwb-
xtt))*zrvsat - 1.006*(pt - ptwb)) &
156 / (2501. + 1.86*(pt -
xtt) -4.186*(ptwb -
xtt))
157 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:RV_FROM_TPTWB_0D',1,zhook_handle)
164 REAL,
DIMENSION(:),
INTENT(IN) :: PT
165 REAL,
DIMENSION(:),
INTENT(IN) :: PP
166 REAL,
DIMENSION(:),
INTENT(IN) :: PTWB
167 REAL,
DIMENSION(SIZE(PT)) :: PRV
168 REAL,
DIMENSION(SIZE(PT)) :: ZRVSAT
169 REAL(KIND=JPRB) :: ZHOOK_HANDLE
171 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:RV_FROM_TPTWB_1D',0,zhook_handle)
172 zrvsat =
qsat(pt, pp) / (1 -
qsat(pt, pp))
173 prv(:) = ((2501. - 2.326*(ptwb(:)-
xtt))*zrvsat(:) - 1.006*(pt(:) - ptwb(:))) &
174 / (2501. + 1.86*(pt(:) -
xtt) -4.186*(ptwb(:) -
xtt))
175 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:RV_FROM_TPTWB_1D',1,zhook_handle)
183 REAL,
INTENT(IN) :: PT
184 REAL,
INTENT(IN) :: PQ
185 REAL,
INTENT(IN) :: PP
189 REAL :: ZTWBINF, ZTWBSUP, ZRV
191 REAL(KIND=JPRB) :: ZHOOK_HANDLE
192 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:TWB_FROM_TPQ_0D',0,zhook_handle)
198 ptwb = 0.5 * (ztwbsup + ztwbinf)
199 DO WHILE (ztwbsup - ztwbinf > 0.001 .OR. jiter .LE. 50)
201 IF (zrv .GT. pq/(1 - pq))
THEN 206 ptwb = 0.5 * (ztwbinf + ztwbsup)
209 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:TWB_FROM_TPQ_0D',1,zhook_handle)
214 REAL,
DIMENSION(:),
INTENT(IN) :: PT
215 REAL,
DIMENSION(:),
INTENT(IN) :: PQ
216 REAL,
DIMENSION(:),
INTENT(IN) :: PP
217 REAL,
DIMENSION(SIZE(PT)) :: PTWB
219 REAL,
DIMENSION(SIZE(PT)) :: ZTD
220 REAL,
DIMENSION(SIZE(PT)) :: ZTWBINF, ZTWBSUP, ZRV
222 REAL(KIND=JPRB) :: ZHOOK_HANDLE
223 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:TWB_FROM_TPQ_1D',0,zhook_handle)
228 ptwb = 0.5 * (ztwbsup + ztwbinf)
231 DO WHILE (ztwbsup(ji) - ztwbinf(ji) > 0.001 .OR. jiter .LE. 50)
233 IF (zrv(ji) .GT. pq(ji)/(1 - pq(ji)))
THEN 234 ztwbsup(ji) = ptwb(ji)
236 ztwbinf(ji) = ptwb(ji)
238 ptwb(ji) = 0.5 * (ztwbinf(ji) + ztwbsup(ji))
241 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:TWB_FROM_TPQ_1D',1,zhook_handle)
290 REAL,
INTENT(IN) :: PT
291 REAL,
INTENT(IN) :: PQ
298 REAL(KIND=JPRB) :: ZHOOK_HANDLE
300 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:ENTH_FN_T_Q',0,zhook_handle)
303 zrv=max(pq/(1-pq),1.0e-5)
304 penth=1.00484d3*zt+zrv*(2.50094d6+1.85895d3*zt)
306 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:ENTH_FN_T_Q',1,zhook_handle)
359 REAL,
INTENT(IN) :: PT
360 REAL,
INTENT(IN) :: PENTH
367 REAL(KIND=JPRB) :: ZHOOK_HANDLE
369 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:Q_FN_T_ENTH',0,zhook_handle)
374 zrv=(penth-1.00484d3*zt)/(2.50094d6+1.85895d3*zt)
377 IF (zrv < 0.0d0)
THEN 384 IF (
lhook)
CALL dr_hook(
'MODE_PSYCHRO:Q_FN_T_ENTH',1,zhook_handle)
real function, dimension(size(pq)) td_from_tq_1d(PT, PQ)
real function td_from_tq_0d(PT, PQ)
real function pe_from_pq_0d(PP, PQ)
real function twb_from_tpq_0d(PT, PP, PQ)
real function rv_from_tptwb_0d(PT, PP, PTWB)
real function, dimension(size(pt)) rv_from_tptwb_1d(PT, PP, PTWB)
real function, dimension(size(pt)) twb_from_tpq_1d(PT, PP, PQ)
real function, dimension(size(pq)) pe_from_pq_1d(PP, PQ)