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)
395# if defined STOCHASTIC_OPT && !defined STOCH_OPT_WHITE
396 IF (
iic(ng).eq.
ntfirst(ng).and.soinitial(ng))
THEN
401# if defined STOCHASTIC_OPT && !defined STOCH_OPT_WHITE
402 ELSE IF (
iic(ng).eq.(
ntfirst(ng)+1).and.soinitial(ng))
THEN
406 cff=0.25_r8*
dt(ng)*3.0_r8/2.0_r8
408 cff=0.25_r8*
dt(ng)*23.0_r8/12.0_r8
411 dc(i,0)=cff*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
422 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)+ &
423 & dc(i,0)*tl_ru(i,j,k,nrhs)
427 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)*ohz(i,k)+ &
428 & (u(i,j,k,nnew)*hzk(i,k))*tl_ohz(i,k)
430# ifdef DIAGNOSTICS_UV
436# if defined UV_VIS2 || defined UV_VIS4
462 fc(i,k)=cff1*hzk(i,k )-
dt(ng)*ak(i,k-1)*ohz(i,k )
463 cf(i,k)=cff1*hzk(i,k+1)-
dt(ng)*ak(i,k+1)*ohz(i,k+1)
476 bc(i,k)=cff1*(hzk(i,k)+hzk(i,k+1))+ &
477 &
dt(ng)*ak(i,k)*(ohz(i,k)+ohz(i,k+1))
478 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
480 dc(i,k)=cff*(u(i,j,k+1,nnew)-u(i,j,k,nnew)- &
493 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
504 fc(i,k)=cff1*hzk(i,k )- &
505 &
dt(ng)*ak(i,k-1)*ohz(i,k )
506 tl_fc(i,k)=cff1*tl_hzk(i,k )- &
507 &
dt(ng)*(tl_ak(i,k-1)*ohz(i,k )+ &
508 & ak(i,k-1)*tl_ohz(i,k ))
509 cf(i,k)=cff1*hzk(i,k+1)- &
510 &
dt(ng)*ak(i,k+1)*ohz(i,k+1)
511 tl_cf(i,k)=cff1*tl_hzk(i,k+1)- &
512 &
dt(ng)*(tl_ak(i,k+1)*ohz(i,k+1)+ &
513 & ak(i,k+1)*tl_ohz(i,k+1))
527 bc(i,k)=cff1*(hzk(i,k)+hzk(i,k+1))+ &
528 &
dt(ng)*ak(i,k)*(ohz(i,k)+ohz(i,k+1))
529 tl_bc(i,k)=cff1*(tl_hzk(i,k)+tl_hzk(i,k+1))+ &
530 &
dt(ng)*(tl_ak(i,k)*(ohz(i,k)+ohz(i,k+1))+ &
531 & ak(i,k)*(tl_ohz(i,k)+tl_ohz(i,k+1)))
532 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
534 tl_dc(i,k)=cff*(tl_u(i,j,k+1,nnew)- &
535 & tl_u(i,j,k ,nnew)- &
536 & (tl_fc(i,k)*dc(i,k-1)+ &
537 & tl_bc(i,k)*dc(i,k )+ &
538 & tl_cf(i,k)*dc(i,k+1))- &
539 & fc(i,k)*tl_dc(i,k-1))
546 tl_dc(i,n(ng))=0.0_r8
550 tl_dc(i,k)=tl_dc(i,k)-cf(i,k)*tl_dc(i,k+1)
559 tl_dc(i,k)=tl_dc(i,k)*ak(i,k)+dc(i,k)*tl_ak(i,k)
560 dc(i,k)=dc(i,k)*ak(i,k)
563 tl_cff=
dt(ng)*(tl_ohz(i,k)*(dc(i,k)-dc(i,k-1))+ &
564 & ohz(i,k)*(tl_dc(i,k)-tl_dc(i,k-1)))
567 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)+tl_cff
568# ifdef DIAGNOSTICS_UV
588 cff1=1.0_r8/(z_r(i,j,k+1)+z_r(i-1,j,k+1)- &
589 & z_r(i,j,k )-z_r(i-1,j,k ))
590 tl_cff1=-cff1*cff1*(tl_z_r(i,j,k+1)+tl_z_r(i-1,j,k+1)- &
591 & tl_z_r(i,j,k )-tl_z_r(i-1,j,k ))
592 fc(i,k)=cff*cff1*ak(i,k)
593 tl_fc(i,k)=cff*(tl_cff1*ak(i,k)+cff1*tl_ak(i,k))
600 tl_fc(i,n(ng))=0.0_r8
608 bc(i,k)=hzk(i,k)-fc(i,k)-fc(i,k-1)
609 tl_bc(i,k)=tl_hzk(i,k)-tl_fc(i,k)-tl_fc(i,k-1)
614 dc(i,k)=tl_u(i,j,k,nnew)- &
615 & (tl_fc(i,k-1)*u(i,j,k-1,nnew)+ &
616 & tl_bc(i,k )*u(i,j,k ,nnew)+ &
617 & tl_fc(i,k )*u(i,j,k+1,nnew))
621 dc(i,1)=tl_u(i,j,1,nnew)- &
622 & (tl_bc(i,1)*u(i,j,1,nnew)+ &
623 & tl_fc(i,1)*u(i,j,2,nnew))
624 dc(i,n(ng))=tl_u(i,j,n(ng),nnew)- &
625 & (tl_fc(i,n(ng)-1)*u(i,j,n(ng)-1,nnew)+ &
626 & tl_bc(i,n(ng) )*u(i,j,n(ng) ,nnew))
635 cff=1.0_r8/(bc(i,k)-fc(i,k-1)*cf(i,k-1))
637 dc(i,k)=cff*(dc(i,k)-fc(i,k-1)*dc(i,k-1))
645# ifdef DIAGNOSTICS_UV
648 dc(i,n(ng))=(dc(i,n(ng))-fc(i,n(ng)-1)*dc(i,n(ng)-1))/ &
649 & (bc(i,n(ng))-fc(i,n(ng)-1)*cf(i,n(ng)-1))
652 tl_u(i,j,n(ng),nnew)=dc(i,n(ng))
653# ifdef DIAGNOSTICS_UV
660# ifdef DIAGNOSTICS_UV
663 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
666 tl_u(i,j,k,nnew)=dc(i,k)
667# ifdef DIAGNOSTICS_UV
680 tl_cf(i,0)=tl_hzk(i,1)
681 dc(i,0)=u(i,j,1,nnew)*hzk(i,1)
682 tl_dc(i,0)=tl_u(i,j,1,nnew)*hzk(i,1)+ &
683 & u(i,j,1,nnew)*tl_hzk(i,1)
684# ifdef NEARSHORE_MELLOR
685 dcs(i,0)=u_stokes(i,j,1)*hzk(i,1)
686 tl_dcs(i,0)=tl_u_stokes(i,j,1)*hzk(i,1)+ &
687 & u_stokes(i,j,1)*tl_hzk(i,1)
689# ifdef DIAGNOSTICS_UV
695# if defined UV_VIS2 || defined UV_VIS4
705# ifdef NEARSHORE_MELLOR
712 cf(i,0)=cf(i,0)+hzk(i,k)
713 tl_cf(i,0)=tl_cf(i,0)+tl_hzk(i,k)
714 dc(i,0)=dc(i,0)+u(i,j,k,nnew)*hzk(i,k)
715 tl_dc(i,0)=tl_dc(i,0)+ &
716 & tl_u(i,j,k,nnew)*hzk(i,k)+ &
717 & u(i,j,k,nnew)*tl_hzk(i,k)
718# ifdef NEARSHORE_MELLOR
719 dcs(i,0)=dcs(i,0)+u_stokes(i,j,k)*hzk(i,k)
720 tl_dcs(i,0)=tl_dcs(i,0)+ &
721 & tl_u_stokes(i,j,k)*hzk(i,k)+ &
722 & u_stokes(i,j,k)*tl_hzk(i,k)
724# ifdef DIAGNOSTICS_UV
733# if defined UV_VIS2 || defined UV_VIS4
749# ifdef NEARSHORE_MELLOR
758 cff1=1.0_r8/(cf(i,0)*on_u(i,j))
759 tl_cff1=-cff1*cff1*tl_cf(i,0)*on_u(i,j)
760 dc(i,0)=(dc(i,0)*on_u(i,j)-du_avg1(i,j))*cff1
761 tl_dc(i,0)=(tl_dc(i,0)*on_u(i,j)-tl_du_avg1(i,j))*cff1+ &
762 & (dc1(i,0)*on_u(i,j)-du_avg1(i,j))*tl_cff1
763# ifdef NEARSHORE_MELLOR
766 tl_cff2=-cff2*cff2*tl_cf(i,0)
767 dcs(i,0)=dcs(i,0)*cff2-ubar_stokes(i,j)
768 tl_dcs(i,0)=tl_dcs(i,0)*cff2+ &
769 & dcs1(i)*tl_cff2-tl_ubar_stokes(i,j)
771# ifdef DIAGNOSTICS_UV
788 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)-tl_dc(i,0)
792 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)*umask(i,j)
794# ifdef WET_DRY_NOT_YET
797 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)*umask_wet(i,j)
799# ifdef NEARSHORE_MELLOR
802 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)-tl_dcs(i,0)
806 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)*umask(i,j)
808# ifdef WET_DRY_NOT_YET
811 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)*umask_wet(i,j)
814# ifdef DIAGNOSTICS_UV
823# if defined UV_VIS2 || defined UV_VIS4
839# ifdef NEARSHORE_MELLOR
847# if defined DIAGNOSTICS_UV && defined MASKING
863 ak(i,0)=0.5_r8*(akv(i,j-1,0)+ &
865 tl_ak(i,0)=0.5_r8*(tl_akv(i,j-1,0)+ &
868 ak(i,k)=0.5_r8*(akv(i,j-1,k)+ &
870 tl_ak(i,k)=0.5_r8*(tl_akv(i,j-1,k)+ &
872 hzk(i,k)=0.5_r8*(hz(i,j-1,k)+ &
874 tl_hzk(i,k)=0.5_r8*(tl_hz(i,j-1,k)+ &
876# if defined SPLINES_VVISC || defined DIAGNOSTICS_UV
877 ohz(i,k)=1.0_r8/hzk(i,k)
878 tl_ohz(i,k)=-ohz(i,k)*ohz(i,k)*tl_hzk(i,k)
885# if defined STOCHASTIC_OPT && !defined STOCH_OPT_WHITE
886 IF (
iic(ng).eq.
ntfirst(ng).and.soinitial(ng))
THEN
891# if defined STOCHASTIC_OPT && !defined STOCH_OPT_WHITE
892 ELSE IF (
iic(ng).eq.(
ntfirst(ng)+1).and.soinitial(ng))
THEN
896 cff=0.25_r8*
dt(ng)*3.0_r8/2.0_r8
898 cff=0.25_r8*
dt(ng)*23.0_r8/12.0_r8
901 dc(i,0)=cff*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
911 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)+ &
912 & dc(i,0)*tl_rv(i,j,k,nrhs)
916 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)*ohz(i,k)+ &
917 & (v(i,j,k,nnew)*hzk(i,k))*tl_ohz(i,k)
919# ifdef DIAGNOSTICS_UV
926# if defined UV_VIS2 || defined UV_VIS4
952 fc(i,k)=cff1*hzk(i,k )-
dt(ng)*ak(i,k-1)*ohz(i,k )
953 cf(i,k)=cff1*hzk(i,k+1)-
dt(ng)*ak(i,k+1)*ohz(i,k+1)
966 bc(i,k)=cff1*(hzk(i,k)+hzk(i,k+1))+ &
967 &
dt(ng)*ak(i,k)*(ohz(i,k)+ohz(i,k+1))
968 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
970 dc(i,k)=cff*(v(i,j,k+1,nnew)-v(i,j,k,nnew)- &
983 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
994 fc(i,k)=cff1*hzk(i,k )- &
995 &
dt(ng)*ak(i,k-1)*ohz(i,k )
996 tl_fc(i,k)=cff1*tl_hzk(i,k )- &
997 &
dt(ng)*(tl_ak(i,k-1)*ohz(i,k )+ &
998 & ak(i,k-1)*tl_ohz(i,k ))
999 cf(i,k)=cff1*hzk(i,k+1)- &
1000 &
dt(ng)*ak(i,k+1)*ohz(i,k+1)
1001 tl_cf(i,k)=cff1*tl_hzk(i,k+1)- &
1002 &
dt(ng)*(tl_ak(i,k+1)*ohz(i,k+1)+ &
1003 & ak(i,k+1)*tl_ohz(i,k+1))
1017 bc(i,k)=cff1*(hzk(i,k)+hzk(i,k+1))+ &
1018 &
dt(ng)*ak(i,k)*(ohz(i,k)+ohz(i,k+1))
1019 tl_bc(i,k)=cff1*(tl_hzk(i,k)+tl_hzk(i,k+1))+ &
1020 &
dt(ng)*(tl_ak(i,k)*(ohz(i,k)+ohz(i,k+1))+ &
1021 & ak(i,k)*(tl_ohz(i,k)+tl_ohz(i,k+1)))
1022 cff=1.0_r8/(bc(i,k)-fc(i,k)*cf(i,k-1))
1024 tl_dc(i,k)=cff*(tl_v(i,j,k+1,nnew)- &
1025 & tl_v(i,j,k ,nnew)- &
1026 & (tl_fc(i,k)*dc(i,k-1)+ &
1027 & tl_bc(i,k)*dc(i,k )+ &
1028 & tl_cf(i,k)*dc(i,k+1))- &
1029 & fc(i,k)*tl_dc(i,k-1))
1036 tl_dc(i,n(ng))=0.0_r8
1040 tl_dc(i,k)=tl_dc(i,k)-cf(i,k)*tl_dc(i,k+1)
1049 tl_dc(i,k)=tl_dc(i,k)*ak(i,k)+dc(i,k)*tl_ak(i,k)
1050 dc(i,k)=dc(i,k)*ak(i,k)
1053 tl_cff=
dt(ng)*(tl_ohz(i,k)*(dc(i,k)-dc(i,k-1))+ &
1054 & ohz(i,k)*(tl_dc(i,k)-tl_dc(i,k-1)))
1057 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)+tl_cff
1058# ifdef DIAGNOSTICS_UV
1078 cff1=1.0_r8/(z_r(i,j,k+1)+z_r(i,j-1,k+1)- &
1079 & z_r(i,j,k )-z_r(i,j-1,k ))
1080 tl_cff1=-cff1*cff1*(tl_z_r(i,j,k+1)+tl_z_r(i,j-1,k+1)- &
1081 & tl_z_r(i,j,k )-tl_z_r(i,j-1,k ))
1082 fc(i,k)=cff*cff1*ak(i,k)
1083 tl_fc(i,k)=cff*(tl_cff1*ak(i,k)+cff1*tl_ak(i,k))
1090 tl_fc(i,n(ng))=0.0_r8
1097 bc(i,k)=hzk(i,k)-fc(i,k)-fc(i,k-1)
1098 tl_bc(i,k)=tl_hzk(i,k)-tl_fc(i,k)-tl_fc(i,k-1)
1103 dc(i,k)=tl_v(i,j,k,nnew)- &
1104 & (tl_fc(i,k-1)*v(i,j,k-1,nnew)+ &
1105 & tl_bc(i,k )*v(i,j,k ,nnew)+ &
1106 & tl_fc(i,k )*v(i,j,k+1,nnew))
1110 dc(i,1)=tl_v(i,j,1,nnew)- &
1111 & (tl_bc(i,1)*v(i,j,1,nnew)+ &
1112 & tl_fc(i,1)*v(i,j,2,nnew))
1113 dc(i,n(ng))=tl_v(i,j,n(ng),nnew)- &
1114 & (tl_fc(i,n(ng)-1)*v(i,j,n(ng)-1,nnew)+ &
1115 & tl_bc(i,n(ng) )*v(i,j,n(ng) ,nnew))
1124 cff=1.0_r8/(bc(i,k)-fc(i,k-1)*cf(i,k-1))
1126 dc(i,k)=cff*(dc(i,k)-fc(i,k-1)*dc(i,k-1))
1134# ifdef DIAGNOSTICS_UV
1137 dc(i,n(ng))=(dc(i,n(ng))-fc(i,n(ng)-1)*dc(i,n(ng)-1))/ &
1138 & (bc(i,n(ng))-fc(i,n(ng)-1)*cf(i,n(ng)-1))
1141 tl_v(i,j,n(ng),nnew)=dc(i,n(ng))
1142# ifdef DIAGNOSTICS_UV
1149# ifdef DIAGNOSTICS_UV
1152 dc(i,k)=dc(i,k)-cf(i,k)*dc(i,k+1)
1155 tl_v(i,j,k,nnew)=dc(i,k)
1156# ifdef DIAGNOSTICS_UV
1169 tl_cf(i,0)=tl_hzk(i,1)
1170 dc(i,0)=v(i,j,1,nnew)*hzk(i,1)
1171 tl_dc(i,0)=tl_v(i,j,1,nnew)*hzk(i,1)+ &
1172 & v(i,j,1,nnew)*tl_hzk(i,1)
1173# ifdef NEARSHORE_MELLOR
1174 dcs(i,0)=v_stokes(i,j,1)*hzk(i,1)
1175 tl_dcs(i,0)=tl_v_stokes(i,j,1)*hzk(i,1)+ &
1176 & v_stokes(i,j,1)*tl_hzk(i,1)
1178# ifdef DIAGNOSTICS_UV
1184# if defined UV_VIS2 || defined UV_VIS4
1194# ifdef NEARSHORE_MELLOR
1201 cf(i,0)=cf(i,0)+hzk(i,k)
1202 tl_cf(i,0)=tl_cf(i,0)+tl_hzk(i,k)
1203 dc(i,0)=dc(i,0)+v(i,j,k,nnew)*hzk(i,k)
1204 tl_dc(i,0)=tl_dc(i,0)+ &
1205 & tl_v(i,j,k,nnew)*hzk(i,k)+ &
1206 & v(i,j,k,nnew)*tl_hzk(i,k)
1207# ifdef NEARSHORE_MELLOR
1208 dcs(i,0)=dcs(i,0)+v_stokes(i,j,k)*hzk(i,k)
1209 tl_dcs(i,0)=tl_dcs(i,0)+ &
1210 & tl_v_stokes(i,j,k)*hzk(i,k)+ &
1211 & v_stokes(i,j,k)*tl_hzk(i,k)
1213# ifdef DIAGNOSTICS_UV
1222# if defined UV_VIS2 || defined UV_VIS4
1238# ifdef NEARSHORE_MELLOR
1247 cff1=1.0_r8/(cf(i,0)*om_v(i,j))
1248 tl_cff1=-cff1*cff1*tl_cf(i,0)*om_v(i,j)
1249 dc(i,0)=(dc(i,0)*om_v(i,j)-dv_avg1(i,j))*cff1
1250 tl_dc(i,0)=(tl_dc(i,0)*om_v(i,j)-tl_dv_avg1(i,j))*cff1+ &
1251 & (dc1(i,0)*om_v(i,j)-dv_avg1(i,j))*tl_cff1
1252# ifdef NEARSHORE_MELLOR
1255 tl_cff2=-cff2*cff2*tl_cf(i,0)
1256 dcs(i,0)=dcs(i,0)*cff2-vbar_stokes(i,j)
1257 tl_dcs(i,0)=tl_dcs(i,0)*cff2+ &
1258 & dcs1(i,0)*tl_cff2-tl_vbar_stokes(i,j)
1260# ifdef DIAGNOSTICS_UV
1277 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)-tl_dc(i,0)
1281 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)*vmask(i,j)
1283# ifdef WET_DRY_NOT_YET
1286 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)*vmask_wet(i,j)
1288# ifdef NEARSHORE_MELLOR
1291 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)-tl_dcs(i,0)
1295 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)*vmask(i,j)
1297# ifdef WET_DRY_NOT_YET
1300 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)*vmask_wet(i,j)
1303# ifdef DIAGNOSTICS_UV
1312# if defined UV_VIS2 || defined UV_VIS4
1328# ifdef NEARSHORE_MELLOR
1336# if defined DIAGNOSTICS_UV && defined MASKING
1359 & lbi, ubi, lbj, ubj, n(ng), &
1360 & imins, imaxs, jmins, jmaxs, &
1370 & lbi, ubi, lbj, ubj, n(ng), &
1371 & imins, imaxs, jmins, jmaxs, &
1383 IF (((istrr.le.i).and.(i.le.iendr)).and. &
1384 & ((jstrr.le.j).and.(j.le.jendr)))
THEN
1385 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
1387 cff1=1.0_r8/(on_u(i,j)* &
1388 & 0.5_r8*(z_w(i-1,j,k)-z_w(i-1,j,k-1)+ &
1389 & z_w(i ,j,k)-z_w(i ,j,k-1)))
1390 tl_cff1=-cff1*cff1*on_u(i,j)* &
1391 & 0.5_r8*(tl_z_w(i-1,j,k)-tl_z_w(i-1,j,k-1)+ &
1392 & tl_z_w(i ,j,k)-tl_z_w(i ,j,k-1))
1395 tl_u(i,j,k,nnew)=
sources(ng)%tl_Qsrc(is,k)*cff1+ &
1396 &
sources(ng)%Qsrc(is,k)*tl_cff1
1398 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
1400 cff1=1.0_r8/(om_v(i,j)* &
1401 & 0.5_r8*(z_w(i,j-1,k)-z_w(i,j-1,k-1)+ &
1402 & z_w(i,j ,k)-z_w(i,j ,k-1)))
1403 tl_cff1=-cff1*cff1*om_v(i,j)* &
1404 & 0.5_r8*(tl_z_w(i,j-1,k)-tl_z_w(i,j-1,k-1)+ &
1405 & tl_z_w(i,j ,k)-tl_z_w(i,j ,k-1))
1408 tl_v(i,j,k,nnew)=
sources(ng)%tl_Qsrc(is,k)*cff1+ &
1409 &
sources(ng)%Qsrc(is,k)*tl_cff1
1428# ifdef NEARSHORE_MELLOR
1443 cff=0.5_r8*on_u(i,j)
1444 dc(i,k)=cff*(hz(i,j,k)+hz(i-1,j,k))
1445 tl_dc(i,k)=cff*(tl_hz(i,j,k)+tl_hz(i-1,j,k))
1446 dc(i,0)=dc(i,0)+dc(i,k)
1447 tl_dc(i,0)=tl_dc(i,0)+tl_dc(i,k)
1449 & dc(i,k)*u(i,j,k,nnew)
1450 tl_cf(i,0)=tl_cf(i,0)+ &
1451 & tl_dc(i,k)*u(i,j,k,nnew)+ &
1452 & dc(i,k)*tl_u(i,j,k,nnew)
1453# ifdef NEARSHORE_MELLOR
1454 cfs(i,0)=cfs(i,0)+ &
1455 & dc(i,k)*u_stokes(i,j,k)
1456 tl_cfs(i,0)=tl_cfs(i,0)+ &
1457 & tl_dc(i,k)*u_stokes(i,j,k)+ &
1458 & dc(i,k)*tl_u_stokes(i,j,k)
1464# ifdef NEARSHORE_MELLOR
1465 cff2=dc(i,0)*ubar_stokes(i,j)
1466 tl_cff2=tl_dc(i,0)*ubar_stokes(i,j)+ &
1467 & dc(i,0)*tl_ubar_stokes(i,j)
1469 dc(i,0)=1.0_r8/dc(i,0)
1470 tl_dc(i,0)=-tl_dc(i,0)/(dc1(i,0)*dc1(i,0))
1472 cf(i,0)=dc(i,0)*(cf(i,0)-du_avg1(i,j))
1473 tl_cf(i,0)=tl_dc(i,0)*(cf1(i)-du_avg1(i,j))+ &
1474 & dc(i,0)*(tl_cf(i,0)-tl_du_avg1(i,j))
1475# ifdef NEARSHORE_MELLOR
1477 cfs(i,0)=dc(i,0)*(cfs(i,0)-cff2)
1478 tl_cfs(i,0)=tl_dc(i,0)*(cfs1(i)-cff2)+ &
1479 & dc(i,0)*(tl_cfs(i,0)-tl_cff2)
1483 tl_ubar(i,j,1)=tl_dc(i,0)*du_avg1(i,j)+ &
1484 & dc(i,0)*tl_du_avg1(i,j)
1487 tl_ubar(i,j,2)=tl_ubar(i,j,1)
1488# ifdef DIAGNOSTICS_UV
1493# ifdef DIAGNOSTICS_UV
1521 IF (
domain(ng)%Western_Edge(tile))
THEN
1525 tl_u(istr,j,k,nnew)=tl_u(istr,j,k,nnew)- &
1531 tl_u(istr,j,k,nnew)=tl_u(istr,j,k,nnew)* &
1534# ifdef WET_DRY_NOT_YET
1538 tl_u(istr,j,k,nnew)=tl_u(istr,j,k,nnew)* &
1541# ifdef NEARSHORE_MELLOR
1544 tl_u_stokes(istr,j,k)=tl_u_stokes(istr,j,k)- &
1550 tl_u_stokes(istr,j,k)=tl_u_stokes(istr,j,k)* &
1553# ifdef WET_DRY_NOT_YET
1557 tl_u_stokes(istr,j,k)=tl_u_stokes(istr,j,k)* &
1566 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1570 tl_u(iend+1,j,k,nnew)=tl_u(iend+1,j,k,nnew)- &
1576 tl_u(iend+1,j,k,nnew)=tl_u(iend+1,j,k,nnew)* &
1579# ifdef WET_DRY_NOT_YET
1583 tl_u(iend+1,j,k,nnew)=tl_u(iend+1,j,k,nnew)* &
1584 & umask_wet(iend+1,j)
1586# ifdef NEARSHORE_MELLOR
1589 tl_u_stokes(iend+1,j,k)=tl_u_stokes(iend+1,j,k)- &
1595 tl_u_stokes(iend+1,j,k)=tl_u_stokes(iend+1,j,k)* &
1598# ifdef WET_DRY_NOT_YET
1602 tl_u_stokes(iend+1,j,k)=tl_u_stokes(iend+1,j,k)* &
1603 & umask_wet(iend+1,j)
1616 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)- &
1621 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)* &
1624# ifdef WET_DRY_NOT_YET
1628 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)* &
1631# ifdef NEARSHORE_MELLOR
1634 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)- &
1640 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)* &
1643# ifdef WET_DRY_NOT_YET
1647 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)* &
1657 IF (j.eq.
mm(ng)+1)
THEN
1662 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)- &
1667 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)* &
1670# ifdef WET_DRY_NOT_YET
1673 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)* &
1676# ifdef NEARSHORE_MELLOR
1679 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)- &
1685 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)* &
1688# ifdef WET_DRY_NOT_YET
1692 tl_u_stokes(i,j,k)=tl_u_stokes(i,j,k)* &
1705 huon(i,j,k)=0.5_r8*(huon(i,j,k)+u(i,j,k,nnew)*dc(i,k))
1706 tl_huon(i,j,k)=0.5_r8*(tl_huon(i,j,k)+ &
1707 & tl_u(i,j,k,nnew)*dc(i,k)+ &
1708 & u(i,j,k,nnew)*tl_dc(i,k))
1709# ifdef NEARSHORE_MELLOR
1710 huon(i,j,k)=huon(i,j,k)+0.5_r8*u_stokes(i,j,k)*dc(i,k)
1711 tl_huon(i,j,k)=tl_huon(i,j,k)+ &
1712 & 0.5_r8*(tl_u_stokes(i,j,k)*dc(i,k)+ &
1713 & u_stokes(i,j,k)*tl_dc(i,k))
1715 fc(i,0)=fc(i,0)+huon(i,j,k)
1716 tl_fc(i,0)=tl_fc(i,0)+tl_huon(i,j,k)
1717# ifdef DIAGNOSTICS_UV
1724 fc(i,0)=dc(i,0)*(fc(i,0)-du_avg2(i,j))
1725 tl_fc(i,0)=tl_dc(i,0)*(fc1(i)-du_avg2(i,j))+ &
1726 & dc(i,0)*(tl_fc(i,0)-tl_du_avg2(i,j))
1730 huon(i,j,k)=huon(i,j,k)-dc(i,k)*fc(i,0)
1731 tl_huon(i,j,k)=tl_huon(i,j,k)- &
1732 & tl_dc(i,k)*fc(i,0)- &
1733 & dc(i,k)*tl_fc(i,0)
1745# ifdef NEARSHORE_MELLOR
1760 cff=0.5_r8*om_v(i,j)
1761 dc(i,k)=cff*(hz(i,j,k)+hz(i,j-1,k))
1762 tl_dc(i,k)=cff*(tl_hz(i,j,k)+tl_hz(i,j-1,k))
1763 dc(i,0)=dc(i,0)+dc(i,k)
1764 tl_dc(i,0)=tl_dc(i,0)+tl_dc(i,k)
1766 & dc(i,k)*v(i,j,k,nnew)
1767 tl_cf(i,0)=tl_cf(i,0)+ &
1768 & tl_dc(i,k)*v(i,j,k,nnew)+ &
1769 & dc(i,k)*tl_v(i,j,k,nnew)
1770# ifdef NEARSHORE_MELLOR
1771 cfs(i,0)=cfs(i,0)+ &
1772 & dc(i,k)*v_stokes(i,j,k)
1773 tl_cfs(i,0)=tl_cfs(i,0)+ &
1774 & tl_dc(i,k)*v_stokes(i,j,k)+ &
1775 & dc(i,k)*tl_v_stokes(i,j,k)
1781# ifdef NEARSHORE_MELLOR
1782 cff2=dc(i,0)*vbar_stokes(i,j)
1783 tl_cff2=tl_dc(i,0)*vbar_stokes(i,j)+ &
1784 & dc(i,0)*tl_vbar_stokes(i,j)
1786 dc(i,0)=1.0_r8/dc(i,0)
1787 tl_dc(i,0)=-tl_dc(i,0)/(dc1(i,0)*dc1(i,0))
1789 cf(i,0)=dc(i,0)*(cf(i,0)-dv_avg1(i,j))
1790 tl_cf(i,0)=tl_dc(i,0)*(cf1(i)-dv_avg1(i,j))+ &
1791 & dc(i,0)*(tl_cf(i,0)-tl_dv_avg1(i,j))
1792# ifdef NEARSHORE_MELLOR
1794 cfs(i,0)=dc(i,0)*(cfs(i,0)-cff2)
1795 tl_cfs(i,0)=tl_dc(i,0)*(cfs1(i)-cff2)+ &
1796 & dc(i,0)*(tl_cfs(i,0)-tl_cff2)
1800 tl_vbar(i,j,1)=tl_dc(i,0)*dv_avg1(i,j)+ &
1801 & dc(i,0)*tl_dv_avg1(i,j)
1804 tl_vbar(i,j,2)=tl_vbar(i,j,1)
1805# ifdef DIAGNOSTICS_UV
1813# ifdef DIAGNOSTICS_UV
1841 IF (
domain(ng)%Western_Edge(tile))
THEN
1845 tl_v(istr-1,j,k,nnew)=tl_v(istr-1,j,k,nnew)- &
1851 tl_v(istr-1,j,k,nnew)=tl_v(istr-1,j,k,nnew)* &
1854# ifdef WET_DRY_NOT_YET
1858 tl_v(istr-1,j,k,nnew)=tl_v(istr-1,j,k,nnew)* &
1859 & vmask_wet(istr-1,j)
1861# ifdef NEARSHORE_MELLOR
1865 tl_v_stokes(istr-1,j,k)=tl_v_stokes(istr-1,j,k)- &
1871 tl_v_stokes(istr-1,j,k)=tl_v_stokes(istr-1,j,k)* &
1874# ifdef WET_DRY_NOT_YET
1878 tl_v_stokes(istr-1,j,k)=tl_v_stokes(istr-1,j,k)* &
1879 & vmask_wet(istr-1,j)
1887 IF (
domain(ng)%Eastern_Edge(tile))
THEN
1891 tl_v(iend+1,j,k,nnew)=tl_v(iend+1,j,k,nnew)- &
1897 tl_v(iend+1,j,k,nnew)=tl_v(iend+1,j,k,nnew)* &
1900# ifdef WET_DRY_NOT_YET
1904 tl_v(iend+1,j,k,nnew)=tl_v(iend+1,j,k,nnew)* &
1905 & vmask_wet(iend+1,j)
1907# ifdef NEARSHORE_MELLOR
1911 tl_v_stokes(iend+1,j,k)=tl_v_stokes(iend+1,j,k)- &
1917 tl_v_stokes(iend+1,j,k)=tl_v_stokes(iend+1,j,k)* &
1920# ifdef WET_DRY_NOT_YET
1924 tl_v_stokes(iend+1,j,k)=tl_v_stokes(iend+1,j,k)* &
1925 & vmask_wet(iend+1,j)
1938 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)- &
1944 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)* &
1947# ifdef WET_DRY_NOT_YET
1951 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)* &
1954# ifdef NEARSHORE_MELLOR
1957 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)- &
1962 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)* &
1965# ifdef WET_DRY_NOT_YET
1969 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)* &
1979 IF (j.eq.
mm(ng)+1)
THEN
1984 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)- &
1990 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)* &
1993# ifdef WET_DRY_NOT_YET
1997 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)* &
2000# ifdef NEARSHORE_MELLOR
2003 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)- &
2009 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)* &
2012# ifdef WET_DRY_NOT_YET
2016 tl_v_stokes(i,j,k)=tl_v_stokes(i,j,k)* &
2029 hvom(i,j,k)=0.5_r8*(hvom(i,j,k)+v(i,j,k,nnew)*dc(i,k))
2030 tl_hvom(i,j,k)=0.5_r8*(tl_hvom(i,j,k)+ &
2031 & tl_v(i,j,k,nnew)*dc(i,k)+ &
2032 & v(i,j,k,nnew)*tl_dc(i,k))
2033# ifdef NEARSHORE_MELLOR
2034 hvom(i,j,k)=hvom(i,j,k)+0.5_r8*v_stokes(i,j,k)*dc(i,k)
2035 tl_hvom(i,j,k)=tl_hvom(i,j,k)+ &
2036 & 0.5_r8*(tl_v_stokes(i,j,k)*dc(i,k)+ &
2037 & v_stokes(i,j,k)*tl_dc(i,k))
2039 fc(i,0)=fc(i,0)+hvom(i,j,k)
2040 tl_fc(i,0)=tl_fc(i,0)+tl_hvom(i,j,k)
2041# ifdef DIAGNOSTICS_UV
2049 fc(i,0)=dc(i,0)*(fc(i,0)-dv_avg2(i,j))
2050 tl_fc(i,0)=tl_dc(i,0)*(fc1(i)-dv_avg2(i,j))+ &
2051 & dc(i,0)*(tl_fc(i,0)-tl_dv_avg2(i,j))
2055 hvom(i,j,k)=hvom(i,j,k)-dc(i,k)*fc(i,0)
2056 tl_hvom(i,j,k)=tl_hvom(i,j,k)- &
2057 & tl_dc(i,k)*fc(i,0)- &
2058 & dc(i,k)*tl_fc(i,0)
2074 & lbi, ubi, lbj, ubj, 1, n(ng), &
2081 & lbi, ubi, lbj, ubj, 1, n(ng), &
2085 & lbi, ubi, lbj, ubj, 1, n(ng), &
2088 & lbi, ubi, lbj, ubj, 1, n(ng), &
2092 & lbi, ubi, lbj, ubj, 1, n(ng), &
2095 & lbi, ubi, lbj, ubj, 1, n(ng), &
2104 & lbi, ubi, lbj, ubj, &
2111 & lbi, ubi, lbj, ubj, &
2125 & lbi, ubi, lbj, ubj, 1, n(ng), &
2128 & tl_u(:,:,:,nnew), tl_v(:,:,:,nnew), &
2131 & lbi, ubi, lbj, ubj, 1, n(ng), &
2144 & lbi, ubi, lbj, ubj, &
2147 & tl_ubar(:,:,1), tl_vbar(:,:,1), &
2148 & tl_ubar(:,:,2), tl_vbar(:,:,2))
2150# ifdef UV_DESTAGGERED