111
112
115
117# ifdef DISTRIBUTE
119# endif
120# ifdef LMD_SHAPIRO
122# endif
123
124
125
126 integer, intent(in) :: ng, tile
127 integer, intent(in) :: LBi, UBi, LBj, UBj
128 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
129 integer, Intent(in) :: nstp
130
131# ifdef ASSUMED_SHAPE
132# ifdef MASKING
133 real(r8), intent(in) :: rmask(LBi:,LBj:)
134# endif
135 real(r8), intent(in) :: f(LBi:,LBj:)
136 real(r8), intent(in) :: h(LBi:,LBj:)
137 real(r8), intent(in) :: Hz(LBi:,LBj:,:)
138 real(r8), intent(in) :: z_r(LBi:,LBj:,:)
139 real(r8), intent(in) :: z_w(LBi:,LBj:,0:)
140 real(r8), intent(in) :: u(LBi:,LBj:,:,:)
141 real(r8), intent(in) :: v(LBi:,LBj:,:,:)
142 real(r8), intent(in) :: pden(LBi:,LBj:,:)
143 real(r8), intent(in) :: srflx(LBi:,LBj:)
144 real(r8), intent(in) :: btflx(LBi:,LBj:,:)
145 real(r8), intent(in) :: bustr(LBi:,LBj:)
146 real(r8), intent(in) :: bvstr(LBi:,LBj:)
147 real(r8), intent(in) :: alpha(LBi:,LBj:)
148# ifdef SALINITY
149 real(r8), intent(in) :: beta(LBi:,LBj:)
150# endif
151 real(r8), intent(in) :: bvf(LBi:,LBj:,0:)
152 integer, intent(in) :: ksbl(LBi:,LBj:)
153 real(r8), intent(inout) :: Akt(LBi:,LBj:,0:,:)
154 real(r8), intent(inout) :: Akv(LBi:,LBj:,0:)
155 real(r8), intent(inout) :: hbbl(LBi:,LBj:)
156 integer, intent(out) :: kbbl(LBi:,LBj:)
157# else
158# ifdef MASKING
159 real(r8), intent(in) :: rmask(LBi:UBi,LBj:UBj)
160# endif
161 real(r8), intent(in) :: f(LBi:UBi,LBj:UBj)
162 real(r8), intent(in) :: h(LBi:UBi,LBj:UBj)
163 real(r8), intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
164 real(r8), intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
165 real(r8), intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
166 real(r8), intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),3)
167 real(r8), intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),3)
168 real(r8), intent(in) :: pden(LBi:UBi,LBj:UBj,N(ng))
169 real(r8), intent(in) :: srflx(LBi:UBi,LBj:UBj)
170 real(r8), intent(in) :: btflx(LBi:UBi,LBj:UBj,NT(ng))
171 real(r8), intent(in) :: bustr(LBi:UBi,LBj:UBj)
172 real(r8), intent(in) :: bvstr(LBi:UBi,LBj:UBj)
173 real(r8), intent(in) :: alpha(LBi:UBi,LBj:UBj)
174# ifdef SALINITY
175 real(r8), intent(in) :: beta(LBi:UBi,LBj:UBj)
176# endif
177 real(r8), intent(in) :: bvf(LBi:UBi,LBj:UBj,0:N(ng))
178 integer, intent(in) :: ksbl(LBi:UBi,LBj:UBj)
179 real(r8), intent(inout) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
180 real(r8), intent(inout) :: Akv(LBi:UBi,LBj:UBj,0:N(ng))
181 real(r8), intent(inout) :: hbbl(LBi:UBi,LBj:UBj)
182 integer, intent(out) :: kbbl(LBi:UBi,LBj:UBj)
183# endif
184
185
186
187 integer :: i, itrc, j, k
188
189 real(r8), parameter :: eps = 1.0e-10_r8
190 real(r8), parameter :: r3 = 1.0_r8/3.0_r8
191 real(r8), parameter :: small = 1.0e-20_r8
192
193 real(r8) :: Gm, Gt, Gs, K_bl, Ribot, Ritop, Rk
194 real(r8) :: Uk, Ustar3, Vk, Vtc
195 real(r8) :: a1, a2, a3, cff, cff1, cff2, cff_up, cff_dn
196 real(r8) :: depth, dK_bl, hekman, sigma, zbl
197 real(r8) :: zetahat, zetapar
198
199 real(r8), dimension (IminS:ImaxS) :: Rref
200 real(r8), dimension (IminS:ImaxS) :: Uref
201 real(r8), dimension (IminS:ImaxS) :: Vref
202
203 real(r8), dimension (IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: Bflux
204
205 real(r8), dimension (IminS:ImaxS,0:N(ng)) :: FC
206 real(r8), dimension (IminS:ImaxS,0:N(ng)) :: dR
207 real(r8), dimension (IminS:ImaxS,0:N(ng)) :: dU
208 real(r8), dimension (IminS:ImaxS,0:N(ng)) :: dV
209
210 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: Bo
211 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: Bosol
212 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: Bfbot
213 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: Gm1
214 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: Gt1
215 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: Gs1
216 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: Ustar
217 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: bl_dpth
218 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: dGm1dS
219 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: dGt1dS
220 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: dGs1dS
221 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: f1
222 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: swdk
223 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: wm
224 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: ws
225 real(r8), dimension (IminS:ImaxS,JminS:JmaxS) :: zgrid
226
227# include "set_bounds.h"
228
229
230
231
232
235
236
237
238
239
240
241 DO j=jstr,jend
242 DO i=istr,iend
244 END DO
245 END DO
246
247
248
249
250
251
252 DO j=jstr,jend
253 DO i=istr,iend
254 ustar(i,j)=sqrt(sqrt((0.5_r8*(bustr(i,j)+bustr(i+1,j)))**2+ &
255 & (0.5_r8*(bvstr(i,j)+bvstr(i,j+1)))**2))
256# ifdef MASKING
257 ustar(i,j)=ustar(i,j)*rmask(i,j)
258# endif
259 END DO
260 END DO
261
262
263
264
265
266
267
268
269 DO j=jstr,jend
270 DO i=istr,iend
271# ifdef SALINITY
272 bo(i,j)=
g*(alpha(i,j)*btflx(i,j,
itemp)- &
273 & beta(i,j)*btflx(i,j,
isalt))
274# else
275 bo(i,j)=
g*alpha(i,j)*btflx(i,j,
itemp)
276# endif
277 bosol(i,j)=
g*alpha(i,j)*srflx(i,j)
278 END DO
279 END DO
280
281
282
283
284
286 DO j=jstr,jend
287 DO i=istr,iend
288 zgrid(i,j)=z_w(i,j,
n(ng))-z_w(i,j,k)
289 END DO
290 END DO
292 & lbi, ubi, lbj, ubj, &
293 & imins, imaxs, jmins, jmaxs, &
294 & -1.0_r8, zgrid, swdk)
295 DO j=jstr,jend
296 DO i=istr,iend
297 bflux(i,j,k)=(bo(i,j)+bosol(i,j)*(1.0_r8-swdk(i,j)))
298# ifdef MASKING
299 bflux(i,j,k)=bflux(i,j,k)*rmask(i,j)
300# endif
301 END DO
302 END DO
303 END DO
304
305
306
307
308
309
310 DO j=jstr,jend
311# ifdef RI_SPLINES
312
313
314
315
316 DO i=istr,iend
317 fc(i,0)=0.0_r8
318 dr(i,0)=0.0_r8
319 du(i,0)=0.0_r8
320 dv(i,0)=0.0_r8
321 END DO
323 DO i=istr,iend
324 cff=1.0_r8/(2.0_r8*hz(i,j,k+1)+ &
325 & hz(i,j,k)*(2.0_r8-fc(i,k-1)))
326 fc(i,k)=cff*hz(i,j,k+1)
327 dr(i,k)=cff*(6.0_r8*(pden(i,j,k+1)-pden(i,j,k))- &
328 & hz(i,j,k)*dr(i,k-1))
329 du(i,k)=cff*(3.0_r8*(u(i ,j,k+1,nstp)-u(i, j,k,nstp)+ &
330 & u(i+1,j,k+1,nstp)-u(i+1,j,k,nstp))- &
331 & hz(i,j,k)*du(i,k-1))
332 dv(i,k)=cff*(3.0_r8*(v(i,j ,k+1,nstp)-v(i,j ,k,nstp)+ &
333 & v(i,j+1,k+1,nstp)-v(i,j+1,k,nstp))- &
334 & hz(i,j,k)*dv(i,k-1))
335 END DO
336 END DO
337 DO i=istr,iend
341 END DO
343 DO i=istr,iend
344 dr(i,k)=dr(i,k)-fc(i,k)*dr(i,k+1)
345 du(i,k)=du(i,k)-fc(i,k)*du(i,k+1)
346 dv(i,k)=dv(i,k)-fc(i,k)*dv(i,k+1)
347 END DO
348 END DO
349# else
350
351
352
353
355 DO i=istr,iend
356 cff=1.0_r8/(z_r(i,j,k+1)-z_r(i,j,k))
357 dr(i,k)=cff*(pden(i,j,k+1)-pden(i,j,k))
358 cff=0.5_r8*cff
359 du(i,k)=cff*(u(i ,j,k+1,nstp)-u(i, j,k,nstp)+ &
360 & u(i+1,j,k+1,nstp)-u(i+1,j,k,nstp))
361 dv(i,k)=cff*(v(i,j ,k+1,nstp)-v(i,j ,k,nstp)+ &
362 & v(i,j+1,k+1,nstp)-v(i,j+1,k,nstp))
363 END DO
364 END DO
365 DO i=istr,iend
366 dr(i,0)=0.0_r8
368 du(i,0)=0.0_r8
370 dv(i,0)=0.0_r8
372 END DO
373# endif
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405 cff1=1.0_r8/3.0_r8
406 cff2=1.0_r8/6.0_r8
407 DO i=istr,iend
408 rref(i)=pden(i,j,1)- &
409 & hz(i,j,1)*(cff1*dr(i,0)+cff2*dr(i,1))
410 uref(i)=0.5_r8*(u(i,j,1,nstp)+u(i+1,j,1,nstp))- &
411 & hz(i,j,1)*(cff1*du(i,0)+cff2*du(i,1))
412 vref(i)=0.5_r8*(v(i,j,1,nstp)+v(i,j+1,1,nstp))- &
413 & hz(i,j,1)*(cff1*dv(i,0)+cff2*dv(i,1))
414 END DO
415
416
417
418
419 DO i=istr,iend
420 fc(i,0)=0.0_r8
422 depth=z_w(i,j,k)-z_w(i,j,0)
423 IF (bflux(i,j,k).lt.0.0_r8) THEN
424 sigma=min(bl_dpth(i,j),depth)
425 ELSE
426 sigma=depth
427 END IF
428 ustar3=ustar(i,j)*ustar(i,j)*ustar(i,j)
429 zetahat=
vonkar*sigma*bflux(i,j,k)
430 zetapar=zetahat/(ustar3+small)
431 IF (zetahat.ge.0.0_r8) THEN
432 wm(i,j)=
vonkar*ustar(i,j)/(1.0_r8+5.0_r8*zetapar)
433 ws(i,j)=wm(i,j)
434 ELSE
436 wm(i,j)=
vonkar*ustar(i,j)* &
437 & (1.0_r8-16.0_r8*zetapar)**0.25_r8
438 ELSE
440 END IF
442 ws(i,j)=
vonkar*ustar(i,j)* &
443 & (1.0_r8-16.0_r8*zetapar)**0.5_r8
444 ELSE
446 END IF
447 END IF
448
449 rk=pden(i,j,k)+ &
450 & hz(i,j,k)*(cff1*dr(i,k)+cff2*dr(i,k-1))
451 uk=0.5_r8*(u(i,j,k,nstp)+u(i+1,j,k,nstp))+ &
452 & hz(i,j,k)*(cff1*du(i,k)+cff2*du(i,k-1))
453 vk=0.5_r8*(v(i,j,k,nstp)+v(i,j+1,k,nstp))+ &
454 & hz(i,j,k)*(cff1*dv(i,k)+cff2*dv(i,k-1))
455
456 ritop=-
gorho0*(rk-rref(i))*depth
457 ribot=(uk-uref(i))**2+(vk-vref(i))**2+ &
458 & vtc*depth*ws(i,j)*sqrt(abs(bvf(i,j,k)))
459# ifdef SASHA
461# else
462 fc(i,k)=ritop/(ribot+eps)
463# endif
464 END DO
465 END DO
466
467
468
469 DO i=istr,iend
471 hbbl(i,j)=z_w(i,j,
n(ng))
472 END DO
473# ifdef SASHA
475 DO i=istr,iend
476 IF ((kbbl(i,j).eq.
n(ng)).and.(fc(i,k).gt.0.0_r8))
THEN
477 hbbl(i,j)=(z_w(i,j,k)*fc(i,k-1)-z_w(i,j,k-1)*fc(i,k))/ &
478 & (fc(i,k-1)-fc(i,k))
479 kbbl(i,j)=k
480 END IF
481 END DO
482 END DO
483# else
485 DO i=istr,iend
486 IF ((kbbl(i,j).eq.
n(ng)).and.((fc(i,k-1).lt.
lmd_ric).and. &
488 hbbl(i,j)=((
lmd_ric-fc(i,k-1))*z_w(i,j,k )+ &
489 & (fc(i,k )-
lmd_ric)*z_w(i,j,k-1))/ &
490 & (fc(i,k)-fc(i,k-1))
491 kbbl(i,j)=k
492 END IF
493 END DO
494 END DO
495# endif
496 END DO
497
498
499
500
501 DO j=jstr,jend
502 DO i=istr,iend
503 zgrid(i,j)=z_w(i,j,
n(ng))-hbbl(i,j)
504# ifdef MASKING
505 zgrid(i,j)=zgrid(i,j)*rmask(i,j)
506# endif
507 END DO
508 END DO
510 & lbi, ubi, lbj, ubj, &
511 & imins, imaxs, jmins, jmaxs, &
512 & -1.0_r8, zgrid, swdk)
513 DO j=jstr,jend
514 DO i=istr,iend
515 bfbot(i,j)=(bo(i,j)+bosol(i,j)*(1.0_r8-swdk(i,j)))
516# ifdef MASKING
517 bfbot(i,j)=bfbot(i,j)*rmask(i,j)
518# endif
519 END DO
520 END DO
521
522
523
524
525
526 DO j=jstr,jend
527 DO i=istr,iend
528 IF (ustar(i,j).ge.0.0_r8) THEN
529 hekman=
lmd_cekman*ustar(i,j)/max(abs(f(i,j)),eps)-h(i,j)
530 hbbl(i,j)= min(hekman,hbbl(i,j))
531 END IF
532 hbbl(i,j)=min(hbbl(i,j),z_w(i,j,
n(ng)))
533 hbbl(i,j)=max(hbbl(i,j),z_w(i,j,0))
534# ifdef MASKING
535 hbbl(i,j)=hbbl(i,j)*rmask(i,j)
536# endif
537 END DO
538 END DO
539# ifdef LMD_SHAPIRO
540
541
542
544 & lbi, ubi, lbj, ubj, &
545 & hbbl)
546# ifdef DISTRIBUTE
548 & lbi, ubi, lbj, ubj, &
551 & hbbl)
552# endif
553
554
555
557 & lbi, ubi, lbj, ubj, &
558 & imins, imaxs, jmins, jmaxs, &
559# ifdef MASKING
560 & rmask, &
561# endif
562 & hbbl)
563
564 DO j=jstr,jend
565 DO i=istr,iend
566 hbbl(i,j)=min(hbbl(i,j),z_w(i,j,
n(ng)))
567 hbbl(i,j)=max(hbbl(i,j),z_w(i,j,0))
568# ifdef MASKING
569 hbbl(i,j)=hbbl(i,j)*rmask(i,j)
570# endif
571 END DO
572 END DO
573# endif
574
575
576
578 & lbi, ubi, lbj, ubj, &
579 & hbbl)
580# ifdef DISTRIBUTE
582 & lbi, ubi, lbj, ubj, &
585 & hbbl)
586# endif
587
588
589
590 DO j=jstr,jend
591 DO i=istr,iend
594 IF ((kbbl(i,j).eq.
n(ng)).and.(z_w(i,j,k).gt.hbbl(i,j)))
THEN
595 kbbl(i,j)=k
596 END IF
597 END DO
598 END DO
599 END DO
600
601
602
603
604
605 DO j=jstr,jend
606 DO i=istr,iend
607 zgrid(i,j)=z_w(i,j,
n(ng))-hbbl(i,j)
608# ifdef MASKING
609 zgrid(i,j)=zgrid(i,j)*rmask(i,j)
610# endif
611 END DO
612 END DO
614 & lbi, ubi, lbj, ubj, &
615 & imins, imaxs, jmins, jmaxs, &
616 & -1.0_r8, zgrid, swdk)
617 DO j=jstr,jend
618 DO i=istr,iend
619 bfbot(i,j)=(bo(i,j)+bosol(i,j)*(1.0_r8-swdk(i,j)))
620# ifdef MASKING
621 bfbot(i,j)=bfbot(i,j)*rmask(i,j)
622# endif
623 END DO
624 END DO
625
626
627
628
629
630
631
632
633 DO j=jstr,jend
634 DO i=istr,iend
636 IF (bfbot(i,j).gt.0.0_r8) THEN
637 cff=1.0_r8
638 ELSE
640 END IF
641 sigma=cff*(hbbl(i,j)-z_w(i,j,0))
642 ustar3=ustar(i,j)*ustar(i,j)*ustar(i,j)
643 zetahat=
vonkar*sigma*bfbot(i,j)
644 zetapar=zetahat/(ustar3+small)
645 IF (zetahat.ge.0.0_r8) THEN
646 wm(i,j)=
vonkar*ustar(i,j)/(1.0_r8+5.0_r8*zetapar)
647 ws(i,j)=wm(i,j)
648 ELSE
650 wm(i,j)=
vonkar*ustar(i,j)* &
651 & (1.0_r8-16.0_r8*zetapar)**0.25_r8
652 ELSE
654 END IF
656 ws(i,j)=
vonkar*ustar(i,j)* &
657 & (1.0_r8-16.0_r8*zetapar)**0.5_r8
658 ELSE
660 END IF
661 END IF
662 END DO
663 END DO
664
665
666
667
668
669
670
671 DO j=jstr,jend
672 DO i=istr,iend
673 f1(i,j)=5.0_r8*max(0.0_r8,bfbot(i,j))*
vonkar/ &
674 & (ustar(i,j)*ustar(i,j)*ustar(i,j)*ustar(i,j)+eps)
675 END DO
676 END DO
677
678 DO j=jstr,jend
679 DO i=istr,iend
680 zbl=hbbl(i,j)-z_w(i,j,0)
681 k=kbbl(i,j)
682 cff=1.0_r8/(z_w(i,j,k)-z_w(i,j,k-1))
683 cff_dn=cff*(hbbl(i,j)-z_w(i,j,k-1))
684 cff_up=cff*(z_w(i,j,k)-hbbl(i,j))
685
686
687
688
689 k_bl=cff_dn*akv(i,j,k)+cff_up*akv(i,j,k-1)
690 dk_bl=-cff*(akv(i,j,k)-akv(i,j,k-1))
691 gm1(i,j)=k_bl/(zbl*wm(i,j)+eps)
692# ifdef MASKING
693 gm1(i,j)=gm1(i,j)*rmask(i,j)
694# endif
695 dgm1ds(i,j)=min(0.0_r8, k_bl*f1(i,j)-dk_bl/(wm(i,j)+eps))
696
697
698
699
700 k_bl=cff_dn*akt(i,j,k,
itemp)+cff_up*akt(i,j,k-1,
itemp)
701 dk_bl=-cff*(akt(i,j,k,
itemp)-akt(i,j,k-1,
itemp))
702 gt1(i,j)=k_bl/(zbl*ws(i,j)+eps)
703# ifdef MASKING
704 gt1(i,j)=gt1(i,j)*rmask(i,j)
705# endif
706 dgt1ds(i,j)=min(0.0_r8, k_bl*f1(i,j)-dk_bl/(ws(i,j)+eps))
707# ifdef SALINITY
708
709
710
711
712 k_bl=cff_dn*akt(i,j,k,
isalt)+cff_up*akt(i,j,k-1,
isalt)
713 dk_bl=-cff*(akt(i,j,k,
isalt)-akt(i,j,k-1,
isalt))
714 gs1(i,j)=k_bl/(zbl*ws(i,j)+eps)
715# ifdef MASKING
716 gs1(i,j)=gs1(i,j)*rmask(i,j)
717# endif
718 dgs1ds(i,j)=min(0.0_r8, k_bl*f1(i,j)-dk_bl/(ws(i,j)+eps))
719# endif
720 END DO
721 END DO
722
723
724
725
726
728 DO j=jstr,jend
729 DO i=istr,iend
730 IF (z_w(i,j,k).lt.hbbl(i,j)) THEN
731
732
733
734 depth=z_w(i,j,k)-z_w(i,j,0)
735 IF (bflux(i,j,k).lt.0.0_r8) THEN
736 sigma=min(bl_dpth(i,j),depth)
737 ELSE
738 sigma=depth
739 END IF
740 ustar3=ustar(i,j)*ustar(i,j)*ustar(i,j)
741 zetahat=
vonkar*sigma*bflux(i,j,k)
742 zetapar=zetahat/(ustar3+small)
743 IF (zetahat.ge.0.0_r8) THEN
744 wm(i,j)=
vonkar*ustar(i,j)/(1.0_r8+5.0_r8*zetapar)
745 ws(i,j)=wm(i,j)
746 ELSE
748 wm(i,j)=
vonkar*ustar(i,j)* &
749 & (1.0_r8-16.0_r8*zetapar)**0.25_r8
750 ELSE
752 END IF
754 ws(i,j)=
vonkar*ustar(i,j)* &
755 & (1.0_r8-16.0_r8*zetapar)**0.5_r8
756 ELSE
758 END IF
759 END IF
760
761
762
763 sigma=depth/(hbbl(i,j)-z_w(i,j,0)+eps)
764# ifdef MASKING
765 sigma=sigma*rmask(i,j)
766# endif
767 a1=sigma-2.0_r8
768 a2=3.0_r8-2.0_r8*sigma
769 a3=sigma-1.0_r8
770
771
772
773 gm=a1+a2*gm1(i,j)+a3*dgm1ds(i,j)
774 gt=a1+a2*gt1(i,j)+a3*dgt1ds(i,j)
775# ifdef SALINITY
776 gs=a1+a2*gs1(i,j)+a3*dgs1ds(i,j)
777# endif
778
779
780
781
782
783
784
785 IF (k.gt.ksbl(i,j)) THEN
786 akv(i,j,k)=max(akv(i,j,k), &
787 & depth*wm(i,j)*(1.0_r8+sigma*gm))
789 & depth*ws(i,j)*(1.0_r8+sigma*gt))
790# ifdef SALINITY
792 & depth*ws(i,j)*(1.0_r8+sigma*gs))
793# endif
794 ELSE
795 akv(i,j,k)=depth*wm(i,j)*(1.0_r8+sigma*gm)
796 akt(i,j,k,
itemp)=depth*ws(i,j)*(1.0_r8+sigma*gt)
797# ifdef SALINITY
798 akt(i,j,k,
isalt)=depth*ws(i,j)*(1.0_r8+sigma*gs)
799# endif
800 END IF
801 END IF
802 END DO
803 END DO
804 END DO
805
806 RETURN
subroutine lmd_swfrac_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, zscale, z, swdk)
subroutine bc_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
integer, dimension(:), allocatable n
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine shapiro2d_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, amask, a)