100 & LBi, UBi, LBj, UBj, &
101 & IminS, ImaxS, JminS, JmaxS, &
108#ifdef TIDE_GENERATING_FORCES
109 & eq_tide, ad_eq_tide, &
125 integer,
intent(in) :: ng, tile
126 integer,
intent(in) :: LBi, UBi, LBj, UBj
127 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
128 integer,
intent(in) :: nrhs
131 real(r8),
intent(in) :: om_v(LBi:,LBj:)
132 real(r8),
intent(in) :: on_u(LBi:,LBj:)
133 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
134 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
135 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
136 real(r8),
intent(in) :: rho(LBi:,LBj:,:)
138 real(r8),
intent(in) :: Pair(LBi:,LBj:)
140# ifdef TIDE_GENERATING_FORCES
141 real(r8),
intent(in) :: eq_tide(LBi:,LBj:)
142 real(r8),
intent(inout) :: ad_eq_tide(LBi:,LBj:)
144# ifdef DIAGNOSTICS_UV
148 real(r8),
intent(inout) :: ad_Hz(LBi:,LBj:,:)
149 real(r8),
intent(inout) :: ad_z_r(LBi:,LBj:,:)
150 real(r8),
intent(inout) :: ad_z_w(LBi:,LBj:,0:)
151 real(r8),
intent(inout) :: ad_rho(LBi:,LBj:,:)
152 real(r8),
intent(inout) :: ad_ru(LBi:,LBj:,0:,:)
153 real(r8),
intent(inout) :: ad_rv(LBi:,LBj:,0:,:)
155 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
156 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
157 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
158 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
159 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
160 real(r8),
intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
162 real(r8),
intent(in) :: Pair(LBi:UBi,LBj:UBj)
164# ifdef TIDE_GENERATING_FORCES
165 real(r8),
intent(in) :: eq_tide(LBi:,LBj:)
166 real(r8),
intent(out) :: ad_eq_tide(LBi:,LBj:)
168# ifdef DIAGNOSTICS_UV
172 real(r8),
intent(inout) :: ad_Hz(LBi:UBi,LBj:UBj,N(ng))
173 real(r8),
intent(inout) :: ad_z_r(LBi:UBi,LBj:UBj,N(ng))
174 real(r8),
intent(inout) :: ad_z_w(LBi:UBi,LBj:UBj,0:N(ng))
175 real(r8),
intent(inout) :: ad_rho(LBi:UBi,LBj:UBj,N(ng))
176 real(r8),
intent(inout) :: ad_ru(LBi:UBi,LBj:UBj,0:N(ng),2)
177 real(r8),
intent(inout) :: ad_rv(LBi:UBi,LBj:UBj,0:N(ng),2)
182 integer :: i, j, k, kk
184 real(r8) :: fac, fac1, fac2, fac3
185 real(r8) :: cff1, cff2, cff3, cff4
186 real(r8) :: adfac, adfac1, adfac2
187 real(r8) :: ad_cff1, ad_cff2, ad_cff3, ad_cff4
189 real(r8) :: gamma, ad_gamma
192 real(r8),
dimension(IminS:ImaxS) :: phie
193 real(r8),
dimension(IminS:ImaxS) :: phix
195 real(r8),
dimension(IminS:ImaxS) :: ad_phie
196 real(r8),
dimension(IminS:ImaxS) :: ad_phix
198#include "set_bounds.h"
225 fac2=1000.0_r8*
g/
rho0
228 j_loop :
DO j=jstr,jend
238#ifdef TIDE_GENERATING_FORCES
239 cff1=z_w(i,j ,n(ng))-eq_tide(i,j )-z_r(i,j ,n(ng))+ &
240 & z_w(i,j-1,n(ng))-eq_tide(i,j-1)-z_r(i,j-1,n(ng))
242 cff1=z_w(i,j ,n(ng))-z_r(i,j ,n(ng))+ &
243 & z_w(i,j-1,n(ng))-z_r(i,j-1,n(ng))
245 phie(i)=fac1*(rho(i,j,n(ng))-rho(i,j-1,n(ng)))*cff1
247 phie(i)=phie(i)+fac*(pair(i,j)-pair(i,j-1))
251 & (fac2+fac1*(rho(i,j,n(ng))+rho(i,j-1,n(ng))))* &
252 & (z_w(i,j,n(ng))-z_w(i,j-1,n(ng)))
258 cff1=1.0_r8/((z_r(i,j ,kk+1)-z_r(i,j ,kk))* &
259 & (z_r(i,j-1,kk+1)-z_r(i,j-1,kk)))
260 cff2=z_r(i,j ,kk )-z_r(i,j-1,kk )+ &
261 & z_r(i,j ,kk+1)-z_r(i,j-1,kk+1)
262 cff3=z_r(i,j ,kk+1)-z_r(i,j ,kk )- &
263 & z_r(i,j-1,kk+1)+z_r(i,j-1,kk )
264 gamma=0.125_r8*cff1*cff2*cff3
266 cff1=(1.0_r8+gamma)*(rho(i,j,kk+1)-rho(i,j-1,kk+1))+ &
267 & (1.0_r8-gamma)*(rho(i,j,kk )-rho(i,j-1,kk ))
268 cff2=rho(i,j,kk+1)+rho(i,j-1,kk+1)- &
269 & rho(i,j,kk )-rho(i,j-1,kk )
270 cff3=z_r(i,j,kk+1)+z_r(i,j-1,kk+1)- &
271 & z_r(i,j,kk )-z_r(i,j-1,kk )
272 cff4=(1.0_r8+gamma)*(z_r(i,j,kk+1)-z_r(i,j-1,kk+1))+ &
273 & (1.0_r8-gamma)*(z_r(i,j,kk )-z_r(i,j-1,kk ))
275 & fac3*(cff1*cff3-cff2*cff4)
277 cff1=rho(i,j,kk+1)-rho(i,j-1,kk+1)+ &
278 & rho(i,j,kk )-rho(i,j-1,kk )
279 cff2=rho(i,j,kk+1)+rho(i,j-1,kk+1)- &
280 & rho(i,j,kk )-rho(i,j-1,kk )
281 cff3=z_r(i,j,kk+1)+z_r(i,j-1,kk+1)- &
282 & z_r(i,j,kk )-z_r(i,j-1,kk )
283 cff4=z_r(i,j,kk+1)-z_r(i,j-1,kk+1)+ &
284 & z_r(i,j,kk )-z_r(i,j-1,kk )
286 & fac3*(cff1*cff3-cff2*cff4)
304 adfac=-0.5_r8*om_v(i,j)*ad_rv(i,j,k,nrhs)
306 ad_phie(i)=ad_phie(i)+ &
307 & (hz(i,j,k)+hz(i,j-1,k))*adfac
308 ad_hz(i,j-1,k)=ad_hz(i,j-1,k)+adfac1
309 ad_hz(i,j ,k)=ad_hz(i,j ,k)+adfac1
310 ad_rv(i,j,k,nrhs)=0.0_r8
312 cff1=1.0_r8/((z_r(i,j ,k+1)-z_r(i,j ,k))* &
313 & (z_r(i,j-1,k+1)-z_r(i,j-1,k)))
314 cff2=z_r(i,j ,k )-z_r(i,j-1,k )+ &
315 & z_r(i,j ,k+1)-z_r(i,j-1,k+1)
316 cff3=z_r(i,j ,k+1)-z_r(i,j ,k )- &
317 & z_r(i,j-1,k+1)+z_r(i,j-1,k )
318 gamma=0.125_r8*cff1*cff2*cff3
320 cff1=(1.0_r8+gamma)*(rho(i,j,k+1)-rho(i,j-1,k+1))+ &
321 & (1.0_r8-gamma)*(rho(i,j,k )-rho(i,j-1,k ))
322 cff2=rho(i,j,k+1)+rho(i,j-1,k+1)- &
323 & rho(i,j,k )-rho(i,j-1,k )
324 cff3=z_r(i,j,k+1)+z_r(i,j-1,k+1)- &
325 & z_r(i,j,k )-z_r(i,j-1,k )
326 cff4=(1.0_r8+gamma)*(z_r(i,j,k+1)-z_r(i,j-1,k+1))+ &
327 & (1.0_r8-gamma)*(z_r(i,j,k )-z_r(i,j-1,k ))
334 adfac=fac3*ad_phie(i)
335 ad_cff1=ad_cff1+cff3*adfac
336 ad_cff2=ad_cff2-cff4*adfac
337 ad_cff3=ad_cff3+cff1*adfac
338 ad_cff4=ad_cff4-cff2*adfac
348 adfac1=(1.0_r8+gamma)*ad_cff4
349 adfac2=(1.0_r8-gamma)*ad_cff4
350 ad_z_r(i,j-1,k )=ad_z_r(i,j-1,k )-adfac2-ad_cff3
351 ad_z_r(i,j ,k )=ad_z_r(i,j ,k )+adfac2-ad_cff3
352 ad_z_r(i,j-1,k+1)=ad_z_r(i,j-1,k+1)-adfac1+ad_cff3
353 ad_z_r(i,j ,k+1)=ad_z_r(i,j ,k+1)+adfac1+ad_cff3
355 & (z_r(i,j,k+1)-z_r(i,j-1,k+1)- &
356 & z_r(i,j,k )+z_r(i,j-1,k ))*ad_cff4
368 adfac1=(1.0_r8+gamma)*ad_cff1
369 adfac2=(1.0_r8-gamma)*ad_cff1
370 ad_rho(i,j-1,k )=ad_rho(i,j-1,k )-adfac2-ad_cff2
371 ad_rho(i,j ,k )=ad_rho(i,j ,k )+adfac2-ad_cff2
372 ad_rho(i,j-1,k+1)=ad_rho(i,j-1,k+1)-adfac1+ad_cff2
373 ad_rho(i,j ,k+1)=ad_rho(i,j ,k+1)+adfac1+ad_cff2
375 & (rho(i,j,k+1)-rho(i,j-1,k+1)- &
376 & rho(i,j,k )+rho(i,j-1,k ))*ad_cff1
380 cff1=1.0_r8/((z_r(i,j ,k+1)-z_r(i,j ,k))* &
381 & (z_r(i,j-1,k+1)-z_r(i,j-1,k)))
382 cff2=z_r(i,j ,k )-z_r(i,j-1,k )+ &
383 & z_r(i,j ,k+1)-z_r(i,j-1,k+1)
384 cff3=z_r(i,j ,k+1)-z_r(i,j ,k )- &
385 & z_r(i,j-1,k+1)+z_r(i,j-1,k )
391 adfac=0.125_r8*ad_gamma
393 ad_cff3=ad_cff3+cff2*adfac1
394 ad_cff2=ad_cff2+cff3*adfac1
395 ad_cff1=ad_cff1+cff2*cff3*adfac
402 ad_z_r(i,j-1,k )=ad_z_r(i,j-1,k )-ad_cff2+ad_cff3
403 ad_z_r(i,j ,k )=ad_z_r(i,j ,k )+ad_cff2-ad_cff3
404 ad_z_r(i,j-1,k+1)=ad_z_r(i,j-1,k+1)-ad_cff2-ad_cff3
405 ad_z_r(i,j ,k+1)=ad_z_r(i,j ,k+1)+ad_cff2+ad_cff3
413 adfac=-cff1*cff1*ad_cff1
414 adfac1=adfac*(z_r(i,j-1,k+1)-z_r(i,j-1,k))
415 adfac2=adfac*(z_r(i,j ,k+1)-z_r(i,j ,k))
416 ad_z_r(i,j-1,k )=ad_z_r(i,j-1,k )-adfac2
417 ad_z_r(i,j ,k )=ad_z_r(i,j ,k )-adfac1
418 ad_z_r(i,j-1,k+1)=ad_z_r(i,j-1,k+1)+adfac2
419 ad_z_r(i,j ,k+1)=ad_z_r(i,j ,k+1)+adfac1
423 cff1=rho(i,j,k+1)-rho(i,j-1,k+1)+ &
424 & rho(i,j,k )-rho(i,j-1,k )
425 cff2=rho(i,j,k+1)+rho(i,j-1,k+1)- &
426 & rho(i,j,k )-rho(i,j-1,k )
427 cff3=z_r(i,j,k+1)+z_r(i,j-1,k+1)- &
428 & z_r(i,j,k )-z_r(i,j-1,k )
429 cff4=z_r(i,j,k+1)-z_r(i,j-1,k+1)+ &
430 & z_r(i,j,k )-z_r(i,j-1,k )
438 adfac=fac3*ad_phie(i)
439 ad_cff1=ad_cff1+cff3*adfac
440 ad_cff2=ad_cff2-cff4*adfac
441 ad_cff3=ad_cff3+cff1*adfac
442 ad_cff4=ad_cff4-cff2*adfac
448 ad_z_r(i,j-1,k )=ad_z_r(i,j-1,k )-ad_cff3-ad_cff4
449 ad_z_r(i,j ,k )=ad_z_r(i,j ,k )-ad_cff3+ad_cff4
450 ad_z_r(i,j-1,k+1)=ad_z_r(i,j-1,k+1)+ad_cff3-ad_cff4
451 ad_z_r(i,j ,k+1)=ad_z_r(i,j ,k+1)+ad_cff3+ad_cff4
459 ad_rho(i,j-1,k )=ad_rho(i,j-1,k )-ad_cff1-ad_cff2
460 ad_rho(i,j ,k )=ad_rho(i,j ,k )+ad_cff1-ad_cff2
461 ad_rho(i,j-1,k+1)=ad_rho(i,j-1,k+1)-ad_cff1+ad_cff2
462 ad_rho(i,j ,k+1)=ad_rho(i,j ,k+1)+ad_cff1+ad_cff2
472#ifdef TIDE_GENERATING_FORCES
473 cff1=z_w(i,j ,n(ng))-eq_tide(i,j )-z_r(i,j ,n(ng))+ &
474 & z_w(i,j-1,n(ng))-eq_tide(i,j-1)-z_r(i,j-1,n(ng))
476 cff1=z_w(i,j ,n(ng))-z_r(i,j ,n(ng))+ &
477 & z_w(i,j-1,n(ng))-z_r(i,j-1,n(ng))
479 phie(i)=fac1*(rho(i,j,n(ng))-rho(i,j-1,n(ng)))*cff1
481 phie(i)=phie(i)+fac*(pair(i,j)-pair(i,j-1))
485 & (fac2+fac1*(rho(i,j,n(ng))+rho(i,j-1,n(ng))))* &
486 & (z_w(i,j,n(ng))-z_w(i,j-1,n(ng)))
488# ifdef DIAGNOSTICS_UV
497 adfac=-0.5_r8*om_v(i,j)*ad_rv(i,j,n(ng),nrhs)
499 ad_phie(i)=ad_phie(i)+(hz(i,j ,n(ng))+ &
500 & hz(i,j-1,n(ng)))*adfac
501 ad_hz(i,j-1,n(ng))=ad_hz(i,j-1,n(ng))+adfac1
502 ad_hz(i,j ,n(ng))=ad_hz(i,j ,n(ng))+adfac1
503 ad_rv(i,j,n(ng),nrhs)=0.0
511 adfac1=fac1*(z_w(i,j,n(ng))-z_w(i,j-1,n(ng)))* &
513 adfac2=(fac2+fac1*(rho(i,j,n(ng))+rho(i,j-1,n(ng))))* &
515 ad_rho(i,j-1,n(ng))=ad_rho(i,j-1,n(ng))+adfac1
516 ad_rho(i,j ,n(ng))=ad_rho(i,j ,n(ng))+adfac1
517 ad_z_w(i,j-1,n(ng))=ad_z_w(i,j-1,n(ng))-adfac2
518 ad_z_w(i,j ,n(ng))=ad_z_w(i,j ,n(ng))+adfac2
524 adfac=fac1*ad_phie(i)
526 ad_rho(i,j-1,n(ng))=ad_rho(i,j-1,n(ng))-adfac1
527 ad_rho(i,j ,n(ng))=ad_rho(i,j ,n(ng))+adfac1
529 & (rho(i,j,n(ng))-rho(i,j-1,n(ng)))*adfac
531#ifdef TIDE_GENERATING_FORCES
537 ad_eq_tide(i,j-1)=ad_eq_tide(i,j-1)-ad_cff1
538 ad_eq_tide(i,j )=ad_eq_tide(i,j )-ad_cff1
539 ad_z_r(i,j-1,n(ng))=ad_z_r(i,j-1,n(ng))-ad_cff1
540 ad_z_r(i,j ,n(ng))=ad_z_r(i,j ,n(ng))-ad_cff1
541 ad_z_w(i,j-1,n(ng))=ad_z_w(i,j-1,n(ng))+ad_cff1
542 ad_z_w(i,j ,n(ng))=ad_z_w(i,j ,n(ng))+ad_cff1
548 ad_z_r(i,j-1,n(ng))=ad_z_r(i,j-1,n(ng))-ad_cff1
549 ad_z_r(i,j ,n(ng))=ad_z_r(i,j ,n(ng))-ad_cff1
550 ad_z_w(i,j-1,n(ng))=ad_z_w(i,j-1,n(ng))+ad_cff1
551 ad_z_w(i,j ,n(ng))=ad_z_w(i,j ,n(ng))+ad_cff1
568#ifdef TIDE_GENERATING_FORCES
569 cff1=z_w(i ,j,n(ng))-eq_tide(i ,j)-z_r(i ,j,n(ng))+ &
570 & z_w(i-1,j,n(ng))-eq_tide(i-1,j)-z_r(i-1,j,n(ng))
572 cff1=z_w(i ,j,n(ng))-z_r(i ,j,n(ng))+ &
573 & z_w(i-1,j,n(ng))-z_r(i-1,j,n(ng))
575 phix(i)=fac1*(rho(i,j,n(ng))-rho(i-1,j,n(ng)))*cff1
577 phix(i)=phix(i)+fac*(pair(i,j)-pair(i-1,j))
581 & (fac2+fac1*(rho(i,j,n(ng))+rho(i-1,j,n(ng))))* &
582 & (z_w(i,j,n(ng))-z_w(i-1,j,n(ng)))
588 cff1=1.0_r8/((z_r(i ,j,kk+1)-z_r(i ,j,kk))* &
589 & (z_r(i-1,j,kk+1)-z_r(i-1,j,kk)))
590 cff2=z_r(i ,j,kk )-z_r(i-1,j,kk )+ &
591 & z_r(i ,j,kk+1)-z_r(i-1,j,k+1)
592 cff3=z_r(i ,j,kk+1)-z_r(i ,j,kk )- &
593 & z_r(i-1,j,kk+1)+z_r(i-1,j,kk )
594 gamma=0.125_r8*cff1*cff2*cff3
596 cff1=(1.0_r8+gamma)*(rho(i,j,kk+1)-rho(i-1,j,kk+1))+ &
597 & (1.0_r8-gamma)*(rho(i,j,kk )-rho(i-1,j,kk ))
598 cff2=rho(i,j,kk+1)+rho(i-1,j,kk+1)- &
599 & rho(i,j,kk )-rho(i-1,j,kk )
600 cff3=z_r(i,j,kk+1)+z_r(i-1,j,kk+1)- &
601 & z_r(i,j,kk )-z_r(i-1,j,kk )
602 cff4=(1.0_r8+gamma)*(z_r(i,j,kk+1)-z_r(i-1,j,kk+1))+ &
603 & (1.0_r8-gamma)*(z_r(i,j,kk )-z_r(i-1,j,kk ))
605 & fac3*(cff1*cff3-cff2*cff4)
607 cff1=rho(i,j,kk+1)-rho(i-1,j,kk+1)+ &
608 & rho(i,j,kk )-rho(i-1,j,kk )
609 cff2=rho(i,j,kk+1)+rho(i-1,j,kk+1)- &
610 & rho(i,j,kk )-rho(i-1,j,kk )
611 cff3=z_r(i,j,kk+1)+z_r(i-1,j,kk+1)- &
612 & z_r(i,j,kk )-z_r(i-1,j,kk )
613 cff4=z_r(i,j,kk+1)-z_r(i-1,j,kk+1)+ &
614 & z_r(i,j,kk )-z_r(i-1,j,kk )
616 & fac3*(cff1*cff3-cff2*cff4)
625# ifdef DIAGNOSTICS_UV
634 adfac=-0.5_r8*on_u(i,j)*ad_ru(i,j,k,nrhs)
636 ad_phix(i)=ad_phix(i)+ &
637 & (hz(i,j,k)+hz(i-1,j,k))*adfac
638 ad_hz(i-1,j,k)=ad_hz(i-1,j,k)+adfac1
639 ad_hz(i ,j,k)=ad_hz(i ,j,k)+adfac1
640 ad_ru(i,j,k,nrhs)=0.0
642 cff1=1.0_r8/((z_r(i ,j,k+1)-z_r(i ,j,k))* &
643 & (z_r(i-1,j,k+1)-z_r(i-1,j,k)))
644 cff2=z_r(i ,j,k )-z_r(i-1,j,k )+ &
645 & z_r(i ,j,k+1)-z_r(i-1,j,k+1)
646 cff3=z_r(i ,j,k+1)-z_r(i ,j,k )- &
647 & z_r(i-1,j,k+1)+z_r(i-1,j,k )
648 gamma=0.125_r8*cff1*cff2*cff3
650 cff1=(1.0_r8+gamma)*(rho(i,j,k+1)-rho(i-1,j,k+1))+ &
651 & (1.0_r8-gamma)*(rho(i,j,k )-rho(i-1,j,k ))
652 cff2=rho(i,j,k+1)+rho(i-1,j,k+1)- &
653 & rho(i,j,k )-rho(i-1,j,k )
654 cff3=z_r(i,j,k+1)+z_r(i-1,j,k+1)- &
655 & z_r(i,j,k )-z_r(i-1,j,k )
656 cff4=(1.0_r8+gamma)*(z_r(i,j,k+1)-z_r(i-1,j,k+1))+ &
657 & (1.0_r8-gamma)*(z_r(i,j,k )-z_r(i-1,j,k ))
664 adfac=fac3*ad_phix(i)
665 ad_cff1=ad_cff1+cff3*adfac
666 ad_cff2=ad_cff2-cff4*adfac
667 ad_cff3=ad_cff3+cff1*adfac
668 ad_cff4=ad_cff4-cff2*adfac
678 adfac1=(1.0_r8+gamma)*ad_cff4
679 adfac2=(1.0_r8-gamma)*ad_cff4
680 ad_z_r(i-1,j,k )=ad_z_r(i-1,j,k )-adfac2-ad_cff3
681 ad_z_r(i ,j,k )=ad_z_r(i ,j,k )+adfac2-ad_cff3
682 ad_z_r(i-1,j,k+1)=ad_z_r(i-1,j,k+1)-adfac1+ad_cff3
683 ad_z_r(i ,j,k+1)=ad_z_r(i ,j,k+1)+adfac1+ad_cff3
685 & (z_r(i,j,k+1)-z_r(i-1,j,k+1)- &
686 & z_r(i,j,k )+z_r(i-1,j,k ))*ad_cff4
698 adfac1=(1.0_r8+gamma)*ad_cff1
699 adfac2=(1.0_r8-gamma)*ad_cff1
700 ad_rho(i-1,j,k )=ad_rho(i-1,j,k )-adfac2-ad_cff2
701 ad_rho(i ,j,k )=ad_rho(i ,j,k )+adfac2-ad_cff2
702 ad_rho(i-1,j,k+1)=ad_rho(i-1,j,k+1)-adfac1+ad_cff2
703 ad_rho(i ,j,k+1)=ad_rho(i ,j,k+1)+adfac1+ad_cff2
705 & (rho(i,j,k+1)-rho(i-1,j,k+1)- &
706 & rho(i,j,k )+rho(i-1,j,k ))*ad_cff1
710 cff1=1.0_r8/((z_r(i ,j,k+1)-z_r(i ,j,k))* &
711 & (z_r(i-1,j,k+1)-z_r(i-1,j,k)))
712 cff2=z_r(i ,j,k )-z_r(i-1,j,k )+ &
713 & z_r(i ,j,k+1)-z_r(i-1,j,k+1)
714 cff3=z_r(i ,j,k+1)-z_r(i ,j,k )- &
715 & z_r(i-1,j,k+1)+z_r(i-1,j,k )
721 adfac=0.125_r8*ad_gamma
723 ad_cff3=ad_cff3+cff2*adfac1
724 ad_cff2=ad_cff2+cff3*adfac1
725 ad_cff1=ad_cff1+cff2*cff3*adfac
732 ad_z_r(i-1,j,k )=ad_z_r(i-1,j,k )-ad_cff2+ad_cff3
733 ad_z_r(i ,j,k )=ad_z_r(i ,j,k )+ad_cff2-ad_cff3
734 ad_z_r(i-1,j,k+1)=ad_z_r(i-1,j,k+1)-ad_cff2-ad_cff3
735 ad_z_r(i ,j,k+1)=ad_z_r(i ,j,k+1)+ad_cff2+ad_cff3
743 adfac=-cff1*cff1*ad_cff1
744 adfac1=adfac*(z_r(i-1,j,k+1)-z_r(i-1,j,k))
745 adfac2=adfac*(z_r(i ,j,k+1)-z_r(i ,j,k))
746 ad_z_r(i-1,j,k )=ad_z_r(i-1,j,k )-adfac2
747 ad_z_r(i ,j,k )=ad_z_r(i ,j,k )-adfac1
748 ad_z_r(i-1,j,k+1)=ad_z_r(i-1,j,k+1)+adfac2
749 ad_z_r(i ,j,k+1)=ad_z_r(i ,j,k+1)+adfac1
752 cff1=rho(i,j,k+1)-rho(i-1,j,k+1)+ &
753 & rho(i,j,k )-rho(i-1,j,k )
754 cff2=rho(i,j,k+1)+rho(i-1,j,k+1)- &
755 & rho(i,j,k )-rho(i-1,j,k )
756 cff3=z_r(i,j,k+1)+z_r(i-1,j,k+1)- &
757 & z_r(i,j,k )-z_r(i-1,j,k )
758 cff4=z_r(i,j,k+1)-z_r(i-1,j,k+1)+ &
759 & z_r(i,j,k )-z_r(i-1,j,k )
766 adfac=fac3*ad_phix(i)
767 ad_cff1=ad_cff1+cff3*adfac
768 ad_cff2=ad_cff2-cff4*adfac
769 ad_cff3=ad_cff3+cff1*adfac
770 ad_cff4=ad_cff4-cff2*adfac
776 ad_z_r(i-1,j,k )=ad_z_r(i-1,j,k )-ad_cff3-ad_cff4
777 ad_z_r(i ,j,k )=ad_z_r(i ,j,k )-ad_cff3+ad_cff4
778 ad_z_r(i-1,j,k+1)=ad_z_r(i-1,j,k+1)+ad_cff3-ad_cff4
779 ad_z_r(i ,j,k+1)=ad_z_r(i ,j,k+1)+ad_cff3+ad_cff4
787 ad_rho(i-1,j,k )=ad_rho(i-1,j,k )-ad_cff2-ad_cff1
788 ad_rho(i ,j,k )=ad_rho(i ,j,k )-ad_cff2+ad_cff1
789 ad_rho(i-1,j,k+1)=ad_rho(i-1,j,k+1)+ad_cff2-ad_cff1
790 ad_rho(i ,j,k+1)=ad_rho(i ,j,k+1)+ad_cff2+ad_cff1
800#ifdef TIDE_GENERATING_FORCES
801 cff1=z_w(i ,j,n(ng))-eq_tide(i ,j)-z_r(i ,j,n(ng))+ &
802 & z_w(i-1,j,n(ng))-eq_tide(i-1,j)-z_r(i-1,j,n(ng))
804 cff1=z_w(i ,j,n(ng))-z_r(i ,j,n(ng))+ &
805 & z_w(i-1,j,n(ng))-z_r(i-1,j,n(ng))
807 phix(i)=fac1*(rho(i,j,n(ng))-rho(i-1,j,n(ng)))*cff1
809 phix(i)=phix(i)+fac*(pair(i,j)-pair(i-1,j))
813 & (fac2+fac1*(rho(i,j,n(ng))+rho(i-1,j,n(ng))))* &
814 & (z_w(i,j,n(ng))-z_w(i-1,j,n(ng)))
825 adfac=-0.5_r8*on_u(i,j)*ad_ru(i,j,n(ng),nrhs)
827 ad_phix(i)=ad_phix(i)+(hz(i ,j,n(ng))+ &
828 & hz(i-1,j,n(ng)))*adfac
829 ad_hz(i-1,j,n(ng))=ad_hz(i-1,j,n(ng))+adfac1
830 ad_hz(i ,j,n(ng))=ad_hz(i ,j,n(ng))+adfac1
831 ad_ru(i,j,n(ng),nrhs)=0.0_r8
839 adfac1=fac1*(z_w(i,j,n(ng))-z_w(i-1,j,n(ng)))* &
841 adfac2=(fac2+fac1*(rho(i,j,n(ng))+rho(i-1,j,n(ng))))* &
843 ad_rho(i-1,j,n(ng))=ad_rho(i-1,j,n(ng))+adfac1
844 ad_rho(i ,j,n(ng))=ad_rho(i ,j,n(ng))+adfac1
845 ad_z_w(i-1,j,n(ng))=ad_z_w(i-1,j,n(ng))-adfac2
846 ad_z_w(i ,j,n(ng))=ad_z_w(i ,j,n(ng))+adfac2
852 adfac=fac1*ad_phix(i)
854 ad_rho(i-1,j,n(ng))=ad_rho(i-1,j,n(ng))-adfac1
855 ad_rho(i ,j,n(ng))=ad_rho(i ,j,n(ng))+adfac1
857 & (rho(i,j,n(ng))-rho(i-1,j,n(ng)))*adfac
859#ifdef TIDE_GENERATING_FORCES
865 ad_eq_tide(i-1,j)=ad_eq_tide(i-1,j)-ad_cff1
866 ad_eq_tide(i ,j)=ad_eq_tide(i ,j)-ad_cff1
867 ad_z_r(i-1,j,n(ng))=ad_z_r(i-1,j,n(ng))-ad_cff1
868 ad_z_r(i ,j,n(ng))=ad_z_r(i ,j,n(ng))-ad_cff1
869 ad_z_w(i-1,j,n(ng))=ad_z_w(i-1,j,n(ng))+ad_cff1
870 ad_z_w(i ,j,n(ng))=ad_z_w(i ,j,n(ng))+ad_cff1
876 ad_z_r(i-1,j,n(ng))=ad_z_r(i-1,j,n(ng))-ad_cff1
877 ad_z_r(i ,j,n(ng))=ad_z_r(i ,j,n(ng))-ad_cff1
878 ad_z_w(i-1,j,n(ng))=ad_z_w(i-1,j,n(ng))+ad_cff1
879 ad_z_w(i ,j,n(ng))=ad_z_w(i ,j,n(ng))+ad_cff1