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)