181
182
185
188# ifdef DISTRIBUTE
190# endif
191
192
193
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
198
199# ifdef ASSUMED_SHAPE
200# ifdef MASKING
201 real(r8), intent(in) :: rmask(LBi:,LBj:)
202 real(r8), intent(in) :: umask(LBi:,LBj:)
203 real(r8), intent(in) :: vmask(LBi:,LBj:)
204# endif
205# ifdef WET_DRY
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:)
209# endif
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:,:,:,:)
223# ifdef CLOUDS
224 real(r8), intent(in) :: cloud(LBi:,LBj:)
225# endif
226# ifdef BBL_MODEL_NOT_YET
227 real(r8), intent(in) :: Awave(LBi:,LBj:)
228 real(r8), intent(in) :: Pwave(LBi:,LBj:)
229# endif
230 real(r8), intent(in) :: rain(LBi:,LBj:)
231 real(r8), intent(in) :: stflux(LBi:,LBj:,:)
232
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:,:)
241
242# ifdef EMINUSP
243 real(r8), intent(out) :: evap(LBi:,LBj:)
244 real(r8), intent(out) :: tl_evap(LBi:,LBj:)
245# endif
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:)
250# else
251# ifdef MASKING
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)
255# endif
256# ifdef WET_DRY
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)
260# endif
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))
278# ifdef CLOUDS
279 real(r8), intent(in) :: cloud(LBi:UBi,LBj:UBj)
280# endif
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)
284# endif
285 real(r8), intent(in) :: rain(LBi:UBi,LBj:UBj)
286 real(r8), intent(in) :: stflx(LBi:UBi,LBj:UBj,NT(ng))
287
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))
297
298# ifdef EMINUSP
299 real(r8), intent(out) :: evap(LBi:UBi,LBj:UBj)
300 real(r8), intent(out) :: tl_evap(LBi:UBi,LBj:UBj)
301# endif
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)
306# endif
307
308
309
310 integer :: Iter, i, j, k
311 integer, parameter :: IterMax = 3
312
313 real(r8), parameter :: eps = 1.0e-20_r8
314 real(r8), parameter :: r3 = 1.0_r8/3.0_r8
315
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
320
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
327# ifdef LONGWAVE
328 real(r8) :: e_sat, vap_p
329# endif
330# ifdef COOL_SKIN
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
334# endif
335
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
384
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
392
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
431
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
438
439# include "set_bounds.h"
440
441
442
443
444
447 DO j=jstr-1,jendr
448 DO i=istr-1,iendr
449
450
451
452 wmag(i)=sqrt(uwind(i,j)*uwind(i,j)+vwind(i,j)*vwind(i,j))
453 pairm=pair(i,j)
454 tairc(i)=tair(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))
462 rh=hair(i,j)
463 srad(i,j)=srflx(i,j)*hscale
464 tcff(i)=alpha(i,j)
465 tl_tcff(i)=tl_alpha(i,j)
466 scff(i)=beta(i,j)
467 tl_scff(i)=tl_beta(i,j)
468
469
470
471 deltc(i)=0.0_r8
472 tl_deltc(i)=0.0_r8
473 delqc(i)=0.0_r8
474 tl_delqc(i)=0.0_r8
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
479 taur=0.0_r8
480 taux(i,j)=0.0_r8
481 tl_taux(i,j)=0.0_r8
482 tauy(i,j)=0.0_r8
483 tl_tauy(i,j)=0.0_r8
484
485
486
487
488
489# if defined LONGWAVE
490
491
492
493
494
495
496
497 cff=(0.7859_r8+0.03477_r8*tairc(i))/ &
498 & (1.0_r8+0.00412_r8*tairc(i))
499 e_sat=10.0_r8**cff
500 vap_p=e_sat*rh
501 cff2=tairk(i)*tairk(i)*tairk(i)
502 cff1=cff2*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)))
508
509# elif defined LONGWAVE_OUT
510
511
512
513
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)
519# else
520 lrad(i,j)=lrflx(i,j)*hscale
521 tl_lrad(i,j)=tl_lrflx(i,j)*hscale
522# endif
523# ifdef MASKING
524 lrad(i,j)=lrad(i,j)*rmask(i,j)
525 tl_lrad(i,j)=tl_lrad(i,j)*rmask(i,j)
526# endif
527# ifdef WET_DRY
528 lrad(i,j)=lrad(i,j)*rmask_wet(i,j)
529 tl_lrad(i,j)=tl_lrad(i,j)*rmask_wet(i,j)
530# endif
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
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)))
566
567
568
569 qair(i)=0.62197_r8*(cff/(pairm-0.378_r8*cff))
570
571
572
573 IF (rh.lt.2.0_r8) THEN
574 cff=cff*rh
575 q(i)=0.62197_r8*(cff/(pairm-0.378_r8*cff))
576 ELSE
577 q(i)=rh/1000.0_r8
578 END IF
579
580
581
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))
585
586
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)))
589 tl_cff=tl_fac*cff
590
591
592
593 cff=cff*0.98_r8
594 tl_cff=tl_cff*0.98_r8
595
596
597
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)))
601
602
603
604
605
606
607
608
609 rhoair(i)=pairm*100.0_r8/(
blk_rgas*tairk(i)* &
610 & (1.0_r8+0.61_r8*q(i)))
611
612
613
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))))
617
618
619
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
622
623
624
625
626 wgus(i)=0.5_r8
627
628
629
630 tl_wgus(i)=0.0_r8
631 delw(i)=sqrt(wmag(i)*wmag(i)+wgus(i)*wgus(i))
632 tl_delw(i)=0.0_r8
633 delq(i)=qsea(i)-q(i)
634 tl_delq(i)=tl_qsea(i)
635 delt(i)=tseac(i)-tairc(i)
636 tl_delt(i)=tl_tseac(i)
637
638
639
640 zow(i)=0.0001_r8
641 tl_zow(i)=0.0_r8
642 u10(i)=delw(i)*log(10.0_r8/zow(i))/log(
blk_zw(ng)/zow(i))
643
644
645
646 tl_u10(i)=0.0_r8
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)
655
656
657 cd10(i)=(
vonkar/log(10.0_r8/zo10(i)))**2
658 tl_cd10(i)=-2.0_r8*tl_fac*cd10(i)/fac
659 ch10(i)=0.00115_r8
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)
664
665
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)
670
671
673 tl_cd=-2.0_r8*tl_fac*cd/fac
674
675
676
677 fac=log(
blk_zt(ng)/zot10(i))
678 tl_fac=-tl_zot10(i)/zot10(i)
679
680
682 tl_ct(i)=-tl_fac*ct(i)/fac
684 tl_cc(i)=
vonkar*tl_ct(i)/cd-tl_cd*cc(i)/cd
685 deltc(i)=0.0_r8
686 tl_deltc(i)=0.0_r8
687# ifdef COOL_SKIN
689 tl_deltc(i)=0.0_r8
690# endif
692 fac=1.0/(tairk(i)*delw(i)*delw(i))
693
694
695
696
697
698
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))
710 ELSE
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)
713
714
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)
718 END IF
720 tl_l10(i)=-l10(i)*l10(i)*tl_zetu(i)/
blk_zw(ng)
721
722
723
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)
728
729
730
731
732
735 tl_wstar(i)=-(tl_fac2- &
736 & tl_bulk_psiu(tl_fac1,fac1,
pi))*wstar(i)/ &
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)
742
743
744
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/ &
750 & (tl_fac2-tl_bulk_psit(tl_fac1,fac1,
pi))*tstar(i)/ &
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)
756
757
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/ &
763 & (tl_fac2-tl_bulk_psit(tl_fac1,fac1,
pi))*qstar(i)/ &
765
766
767
768
769 IF (delw(i).gt.18.0_r8) THEN
770 charn(i)=0.018_r8
771 tl_charn(i)=0.0_r8
772 ELSE IF ((10.0_r8.lt.delw(i)).and.(delw(i).le.18.0_r8)) THEN
773 charn(i)=0.011_r8+ &
774 & 0.125_r8*(0.018_r8-0.011_r8)*(delw(i)-10._r8)
775
776
777
778 tl_charn(i)=0.0_r8
779 ELSE
780 charn(i)=0.011_r8
781 tl_charn(i)=0.0_r8
782 END IF
783# ifdef BBL_MODEL_NOT_YET
784 cwave(i)=
g*pwave(i,j)*twopi_inv
785 lwave(i)=cwave(i)*pwave(i,j)
786# endif
787 END DO
788
789
790
791 DO iter=1,itermax
792 DO i=istr-1,iendr
793# ifdef BBL_MODEL_NOT_YET
794
795
796
797# ifdef WIND_WAVES
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))
804# else
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))
809# endif
810# else
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))
816# endif
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)
819
820
821
822 zoq(i)=min(1.15e-4_r8,5.5e-5_r8/rr(i)**0.6)
823 tl_zoq(i)= &
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
826 zot(i)=zoq(i)
827 tl_zot(i)=tl_zoq(i)
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)
844
845
846
848 tl_wpsi(i)=tl_bulk_psiu(tl_zol(i),zol(i),
pi)
850 tl_fac=-tl_l(i)*fac/l(i)
851
852
854 tl_tpsi(i)=tl_bulk_psit(tl_fac,fac,
pi)
856 tl_fac=-tl_l(i)*fac/l(i)
857
858
860 tl_qpsi(i)=tl_bulk_psit(tl_fac,fac,
pi)
861# ifdef COOL_SKIN
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)
871# endif
872
873
874
876 tl_fac1=-tl_zow(i)*fac1/zow(i)
877 fac2=log(fac1)
878 tl_fac2=tl_fac1/fac1
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))
882
883
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)
889 fac2=log(fac1)
890 tl_fac2=tl_fac1/fac1
891
892
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)
899 fac2=log(fac1)
900 tl_fac2=tl_fac1/fac1
901
902
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))
907
908
909
910
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
920 ELSE
921 wgus(i)=0.2_r8
922 tl_wgus(i)=0.0_r8
923 END IF
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)
927 ELSE
928 tl_delw(i)=0.0_r8
929 END IF
930
931# ifdef COOL_SKIN
932
933
934
935
936
937
938
939
945
946
947
948 hcool=0.001_r8
949
950
951
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)))
959
960
961
962 fc=0.065_r8+11.0_r8*hcool- &
963 & (1.0_r8-exp(-hcool*1250.0_r8))*6.6e-5_r8/hcool
964
965
966
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))
975
976
977
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
981 fac2=clam*qbouy
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))
986
987
988 lambd=6.0_r8/ &
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)
994 ELSE
995 tl_fac1=0.0_r8
996 END IF
997 fac2=fac1*wstar(i)+eps
998 tl_fac2=tl_fac1*wstar(i)+fac1*tl_wstar(i)
999
1000
1001 hcool=lambd*
blk_visw/(sqrt(rhoair(i)/rhosea(i))* &
1002 & wstar(i)+eps)
1003 tl_hcool=tl_lambd*
blk_visw/fac2-tl_fac2*hcool/fac2
1005 tl_deltc(i)=(tl_qcool*hcool+qcool*tl_hcool)/
blk_tcw
1006 ELSE
1007 deltc(i)=0.0_r8
1008 tl_deltc(i)=0.0_r8
1009 END IF
1010 delqc(i)=cwet(i)*deltc(i)
1011 tl_delqc(i)=tl_cwet(i)*deltc(i)+cwet(i)*tl_deltc(i)
1012# endif
1013 END DO
1014 END DO
1015
1016
1017
1018
1019
1020 DO i=istr-1,iendr
1021
1022
1023
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
1027 ELSE
1028 tl_wspeed=0.0_r8
1029 END IF
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))
1033
1034
1035
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))
1039
1040
1041
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))/ &
1051
1052
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)
1062 sheat(i,j)=(hs+hsr)
1063 tl_sheat(i,j)=(tl_hs+tl_hsr)
1064# ifdef MASKING
1065 sheat(i,j)=sheat(i,j)*rmask(i,j)
1066 tl_sheat(i,j)=tl_sheat(i,j)*rmask(i,j)
1067# endif
1068# ifdef WET_DRY
1069 sheat(i,j)=sheat(i,j)*rmask_wet(i,j)
1070 tl_sheat(i,j)=tl_sheat(i,j)*rmask_wet(i,j)
1071# endif
1072
1073
1074
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) )
1079
1080
1081
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))/ &
1088 & tairk(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)
1092 lheat(i,j)=(hl+hlw)
1093 tl_lheat(i,j)=(tl_hl+tl_hlw)
1094# ifdef MASKING
1095 lheat(i,j)=lheat(i,j)*rmask(i,j)
1096 tl_lheat(i,j)=tl_lheat(i,j)*rmask(i,j)
1097# endif
1098# ifdef WET_DRY
1099 lheat(i,j)=lheat(i,j)*rmask_wet(i,j)
1100 tl_lheat(i,j)=tl_lheat(i,j)*rmask_wet(i,j)
1101# endif
1102
1103
1104
1105 taur=0.85_r8*rain(i,j)*wmag(i)
1106
1107
1108
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)
1113# ifdef MASKING
1114 taux(i,j)=taux(i,j)*rmask(i,j)
1115 tl_taux(i,j)=tl_taux(i,j)*rmask(i,j)
1116# endif
1117# ifdef WET_DRY
1118 taux(i,j)=taux(i,j)*rmask_wet(i,j)
1119 tl_taux(i,j)=tl_taux(i,j)*rmask_wet(i,j)
1120# endif
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)
1123# ifdef MASKING
1124 tauy(i,j)=tauy(i,j)*rmask(i,j)
1125 tl_tauy(i,j)=tl_tauy(i,j)*rmask(i,j)
1126# endif
1127# ifdef WET_DRY
1128 tauy(i,j)=tauy(i,j)*rmask_wet(i,j)
1129 tl_tauy(i,j)=tl_tauy(i,j)*rmask_wet(i,j)
1130# endif
1131 END DO
1132 END DO
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1164 DO j=jstrr,jendr
1165 DO i=istrr,iendr
1166
1167
1168 tl_lrflx(i,j)=tl_lrad(i,j)*hscale
1169
1170
1171 tl_lhflx(i,j)=-tl_lheat(i,j)*hscale
1172
1173
1174 tl_shflx(i,j)=-tl_sheat(i,j)*hscale
1175
1176
1177
1178 tl_stflux(i,j,
itemp)=(tl_lrflx(i,j)+ &
1179 & tl_lhflx(i,j)+tl_shflx(i,j))
1180# ifdef MASKING
1181
1182
1183 tl_stflx(i,j,
itemp)=tl_stflx(i,j,
itemp)*rmask(i,j)
1184# endif
1185# ifdef WET_DRY
1186
1187
1188 tl_stflux(i,j,
itemp)=tl_stflx(i,j,
itemp)*rmask_wet(i,j)
1189# endif
1190# ifdef EMINUSP
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)
1194
1195
1196 tl_stflx(i,j,
isalt)=cff*tl_evap(i,j)
1197# ifdef MASKING
1198 evap(i,j)=evap(i,j)*rmask(i,j)
1199 tl_evap(i,j)=tl_evap(i,j)*rmask(i,j)
1200
1201
1202 tl_stflux(i,j,
isalt)=tl_stflx(i,j,
isalt)*rmask(i,j)
1203# endif
1204# ifdef WET_DRY
1205 evap(i,j)=evap(i,j)*rmask_wet(i,j)
1206 tl_evap(i,j)=tl_evap(i,j)*rmask_wet(i,j)
1207
1208
1209 tl_stflux(i,j,
isalt)=tl_stflx(i,j,
isalt)*rmask_wet(i,j)
1210# endif
1211# endif
1212 END DO
1213 END DO
1214
1215
1216
1218 DO j=jstrr,jendr
1219 DO i=istr,iendr
1220
1221
1222 tl_sustr(i,j)=cff*(tl_taux(i-1,j)+tl_taux(i,j))
1223# ifdef MASKING
1224
1225
1226 tl_sustr(i,j)=tl_sustr(i,j)*umask(i,j)
1227# endif
1228# ifdef WET_DRY
1229
1230
1231 tl_sustr(i,j)=tl_sustr(i,j)*umask_wet(i,j)
1232# endif
1233 END DO
1234 END DO
1235 DO j=jstr,jendr
1236 DO i=istrr,iendr
1237
1238
1239 tl_svstr(i,j)=cff*(tl_tauy(i,j-1)+tl_tauy(i,j))
1240# ifdef MASKING
1241
1242
1243 tl_svstr(i,j)=tl_svstr(i,j)*vmask(i,j)
1244# endif
1245# ifdef WET_DRY
1246
1247
1248 tl_svstr(i,j)=tl_svstr(i,j)*vmask_wet(i,j)
1249# endif
1250 END DO
1251 END DO
1252
1253
1254
1255
1256
1258
1259
1260
1261
1263 & lbi, ubi, lbj, ubj, &
1264 & tl_lrflx)
1265
1266
1267
1268
1270 & lbi, ubi, lbj, ubj, &
1271 & tl_lhflx)
1272
1273
1274
1275
1277 & lbi, ubi, lbj, ubj, &
1278 & tl_shflx)
1279
1280
1281
1282
1284 & lbi, ubi, lbj, ubj, &
1285 & tl_stflux(:,:,
itemp))
1286# ifdef EMINUSP
1287
1288
1289
1290
1292 & lbi, ubi, lbj, ubj, &
1293 & tl_stflux(:,:,
isalt))
1294
1295
1296
1297
1299 & lbi, ubi, lbj, ubj, &
1300 & tl_evap)
1301# endif
1302
1303
1304
1305
1307 & lbi, ubi, lbj, ubj, &
1308 & tl_sustr)
1309
1310
1311
1312
1314 & lbi, ubi, lbj, ubj, &
1315 & tl_svstr)
1316 END IF
1317
1318# ifdef DISTRIBUTE
1319
1320
1321
1322
1323
1324
1325
1327 & lbi, ubi, lbj, ubj, &
1330 & tl_lrflx, tl_lhflx, tl_shflx, &
1331 & tl_stflux(:,:,
itemp))
1332# ifdef EMINUSP
1333
1334
1335
1336
1337
1338
1339
1341 & lbi, ubi, lbj, ubj, &
1344 & tl_evap, &
1345 & tl_stflux(:,:,
isalt))
1346# endif
1347
1348
1349
1350
1351
1352
1354 & lbi, ubi, lbj, ubj, &
1357 & tl_sustr, tl_svstr)
1358# endif
1359
1360 RETURN
real(r8) function, public bulk_psiu(zol, pi)
real(r8) function, public bulk_psit(zol, pi)
subroutine exchange_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_u2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_v2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
integer, dimension(:), allocatable n
real(r8), dimension(:), allocatable blk_zt
real(r8), dimension(:), allocatable blk_zw
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
real(r8), dimension(:), allocatable blk_zq
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)