6 SUBROUTINE mr98 (PZ0SEA, &
7 PTA, PEXNA, PRHOA, PSST, PEXNS, PQA, &
11 PSFTH, PSFTQ, PUSTAR, &
12 PCD, PCDN, PCH, PRI, PRESA, PZ0HSEA )
65 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
66 REAL,
DIMENSION(:),
INTENT(IN) :: PQA
67 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNA
68 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
69 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
70 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF
71 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
72 REAL,
DIMENSION(:),
INTENT(IN) :: PSST
73 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNS
74 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
75 REAL,
INTENT(IN) :: PTT
77 REAL,
DIMENSION(:),
INTENT(INOUT) :: PZ0SEA
81 REAL,
DIMENSION(:),
INTENT(OUT) :: PSFTH
82 REAL,
DIMENSION(:),
INTENT(OUT) :: PSFTQ
83 REAL,
DIMENSION(:),
INTENT(OUT) :: PUSTAR
86 REAL,
DIMENSION(:),
INTENT(OUT) :: PQSAT
87 REAL,
DIMENSION(:),
INTENT(OUT) :: PCD
88 REAL,
DIMENSION(:),
INTENT(OUT) :: PCDN
89 REAL,
DIMENSION(:),
INTENT(OUT) :: PCH
90 REAL,
DIMENSION(:),
INTENT(OUT) :: PRI
91 REAL,
DIMENSION(:),
INTENT(OUT) :: PRESA
92 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0HSEA
99 REAL,
DIMENSION(SIZE(PTA)) :: ZZ0SEAH, &
103 REAL,
DIMENSION(SIZE(PTA)) :: ZQSA, ZTHA, ZDU, ZDT, ZDQ, ZNU, ZWG
114 REAL,
DIMENSION(SIZE(PTA)) :: ZTSTAR, ZQSTAR, ZTVSTAR, &
119 REAL,
DIMENSION(SIZE(PTA)) :: ZLMON, ZZETA, ZPSIM, ZPSIH, ZPSIQ, &
120 ZKHI, ZKHIC, ZPSIC, ZF, &
121 ZPSIHSTAND,ZPSIMSTAND,ZZETAST
154 INTEGER,
PARAMETER :: IITERMAX = 10
155 REAL(KIND=JPRB) :: ZHOOK_HANDLE
188 pqsat(:) =
qsat(psst(:),pps(:))
206 zqsa(:) = 0.98 * pqsat(:)
207 ztha(:) = pta(:) / pexna(:)
208 zthvi(:) = ( 1 + 0.61 * pqa(:) ) * ztha(:)
211 zdt(:) = ztha(:) - psst(:) /pexns(:)
212 zdq(:) = pqa(:) - zqsa(:)
214 pustar(:) = max( 0.04 * zdu(:) , 5e-3)
215 ztstar(:) = 0.04 * zdt(:)
216 zqstar(:) = 0.04 * zdq(:)
217 ztvstar(:) = ztstar(:)*(1+0.61*pqa(:)) + 0.61*zqstar(:)*ztha(:)
219 znu(:) = 1.318e-5 + 9.282e-8 * (pta(:) - ptt)
226 DO jiter = 1 , iitermax
231 WHERE (abs(ztvstar(:)) < 1e-6)
235 zlmon(:) = zthvi(:)*pustar(:)*pustar(:)/(ztvstar(:)*
xg*
xkarman)
236 zzeta(:) = max( pzref(:) / zlmon(:) , -20000.)
237 zzetast(:) = max( zstand / zlmon(:) , -20000.)
241 WHERE(zzeta(:) >= 0.0)
242 zpsim(:) = -4.7*zzeta(:)
245 zpsihstand(:) = -4.7*zzetast(:)
246 zpsimstand(:) = zpsihstand(:)
248 zkhi(:) = (1 - 16 * zzeta(:))**0.25
249 zpsim(:) = 2*log((1+zkhi(:))/2) &
250 + log((1+zkhi(:)*zkhi(:))/2) &
253 zpsih(:) = 2 * log((1+zkhi(:)*zkhi(:))/2)
255 zkhi(:) = (1 - 16 * zzetast(:))**0.25
256 zpsihstand(:) = 2 * log((1+zkhi(:)*zkhi(:))/2)
257 zpsimstand(:) = 2*log((1+zkhi(:))/2)
264 zkhic(:) = (1 - 12.87 * zzeta(:))**0.33
265 zpsic(:) = 1.5 * log((1+zkhic(:)+zkhic(:)*zkhic(:))/3)
269 zf(:) = 1 / (1+ zzeta(:)*zzeta(:))
270 zpsim(:) = zpsim(:)*zf(:) + zpsic(:)*(1-zf(:))
271 zpsih(:) = zpsih(:)*zf(:) + zpsic(:)*(1-zf(:))
274 zkhic(:) = (1 - 12.87 * zzetast(:))**0.33
275 zpsic(:) = 1.5 * log((1+zkhic(:)+zkhic(:)*zkhic(:))/3)
279 zf(:) = 1 / (1+ zzetast(:)*zzetast(:))
280 zpsimstand(:) = zpsimstand(:)*zf(:) + zpsic(:)*(1-zf(:))
281 zpsihstand(:) = zpsihstand(:)*zf(:) + zpsic(:)*(1-zf(:))
288 pz0sea(:) = 0.011*pustar(:)*pustar(:)/
xg 292 WHERE(pustar(:) > 0.23)
293 zz0seah(:) = 0.14*znu(:)/(pustar(:)-0.2) + 7e-6
294 zz0seaq(:) = 0.20*znu(:)/(pustar(:)-0.2) + 9e-6
296 zz0seah(:) = 0.015*pustar(:)*pustar(:)/
xg 310 ztstar(:) = zdt(:)*
xkarman / (log(pzref(:)/zz0seah(:)) - zpsih(:))
312 zqstar(:) = zdq(:)*
xkarman / (log(pzref(:)/zz0seaq(:)) - zpsiq(:))
314 ztvstar(:) = ztstar(:)*(1+0.61*pqa(:))+0.61*zqstar(:)*ztha(:)
320 zbuflx(:) = -
xg*ztvstar(:)*pustar(:)/zthvi(:)
322 WHERE(zbuflx(:) > 0.)
323 zwg(:) = zbeta*(zbuflx(:)*zzbl)**0.333
328 zdu(:) = (pvmod(:)*pvmod(:)+zwg(:)*zwg(:))**0.5
338 psfth(:) = - prhoa(:) *
xcpd * pustar(:) * ztstar(:)
339 psftq(:) = - prhoa(:) * pustar(:) * zqstar(:)