150 & LBi, UBi, LBj, UBj, &
151 & IminS, ImaxS, JminS, JmaxS, &
154 & rmask, umask, vmask, &
157 & rmask_wet, umask_wet, vmask_wet, &
161 & rho, tl_rho, t, tl_t, &
162 & Hair, Pair, Tair, &
167# ifdef BBL_MODEL_NOT_YET
175 & stflux, tl_stflux, &
194 integer,
intent(in) :: ng, tile
195 integer,
intent(in) :: LBi, UBi, LBj, UBj
196 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
197 integer,
intent(in) :: nrhs
201 real(r8),
intent(in) :: rmask(LBi:,LBj:)
202 real(r8),
intent(in) :: umask(LBi:,LBj:)
203 real(r8),
intent(in) :: vmask(LBi:,LBj:)
206 real(r8),
intent(in) :: rmask_wet(LBi:,LBj:)
207 real(r8),
intent(in) :: umask_wet(LBi:,LBj:)
208 real(r8),
intent(in) :: vmask_wet(LBi:,LBj:)
210 real(r8),
intent(in) :: alpha(LBi:,LBj:)
211 real(r8),
intent(in) :: beta(LBi:,LBj:)
212 real(r8),
intent(in) :: rho(LBi:,LBj:,:)
213 real(r8),
intent(in) :: t(LBi:,LBj:,:,:,:)
214 real(r8),
intent(in) :: Hair(LBi:,LBj:)
215 real(r8),
intent(in) :: Pair(LBi:,LBj:)
216 real(r8),
intent(in) :: Tair(LBi:,LBj:)
217 real(r8),
intent(in) :: Uwind(LBi:,LBj:)
218 real(r8),
intent(in) :: Vwind(LBi:,LBj:)
219 real(r8),
intent(in) :: tl_alpha(LBi:,LBj:)
220 real(r8),
intent(in) :: tl_beta(LBi:,LBj:)
221 real(r8),
intent(in) :: tl_rho(LBi:,LBj:,:)
222 real(r8),
intent(in) :: tl_t(LBi:,LBj:,:,:,:)
224 real(r8),
intent(in) :: cloud(LBi:,LBj:)
226# ifdef BBL_MODEL_NOT_YET
227 real(r8),
intent(in) :: Awave(LBi:,LBj:)
228 real(r8),
intent(in) :: Pwave(LBi:,LBj:)
230 real(r8),
intent(in) :: rain(LBi:,LBj:)
231 real(r8),
intent(in) :: stflux(LBi:,LBj:,:)
233 real(r8),
intent(inout) :: lhflx(LBi:,LBj:)
234 real(r8),
intent(inout) :: lrflx(LBi:,LBj:)
235 real(r8),
intent(inout) :: shflx(LBi:,LBj:)
236 real(r8),
intent(inout) :: srflx(LBi:,LBj:)
237 real(r8),
intent(inout) :: tl_lhflx(LBi:,LBj:)
238 real(r8),
intent(inout) :: tl_lrflx(LBi:,LBj:)
239 real(r8),
intent(inout) :: tl_shflx(LBi:,LBj:)
240 real(r8),
intent(inout) :: tl_stflux(LBi:,LBj:,:)
243 real(r8),
intent(out) :: evap(LBi:,LBj:)
244 real(r8),
intent(out) :: tl_evap(LBi:,LBj:)
246 real(r8),
intent(out) :: sustr(LBi:,LBj:)
247 real(r8),
intent(out) :: svstr(LBi:,LBj:)
248 real(r8),
intent(out) :: tl_sustr(LBi:,LBj:)
249 real(r8),
intent(out) :: tl_svstr(LBi:,LBj:)
252 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
253 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
254 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
257 real(r8),
intent(in) :: rmask_wet(LBi:UBi,LBj:UBj)
258 real(r8),
intent(in) :: umask_wet(LBi:UBi,LBj:UBj)
259 real(r8),
intent(in) :: vmask_wet(LBi:UBi,LBj:UBj)
261 real(r8),
intent(in) :: alpha(LBi:UBi,LBj:UBj)
262 real(r8),
intent(in) :: beta(LBi:UBi,LBj:UBj)
263 real(r8),
intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
264 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
265 real(r8),
intent(in) :: Hair(LBi:UBi,LBj:UBj)
266 real(r8),
intent(in) :: Pair(LBi:UBi,LBj:UBj)
267 real(r8),
intent(in) :: Tair(LBi:UBi,LBj:UBj)
268 real(r8),
intent(in) :: Uwind(LBi:UBi,LBj:UBj)
269 real(r8),
intent(in) :: Vwind(LBi:UBi,LBj:UBj)
270 real(r8),
intent(in) :: alpha(LBi:UBi,LBj:UBj)
271 real(r8),
intent(in) :: beta(LBi:UBi,LBj:UBj)
272 real(r8),
intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
273 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
274 real(r8),
intent(in) :: tl_alpha(LBi:UBi,LBj:UBj)
275 real(r8),
intent(in) :: tl_beta(LBi:UBi,LBj:UBj)
276 real(r8),
intent(in) :: tl_rho(LBi:UBi,LBj:UBj,N(ng))
277 real(r8),
intent(in) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
279 real(r8),
intent(in) :: cloud(LBi:UBi,LBj:UBj)
281# ifdef BBL_MODEL_NOT_YET
282 real(r8),
intent(in) :: Awave(LBi:UBi,LBj:UBj)
283 real(r8),
intent(in) :: Pwave(LBi:UBi,LBj:UBj)
285 real(r8),
intent(in) :: rain(LBi:UBi,LBj:UBj)
286 real(r8),
intent(in) :: stflx(LBi:UBi,LBj:UBj,NT(ng))
288 real(r8),
intent(in) :: lhflx(LBi:UBi,LBj:UBj)
289 real(r8),
intent(in) :: lrflx(LBi:UBi,LBj:UBj)
290 real(r8),
intent(in) :: shflx(LBi:UBi,LBj:UBj)
291 real(r8),
intent(in) :: srflx(LBi:UBi,LBj:UBj)
292 real(r8),
intent(in) :: stflx(LBi:UBi,LBj:UBj,NT(ng))
293 real(r8),
intent(inout) :: tl_lhflx(LBi:UBi,LBj:UBj)
294 real(r8),
intent(inout) :: tl_lrflx(LBi:UBi,LBj:UBj)
295 real(r8),
intent(inout) :: tl_shflx(LBi:UBi,LBj:UBj)
296 real(r8),
intent(inout) :: tl_stflux(LBi:UBi,LBj:UBj,NT(ng))
299 real(r8),
intent(out) :: evap(LBi:UBi,LBj:UBj)
300 real(r8),
intent(out) :: tl_evap(LBi:UBi,LBj:UBj)
302 real(r8),
intent(out) :: sustr(LBi:UBi,LBj:UBj)
303 real(r8),
intent(out) :: svstr(LBi:UBi,LBj:UBj)
304 real(r8),
intent(out) :: tl_sustr(LBi:UBi,LBj:UBj)
305 real(r8),
intent(out) :: tl_svstr(LBi:UBi,LBj:UBj)
310 integer :: Iter, i, j, k
311 integer,
parameter :: IterMax = 3
313 real(r8),
parameter :: eps = 1.0e-20_r8
314 real(r8),
parameter :: r3 = 1.0_r8/3.0_r8
316 real(r8) :: Bf, Cd, Hl, Hlw, Hscale, Hs, Hsr, IER
317 real(r8) :: tl_Bf, tl_Cd, tl_Hl, tl_Hlw, tl_Hsr, tl_Hs
318 real(r8) :: PairM, RH, Taur
319 real(r8) :: Wspeed, ZQoL, ZToL
321 real(r8) :: cff, cff1, cff2, diffh, diffw, oL, upvel
322 real(r8) :: twopi_inv, wet_bulb
323 real(r8) :: tl_wet_bulb, tl_Wspeed, tl_upvel
324 real(r8) :: fac, tl_fac, fac1, tl_fac1, fac2, tl_fac2
325 real(r8) :: fac3, tl_fac3, tl_cff, ad_upvel
326 real(r8) :: adfac, adfac1, adfac2
328 real(r8) :: e_sat, vap_p
331 real(r8) :: Clam, Fc, Hcool, Hsb, Hlb, Qbouy, Qcool, lambd
332 real(r8) :: tl_Clam, tl_Hcool, tl_Hsb, tl_Hlb
333 real(r8) :: tl_Qbouy, tl_Qcool, tl_lambd
336 real(r8),
dimension(IminS:ImaxS) :: CC
337 real(r8),
dimension(IminS:ImaxS) :: Cd10
338 real(r8),
dimension(IminS:ImaxS) :: Ch10
339 real(r8),
dimension(IminS:ImaxS) :: Ct10
340 real(r8),
dimension(IminS:ImaxS) :: charn
341 real(r8),
dimension(IminS:ImaxS) :: Ct
342 real(r8),
dimension(IminS:ImaxS) :: Cwave
343 real(r8),
dimension(IminS:ImaxS) :: Cwet
344 real(r8),
dimension(IminS:ImaxS) :: delQ
345 real(r8),
dimension(IminS:ImaxS) :: delQc
346 real(r8),
dimension(IminS:ImaxS) :: delT
347 real(r8),
dimension(IminS:ImaxS) :: delTc
348 real(r8),
dimension(IminS:ImaxS) :: delW
349 real(r8),
dimension(IminS:ImaxS) :: L
350 real(r8),
dimension(IminS:ImaxS) :: L10
351 real(r8),
dimension(IminS:ImaxS) :: Lwave
352 real(r8),
dimension(IminS:ImaxS) :: Q
353 real(r8),
dimension(IminS:ImaxS) :: Qair
354 real(r8),
dimension(IminS:ImaxS) :: Qpsi
355 real(r8),
dimension(IminS:ImaxS) :: Qsea
356 real(r8),
dimension(IminS:ImaxS) :: Qstar
357 real(r8),
dimension(IminS:ImaxS) :: rhoAir
358 real(r8),
dimension(IminS:ImaxS) :: rhoSea
359 real(r8),
dimension(IminS:ImaxS) :: Ri
360 real(r8),
dimension(IminS:ImaxS) :: Ribcu
361 real(r8),
dimension(IminS:ImaxS) :: Rr
362 real(r8),
dimension(IminS:ImaxS) :: Scff
363 real(r8),
dimension(IminS:ImaxS) :: TairC
364 real(r8),
dimension(IminS:ImaxS) :: TairK
365 real(r8),
dimension(IminS:ImaxS) :: Tcff
366 real(r8),
dimension(IminS:ImaxS) :: Tpsi
367 real(r8),
dimension(IminS:ImaxS) :: TseaC
368 real(r8),
dimension(IminS:ImaxS) :: TseaK
369 real(r8),
dimension(IminS:ImaxS) :: Tstar
370 real(r8),
dimension(IminS:ImaxS) :: u10
371 real(r8),
dimension(IminS:ImaxS) :: VisAir
372 real(r8),
dimension(IminS:ImaxS) :: Wgus
373 real(r8),
dimension(IminS:ImaxS) :: Wmag
374 real(r8),
dimension(IminS:ImaxS) :: Wpsi
375 real(r8),
dimension(IminS:ImaxS) :: Wstar
376 real(r8),
dimension(IminS:ImaxS) :: Zetu
377 real(r8),
dimension(IminS:ImaxS) :: Zo10
378 real(r8),
dimension(IminS:ImaxS) :: ZoT10
379 real(r8),
dimension(IminS:ImaxS) :: ZoL
380 real(r8),
dimension(IminS:ImaxS) :: ZoQ
381 real(r8),
dimension(IminS:ImaxS) :: ZoT
382 real(r8),
dimension(IminS:ImaxS) :: ZoW
383 real(r8),
dimension(IminS:ImaxS) :: ZWoL
385 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Hlv
386 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: LHeat
387 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: LRad
388 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: SHeat
389 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: SRad
390 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Taux
391 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Tauy
393 real(r8),
dimension(IminS:ImaxS) :: tl_CC
394 real(r8),
dimension(IminS:ImaxS) :: tl_charn
395 real(r8),
dimension(IminS:ImaxS) :: tl_Ct
396 real(r8),
dimension(IminS:ImaxS) :: tl_Cd10
397 real(r8),
dimension(IminS:ImaxS) :: tl_Ct10
398 real(r8),
dimension(IminS:ImaxS) :: tl_Cwet
399 real(r8),
dimension(IminS:ImaxS) :: tl_delQ
400 real(r8),
dimension(IminS:ImaxS) :: tl_delQc
401 real(r8),
dimension(IminS:ImaxS) :: tl_delT
402 real(r8),
dimension(IminS:ImaxS) :: tl_delTc
403 real(r8),
dimension(IminS:ImaxS) :: tl_delW
404 real(r8),
dimension(IminS:ImaxS) :: tl_L
405 real(r8),
dimension(IminS:ImaxS) :: tl_L10
406 real(r8),
dimension(IminS:ImaxS) :: tl_Q
407 real(r8),
dimension(IminS:ImaxS) :: tl_Qpsi
408 real(r8),
dimension(IminS:ImaxS) :: tl_Qsea
409 real(r8),
dimension(IminS:ImaxS) :: tl_Qstar
410 real(r8),
dimension(IminS:ImaxS) :: tl_rhoSea
411 real(r8),
dimension(IminS:ImaxS) :: tl_Ri
412 real(r8),
dimension(IminS:ImaxS) :: tl_Rr
413 real(r8),
dimension(IminS:ImaxS) :: tl_Scff
414 real(r8),
dimension(IminS:ImaxS) :: tl_Tcff
415 real(r8),
dimension(IminS:ImaxS) :: tl_Tpsi
416 real(r8),
dimension(IminS:ImaxS) :: tl_TseaC
417 real(r8),
dimension(IminS:ImaxS) :: tl_TseaK
418 real(r8),
dimension(IminS:ImaxS) :: tl_Tstar
419 real(r8),
dimension(IminS:ImaxS) :: tl_u10
420 real(r8),
dimension(IminS:ImaxS) :: tl_Wgus
421 real(r8),
dimension(IminS:ImaxS) :: tl_Wpsi
422 real(r8),
dimension(IminS:ImaxS) :: tl_Wstar
423 real(r8),
dimension(IminS:ImaxS) :: tl_Zetu
424 real(r8),
dimension(IminS:ImaxS) :: tl_Zo10
425 real(r8),
dimension(IminS:ImaxS) :: tl_ZoT10
426 real(r8),
dimension(IminS:ImaxS) :: tl_ZoL
427 real(r8),
dimension(IminS:ImaxS) :: tl_ZoQ
428 real(r8),
dimension(IminS:ImaxS) :: tl_ZoT
429 real(r8),
dimension(IminS:ImaxS) :: tl_ZoW
430 real(r8),
dimension(IminS:ImaxS) :: tl_ZWoL
432 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Hlv
433 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_LHeat
434 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_LRad
435 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_SHeat
436 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Taux
437 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Tauy
439# include "set_bounds.h"
452 wmag(i)=sqrt(uwind(i,j)*uwind(i,j)+vwind(i,j)*vwind(i,j))
455 tairk(i)=tairc(i)+273.16_r8
456 tseac(i)=t(i,j,n(ng),nrhs,
itemp)
457 tl_tseac(i)=tl_t(i,j,n(ng),nrhs,
itemp)
458 tseak(i)=tseac(i)+273.16_r8
459 tl_tseak(i)=tl_tseac(i)
460 rhosea(i)=rho(i,j,n(ng))+1000.0_r8
461 tl_rhosea(i)=tl_rho(i,j,n(ng))
463 srad(i,j)=srflx(i,j)*hscale
465 tl_tcff(i)=tl_alpha(i,j)
467 tl_scff(i)=tl_beta(i,j)
475 lheat(i,j)=lhflx(i,j)*hscale
476 tl_lheat(i,j)=tl_lhflx(i,j)*hscale
477 sheat(i,j)=shflx(i,j)*hscale
478 tl_sheat(i,j)=tl_shflx(i,j)*hscale
497 cff=(0.7859_r8+0.03477_r8*tairc(i))/ &
498 & (1.0_r8+0.00412_r8*tairc(i))
501 cff2=tairk(i)*tairk(i)*tairk(i)
504 & (cff1*(0.39_r8-0.05_r8*sqrt(vap_p))* &
505 & (1.0_r8-0.6823_r8*cloud(i,j)*cloud(i,j))+ &
506 & cff2*4.0_r8*(tseak(i)-tairk(i)))
509# elif defined LONGWAVE_OUT
514 lrad(i,j)=lrflx(i,j)*hscale- &
516 tl_lrad(i,j)=tl_lrflx(i,j)*hscale- &
518 & tl_tseak(i)*tseak(i)*tseak(i)*tseak(i)
520 lrad(i,j)=lrflx(i,j)*hscale
521 tl_lrad(i,j)=tl_lrflx(i,j)*hscale
524 lrad(i,j)=lrad(i,j)*rmask(i,j)
525 tl_lrad(i,j)=tl_lrad(i,j)*rmask(i,j)
528 lrad(i,j)=lrad(i,j)*rmask_wet(i,j)
529 tl_lrad(i,j)=tl_lrad(i,j)*rmask_wet(i,j)
564 cff=(1.0007_r8+3.46e-6_r8*pairm)*6.1121_r8* &
565 & exp(17.502_r8*tairc(i)/(240.97_r8+tairc(i)))
569 qair(i)=0.62197_r8*(cff/(pairm-0.378_r8*cff))
573 IF (rh.lt.2.0_r8)
THEN
575 q(i)=0.62197_r8*(cff/(pairm-0.378_r8*cff))
582 fac=17.502_r8*tseac(i)/(240.97_r8+tseac(i))
583 tl_fac=17.502_r8*tl_tseac(i)/(240.97_r8+tseac(i))- &
584 & tl_tseac(i)*fac/(240.97_r8+tseac(i))
587 cff=(1.0007_r8+3.46e-6_r8*pairm)*6.1121_r8* &
588 & exp(17.502_r8*tseac(i)/(240.97_r8+tseac(i)))
594 tl_cff=tl_cff*0.98_r8
598 qsea(i)=0.62197_r8*(cff/(pairm-0.378_r8*cff))
599 tl_fac=0.62197_r8*(tl_cff/(pairm-0.378_r8*cff))
600 tl_qsea(i)=tl_fac*(1.0_r8+0.378_r8*cff/((pairm-0.378_r8*cff)))
609 rhoair(i)=pairm*100.0_r8/(
blk_rgas*tairk(i)* &
610 & (1.0_r8+0.61_r8*q(i)))
614 visair(i)=1.326e-5_r8* &
615 & (1.0_r8+tairc(i)*(6.542e-3_r8+tairc(i)* &
616 & (8.301e-6_r8-4.84e-9_r8*tairc(i))))
620 hlv(i,j)=(2.501_r8-0.00237_r8*tseac(i))*1.0e+6_r8
621 tl_hlv(i,j)=-0.00237_r8*tl_tseac(i)*1.0e+6_r8
631 delw(i)=sqrt(wmag(i)*wmag(i)+wgus(i)*wgus(i))
634 tl_delq(i)=tl_qsea(i)
635 delt(i)=tseac(i)-tairc(i)
636 tl_delt(i)=tl_tseac(i)
642 u10(i)=delw(i)*log(10.0_r8/zow(i))/log(
blk_zw(ng)/zow(i))
647 wstar(i)=0.035_r8*u10(i)
648 tl_wstar(i)=0.035_r8*tl_u10(i)
649 zo10(i)=0.011_r8*wstar(i)*wstar(i)/
g+ &
650 & 0.11_r8*visair(i)/wstar(i)
651 tl_zo10(i)=0.022_r8*tl_wstar(i)*wstar(i)/
g- &
652 & tl_wstar(i)*0.11_r8*visair(i)/(wstar(i)*wstar(i))
653 fac=log(10.0_r8/zo10(i))
654 tl_fac=-tl_zo10(i)/zo10(i)
657 cd10(i)=(
vonkar/log(10.0_r8/zo10(i)))**2
658 tl_cd10(i)=-2.0_r8*tl_fac*cd10(i)/fac
660 ct10(i)=ch10(i)/sqrt(cd10(i))
661 tl_ct10(i)=-0.5_r8*tl_cd10(i)*ct10(i)/cd10(i)
663 tl_fac=-tl_ct10(i)*fac/ct10(i)
666 zot10(i)=10.0_r8/exp(
vonkar/ct10(i))
667 tl_zot10(i)=-tl_fac*zot10(i)
668 fac=log(
blk_zw(ng)/zo10(i))
669 tl_fac=-tl_zo10(i)/zo10(i)
673 tl_cd=-2.0_r8*tl_fac*cd/fac
677 fac=log(
blk_zt(ng)/zot10(i))
678 tl_fac=-tl_zot10(i)/zot10(i)
682 tl_ct(i)=-tl_fac*ct(i)/fac
684 tl_cc(i)=
vonkar*tl_ct(i)/cd-tl_cd*cc(i)/cd
692 fac=1.0/(tairk(i)*delw(i)*delw(i))
699 ri(i)=-
g*
blk_zw(ng)*((delt(i)-deltc(i))+ &
700 & 0.61_r8*tairk(i)*delq(i))/ &
701 & (tairk(i)*delw(i)*delw(i))
702 tl_ri(i)=-fac*
g*
blk_zw(ng)*((tl_delt(i)-tl_deltc(i))+ &
703 & 0.61_r8*tairk(i)*tl_delq(i))
704 IF (ri(i).lt.0.0_r8)
THEN
705 zetu(i)=cc(i)*ri(i)/(1.0_r8+ri(i)/ribcu(i))
706 tl_zetu(i)=(tl_cc(i)*ri(i)+cc(i)*tl_ri(i))/ &
707 & (1.0_r8+ri(i)/ribcu(i))- &
708 & (tl_ri(i)/ribcu(i))* &
709 & zetu(i)/(1.0_r8+ri(i)/ribcu(i))
711 fac=3.0_r8*ri(i)/cc(i)
712 tl_fac=3.0_r8*tl_ri(i)/cc(i)-tl_cc(i)*fac/cc(i)
715 zetu(i)=cc(i)*ri(i)/(1.0_r8+3.0_r8*ri(i)/cc(i))
716 tl_zetu(i)=(tl_cc(i)*ri(i)+cc(i)*tl_ri(i))/(1.0_r8+fac)- &
717 & tl_fac*zetu(i)/(1.0_r8+fac)
720 tl_l10(i)=-l10(i)*l10(i)*tl_zetu(i)/
blk_zw(ng)
725 tl_fac1=-tl_l10(i)*fac1/l10(i)
726 fac2=log(
blk_zw(ng)/zo10(i))
727 tl_fac2=-tl_zo10(i)/zo10(i)
735 tl_wstar(i)=-(tl_fac2- &
739 tl_fac1=-tl_l10(i)*fac1/l10(i)
740 fac2=log(
blk_zt(ng)/zot10(i))
741 tl_fac2=-tl_zot10(i)/zot10(i)
745 tstar(i)=-(delt(i)-deltc(i))*
vonkar/ &
746 & (log(
blk_zt(ng)/zot10(i))- &
748 tl_tstar(i)=-(tl_delt(i)-tl_deltc(i))*
vonkar/ &
753 tl_fac1=-tl_l10(i)*fac1/l10(i)
754 fac2=log(
blk_zq(ng)/zot10(i))
755 tl_fac2=-tl_zot10(i)/zot10(i)
758 qstar(i)=-(delq(i)-delqc(i))*
vonkar/ &
759 & (log(
blk_zq(ng)/zot10(i))- &
761 tl_qstar(i)=-(tl_delq(i)-tl_delqc(i))*
vonkar/ &
769 IF (delw(i).gt.18.0_r8)
THEN
772 ELSE IF ((10.0_r8.lt.delw(i)).and.(delw(i).le.18.0_r8))
THEN
774 & 0.125_r8*(0.018_r8-0.011_r8)*(delw(i)-10._r8)
783# ifdef BBL_MODEL_NOT_YET
784 cwave(i)=
g*pwave(i,j)*twopi_inv
785 lwave(i)=cwave(i)*pwave(i,j)
793# ifdef BBL_MODEL_NOT_YET
798 zow(i)=(25.0_r8/
pi)*lwave(i)*(wstar(i)/cwave(i))**4.5+ &
799 & 0.11_r8*visair(i)/(wstar(i)+eps)
800 tl_zow(i)=(25.0_r8/
pi)*lwave(i)*4.5_r8*tl_wstar(i)* &
801 & (wstar(i)/cwave(i))**3.5/cwave(i)- &
802 & tl_wstar(i)*0.11_r8*visair(i)/ &
803 & ((wstar(i)+eps)*(wstar(i)+eps))
805 zow(i)=1200._r8*awave(i,j)*(awave(i,j)/lwave(i))**4.5+ &
806 & 0.11_r8*visair(i)/(wstar(i)+eps)
807 tl_zow(i)=-tl_wstar(i)*0.11_r8*visair(i)/ &
808 & ((wstar(i)+eps)*(wstar(i)+eps))
811 zow(i)=charn(i)*wstar(i)*wstar(i)/
g+ &
812 & 0.11_r8*visair(i)/(wstar(i)+eps)
813 tl_zow(i)=2.0_r8*charn(i)*tl_wstar(i)*wstar(i)/
g- &
814 & tl_wstar(i)*0.11_r8*visair(i)/ &
815 & ((wstar(i)+eps)*(wstar(i)+eps))
817 rr(i)=zow(i)*wstar(i)/visair(i)
818 tl_rr(i)=(tl_zow(i)*wstar(i)+zow(i)*tl_wstar(i))/visair(i)
822 zoq(i)=min(1.15e-4_r8,5.5e-5_r8/rr(i)**0.6)
824 & -(0.5_r8-sign(0.5_r8,5.5e-5_r8/rr(i)**0.6-1.15e-4_r8)) &
825 & *0.6_r8*5.5e-5_r8*tl_rr(i)/rr(i)**1.6
829 & (tstar(i)*(1.0_r8+0.61_r8*q(i))+ &
830 & 0.61_r8*tairk(i)*qstar(i))/ &
831 & (tairk(i)*wstar(i)*wstar(i)* &
832 & (1.0_r8+0.61_r8*q(i))+eps)
834 & (tl_tstar(i)*(1.0_r8+0.61_r8*q(i))+ &
835 & 0.61_r8*tairk(i)*tl_qstar(i))/ &
836 & (tairk(i)*wstar(i)*wstar(i)* &
837 & (1.0_r8+0.61_r8*q(i))+eps)- &
838 & 2.0_r8*tairk(i)*tl_wstar(i)*wstar(i)* &
839 & (1.0_r8+0.61_r8*q(i))*zol(i)/ &
840 & (tairk(i)*wstar(i)*wstar(i)* &
841 & (1.0_r8+0.61_r8*q(i))+eps)
842 l(i)=
blk_zw(ng)/(zol(i)+eps)
843 tl_l(i)=-tl_zol(i)*l(i)/(zol(i)+eps)
850 tl_fac=-tl_l(i)*fac/l(i)
856 tl_fac=-tl_l(i)*fac/l(i)
862 cwet(i)=0.622_r8*hlv(i,j)*qsea(i)/ &
864 tl_cwet(i)=0.622_r8*(tl_hlv(i,j)*qsea(i)+ &
865 & hlv(i,j)*tl_qsea(i))/ &
867 & 2.0_r8*
blk_rgas*tl_tseak(i)*tseak(i)*cwet(i)/ &
869 delqc(i)=cwet(i)*deltc(i)
870 tl_delqc(i)=tl_cwet(i)*deltc(i)+cwet(i)*tl_deltc(i)
876 tl_fac1=-tl_zow(i)*fac1/zow(i)
879 fac3=delw(i)*
vonkar/(fac2-wpsi(i))
880 tl_fac3=tl_delw(i)*
vonkar/(fac2-wpsi(i))- &
881 & (tl_fac2-tl_wpsi(i))*fac3/(fac2-wpsi(i))
884 wstar(i)=max(eps,delw(i)*
vonkar/ &
885 & (log(
blk_zw(ng)/zow(i))-wpsi(i)))
886 tl_wstar(i)=(0.5_r8-sign(0.5_r8,eps-fac3))*tl_fac3
888 tl_fac1=-tl_zot(i)*fac1/zot(i)
893 tstar(i)=-(delt(i)-deltc(i))*
vonkar/ &
894 & (log(
blk_zt(ng)/zot(i))-tpsi(i))
895 tl_tstar(i)=-(tl_delt(i)-tl_deltc(i))*
vonkar/(fac2-tpsi(i))-&
896 & (tl_fac2-tl_tpsi(i))*tstar(i)/(fac2-tpsi(i))
898 tl_fac1=-tl_zoq(i)*fac1/zoq(i)
903 qstar(i)=-(delq(i)-delqc(i))*
vonkar/ &
904 & (log(
blk_zq(ng)/zoq(i))-qpsi(i))
905 tl_qstar(i)=-(tl_delq(i)-tl_delqc(i))*
vonkar/(fac2-qpsi(i))-&
906 & (tl_fac2-tl_qpsi(i))*qstar(i)/(fac2-qpsi(i))
912 & wstar(i)*(tstar(i)+0.61_r8*tairk(i)*qstar(i))
914 & (tl_wstar(i)*(tstar(i)+0.61_r8*tairk(i)*qstar(i))+ &
915 & wstar(i)*(tl_tstar(i)+0.61_r8*tairk(i)*tl_qstar(i)))
916 IF (bf.gt.0.0_r8)
THEN
924 delw(i)=sqrt(wmag(i)*wmag(i)+wgus(i)*wgus(i))
925 IF (delw(i).ne.0.0_r8)
THEN
926 tl_delw(i)=tl_wgus(i)*wgus(i)/delw(i)
952 hsb=-rhoair(i)*
blk_cpa*wstar(i)*tstar(i)
953 tl_hsb=-rhoair(i)*
blk_cpa*(tl_wstar(i)*tstar(i)+ &
954 & wstar(i)*tl_tstar(i))
955 hlb=-rhoair(i)*hlv(i,j)*wstar(i)*qstar(i)
956 tl_hlb=-rhoair(i)*(tl_hlv(i,j)*wstar(i)*qstar(i)+ &
957 & hlv(i,j)*(tl_wstar(i)*qstar(i)+ &
958 & wstar(i)*tl_qstar(i)))
962 fc=0.065_r8+11.0_r8*hcool- &
963 & (1.0_r8-exp(-hcool*1250.0_r8))*6.6e-5_r8/hcool
967 qcool=lrad(i,j)+hsb+hlb-srad(i,j)*fc
968 tl_qcool=tl_lrad(i,j)+tl_hsb+tl_hlb
969 qbouy=tcff(i)*qcool+scff(i)*hlb*
blk_cpw/hlv(i,j)
970 tl_qbouy=tl_tcff(i)*qcool+tcff(i)*tl_qcool+ &
972 & scff(i)*tl_hlb*
blk_cpw)/hlv(i,j)- &
973 & tl_hlv(i,j)*scff(i)*hlb*
blk_cpw/ &
974 & (hlv(i,j)*hlv(i,j))
978 IF ((qcool.gt.0.0_r8).and.(qbouy.gt.0.0_r8))
THEN
979 fac1=(wstar(i)+eps)**4
980 tl_fac1=4.0_r8*tl_wstar(i)*(wstar(i)+eps)**3
982 tl_fac2=tl_clam*qbouy+clam*tl_qbouy
983 fac3=(fac2/fac1)**0.75_r8
984 tl_fac3=0.75_r8*(fac2/fac1)**(0.75_r8-1.0_r8)* &
985 & (tl_fac2/fac1-tl_fac1*fac2/(fac1*fac1))
989 & (1.0_r8+(clam*qbouy/(wstar(i)+eps)**4)**0.75_r8)**r3
990 tl_lambd=-r3*6.0_r8*tl_fac3/(1.0_r8+fac3)**(r3+1.0_r8)
991 fac1=sqrt(rhoair(i)/rhosea(i))
992 IF (fac1.ne.0.0_r8)
THEN
993 tl_fac1=-0.5_r8*tl_rhosea(i)*fac1/rhosea(i)
997 fac2=fac1*wstar(i)+eps
998 tl_fac2=tl_fac1*wstar(i)+fac1*tl_wstar(i)
1001 hcool=lambd*
blk_visw/(sqrt(rhoair(i)/rhosea(i))* &
1003 tl_hcool=tl_lambd*
blk_visw/fac2-tl_fac2*hcool/fac2
1005 tl_deltc(i)=(tl_qcool*hcool+qcool*tl_hcool)/
blk_tcw
1010 delqc(i)=cwet(i)*deltc(i)
1011 tl_delqc(i)=tl_cwet(i)*deltc(i)+cwet(i)*tl_deltc(i)
1024 wspeed=sqrt(wmag(i)*wmag(i)+wgus(i)*wgus(i))
1025 IF (wspeed.ne.0.0_r8)
THEN
1026 tl_wspeed=tl_wgus(i)*wgus(i)/wspeed
1030 cd=wstar(i)*wstar(i)/(wspeed*wspeed+eps)
1031 tl_cd=2.0_r8*(tl_wstar(i)*wstar(i)/(wspeed*wspeed+eps)- &
1032 & tl_wspeed*wspeed*cd/(wspeed*wspeed+eps))
1036 hs=-
blk_cpa*rhoair(i)*wstar(i)*tstar(i)
1037 tl_hs=-
blk_cpa*rhoair(i)*(tl_wstar(i)*tstar(i)+ &
1038 & wstar(i)*tl_tstar(i))
1042 diffw=2.11e-5_r8*(tairk(i)/273.16_r8)**1.94_r8
1043 diffh=0.02411_r8*(1.0_r8+tairc(i)* &
1044 & (3.309e-3_r8-1.44e-6_r8*tairc(i)))/ &
1046 cff=qair(i)*hlv(i,j)/(
blk_rgas*tairk(i)*tairk(i))
1047 tl_cff=qair(i)*tl_hlv(i,j)/(
blk_rgas*tairk(i)*tairk(i))
1048 fac=0.622_r8*(cff*hlv(i,j)*diffw)/(
blk_cpa*diffh)
1049 tl_fac=0.622_r8*diffw*(tl_cff*hlv(i,j)+cff*tl_hlv(i,j))/ &
1053 wet_bulb=1.0_r8/(1.0_r8+0.622_r8*(cff*hlv(i,j)*diffw)/ &
1055 tl_wet_bulb=-tl_fac*wet_bulb*wet_bulb
1056 hsr=rain(i,j)*wet_bulb*
blk_cpw* &
1057 & ((tseac(i)-tairc(i))+(qsea(i)-q(i))*hlv(i,j)/
blk_cpa)
1058 tl_hsr=hsr*tl_wet_bulb/wet_bulb+ &
1059 & rain(i,j)*wet_bulb*
blk_cpw* &
1060 & (tl_tseac(i)+tl_qsea(i)*hlv(i,j)/
blk_cpa+ &
1061 & (qsea(i)-q(i))*tl_hlv(i,j)/
blk_cpa)
1063 tl_sheat(i,j)=(tl_hs+tl_hsr)
1065 sheat(i,j)=sheat(i,j)*rmask(i,j)
1066 tl_sheat(i,j)=tl_sheat(i,j)*rmask(i,j)
1069 sheat(i,j)=sheat(i,j)*rmask_wet(i,j)
1070 tl_sheat(i,j)=tl_sheat(i,j)*rmask_wet(i,j)
1075 hl=-hlv(i,j)*rhoair(i)*wstar(i)*qstar(i)
1076 tl_hl=-tl_hlv(i,j)*rhoair(i)*wstar(i)*qstar(i)- &
1077 & hlv(i,j)*rhoair(i)*(tl_wstar(i)*qstar(i)+ &
1078 & wstar(i)*tl_qstar(i) )
1082 upvel=-1.61_r8*wstar(i)*qstar(i)- &
1083 & (1.0_r8+1.61_r8*q(i))*wstar(i)*tstar(i)/tairk(i)
1084 tl_upvel=-1.61_r8* &
1085 & (tl_wstar(i)*qstar(i)+wstar(i)*tl_qstar(i))- &
1086 & (1.0_r8+1.61_r8*q(i))*(tl_wstar(i)*tstar(i)+ &
1087 & wstar(i)*tl_tstar(i))/ &
1089 hlw=rhoair(i)*hlv(i,j)*upvel*q(i)
1090 tl_hlw=rhoair(i)*q(i)*(tl_hlv(i,j)*upvel+ &
1091 & hlv(i,j)*tl_upvel)
1093 tl_lheat(i,j)=(tl_hl+tl_hlw)
1095 lheat(i,j)=lheat(i,j)*rmask(i,j)
1096 tl_lheat(i,j)=tl_lheat(i,j)*rmask(i,j)
1099 lheat(i,j)=lheat(i,j)*rmask_wet(i,j)
1100 tl_lheat(i,j)=tl_lheat(i,j)*rmask_wet(i,j)
1105 taur=0.85_r8*rain(i,j)*wmag(i)
1109 cff=rhoair(i)*cd*wspeed
1110 tl_cff=rhoair(i)*(tl_cd*wspeed+cd*tl_wspeed)
1111 taux(i,j)=(cff*uwind(i,j)+taur*sign(1.0_r8,uwind(i,j)))
1112 tl_taux(i,j)=tl_cff*uwind(i,j)
1114 taux(i,j)=taux(i,j)*rmask(i,j)
1115 tl_taux(i,j)=tl_taux(i,j)*rmask(i,j)
1118 taux(i,j)=taux(i,j)*rmask_wet(i,j)
1119 tl_taux(i,j)=tl_taux(i,j)*rmask_wet(i,j)
1121 tauy(i,j)=(cff*vwind(i,j)+taur*sign(1.0_r8,vwind(i,j)))
1122 tl_tauy(i,j)=tl_cff*vwind(i,j)
1124 tauy(i,j)=tauy(i,j)*rmask(i,j)
1125 tl_tauy(i,j)=tl_tauy(i,j)*rmask(i,j)
1128 tauy(i,j)=tauy(i,j)*rmask_wet(i,j)
1129 tl_tauy(i,j)=tl_tauy(i,j)*rmask_wet(i,j)
1168 tl_lrflx(i,j)=tl_lrad(i,j)*hscale
1171 tl_lhflx(i,j)=-tl_lheat(i,j)*hscale
1174 tl_shflx(i,j)=-tl_sheat(i,j)*hscale
1178 tl_stflux(i,j,
itemp)=(tl_lrflx(i,j)+ &
1179 & tl_lhflx(i,j)+tl_shflx(i,j))
1183 tl_stflx(i,j,
itemp)=tl_stflx(i,j,
itemp)*rmask(i,j)
1188 tl_stflux(i,j,
itemp)=tl_stflx(i,j,
itemp)*rmask_wet(i,j)
1191 evap(i,j)=lheat(i,j)/hlv(i,j)
1192 tl_evap(i,j)=tl_lheat(i,j)/hlv(i,j)- &
1193 & tl_hlv(i,j)*evap(i,j)/hlv(i,j)
1196 tl_stflx(i,j,
isalt)=cff*tl_evap(i,j)
1198 evap(i,j)=evap(i,j)*rmask(i,j)
1199 tl_evap(i,j)=tl_evap(i,j)*rmask(i,j)
1202 tl_stflux(i,j,
isalt)=tl_stflx(i,j,
isalt)*rmask(i,j)
1205 evap(i,j)=evap(i,j)*rmask_wet(i,j)
1206 tl_evap(i,j)=tl_evap(i,j)*rmask_wet(i,j)
1209 tl_stflux(i,j,
isalt)=tl_stflx(i,j,
isalt)*rmask_wet(i,j)
1222 tl_sustr(i,j)=cff*(tl_taux(i-1,j)+tl_taux(i,j))
1226 tl_sustr(i,j)=tl_sustr(i,j)*umask(i,j)
1231 tl_sustr(i,j)=tl_sustr(i,j)*umask_wet(i,j)
1239 tl_svstr(i,j)=cff*(tl_tauy(i,j-1)+tl_tauy(i,j))
1243 tl_svstr(i,j)=tl_svstr(i,j)*vmask(i,j)
1248 tl_svstr(i,j)=tl_svstr(i,j)*vmask_wet(i,j)
1263 & lbi, ubi, lbj, ubj, &
1270 & lbi, ubi, lbj, ubj, &
1277 & lbi, ubi, lbj, ubj, &
1284 & lbi, ubi, lbj, ubj, &
1285 & tl_stflux(:,:,
itemp))
1292 & lbi, ubi, lbj, ubj, &
1293 & tl_stflux(:,:,
isalt))
1299 & lbi, ubi, lbj, ubj, &
1307 & lbi, ubi, lbj, ubj, &
1314 & lbi, ubi, lbj, ubj, &
1327 & lbi, ubi, lbj, ubj, &
1330 & tl_lrflx, tl_lhflx, tl_shflx, &
1331 & tl_stflux(:,:,
itemp))
1341 & lbi, ubi, lbj, ubj, &
1345 & tl_stflux(:,:,
isalt))
1354 & lbi, ubi, lbj, ubj, &
1357 & tl_sustr, tl_svstr)