147 & LBi, UBi, LBj, UBj, &
148 & IminS, ImaxS, JminS, JmaxS, &
149 & nrhs, nstp, nnew, &
153# ifdef WET_DRY_NOT_YET
154 & umask_wet, vmask_wet, &
156 & om_v, on_u, pm, pn, &
161 & DU_avg1, tl_DU_avg1, &
162 & DV_avg1, tl_DV_avg1, &
163 & DU_avg2, tl_DU_avg2, &
164 & DV_avg2, tl_DV_avg2, &
166# ifdef DIAGNOSTICS_UV
167!! & DiaU2wrk, DiaV2wrk, &
168!! & DiaU2int, DiaV2int, &
169!! & DiaU3wrk, DiaV3wrk, &
174 & tl_ubar, tl_vbar, &
175# ifdef NEARSHORE_MELLOR
176 & ubar_stokes, tl_ubar_stokes, &
177 & vbar_stokes, tl_vbar_stokes, &
178 & u_stokes, tl_u_stokes, &
179 & v_stokes, tl_v_stokes, &
187 integer,
intent(in) :: ng, tile
188 integer,
intent(in) :: LBi, UBi, LBj, UBj
189 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
190 integer,
intent(in) :: nrhs, nstp, nnew
194 real(r8),
intent(in) :: umask(LBi:,LBj:)
195 real(r8),
intent(in) :: vmask(LBi:,LBj:)
197# ifdef WET_DRY_NOT_YET
198 real(r8),
intent(in) :: umask_wet(LBi:,LBj:)
199 real(r8),
intent(in) :: vmask_wet(LBi:,LBj:)
201 real(r8),
intent(in) :: om_v(LBi:,LBj:)
202 real(r8),
intent(in) :: on_u(LBi:,LBj:)
203 real(r8),
intent(in) :: pm(LBi:,LBj:)
204 real(r8),
intent(in) :: pn(LBi:,LBj:)
205 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
206 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
207 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
208 real(r8),
intent(in) :: Akv(LBi:,LBj:,0:)
209 real(r8),
intent(in) :: DU_avg1(LBi:,LBj:)
210 real(r8),
intent(in) :: DV_avg1(LBi:,LBj:)
211 real(r8),
intent(in) :: DU_avg2(LBi:,LBj:)
212 real(r8),
intent(in) :: DV_avg2(LBi:,LBj:)
213 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
214 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
215# ifdef NEARSHORE_MELLOR
216 real(r8),
intent(in) :: ubar_stokes(LBi:,LBj:)
217 real(r8),
intent(in) :: vbar_stokes(LBi:,LBj:)
218 real(r8),
intent(in) :: tl_ubar_stokes(LBi:,LBj:)
219 real(r8),
intent(in) :: tl_vbar_stokes(LBi:,LBj:)
221 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
222 real(r8),
intent(in) :: tl_z_r(LBi:,LBj:,:)
223 real(r8),
intent(in) :: tl_z_w(LBi:,LBj:,0:)
224 real(r8),
intent(in) :: tl_Akv(LBi:,LBj:,0:)
225 real(r8),
intent(in) :: tl_DU_avg1(LBi:,LBj:)
226 real(r8),
intent(in) :: tl_DV_avg1(LBi:,LBj:)
227 real(r8),
intent(in) :: tl_DU_avg2(LBi:,LBj:)
228 real(r8),
intent(in) :: tl_DV_avg2(LBi:,LBj:)
229 real(r8),
intent(in) :: tl_ru(LBi:,LBj:,0:,:)
230 real(r8),
intent(in) :: tl_rv(LBi:,LBj:,0:,:)
232# ifdef DIAGNOSTICS_UV
242 real(r8),
intent(inout) :: Huon(LBi:,LBj:,:)
243 real(r8),
intent(inout) :: Hvom(LBi:,LBj:,:)
244 real(r8),
intent(inout) :: tl_u(LBi:,LBj:,:,:)
245 real(r8),
intent(inout) :: tl_v(LBi:,LBj:,:,:)
246# ifdef NEARSHORE_MELLOR
247 real(r8),
intent(inout) :: u_stokes(LBi:,LBj:,:)
248 real(r8),
intent(inout) :: v_stokes(LBi:,LBj:,:)
249 real(r8),
intent(inout) :: tl_u_stokes(LBi:,LBj:,:)
250 real(r8),
intent(inout) :: tl_v_stokes(LBi:,LBj:,:)
252 real(r8),
intent(out) :: tl_ubar(LBi:,LBj:,:)
253 real(r8),
intent(out) :: tl_vbar(LBi:,LBj:,:)
254 real(r8),
intent(out) :: tl_Huon(LBi:,LBj:,:)
255 real(r8),
intent(out) :: tl_Hvom(LBi:,LBj:,:)
260 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
261 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
263# ifdef WET_DRY_NOT_YET
264 real(r8),
intent(in) :: umask_wet(LBi:UBi,LBj:UBj)
265 real(r8),
intent(in) :: vmask_wet(LBi:UBi,LBj:UBj)
267 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
268 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
269 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
270 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
271 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
272 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
273 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
274 real(r8),
intent(in) :: Akv(LBi:UBi,LBj:UBj,0:N(ng))
275 real(r8),
intent(in) :: DU_avg1(LBi:UBi,LBj:UBj)
276 real(r8),
intent(in) :: DV_avg1(LBi:UBi,LBj:UBj)
277 real(r8),
intent(in) :: DU_avg2(LBi:UBi,LBj:UBj)
278 real(r8),
intent(in) :: DV_avg2(LBi:UBi,LBj:UBj)
279 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
280 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
281# ifdef NEARSHORE_MELLOR
282 real(r8),
intent(in) :: ubar_stokes(LBi:UBi,LBj:UBj)
283 real(r8),
intent(in) :: vbar_stokes(LBi:UBi,LBj:UBj)
284 real(r8),
intent(in) :: tl_ubar_stokes(LBi:UBi,LBj:UBj)
285 real(r8),
intent(in) :: tl_vbar_stokes(LBi:UBi,LBj:UBj)
288 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
289 real(r8),
intent(in) :: tl_z_r(LBi:UBi,LBj:UBj,N(ng))
290 real(r8),
intent(in) :: tl_z_w(LBi:UBi,LBj:UBj,0:N(ng))
291 real(r8),
intent(in) :: tl_Akv(LBi:UBi,LBj:UBj,0:N(ng))
292 real(r8),
intent(in) :: tl_DU_avg1(LBi:UBi,LBj:UBj)
293 real(r8),
intent(in) :: tl_DV_avg1(LBi:UBi,LBj:UBj)
294 real(r8),
intent(in) :: tl_DU_avg2(LBi:UBi,LBj:UBj)
295 real(r8),
intent(in) :: tl_DV_avg2(LBi:UBi,LBj:UBj)
296 real(r8),
intent(in) :: tl_ru(LBi:UBi,LBj:UBj,0:N(ng),2)
297 real(r8),
intent(in) :: tl_rv(LBi:UBi,LBj:UBj,0:N(ng),2)
298# ifdef DIAGNOSTICS_UV
308 real(r8),
intent(inout) :: Huon(LBi:UBi,LBj:UBj,N(ng))
309 real(r8),
intent(inout) :: Hvom(LBi:UBi,LBj:UBj,N(ng))
310 real(r8),
intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
311 real(r8),
intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
312# ifdef NEARSHORE_MELLOR
313 real(r8),
intent(inout) :: u_stokes(LBi:UBi,LBj:UBj,N(ng))
314 real(r8),
intent(inout) :: v_stokes(LBi:UBi,LBj:UBj,N(ng))
315 real(r8),
intent(inout) :: tl_u_stokes(LBi:UBi,LBj:UBj,N(ng))
316 real(r8),
intent(inout) :: tl_v_stokes(LBi:UBi,LBj:UBj,N(ng))
318 real(r8),
intent(out) :: tl_ubar(LBi:UBi,LBj:UBj,3)
319 real(r8),
intent(out) :: tl_vbar(LBi:UBi,LBj:UBj,3)
320 real(r8),
intent(out) :: tl_Huon(LBi:UBi,LBj:UBj,N(ng))
321 real(r8),
intent(out) :: tl_Hvom(LBi:UBi,LBj:UBj,N(ng))
326 integer :: i, idiag, is, j, k
328 real(r8) :: cff, cff1, cff2
329 real(r8) :: tl_cff, tl_cff1, tl_cff2
331 real(r8),
dimension(IminS:ImaxS) :: CF1
332 real(r8),
dimension(IminS:ImaxS) :: FC1
333# ifdef NEARSHORE_MELLOR
334 real(r8),
dimension(IminS:ImaxS) :: CFs1
335 real(r8),
dimension(IminS:ImaxS) :: DCs1
337 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: AK
338 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: BC
339 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: CF
340 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: DC
341 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: DC1
342 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: FC
343# ifdef NEARSHORE_MELLOR
344 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: CFs
345 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: DCs
347 real(r8),
dimension(IminS:ImaxS,N(ng)) :: Hzk
348 real(r8),
dimension(IminS:ImaxS,N(ng)) :: oHz
349# ifdef DIAGNOSTICS_UV
353 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_AK
354 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_BC
355 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_CF
356 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_DC
357 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_FC
358# ifdef NEARSHORE_MELLOR
359 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_CFs
360 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_DCs
362 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_Hzk
363 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_oHz
365# include "set_bounds.h"
373 ak(i,0)=0.5_r8*(akv(i-1,j,0)+ &
375 tl_ak(i,0)=0.5_r8*(tl_akv(i-1,j,0)+ &
378 ak(i,k)=0.5_r8*(akv(i-1,j,k)+ &
380 tl_ak(i,k)=0.5_r8*(tl_akv(i-1,j,k)+ &
382 hzk(i,k)=0.5_r8*(hz(i-1,j,k)+ &
384 tl_hzk(i,k)=0.5_r8*(tl_hz(i-1,j,k)+ &
386# if defined SPLINES_VVISC || defined DIAGNOSTICS_UV
387 ohz(i,k)=1.0_r8/hzk(i,k)
388 tl_ohz(i,k)=-ohz(i,k)*ohz(i,k)*tl_hzk(i,k)+ &
401 cff=0.25_r8*
dt(ng)*3.0_r8/2.0_r8
403 cff=0.25_r8*
dt(ng)*23.0_r8/12.0_r8
406 dc(i,0)=cff*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
417 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)+ &
418 & dc(i,0)*tl_ru(i,j,k,nrhs)
422 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)*ohz(i,k)+ &
423 & (u(i,j,k,nnew)*hzk(i,k))*tl_ohz(i,k)- &
425 & u(i,j,k,nnew)*hzk(i,k)*ohz(i,k)
428# ifdef DIAGNOSTICS_UV
434# if defined UV_VIS2 || defined UV_VIS4
460 fc(i,k)=cff1*hzk(i,k )-
dt(ng)*ak(i,k-1)*ohz(i,k )
461 cf(i,k)=cff1*hzk(i,k+1)-
dt(ng)*ak(i,k+1)*ohz(i,k+1)
474 bc(i,k)=cff1*(hzk(i,k)+hzk(i,k+1))+ &
475 &
dt(ng)*ak(i,k)*(ohz(i,k)+ohz(i,k+1))
476 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
478 dc(i,k)=cff*(u(i,j,k+1,nnew)-u(i,j,k,nnew)- &
491 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
506 fc(i,k)=cff1*hzk(i,k )- &
507 &
dt(ng)*ak(i,k-1)*ohz(i,k )
508 tl_fc(i,k)=cff1*tl_hzk(i,k )- &
509 &
dt(ng)*(tl_ak(i,k-1)*ohz(i,k )+ &
510 & ak(i,k-1)*tl_ohz(i,k ))
511 cf(i,k)=cff1*hzk(i,k+1)- &
512 &
dt(ng)*ak(i,k+1)*ohz(i,k+1)
513 tl_cf(i,k)=cff1*tl_hzk(i,k+1)- &
514 &
dt(ng)*(tl_ak(i,k+1)*ohz(i,k+1)+ &
515 & ak(i,k+1)*tl_ohz(i,k+1))
532 bc(i,k)=cff1*(hzk(i,k)+hzk(i,k+1))+ &
533 &
dt(ng)*ak(i,k)*(ohz(i,k)+ohz(i,k+1))
534 tl_bc(i,k)=cff1*(tl_hzk(i,k)+tl_hzk(i,k+1))+ &
535 &
dt(ng)*(tl_ak(i,k)*(ohz(i,k)+ohz(i,k+1))+ &
536 & ak(i,k)*(tl_ohz(i,k)+tl_ohz(i,k+1)))
537 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
539 tl_dc(i,k)=cff*(tl_u(i,j,k+1,nnew)- &
540 & tl_u(i,j,k ,nnew)- &
541 & ((tl_fc(i,k)-fc(i,k))*dc(i,k-1)+ &
542 & (tl_bc(i,k)-bc(i,k))*dc(i,k )+ &
543 & (tl_cf(i,k)-cf(i,k))*dc(i,k+1))- &
544 & fc(i,k)*tl_dc(i,k-1))
548 tl_dc(i,k)=cff*(tl_u(i,j,k+1,nnew)- &
549 & tl_u(i,j,k ,nnew)- &
550 & (tl_fc(i,k)*dc(i,k-1)+ &
551 & tl_bc(i,k)*dc(i,k )+ &
552 & tl_cf(i,k)*dc(i,k+1))- &
553 & fc(i,k)*tl_dc(i,k-1))
561 tl_dc(i,n(ng))=0.0_r8
565 tl_dc(i,k)=tl_dc(i,k)-cf(i,k)*tl_dc(i,k+1)
574 tl_dc(i,k)=tl_dc(i,k)*ak(i,k)+dc(i,k)*tl_ak(i,k)
579 dc(i,k)=dc(i,k)*ak(i,k)
582 tl_cff=
dt(ng)*(tl_ohz(i,k)*(dc(i,k)-dc(i,k-1))+ &
583 & ohz(i,k)*(tl_dc(i,k)-tl_dc(i,k-1)))- &
585 &
dt(ng)*ohz(i,k)*(dc(i,k)-dc(i,k-1))
589 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)+tl_cff
590# ifdef DIAGNOSTICS_UV
610 cff1=1.0_r8/(z_r(i,j,k+1)+z_r(i-1,j,k+1)- &
611 & z_r(i,j,k )-z_r(i-1,j,k ))
612 tl_cff1=-cff1*cff1*(tl_z_r(i,j,k+1)+tl_z_r(i-1,j,k+1)- &
613 & tl_z_r(i,j,k )-tl_z_r(i-1,j,k ))+ &
617 fc(i,k)=cff*cff1*ak(i,k)
618 tl_fc(i,k)=cff*(tl_cff1*ak(i,k)+cff1*tl_ak(i,k))
631 tl_fc(i,n(ng))=0.0_r8
639 bc(i,k)=hzk(i,k)-fc(i,k)-fc(i,k-1)
640 tl_bc(i,k)=tl_hzk(i,k)-tl_fc(i,k)-tl_fc(i,k-1)
646 dc(i,k)=tl_u(i,j,k,nnew)- &
647 & ((tl_fc(i,k-1)-fc(i,k-1))*u(i,j,k-1,nnew)+ &
648 & (tl_bc(i,k )-bc(i,k ))*u(i,j,k ,nnew)+ &
649 & (tl_fc(i,k )-fc(i,k ))*u(i,j,k+1,nnew))
651 dc(i,k)=tl_u(i,j,k,nnew)- &
652 & (tl_fc(i,k-1)*u(i,j,k-1,nnew)+ &
653 & tl_bc(i,k )*u(i,j,k ,nnew)+ &
654 & tl_fc(i,k )*u(i,j,k+1,nnew))
660 dc(i,1)=tl_u(i,j,1,nnew)- &
661 & ((tl_bc(i,1)-bc(i,1))*u(i,j,1,nnew)+ &
662 & (tl_fc(i,1)-fc(i,1))*u(i,j,2,nnew))
663 dc(i,n(ng))=tl_u(i,j,n(ng),nnew)- &
664 & ((tl_fc(i,n(ng)-1)-fc(i,n(ng)-1))* &
665 & u(i,j,n(ng)-1,nnew)+ &
666 & (tl_bc(i,n(ng) )-bc(i,n(ng) ))* &
667 & u(i,j,n(ng) ,nnew))
669 dc(i,1)=tl_u(i,j,1,nnew)- &
670 & (tl_bc(i,1)*u(i,j,1,nnew)+ &
671 & tl_fc(i,1)*u(i,j,2,nnew))
672 dc(i,n(ng))=tl_u(i,j,n(ng),nnew)- &
673 & (tl_fc(i,n(ng)-1)*u(i,j,n(ng)-1,nnew)+ &
674 & tl_bc(i,n(ng) )*u(i,j,n(ng) ,nnew))
684 cff=1.0_r8/(bc(i,k)-fc(i,k-1)*cf(i,k-1))
686 dc(i,k)=cff*(dc(i,k)-fc(i,k-1)*dc(i,k-1))
694# ifdef DIAGNOSTICS_UV
697 dc(i,n(ng))=(dc(i,n(ng))-fc(i,n(ng)-1)*dc(i,n(ng)-1))/ &
698 & (bc(i,n(ng))-fc(i,n(ng)-1)*cf(i,n(ng)-1))
701 tl_u(i,j,n(ng),nnew)=dc(i,n(ng))
702# ifdef DIAGNOSTICS_UV
709# ifdef DIAGNOSTICS_UV
712 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
715 tl_u(i,j,k,nnew)=dc(i,k)
716# ifdef DIAGNOSTICS_UV
729 tl_cf(i,0)=tl_hzk(i,1)
730 dc(i,0)=u(i,j,1,nnew)*hzk(i,1)
731 tl_dc(i,0)=tl_u(i,j,1,nnew)*hzk(i,1)+ &
732 & u(i,j,1,nnew)*tl_hzk(i,1)- &
736# ifdef NEARSHORE_MELLOR
737 dcs(i,0)=u_stokes(i,j,1)*hzk(i,1)
738 tl_dcs(i,0)=tl_u_stokes(i,j,1)*hzk(i,1)+ &
739 & u_stokes(i,j,1)*tl_hzk(i,1)- &
744# ifdef DIAGNOSTICS_UV
750# if defined UV_VIS2 || defined UV_VIS4
760# ifdef NEARSHORE_MELLOR
767 cf(i,0)=cf(i,0)+hzk(i,k)
768 tl_cf(i,0)=tl_cf(i,0)+tl_hzk(i,k)
769 dc(i,0)=dc(i,0)+u(i,j,k,nnew)*hzk(i,k)
770 tl_dc(i,0)=tl_dc(i,0)+ &
771 & tl_u(i,j,k,nnew)*hzk(i,k)+ &
772 & u(i,j,k,nnew)*tl_hzk(i,k)- &
774 & u(i,j,k,nnew)*hzk(i,k)
776# ifdef NEARSHORE_MELLOR
777 dcs(i,0)=dcs(i,0)+u_stokes(i,j,k)*hzk(i,k)
778 tl_dcs(i,0)=tl_dcs(i,0)+ &
779 & tl_u_stokes(i,j,k)*hzk(i,k)+ &
780 & u_stokes(i,j,k)*tl_hzk(i,k)- &
782 & u_stokes(i,j,k)*hzk(i,k)
785# ifdef DIAGNOSTICS_UV
794# if defined UV_VIS2 || defined UV_VIS4
810# ifdef NEARSHORE_MELLOR
819 cff1=1.0_r8/(cf(i,0)*on_u(i,j))
820 tl_cff1=-cff1*cff1*tl_cf(i,0)*on_u(i,j)+ &
824 dc(i,0)=(dc(i,0)*on_u(i,j)-du_avg1(i,j))*cff1
825 tl_dc(i,0)=(tl_dc(i,0)*on_u(i,j)-tl_du_avg1(i,j))*cff1+ &
826 & (dc1(i,0)*on_u(i,j)-du_avg1(i,j))*tl_cff1- &
830# ifdef NEARSHORE_MELLOR
833 tl_cff2=-cff2*cff2*tl_cf(i,0)+ &
837 dcs(i,0)=dcs(i,0)*cff2-ubar_stokes(i,j)
838 tl_dcs(i,0)=tl_dcs(i,0)*cff2+ &
839 & dcs1(i)*tl_cff2-tl_ubar_stokes(i,j)- &
844# ifdef DIAGNOSTICS_UV
861 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)-tl_dc(i,0)
865 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)*umask(i,j)
867# ifdef WET_DRY_NOT_YET
870 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)*umask_wet(i,j)
872# ifdef NEARSHORE_MELLOR
875 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)-tl_dcs(i,0)
879 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)*umask(i,j)
881# ifdef WET_DRY_NOT_YET
884 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)*umask_wet(i,j)
887# ifdef DIAGNOSTICS_UV
896# if defined UV_VIS2 || defined UV_VIS4
912# ifdef NEARSHORE_MELLOR
920# if defined DIAGNOSTICS_UV && defined MASKING
936 ak(i,0)=0.5_r8*(akv(i,j-1,0)+ &
938 tl_ak(i,0)=0.5_r8*(tl_akv(i,j-1,0)+ &
941 ak(i,k)=0.5_r8*(akv(i,j-1,k)+ &
943 tl_ak(i,k)=0.5_r8*(tl_akv(i,j-1,k)+ &
945 hzk(i,k)=0.5_r8*(hz(i,j-1,k)+ &
947 tl_hzk(i,k)=0.5_r8*(tl_hz(i,j-1,k)+ &
949# if defined SPLINES_VVISC || defined DIAGNOSTICS_UV
950 ohz(i,k)=1.0_r8/hzk(i,k)
951 tl_ohz(i,k)=-ohz(i,k)*ohz(i,k)*tl_hzk(i,k)+ &
964 cff=0.25_r8*
dt(ng)*3.0_r8/2.0_r8
966 cff=0.25_r8*
dt(ng)*23.0_r8/12.0_r8
969 dc(i,0)=cff*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
979 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)+ &
980 & dc(i,0)*tl_rv(i,j,k,nrhs)
984 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)*ohz(i,k)+ &
985 & (v(i,j,k,nnew)*hzk(i,k))*tl_ohz(i,k)- &
987 & v(i,j,k,nnew)*hzk(i,k)*ohz(i,k)
990# ifdef DIAGNOSTICS_UV
997# if defined UV_VIS2 || defined UV_VIS4
1013# ifdef SPLINES_VVISC
1023 fc(i,k)=cff1*hzk(i,k )-
dt(ng)*ak(i,k-1)*ohz(i,k )
1024 cf(i,k)=cff1*hzk(i,k+1)-
dt(ng)*ak(i,k+1)*ohz(i,k+1)
1037 bc(i,k)=cff1*(hzk(i,k)+hzk(i,k+1))+ &
1038 &
dt(ng)*ak(i,k)*(ohz(i,k)+ohz(i,k+1))
1039 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
1041 dc(i,k)=cff*(v(i,j,k+1,nnew)-v(i,j,k,nnew)- &
1042 & fc(i,k)*dc(i,k-1))
1054 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
1069 fc(i,k)=cff1*hzk(i,k )- &
1070 &
dt(ng)*ak(i,k-1)*ohz(i,k )
1071 tl_fc(i,k)=cff1*tl_hzk(i,k )- &
1072 &
dt(ng)*(tl_ak(i,k-1)*ohz(i,k )+ &
1073 & ak(i,k-1)*tl_ohz(i,k ))
1074 cf(i,k)=cff1*hzk(i,k+1)- &
1075 &
dt(ng)*ak(i,k+1)*ohz(i,k+1)
1076 tl_cf(i,k)=cff1*tl_hzk(i,k+1)- &
1077 &
dt(ng)*(tl_ak(i,k+1)*ohz(i,k+1)+ &
1078 & ak(i,k+1)*tl_ohz(i,k+1))
1095 bc(i,k)=cff1*(hzk(i,k)+hzk(i,k+1))+ &
1096 &
dt(ng)*ak(i,k)*(ohz(i,k)+ohz(i,k+1))
1097 tl_bc(i,k)=cff1*(tl_hzk(i,k)+tl_hzk(i,k+1))+ &
1098 &
dt(ng)*(tl_ak(i,k)*(ohz(i,k)+ohz(i,k+1))+ &
1099 & ak(i,k)*(tl_ohz(i,k)+tl_ohz(i,k+1)))
1100 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
1102 tl_dc(i,k)=cff*(tl_v(i,j,k+1,nnew)- &
1103 & tl_v(i,j,k ,nnew)- &
1104 & ((tl_fc(i,k)-fc(i,k))*dc(i,k-1)+ &
1105 & (tl_bc(i,k)-bc(i,k))*dc(i,k )+ &
1106 & (tl_cf(i,k)-cf(i,k))*dc(i,k+1))- &
1107 & fc(i,k)*tl_dc(i,k-1))
1111 tl_dc(i,k)=cff*(tl_v(i,j,k+1,nnew)- &
1112 & tl_v(i,j,k ,nnew)- &
1113 & (tl_fc(i,k)*dc(i,k-1)+ &
1114 & tl_bc(i,k)*dc(i,k )+ &
1115 & tl_cf(i,k)*dc(i,k+1))- &
1116 & fc(i,k)*tl_dc(i,k-1))
1124 tl_dc(i,n(ng))=0.0_r8
1128 tl_dc(i,k)=tl_dc(i,k)-cf(i,k)*tl_dc(i,k+1)
1137 tl_dc(i,k)=tl_dc(i,k)*ak(i,k)+dc(i,k)*tl_ak(i,k)
1142 dc(i,k)=dc(i,k)*ak(i,k)
1145 tl_cff=
dt(ng)*(tl_ohz(i,k)*(dc(i,k)-dc(i,k-1))+ &
1146 & ohz(i,k)*(tl_dc(i,k)-tl_dc(i,k-1)))- &
1148 &
dt(ng)*ohz(i,k)*(dc(i,k)-dc(i,k-1))
1152 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)+tl_cff
1153# ifdef DIAGNOSTICS_UV
1173 cff1=1.0_r8/(z_r(i,j,k+1)+z_r(i,j-1,k+1)- &
1174 & z_r(i,j,k )-z_r(i,j-1,k ))
1175 tl_cff1=-cff1*cff1*(tl_z_r(i,j,k+1)+tl_z_r(i,j-1,k+1)- &
1176 & tl_z_r(i,j,k )-tl_z_r(i,j-1,k ))+ &
1180 fc(i,k)=cff*cff1*ak(i,k)
1181 tl_fc(i,k)=cff*(tl_cff1*ak(i,k)+cff1*tl_ak(i,k))
1194 tl_fc(i,n(ng))=0.0_r8
1201 bc(i,k)=hzk(i,k)-fc(i,k)-fc(i,k-1)
1202 tl_bc(i,k)=tl_hzk(i,k)-tl_fc(i,k)-tl_fc(i,k-1)
1208 dc(i,k)=tl_v(i,j,k,nnew)- &
1209 & ((tl_fc(i,k-1)-fc(i,k-1))*v(i,j,k-1,nnew)+ &
1210 & (tl_bc(i,k )-bc(i,k ))*v(i,j,k ,nnew)+ &
1211 & (tl_fc(i,k )-fc(i,k ))*v(i,j,k+1,nnew))
1213 dc(i,k)=tl_v(i,j,k,nnew)- &
1214 & (tl_fc(i,k-1)*v(i,j,k-1,nnew)+ &
1215 & tl_bc(i,k )*v(i,j,k ,nnew)+ &
1216 & tl_fc(i,k )*v(i,j,k+1,nnew))
1222 dc(i,1)=tl_v(i,j,1,nnew)- &
1223 & ((tl_bc(i,1)-bc(i,1))*v(i,j,1,nnew)+ &
1224 & (tl_fc(i,1)-fc(i,1))*v(i,j,2,nnew))
1225 dc(i,n(ng))=tl_v(i,j,n(ng),nnew)- &
1226 & ((tl_fc(i,n(ng)-1)-fc(i,n(ng)-1))* &
1227 & v(i,j,n(ng)-1,nnew)+ &
1228 & (tl_bc(i,n(ng) )-bc(i,n(ng) ))* &
1229 & v(i,j,n(ng) ,nnew))
1231 dc(i,1)=tl_v(i,j,1,nnew)- &
1232 & (tl_bc(i,1)*v(i,j,1,nnew)+ &
1233 & tl_fc(i,1)*v(i,j,2,nnew))
1234 dc(i,n(ng))=tl_v(i,j,n(ng),nnew)- &
1235 & (tl_fc(i,n(ng)-1)*v(i,j,n(ng)-1,nnew)+ &
1236 & tl_bc(i,n(ng) )*v(i,j,n(ng) ,nnew))
1246 cff=1.0_r8/(bc(i,k)-fc(i,k-1)*cf(i,k-1))
1248 dc(i,k)=cff*(dc(i,k)-fc(i,k-1)*dc(i,k-1))
1256# ifdef DIAGNOSTICS_UV
1259 dc(i,n(ng))=(dc(i,n(ng))-fc(i,n(ng)-1)*dc(i,n(ng)-1))/ &
1260 & (bc(i,n(ng))-fc(i,n(ng)-1)*cf(i,n(ng)-1))
1263 tl_v(i,j,n(ng),nnew)=dc(i,n(ng))
1264# ifdef DIAGNOSTICS_UV
1271# ifdef DIAGNOSTICS_UV
1274 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
1277 tl_v(i,j,k,nnew)=dc(i,k)
1278# ifdef DIAGNOSTICS_UV
1291 tl_cf(i,0)=tl_hzk(i,1)
1292 dc(i,0)=v(i,j,1,nnew)*hzk(i,1)
1293 tl_dc(i,0)=tl_v(i,j,1,nnew)*hzk(i,1)+ &
1294 & v(i,j,1,nnew)*tl_hzk(i,1)- &
1298# ifdef NEARSHORE_MELLOR
1299 dcs(i,0)=v_stokes(i,j,1)*hzk(i,1)
1300 tl_dcs(i,0)=tl_v_stokes(i,j,1)*hzk(i,1)+ &
1301 & v_stokes(i,j,1)*tl_hzk(i,1)- &
1306# ifdef DIAGNOSTICS_UV
1312# if defined UV_VIS2 || defined UV_VIS4
1322# ifdef NEARSHORE_MELLOR
1329 cf(i,0)=cf(i,0)+hzk(i,k)
1330 tl_cf(i,0)=tl_cf(i,0)+tl_hzk(i,k)
1331 dc(i,0)=dc(i,0)+v(i,j,k,nnew)*hzk(i,k)
1332 tl_dc(i,0)=tl_dc(i,0)+ &
1333 & tl_v(i,j,k,nnew)*hzk(i,k)+ &
1334 & v(i,j,k,nnew)*tl_hzk(i,k)- &
1336 & v(i,j,k,nnew)*hzk(i,k)
1338# ifdef NEARSHORE_MELLOR
1339 dcs(i,0)=dcs(i,0)+v_stokes(i,j,k)*hzk(i,k)
1340 tl_dcs(i,0)=tl_dcs(i,0)+ &
1341 & tl_v_stokes(i,j,k)*hzk(i,k)+ &
1342 & v_stokes(i,j,k)*tl_hzk(i,k)- &
1344 & v_stokes(i,j,k)*hzk(i,k)
1347# ifdef DIAGNOSTICS_UV
1356# if defined UV_VIS2 || defined UV_VIS4
1372# ifdef NEARSHORE_MELLOR
1381 cff1=1.0_r8/(cf(i,0)*om_v(i,j))
1382 tl_cff1=-cff1*cff1*tl_cf(i,0)*om_v(i,j)+ &
1386 dc(i,0)=(dc(i,0)*om_v(i,j)-dv_avg1(i,j))*cff1
1387 tl_dc(i,0)=(tl_dc(i,0)*om_v(i,j)-tl_dv_avg1(i,j))*cff1+ &
1388 & (dc1(i,0)*om_v(i,j)-dv_avg1(i,j))*tl_cff1- &
1392# ifdef NEARSHORE_MELLOR
1395 tl_cff2=-cff2*cff2*tl_cf(i,0)+ &
1399 dcs(i,0)=dcs(i,0)*cff2-vbar_stokes(i,j)
1400 tl_dcs(i,0)=tl_dcs(i,0)*cff2+ &
1401 & dcs1(i,0)*tl_cff2-tl_vbar_stokes(i,j)- &
1406# ifdef DIAGNOSTICS_UV
1423 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)-tl_dc(i,0)
1427 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)*vmask(i,j)
1429# ifdef WET_DRY_NOT_YET
1432 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)*vmask_wet(i,j)
1434# ifdef NEARSHORE_MELLOR
1437 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)-tl_dcs(i,0)
1441 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)*vmask(i,j)
1443# ifdef WET_DRY_NOT_YET
1446 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)*vmask_wet(i,j)
1449# ifdef DIAGNOSTICS_UV
1458# if defined UV_VIS2 || defined UV_VIS4
1474# ifdef NEARSHORE_MELLOR
1482# if defined DIAGNOSTICS_UV && defined MASKING
1505 & lbi, ubi, lbj, ubj, n(ng), &
1506 & imins, imaxs, jmins, jmaxs, &
1516 & lbi, ubi, lbj, ubj, n(ng), &
1517 & imins, imaxs, jmins, jmaxs, &
1529 IF (((istrr.le.i).and.(i.le.iendr)).and. &
1530 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
1531 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
1533 cff1=1.0_r8/(on_u(i,j)* &
1534 & 0.5_r8*(z_w(i-1,j,k)-z_w(i-1,j,k-1)+ &
1535 & z_w(i ,j,k)-z_w(i ,j,k-1)))
1536 tl_cff1=-cff1*cff1*on_u(i,j)* &
1537 & 0.5_r8*(tl_z_w(i-1,j,k)-tl_z_w(i-1,j,k-1)+ &
1538 & tl_z_w(i ,j,k)-tl_z_w(i ,j,k-1))+ &
1544 tl_u(i,j,k,nnew)=
sources(ng)%tl_Qsrc(is,k)*cff1+ &
1545 &
sources(ng)%Qsrc(is,k)*tl_cff1- &
1550 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
1552 cff1=1.0_r8/(om_v(i,j)* &
1553 & 0.5_r8*(z_w(i,j-1,k)-z_w(i,j-1,k-1)+ &
1554 & z_w(i,j ,k)-z_w(i,j ,k-1)))
1555 tl_cff1=-cff1*cff1*om_v(i,j)* &
1556 & 0.5_r8*(tl_z_w(i,j-1,k)-tl_z_w(i,j-1,k-1)+ &
1557 & tl_z_w(i,j ,k)-tl_z_w(i,j ,k-1))+ &
1563 tl_v(i,j,k,nnew)=
sources(ng)%tl_Qsrc(is,k)*cff1+ &
1564 &
sources(ng)%Qsrc(is,k)*tl_cff1- &
1586# ifdef NEARSHORE_MELLOR
1601 cff=0.5_r8*on_u(i,j)
1602 dc(i,k)=cff*(hz(i,j,k)+hz(i-1,j,k))
1603 tl_dc(i,k)=cff*(tl_hz(i,j,k)+tl_hz(i-1,j,k))
1604 dc(i,0)=dc(i,0)+dc(i,k)
1605 tl_dc(i,0)=tl_dc(i,0)+tl_dc(i,k)
1607 & dc(i,k)*u(i,j,k,nnew)
1608 tl_cf(i,0)=tl_cf(i,0)+ &
1609 & tl_dc(i,k)*u(i,j,k,nnew)+ &
1610 & dc(i,k)*tl_u(i,j,k,nnew)- &
1612 & dc(i,k)*u(i,j,k,nnew)
1614# ifdef NEARSHORE_MELLOR
1615 cfs(i,0)=cfs(i,0)+ &
1616 & dc(i,k)*u_stokes(i,j,k)
1617 tl_cfs(i,0)=tl_cfs(i,0)+ &
1618 & tl_dc(i,k)*u_stokes(i,j,k)+ &
1619 & dc(i,k)*tl_u_stokes(i,j,k)- &
1621 & dc(i,k)*u_stokes(i,j,k)
1628# ifdef NEARSHORE_MELLOR
1629 cff2=dc(i,0)*ubar_stokes(i,j)
1630 tl_cff2=tl_dc(i,0)*ubar_stokes(i,j)+ &
1631 & dc(i,0)*tl_ubar_stokes(i,j)- &
1636 dc(i,0)=1.0_r8/dc(i,0)
1637 tl_dc(i,0)=-tl_dc(i,0)/(dc1(i,0)*dc1(i,0))+ &
1642 cf(i,0)=dc(i,0)*(cf(i,0)-du_avg1(i,j))
1643 tl_cf(i,0)=tl_dc(i,0)*(cf1(i)-du_avg1(i,j))+ &
1644 & dc(i,0)*(tl_cf(i,0)-tl_du_avg1(i,j))- &
1648# ifdef NEARSHORE_MELLOR
1650 cfs(i,0)=dc(i,0)*(cfs(i,0)-cff2)
1651 tl_cfs(i,0)=tl_dc(i,0)*(cfs1(i)-cff2)+ &
1652 & dc(i,0)*(tl_cfs(i,0)-tl_cff2)- &
1659 tl_ubar(i,j,1)=tl_dc(i,0)*du_avg1(i,j)+ &
1660 & dc(i,0)*tl_du_avg1(i,j)- &
1662 & dc(i,0)*du_avg1(i,j)
1666 tl_ubar(i,j,2)=tl_ubar(i,j,1)
1667# ifdef DIAGNOSTICS_UV
1672# ifdef DIAGNOSTICS_UV
1700 IF (
domain(ng)%Western_Edge(tile))
THEN
1704 tl_u(istr,j,k,nnew)=tl_u(istr,j,k,nnew)- &
1710 tl_u(istr,j,k,nnew)=tl_u(istr,j,k,nnew)* &
1713# ifdef WET_DRY_NOT_YET
1717 tl_u(istr,j,k,nnew)=tl_u(istr,j,k,nnew)* &
1720# ifdef NEARSHORE_MELLOR
1723 tl_u_stokes(istr,j,k)=tl_u_stokes(istr,j,k)- &
1729 tl_u_stokes(istr,j,k)=tl_u_stokes(istr,j,k)* &
1732# ifdef WET_DRY_NOT_YET
1736 tl_u_stokes(istr,j,k)=tl_u_stokes(istr,j,k)* &
1745 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1749 tl_u(iend+1,j,k,nnew)=tl_u(iend+1,j,k,nnew)- &
1755 tl_u(iend+1,j,k,nnew)=tl_u(iend+1,j,k,nnew)* &
1758# ifdef WET_DRY_NOT_YET
1762 tl_u(iend+1,j,k,nnew)=tl_u(iend+1,j,k,nnew)* &
1763 & umask_wet(iend+1,j)
1765# ifdef NEARSHORE_MELLOR
1768 tl_u_stokes(iend+1,j,k)=tl_u_stokes(iend+1,j,k)- &
1774 tl_u_stokes(iend+1,j,k)=tl_u_stokes(iend+1,j,k)* &
1777# ifdef WET_DRY_NOT_YET
1781 tl_u_stokes(iend+1,j,k)=tl_u_stokes(iend+1,j,k)* &
1782 & umask_wet(iend+1,j)
1795 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)- &
1800 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)* &
1803# ifdef WET_DRY_NOT_YET
1807 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)* &
1810# ifdef NEARSHORE_MELLOR
1813 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)- &
1819 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)* &
1822# ifdef WET_DRY_NOT_YET
1826 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)* &
1836 IF (j.eq.
mm(ng)+1)
THEN
1841 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)- &
1846 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)* &
1849# ifdef WET_DRY_NOT_YET
1852 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)* &
1855# ifdef NEARSHORE_MELLOR
1858 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)- &
1864 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)* &
1867# ifdef WET_DRY_NOT_YET
1871 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)* &
1884 huon(i,j,k)=0.5_r8*(huon(i,j,k)+u(i,j,k,nnew)*dc(i,k))
1885 tl_huon(i,j,k)=0.5_r8*(tl_huon(i,j,k)+ &
1886 & tl_u(i,j,k,nnew)*dc(i,k)+ &
1887 & u(i,j,k,nnew)*tl_dc(i,k))- &
1889 & 0.5_r8*u(i,j,k,nnew)*dc(i,k)
1891# ifdef NEARSHORE_MELLOR
1892 huon(i,j,k)=huon(i,j,k)+0.5_r8*u_stokes(i,j,k)*dc(i,k)
1893 tl_huon(i,j,k)=tl_huon(i,j,k)+ &
1894 & 0.5_r8*(tl_u_stokes(i,j,k)*dc(i,k)+ &
1895 & u_stokes(i,j,k)*tl_dc(i,k))- &
1897 & 0.5_r8*u_stokes(i,j,k)*dc(i,k)
1900 fc(i,0)=fc(i,0)+huon(i,j,k)
1901 tl_fc(i,0)=tl_fc(i,0)+tl_huon(i,j,k)
1902# ifdef DIAGNOSTICS_UV
1909 fc(i,0)=dc(i,0)*(fc(i,0)-du_avg2(i,j))
1910 tl_fc(i,0)=tl_dc(i,0)*(fc1(i)-du_avg2(i,j))+ &
1911 & dc(i,0)*(tl_fc(i,0)-tl_du_avg2(i,j))- &
1918 huon(i,j,k)=huon(i,j,k)-dc(i,k)*fc(i,0)
1919 tl_huon(i,j,k)=tl_huon(i,j,k)- &
1920 & tl_dc(i,k)*fc(i,0)- &
1921 & dc(i,k)*tl_fc(i,0)+ &
1936# ifdef NEARSHORE_MELLOR
1951 cff=0.5_r8*om_v(i,j)
1952 dc(i,k)=cff*(hz(i,j,k)+hz(i,j-1,k))
1953 tl_dc(i,k)=cff*(tl_hz(i,j,k)+tl_hz(i,j-1,k))
1954 dc(i,0)=dc(i,0)+dc(i,k)
1955 tl_dc(i,0)=tl_dc(i,0)+tl_dc(i,k)
1957 & dc(i,k)*v(i,j,k,nnew)
1958 tl_cf(i,0)=tl_cf(i,0)+ &
1959 & tl_dc(i,k)*v(i,j,k,nnew)+ &
1960 & dc(i,k)*tl_v(i,j,k,nnew)- &
1962 & dc(i,k)*v(i,j,k,nnew)
1964# ifdef NEARSHORE_MELLOR
1965 cfs(i,0)=cfs(i,0)+ &
1966 & dc(i,k)*v_stokes(i,j,k)
1967 tl_cfs(i,0)=tl_cfs(i,0)+ &
1968 & tl_dc(i,k)*v_stokes(i,j,k)+ &
1969 & dc(i,k)*tl_v_stokes(i,j,k)- &
1971 & dc(i,k)*v_stokes(i,j,k)
1978# ifdef NEARSHORE_MELLOR
1979 cff2=dc(i,0)*vbar_stokes(i,j)
1980 tl_cff2=tl_dc(i,0)*vbar_stokes(i,j)+ &
1981 & dc(i,0)*tl_vbar_stokes(i,j)- &
1986 dc(i,0)=1.0_r8/dc(i,0)
1987 tl_dc(i,0)=-tl_dc(i,0)/(dc1(i,0)*dc1(i,0))+ &
1992 cf(i,0)=dc(i,0)*(cf(i,0)-dv_avg1(i,j))
1993 tl_cf(i,0)=tl_dc(i,0)*(cf1(i)-dv_avg1(i,j))+ &
1994 & dc(i,0)*(tl_cf(i,0)-tl_dv_avg1(i,j))- &
1998# ifdef NEARSHORE_MELLOR
2000 cfs(i,0)=dc(i,0)*(cfs(i,0)-cff2)
2001 tl_cfs(i,0)=tl_dc(i,0)*(cfs1(i)-cff2)+ &
2002 & dc(i,0)*(tl_cfs(i,0)-tl_cff2)- &
2009 tl_vbar(i,j,1)=tl_dc(i,0)*dv_avg1(i,j)+ &
2010 & dc(i,0)*tl_dv_avg1(i,j)- &
2012 & dc(i,0)*dv_avg1(i,j)
2016 tl_vbar(i,j,2)=tl_vbar(i,j,1)
2017# ifdef DIAGNOSTICS_UV
2025# ifdef DIAGNOSTICS_UV
2053 IF (
domain(ng)%Western_Edge(tile))
THEN
2057 tl_v(istr-1,j,k,nnew)=tl_v(istr-1,j,k,nnew)- &
2063 tl_v(istr-1,j,k,nnew)=tl_v(istr-1,j,k,nnew)* &
2066# ifdef WET_DRY_NOT_YET
2070 tl_v(istr-1,j,k,nnew)=tl_v(istr-1,j,k,nnew)* &
2071 & vmask_wet(istr-1,j)
2073# ifdef NEARSHORE_MELLOR
2077 tl_v_stokes(istr-1,j,k)=tl_v_stokes(istr-1,j,k)- &
2083 tl_v_stokes(istr-1,j,k)=tl_v_stokes(istr-1,j,k)* &
2086# ifdef WET_DRY_NOT_YET
2090 tl_v_stokes(istr-1,j,k)=tl_v_stokes(istr-1,j,k)* &
2091 & vmask_wet(istr-1,j)
2099 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2103 tl_v(iend+1,j,k,nnew)=tl_v(iend+1,j,k,nnew)- &
2109 tl_v(iend+1,j,k,nnew)=tl_v(iend+1,j,k,nnew)* &
2112# ifdef WET_DRY_NOT_YET
2116 tl_v(iend+1,j,k,nnew)=tl_v(iend+1,j,k,nnew)* &
2117 & vmask_wet(iend+1,j)
2119# ifdef NEARSHORE_MELLOR
2123 tl_v_stokes(iend+1,j,k)=tl_v_stokes(iend+1,j,k)- &
2129 tl_v_stokes(iend+1,j,k)=tl_v_stokes(iend+1,j,k)* &
2132# ifdef WET_DRY_NOT_YET
2136 tl_v_stokes(iend+1,j,k)=tl_v_stokes(iend+1,j,k)* &
2137 & vmask_wet(iend+1,j)
2150 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)- &
2156 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)* &
2159# ifdef WET_DRY_NOT_YET
2163 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)*
2166# ifdef NEARSHORE_MELLOR
2169 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)- &
2174 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)* &
2177# ifdef WET_DRY_NOT_YET
2181 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)* &
2191 IF (j.eq.
mm(ng)+1)
THEN
2196 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)- &
2202 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)* &
2205# ifdef WET_DRY_NOT_YET
2209 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)* &
2212# ifdef NEARSHORE_MELLOR
2215 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)- &
2221 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)* &
2224# ifdef WET_DRY_NOT_YET
2228 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)* &
2241 hvom(i,j,k)=0.5_r8*(hvom(i,j,k)+v(i,j,k,nnew)*dc(i,k))
2242 tl_hvom(i,j,k)=0.5_r8*(tl_hvom(i,j,k)+ &
2243 & tl_v(i,j,k,nnew)*dc(i,k)+ &
2244 & v(i,j,k,nnew)*tl_dc(i,k))- &
2246 & 0.5_r8*v(i,j,k,nnew)*dc(i,k)
2248# ifdef NEARSHORE_MELLOR
2249 hvom(i,j,k)=hvom(i,j,k)+0.5_r8*v_stokes(i,j,k)*dc(i,k)
2250 tl_hvom(i,j,k)=tl_hvom(i,j,k)+ &
2251 & 0.5_r8*(tl_v_stokes(i,j,k)*dc(i,k)+ &
2252 & v_stokes(i,j,k)*tl_dc(i,k))- &
2254 & 0.5_r8*v_stokes(i,j,k)*dc(i,k)
2257 fc(i,0)=fc(i,0)+hvom(i,j,k)
2258 tl_fc(i,0)=tl_fc(i,0)+tl_hvom(i,j,k)
2259# ifdef DIAGNOSTICS_UV
2267 fc(i,0)=dc(i,0)*(fc(i,0)-dv_avg2(i,j))
2268 tl_fc(i,0)=tl_dc(i,0)*(fc1(i)-dv_avg2(i,j))+ &
2269 & dc(i,0)*(tl_fc(i,0)-tl_dv_avg2(i,j))- &
2276 hvom(i,j,k)=hvom(i,j,k)-dc(i,k)*fc(i,0)
2277 tl_hvom(i,j,k)=tl_hvom(i,j,k)- &
2278 & tl_dc(i,k)*fc(i,0)- &
2279 & dc(i,k)*tl_fc(i,0)+ &
2298 & lbi, ubi, lbj, ubj, 1, n(ng), &
2305 & lbi, ubi, lbj, ubj, 1, n(ng), &
2309 & lbi, ubi, lbj, ubj, 1, n(ng), &
2312 & lbi, ubi, lbj, ubj, 1, n(ng), &
2316 & lbi, ubi, lbj, ubj, 1, n(ng), &
2319 & lbi, ubi, lbj, ubj, 1, n(ng), &
2328 & lbi, ubi, lbj, ubj, &
2335 & lbi, ubi, lbj, ubj, &
2349 & lbi, ubi, lbj, ubj, 1, n(ng), &
2352 & tl_u(:,:,:,nnew), tl_v(:,:,:,nnew), &
2355 & lbi, ubi, lbj, ubj, 1, n(ng), &
2368 & lbi, ubi, lbj, ubj, &
2371 & tl_ubar(:,:,1), tl_vbar(:,:,1), &
2372 & tl_ubar(:,:,2), tl_vbar(:,:,2))
2374# ifdef UV_DESTAGGERED