129
130
133
134
135
136 integer, intent(in) :: ng, tile
137 integer, intent(in) :: LBi, UBi, LBj, UBj
138 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
139 integer, intent(in) :: nrhs
140
141#ifdef ASSUMED_SHAPE
142# ifdef MASKING
143 real(r8), intent(in) :: umask(LBi:,LBj:)
144 real(r8), intent(in) :: vmask(LBi:,LBj:)
145# endif
146 real(r8), intent(in) :: om_v(LBi:,LBj:)
147 real(r8), intent(in) :: on_u(LBi:,LBj:)
148 real(r8), intent(in) :: Hz(LBi:,LBj:,:)
149 real(r8), intent(in) :: z_r(LBi:,LBj:,:)
150 real(r8), intent(in) :: z_w(LBi:,LBj:,0:)
151 real(r8), intent(in) :: rho(LBi:,LBj:,:)
152
153 real(r8), intent(in) :: tl_Hz(LBi:,LBj:,:)
154 real(r8), intent(in) :: tl_z_r(LBi:,LBj:,:)
155 real(r8), intent(in) :: tl_z_w(LBi:,LBj:,0:)
156 real(r8), intent(in) :: tl_rho(LBi:,LBj:,:)
157# ifdef TIDE_GENERATING_FORCES
158 real(r8), intent(in) :: eq_tide(LBi:,LBj:)
159 real(r8), intent(in) :: tl_eq_tide(LBi:,LBj:)
160# endif
161# ifdef ATM_PRESS
162 real(r8), intent(in) :: Pair(LBi:,LBj:)
163# endif
164# ifdef DIAGNOSTICS_UV
165
166
167# endif
168 real(r8), intent(inout) :: tl_ru(LBi:,LBj:,0:,:)
169 real(r8), intent(inout) :: tl_rv(LBi:,LBj:,0:,:)
170#else
171# ifdef MASKING
172 real(r8), intent(in) :: umask(LBi:UBi,LBj:UBj)
173 real(r8), intent(in) :: vmask(LBi:UBi,LBj:UBj)
174# endif
175 real(r8), intent(in) :: om_v(LBi:UBi,LBj:UBj)
176 real(r8), intent(in) :: on_u(LBi:UBi,LBj:UBj)
177 real(r8), intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
178 real(r8), intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
179 real(r8), intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
180 real(r8), intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
181
182 real(r8), intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
183 real(r8), intent(in) :: tl_z_r(LBi:UBi,LBj:UBj,N(ng))
184 real(r8), intent(in) :: tl_z_w(LBi:UBi,LBj:UBj,0:N(ng))
185 real(r8), intent(in) :: tl_rho(LBi:UBi,LBj:UBj,N(ng))
186# ifdef TIDE_GENERATING_FORCES
187 real(r8), intent(in) :: eq_tide(LBi:UBi,LBj:UBj)
188 real(r8), intent(in) :: tl_eq_tide(LBi:UBi,LBj:UBj)
189# endif
190# ifdef ATM_PRESS
191 real(r8), intent(in) :: Pair(LBi:UBi,LBj:UBj)
192# endif
193# ifdef DIAGNOSTICS_UV
194
195
196# endif
197 real(r8), intent(inout) :: tl_ru(LBi:UBi,LBj:UBj,0:N(ng),2)
198 real(r8), intent(inout) :: tl_rv(LBi:UBi,LBj:UBj,0:N(ng),2)
199#endif
200
201
202
203 integer :: i, j, k
204
205 real(r8), parameter :: OneFifth = 0.2_r8
206 real(r8), parameter :: OneTwelfth = 1.0_r8/12.0_r8
207 real(r8), parameter :: eps = 1.0e-10_r8
208
209 real(r8) :: GRho, GRho0, HalfGRho
210 real(r8) :: cff, cff1, cff2
211 real(r8) :: tl_cff, tl_cff1, tl_cff2
212#ifdef ATM_PRESS
213 real(r8) :: OneAtm, fac
214#endif
215 real(r8), dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: P
216
217 real(r8), dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: tl_P
218
219 real(r8), dimension(IminS:ImaxS,0:N(ng)) :: dR
220 real(r8), dimension(IminS:ImaxS,0:N(ng)) :: dR1
221 real(r8), dimension(IminS:ImaxS,0:N(ng)) :: dZ
222 real(r8), dimension(IminS:ImaxS,0:N(ng)) :: dZ1
223
224 real(r8), dimension(IminS:ImaxS,0:N(ng)) :: tl_dR
225 real(r8), dimension(IminS:ImaxS,0:N(ng)) :: tl_dZ
226
227 real(r8), dimension(IminS:ImaxS,JminS:JmaxS) :: FC
228 real(r8), dimension(IminS:ImaxS,JminS:JmaxS) :: aux
229 real(r8), dimension(IminS:ImaxS,JminS:JmaxS) :: dRx
230 real(r8), dimension(IminS:ImaxS,JminS:JmaxS) :: dZx
231
232 real(r8), dimension(IminS:ImaxS,JminS:JmaxS) :: tl_FC
233 real(r8), dimension(IminS:ImaxS,JminS:JmaxS) :: tl_aux
234 real(r8), dimension(IminS:ImaxS,JminS:JmaxS) :: tl_dRx
235 real(r8), dimension(IminS:ImaxS,JminS:JmaxS) :: tl_dZx
236
237#include "set_bounds.h"
238
239
240
241
242
244 grho0=1000.0_r8*grho
245 halfgrho=0.5_r8*grho
246#ifdef ATM_PRESS
247 oneatm=1013.25_r8
249#endif
250
251 DO j=jstrv-1,jend
253 DO i=istru-1,iend
254 dr(i,k)=rho(i,j,k+1)-rho(i,j,k)
255 tl_dr(i,k)=tl_rho(i,j,k+1)-tl_rho(i,j,k)
256 dz(i,k)=z_r(i,j,k+1)-z_r(i,j,k)
257 tl_dz(i,k)=tl_z_r(i,j,k+1)-tl_z_r(i,j,k)
258 END DO
259 END DO
260 DO i=istru-1,iend
261 dr(i,
n(ng))=dr(i,
n(ng)-1)
262 tl_dr(i,
n(ng))=tl_dr(i,
n(ng)-1)
263 dz(i,
n(ng))=dz(i,
n(ng)-1)
264 tl_dz(i,
n(ng))=tl_dz(i,
n(ng)-1)
265 dr(i,0)=dr(i,1)
266 tl_dr(i,0)=tl_dr(i,1)
267 dz(i,0)=dz(i,1)
268 tl_dz(i,0)=tl_dz(i,1)
269 END DO
271 DO i=istru-1,iend
272 cff=2.0_r8*dr(i,k)*dr(i,k-1)
273 tl_cff=2.0_r8*(tl_dr(i,k)*dr(i,k-1)+ &
274 & dr(i,k)*tl_dr(i,k-1))- &
275#ifdef TL_IOMS
276 & cff
277#endif
278 dr1(i,k)=dr(i,k)
279 IF (cff.gt.eps) THEN
280 dr(i,k)=cff/(dr(i,k)+dr(i,k-1))
281 tl_dr(i,k)=(tl_cff-dr(i,k)*(tl_dr(i,k)+tl_dr(i,k-1)))/ &
282 & (dr1(i,k)+dr(i,k-1))+ &
283#ifdef TL_IOMS
284 & dr(i,k)
285#endif
286 ELSE
287 dr(i,k)=0.0_r8
288 tl_dr(i,k)=0.0_r8
289 END IF
290 dz1(i,k)=dz(i,k)
291 dz(i,k)=2.0_r8*dz(i,k)*dz(i,k-1)/(dz(i,k)+dz(i,k-1))
292 tl_dz(i,k)=(2.0_r8*(tl_dz(i,k)*dz(i,k-1)+ &
293 & dz1(i,k)*tl_dz(i,k-1))- &
294 & dz(i,k)*(tl_dz(i,k)+tl_dz(i,k-1)))/ &
295 & (dz1(i,k)+dz(i,k-1))
296 END DO
297 END DO
298 DO i=istru-1,iend
299 cff1=1.0_r8/(z_r(i,j,
n(ng))-z_r(i,j,
n(ng)-1))
300 tl_cff1=-cff1*cff1*(tl_z_r(i,j,
n(ng))-tl_z_r(i,j,
n(ng)-1))+ &
301#ifdef TL_IOMS
302 & 2.0_r8*cff1
303#endif
304 cff2=0.5_r8*(rho(i,j,
n(ng))-rho(i,j,
n(ng)-1))* &
305 & (z_w(i,j,
n(ng))-z_r(i,j,
n(ng)))*cff1
306 tl_cff2=0.5_r8*((tl_rho(i,j,
n(ng))-tl_rho(i,j,
n(ng)-1))* &
307 & (z_w(i,j,
n(ng))-z_r(i,j,
n(ng)))*cff1+ &
308 & (rho(i,j,
n(ng))-rho(i,j,
n(ng)-1))* &
309 & ((tl_z_w(i,j,
n(ng))-tl_z_r(i,j,
n(ng)))*cff1+ &
310 & (z_w(i,j,
n(ng))-z_r(i,j,
n(ng)))*tl_cff1))- &
311#ifdef TL_IOMS
312 & 2.0_r8*cff2
313#endif
314 p(i,j,
n(ng))=
g*z_w(i,j,
n(ng))+ &
315#ifdef ATM_PRESS
316 & fac*(pair(i,j)-oneatm)+ &
317#endif
318 & grho*(rho(i,j,
n(ng))+cff2)* &
319 & (z_w(i,j,
n(ng))-z_r(i,j,
n(ng)))
320 tl_p(i,j,
n(ng))=
g*tl_z_w(i,j,
n(ng))+ &
321 & grho*((tl_rho(i,j,
n(ng))+tl_cff2)* &
322 & (z_w(i,j,
n(ng))-z_r(i,j,
n(ng)))+ &
323 & (rho(i,j,
n(ng))+cff2)* &
324 & (tl_z_w(i,j,
n(ng))-tl_z_r(i,j,
n(ng))))- &
325#ifdef TL_IOMS
326 & grho*(rho(i,j,
n(ng))+cff2)* &
327 & (z_w(i,j,
n(ng))-z_r(i,j,
n(ng)))
328#endif
329#ifdef TIDE_GENERATING_FORCES
330 p(i,j,
n(ng))=p(i,j,
n(ng))-
g*eq_tide(i,j)
331 tl_p(i,j,
n(ng))=tl_p(i,j,
n(ng))-
g*tl_eq_tide(i,j)
332#endif
333 END DO
335 DO i=istru-1,iend
336 cff=halfgrho*((rho(i,j,k+1)+rho(i,j,k))* &
337 & (z_r(i,j,k+1)-z_r(i,j,k))- &
338 & onefifth* &
339 & ((dr(i,k+1)-dr(i,k))* &
340 & (z_r(i,j,k+1)-z_r(i,j,k)- &
341 & onetwelfth* &
342 & (dz(i,k+1)+dz(i,k)))- &
343 & (dz(i,k+1)-dz(i,k))* &
344 & (rho(i,j,k+1)-rho(i,j,k)- &
345 & onetwelfth* &
346 & (dr(i,k+1)+dr(i,k)))))
347 tl_cff=halfgrho*((tl_rho(i,j,k+1)+tl_rho(i,j,k))* &
348 & (z_r(i,j,k+1)-z_r(i,j,k))+ &
349 & (rho(i,j,k+1)+rho(i,j,k))* &
350 & (tl_z_r(i,j,k+1)-tl_z_r(i,j,k))- &
351 & onefifth* &
352 & ((tl_dr(i,k+1)-tl_dr(i,k))* &
353 & (z_r(i,j,k+1)-z_r(i,j,k)- &
354 & onetwelfth* &
355 & (dz(i,k+1)+dz(i,k)))+ &
356 & (dr(i,k+1)-dr(i,k))* &
357 & (tl_z_r(i,j,k+1)-tl_z_r(i,j,k)- &
358 & onetwelfth* &
359 & (tl_dz(i,k+1)+tl_dz(i,k)))- &
360 & (tl_dz(i,k+1)-tl_dz(i,k))* &
361 & (rho(i,j,k+1)-rho(i,j,k)- &
362 & onetwelfth* &
363 & (dr(i,k+1)+dr(i,k)))- &
364 & (dz(i,k+1)-dz(i,k))* &
365 & (tl_rho(i,j,k+1)-tl_rho(i,j,k)- &
366 & onetwelfth* &
367 & (tl_dr(i,k+1)+tl_dr(i,k)))))- &
368#ifdef TL_IOMS
369 & cff
370#endif
371 p(i,j,k)=p(i,j,k+1)+cff
372 tl_p(i,j,k)=tl_p(i,j,k+1)+tl_cff
373 END DO
374 END DO
375 END DO
376
377
378
379
380
382 DO j=jstr,jend
383 DO i=istru-1,iend+1
384 aux(i,j)=z_r(i,j,k)-z_r(i-1,j,k)
385 tl_aux(i,j)=tl_z_r(i,j,k)-tl_z_r(i-1,j,k)
386#ifdef MASKING
387 aux(i,j)=aux(i,j)*umask(i,j)
388 tl_aux(i,j)=tl_aux(i,j)*umask(i,j)
389#endif
390 fc(i,j)=rho(i,j,k)-rho(i-1,j,k)
391 tl_fc(i,j)=tl_rho(i,j,k)-tl_rho(i-1,j,k)
392#ifdef MASKING
393 fc(i,j)=fc(i,j)*umask(i,j)
394 tl_fc(i,j)=tl_fc(i,j)*umask(i,j)
395#endif
396 END DO
397 END DO
398
399 DO j=jstr,jend
400 DO i=istru-1,iend
401 cff=2.0_r8*aux(i,j)*aux(i+1,j)
402 tl_cff=2.0_r8*(tl_aux(i,j)*aux(i+1,j)+ &
403 & aux(i,j)*tl_aux(i+1,j))- &
404#ifdef TL_IOMS
405 & cff
406#endif
407 IF (cff.gt.eps) THEN
408 cff1=1.0_r8/(aux(i,j)+aux(i+1,j))
409 tl_cff1=-cff1*cff1*(tl_aux(i,j)+tl_aux(i+1,j))+ &
410#ifdef TL_IOMS
411 & 2.0_r8*cff1
412#endif
413 dzx(i,j)=cff*cff1
414 tl_dzx(i,j)=tl_cff*cff1+cff*tl_cff1- &
415#ifdef TL_IOMS
416 & dzx(i,j)
417#endif
418 ELSE
419 dzx(i,j)=0.0_r8
420 tl_dzx(i,j)=0.0_r8
421 END IF
422 cff1=2.0_r8*fc(i,j)*fc(i+1,j)
423 tl_cff1=2.0_r8*(tl_fc(i,j)*fc(i+1,j)+ &
424 & fc(i,j)*tl_fc(i+1,j))- &
425#ifdef TL_IOMS
426 & cff1
427#endif
428 IF (cff1.gt.eps) THEN
429 cff2=1.0_r8/(fc(i,j)+fc(i+1,j))
430 tl_cff2=-cff2*cff2*(tl_fc(i,j)+tl_fc(i+1,j))+ &
431#ifdef TL_IOMS
432 & 2.0_r8*cff2
433#endif
434 drx(i,j)=cff1*cff2
435 tl_drx(i,j)=tl_cff1*cff2+cff1*tl_cff2- &
436#ifdef TL_IOMS
437 & drx(i,j)
438#endif
439 ELSE
440 drx(i,j)=0.0_r8
441 tl_drx(i,j)=0.0_r8
442 END IF
443 END DO
444 END DO
445
446 DO j=jstr,jend
447 DO i=istru,iend
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464 tl_ru(i,j,k,nrhs)=on_u(i,j)*0.5_r8* &
465 & ((tl_hz(i,j,k)+tl_hz(i-1,j,k))* &
466 & (p(i-1,j,k)-p(i,j,k)- &
467 & halfgrho* &
468 & ((rho(i,j,k)+rho(i-1,j,k))* &
469 & (z_r(i,j,k)-z_r(i-1,j,k))- &
470 & onefifth* &
471 & ((drx(i,j)-drx(i-1,j))* &
472 & (z_r(i,j,k)-z_r(i-1,j,k)- &
473 & onetwelfth* &
474 & (dzx(i,j)+dzx(i-1,j)))- &
475 & (dzx(i,j)-dzx(i-1,j))* &
476 & (rho(i,j,k)-rho(i-1,j,k)- &
477 & onetwelfth* &
478 & (drx(i,j)+drx(i-1,j))))))+ &
479 & (hz(i,j,k)+hz(i-1,j,k))* &
480 & (tl_p(i-1,j,k)-tl_p(i,j,k)- &
481 & halfgrho* &
482 & ((tl_rho(i,j,k)+tl_rho(i-1,j,k))* &
483 & (z_r(i,j,k)-z_r(i-1,j,k))+ &
484 & (rho(i,j,k)+rho(i-1,j,k))* &
485 & (tl_z_r(i,j,k)-tl_z_r(i-1,j,k))- &
486 & onefifth* &
487 & ((tl_drx(i,j)-tl_drx(i-1,j))* &
488 & (z_r(i,j,k)-z_r(i-1,j,k)- &
489 & onetwelfth* &
490 & (dzx(i,j)+dzx(i-1,j)))+ &
491 & (drx(i,j)-drx(i-1,j))* &
492 & (tl_z_r(i,j,k)-tl_z_r(i-1,j,k)- &
493 & onetwelfth* &
494 & (tl_dzx(i,j)+tl_dzx(i-1,j)))- &
495 & (tl_dzx(i,j)-tl_dzx(i-1,j))* &
496 & (rho(i,j,k)-rho(i-1,j,k)- &
497 & onetwelfth* &
498 & (drx(i,j)+drx(i-1,j)))- &
499 & (dzx(i,j)-dzx(i-1,j))* &
500 & (tl_rho(i,j,k)-tl_rho(i-1,j,k)- &
501 & onetwelfth* &
502 & (tl_drx(i,j)+tl_drx(i-1,j)))))))- &
503#ifdef TL_IOMS
504 & on_u(i,j)*0.5_r8* &
505 & (hz(i,j,k)+hz(i-1,j,k))* &
506 & (p(i-1,j,k)-p(i,j,k)- &
507 & 2.0_r8*halfgrho* &
508 & ((rho(i,j,k)+rho(i-1,j,k))* &
509 & (z_r(i,j,k)-z_r(i-1,j,k))- &
510 & onefifth* &
511 & ((drx(i,j)-drx(i-1,j))* &
512 & (z_r(i,j,k)-z_r(i-1,j,k)- &
513 & onetwelfth* &
514 & (dzx(i,j)+dzx(i-1,j)))- &
515 & (dzx(i,j)-dzx(i-1,j))* &
516 & (rho(i,j,k)-rho(i-1,j,k)- &
517 & onetwelfth* &
518 & (drx(i,j)+drx(i-1,j))))))
519#endif
520#ifdef DIAGNOSTICS_UV
521
522#endif
523 END DO
524 END DO
525 END DO
526
527
528
529
530
532 DO j=jstrv-1,jend+1
533 DO i=istr,iend
534 aux(i,j)=z_r(i,j,k)-z_r(i,j-1,k)
535 tl_aux(i,j)=tl_z_r(i,j,k)-tl_z_r(i,j-1,k)
536#ifdef MASKING
537 aux(i,j)=aux(i,j)*vmask(i,j)
538 tl_aux(i,j)=tl_aux(i,j)*vmask(i,j)
539#endif
540 fc(i,j)=rho(i,j,k)-rho(i,j-1,k)
541 tl_fc(i,j)=tl_rho(i,j,k)-tl_rho(i,j-1,k)
542#ifdef MASKING
543 fc(i,j)=fc(i,j)*vmask(i,j)
544 tl_fc(i,j)=tl_fc(i,j)*vmask(i,j)
545#endif
546 END DO
547 END DO
548
549 DO j=jstrv-1,jend
550 DO i=istr,iend
551 cff=2.0_r8*aux(i,j)*aux(i,j+1)
552 tl_cff=2.0_r8*(tl_aux(i,j)*aux(i,j+1)+ &
553 & aux(i,j)*tl_aux(i,j+1))- &
554#ifdef TL_IOMS
555 & cff
556#endif
557 IF (cff.gt.eps) THEN
558 cff1=1.0_r8/(aux(i,j)+aux(i,j+1))
559 tl_cff1=-cff1*cff1*(tl_aux(i,j)+tl_aux(i,j+1))+ &
560#ifdef TL_IOMS
561 & 2.0_r8*cff1
562#endif
563 dzx(i,j)=cff*cff1
564 tl_dzx(i,j)=tl_cff*cff1+cff*tl_cff1- &
565#ifdef TL_IOMS
566 & dzx(i,j)
567#endif
568 ELSE
569 dzx(i,j)=0.0_r8
570 tl_dzx(i,j)=0.0_r8
571 END IF
572 cff1=2.0_r8*fc(i,j)*fc(i,j+1)
573 tl_cff1=2.0_r8*(tl_fc(i,j)*fc(i,j+1)+ &
574 & fc(i,j)*tl_fc(i,j+1))- &
575#ifdef TL_IOMS
576 & cff1
577#endif
578 IF (cff1.gt.eps) THEN
579 cff2=1.0_r8/(fc(i,j)+fc(i,j+1))
580 tl_cff2=-cff2*cff2*(tl_fc(i,j)+tl_fc(i,j+1))+ &
581#ifdef TL_IOMS
582 & 2.0_r8*cff2
583#endif
584 drx(i,j)=cff1*cff2
585 tl_drx(i,j)=tl_cff1*cff2+cff1*tl_cff2- &
586#ifdef TL_IOMS
587 & drx(i,j)
588#endif
589 ELSE
590 drx(i,j)=0.0_r8
591 tl_drx(i,j)=0.0_r8
592 END IF
593 END DO
594 END DO
595
596 DO j=jstrv,jend
597 DO i=istr,iend
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614 tl_rv(i,j,k,nrhs)=om_v(i,j)*0.5_r8* &
615 & ((tl_hz(i,j,k)+tl_hz(i,j-1,k))* &
616 & (p(i,j-1,k)-p(i,j,k)- &
617 & halfgrho* &
618 & ((rho(i,j,k)+rho(i,j-1,k))* &
619 & (z_r(i,j,k)-z_r(i,j-1,k))- &
620 & onefifth* &
621 & ((drx(i,j)-drx(i,j-1))* &
622 & (z_r(i,j,k)-z_r(i,j-1,k)- &
623 & onetwelfth* &
624 & (dzx(i,j)+dzx(i,j-1)))- &
625 & (dzx(i,j)-dzx(i,j-1))* &
626 & (rho(i,j,k)-rho(i,j-1,k)- &
627 & onetwelfth* &
628 & (drx(i,j)+drx(i,j-1))))))+ &
629 & (hz(i,j,k)+hz(i,j-1,k))* &
630 & (tl_p(i,j-1,k)-tl_p(i,j,k)- &
631 & halfgrho* &
632 & ((tl_rho(i,j,k)+tl_rho(i,j-1,k))* &
633 & (z_r(i,j,k)-z_r(i,j-1,k))+ &
634 & (rho(i,j,k)+rho(i,j-1,k))* &
635 & (tl_z_r(i,j,k)-tl_z_r(i,j-1,k))- &
636 & onefifth* &
637 & ((tl_drx(i,j)-tl_drx(i,j-1))* &
638 & (z_r(i,j,k)-z_r(i,j-1,k)- &
639 & onetwelfth* &
640 & (dzx(i,j)+dzx(i,j-1)))+ &
641 & (drx(i,j)-drx(i,j-1))* &
642 & (tl_z_r(i,j,k)-tl_z_r(i,j-1,k)- &
643 & onetwelfth* &
644 & (tl_dzx(i,j)+tl_dzx(i,j-1)))- &
645 & (tl_dzx(i,j)-tl_dzx(i,j-1))* &
646 & (rho(i,j,k)-rho(i,j-1,k)- &
647 & onetwelfth* &
648 & (drx(i,j)+drx(i,j-1)))- &
649 & (dzx(i,j)-dzx(i,j-1))* &
650 & (tl_rho(i,j,k)-tl_rho(i,j-1,k)- &
651 & onetwelfth* &
652 & (tl_drx(i,j)+tl_drx(i,j-1)))))))- &
653#ifdef TL_IOMS
654 & om_v(i,j)*0.5_r8* &
655 & (hz(i,j,k)+hz(i,j-1,k))* &
656 & (p(i,j-1,k)-p(i,j,k)- &
657 & 2.0_r8*halfgrho* &
658 & ((rho(i,j,k)+rho(i,j-1,k))* &
659 & (z_r(i,j,k)-z_r(i,j-1,k))- &
660 & onefifth* &
661 & ((drx(i,j)-drx(i,j-1))* &
662 & (z_r(i,j,k)-z_r(i,j-1,k)- &
663 & onetwelfth* &
664 & (dzx(i,j)+dzx(i,j-1)))- &
665 & (dzx(i,j)-dzx(i,j-1))* &
666 & (rho(i,j,k)-rho(i,j-1,k)- &
667 & onetwelfth* &
668 & (drx(i,j)+drx(i,j-1))))))
669#endif
670#ifdef DIAGNOSTICS_UV
671
672#endif
673 END DO
674 END DO
675 END DO
676
677 RETURN