150 & LBi, UBi, LBj, UBj, &
151 & IminS, ImaxS, JminS, JmaxS, &
155 & nrhs, nstp, nnew, &
157 & rmask, umask, vmask, &
158# if defined SOLAR_SOURCE && defined WET_DRY
171 & ad_btflx, ad_bustr, ad_bvstr, &
172 & ad_stflx, ad_sustr, ad_svstr, &
178# ifdef LMD_NONLOCAL_NOT_YET
182 & ad_ubar, ad_vbar, &
186# ifdef DIAGNOSTICS_TS
189# ifdef DIAGNOSTICS_UV
190!! & DiaU3wrk, DiaV3wrk, &
210 integer,
intent(in) :: ng, tile
211 integer,
intent(in) :: LBi, UBi, LBj, UBj
212 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
214 integer,
intent(in) :: kstp, knew
216 integer,
intent(in) :: nrhs, nstp, nnew
220 real(r8),
intent(in) :: rmask(LBi:,LBj:)
221 real(r8),
intent(in) :: umask(LBi:,LBj:)
222 real(r8),
intent(in) :: vmask(LBi:,LBj:)
223# if defined SOLAR_SOURCE && defined WET_DRY
224 real(r8),
intent(in) :: rmask_wet(LBi:,LBj:)
228 real(r8),
intent(in) :: om_v(LBi:,LBj:)
229 real(r8),
intent(in) :: on_u(LBi:,LBj:)
231 real(r8),
intent(in) :: pm(LBi:,LBj:)
232 real(r8),
intent(in) :: pn(LBi:,LBj:)
233 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
234 real(r8),
intent(in) :: Huon(LBi:,LBj:,:)
235 real(r8),
intent(in) :: Hvom(LBi:,LBj:,:)
236 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
237 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
239 real(r8),
intent(in) :: srflx(LBi:,LBj:)
242 real(r8),
intent(in) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
244 real(r8),
intent(in) :: Akt(LBi:,LBj:,0:,:)
246 real(r8),
intent(in) :: Akv(LBi:,LBj:,0:)
248 real(r8),
intent(in) :: ad_ubar(LBi:,LBj:,:)
249 real(r8),
intent(in) :: ad_vbar(LBi:,LBj:,:)
251 real(r8),
intent(in) :: W(LBi:,LBj:,0:)
253 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
255 real(r8),
intent(in) :: t(LBi:,LBj:,:,:,:)
257 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
258 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
260# ifdef DIAGNOSTICS_TS
263# ifdef DIAGNOSTICS_UV
269 real(r8),
intent(inout) :: ad_Hz(LBi:,LBj:,:)
270 real(r8),
intent(inout) :: ad_Huon(LBi:,LBj:,:)
271 real(r8),
intent(inout) :: ad_Hvom(LBi:,LBj:,:)
272 real(r8),
intent(inout) :: ad_z_r(LBi:,LBj:,:)
273 real(r8),
intent(inout) :: ad_z_w(LBi:,LBj:,0:)
274 real(r8),
intent(inout) :: ad_btflx(LBi:,LBj:,:)
275 real(r8),
intent(inout) :: ad_bustr(LBi:,LBj:)
276 real(r8),
intent(inout) :: ad_bvstr(LBi:,LBj:)
277 real(r8),
intent(inout) :: ad_stflx(LBi:,LBj:,:)
278 real(r8),
intent(inout) :: ad_sustr(LBi:,LBj:)
279 real(r8),
intent(inout) :: ad_svstr(LBi:,LBj:)
280 real(r8),
intent(inout) :: ad_ru(LBi:,LBj:,0:,:)
281 real(r8),
intent(inout) :: ad_rv(LBi:,LBj:,0:,:)
282# ifdef LMD_NONLOCAL_NOT_YET
283 real(r8),
intent(inout) :: ad_ghats(LBi:,LBj:,0:,:)
286 real(r8),
intent(inout) :: ad_Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
288 real(r8),
intent(inout) :: ad_Akt(LBi:,LBj:,0:,:)
290 real(r8),
intent(inout) :: ad_Akv(LBi:,LBj:,0:)
291 real(r8),
intent(inout) :: ad_W(LBi:,LBj:,0:)
293 real(r8),
intent(inout) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
295 real(r8),
intent(inout) :: ad_t(LBi:,LBj:,:,:,:)
297 real(r8),
intent(inout) :: ad_u(LBi:,LBj:,:,:)
298 real(r8),
intent(inout) :: ad_v(LBi:,LBj:,:,:)
303 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
304 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
305 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
306# if defined SOLAR_SOURCE && defined WET_DRY
307 real(r8),
intent(in) :: rmask_wet(LBi:UBi,LBj:UBj)
311 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
312 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
314 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
315 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
316 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
317 real(r8),
intent(in) :: Huon(LBi:UBi,LBj:UBj,N(ng))
318 real(r8),
intent(in) :: Hvom(LBi:UBi,LBj:UBj,N(ng))
319 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
320 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
322 real(r8),
intent(in) :: srflx(LBi:UBi,LBj:UBj)
324 real(r8),
intent(in) :: Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
325 real(r8),
intent(in) :: Akv(LBi:UBi,LBj:UBj,0:N(ng))
327 real(r8),
intent(in) :: ad_ubar(LBi:UBi,LBj:UBj,:)
328 real(r8),
intent(in) :: ad_vbar(LBi:UBi,LBj:UBj,:)
330 real(r8),
intent(in) :: W(LBi:UBi,LBj:UBj,0:N(ng))
331 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
332 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
333 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
335# ifdef DIAGNOSTICS_TS
339# ifdef DIAGNOSTICS_UV
345 real(r8),
intent(inout) :: ad_Hz(LBi:UBi,LBj:UBj,N(ng))
346 real(r8),
intent(inout) :: ad_Huon(LBi:UBi,LBj:UBj,N(ng))
347 real(r8),
intent(inout) :: ad_Hvom(LBi:UBi,LBj:UBj,N(ng))
348 real(r8),
intent(inout) :: ad_z_r(LBi:UBi,LBj:UBj,N(ng))
349 real(r8),
intent(inout) :: ad_z_w(LBi:UBi,LBj:UBj,0:N(ng))
350 real(r8),
intent(inout) :: ad_btflx(LBi:UBi,LBj:UBj,NT(ng))
351 real(r8),
intent(inout) :: ad_bustr(LBi:UBi,LBj:UBj)
352 real(r8),
intent(inout) :: ad_bvstr(LBi:UBi,LBj:UBj)
353 real(r8),
intent(inout) :: ad_stflx(LBi:UBi,LBj:UBj,NT(ng))
354 real(r8),
intent(inout) :: ad_sustr(LBi:UBi,LBj:UBj)
355 real(r8),
intent(inout) :: ad_svstr(LBi:UBi,LBj:UBj)
356 real(r8),
intent(inout) :: ad_ru(LBi:UBi,LBj:UBj,0:N(ng),2)
357 real(r8),
intent(inout) :: ad_rv(LBi:UBi,LBj:UBj,0:N(ng),2)
358# ifdef LMD_NONLOCAL_NOT_YET
359 real(r8),
intent(inout) :: ad_ghats(LBi:UBi,LBj:UBj,0:N(ng),NAT)
361 real(r8),
intent(inout) :: ad_Akt(LBi:UBi,LBj:UBj,0:N(ng),NAT)
362 real(r8),
intent(inout) :: ad_Akv(LBi:UBi,LBj:UBj,0:N(ng))
363 real(r8),
intent(inout) :: ad_W(LBi:UBi,LBj:UBj,0:N(ng))
364 real(r8),
intent(inout) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
365 real(r8),
intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
366 real(r8),
intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
371 integer :: Isrc, Jsrc
372 integer :: i, ic, indx, is, itrc, j, k, ltrc
373# if defined AGE_MEAN && defined T_PASSIVE
376# if defined DIAGNOSTICS_TS || defined DIAGNOSTICS_UV
379 real(r8),
parameter :: eps = 1.0e-16_r8
381 real(r8) :: cff, cff1, cff2, cff3, cff4
382 real(r8) :: ad_cff, ad_cff1, ad_cff2, ad_cff3, ad_cff4
383 real(r8) :: adfac, adfac1, adfac2, adfac3
386 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: CF
387 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: DC
388 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: FC
390 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: ad_CF
391 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: ad_DC
392 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: ad_FC
395 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: ad_swdk
398 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FE
399 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FX
400 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: curv
401 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
403 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FE
404 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FX
405 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_curv
406 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_grad
408# include "set_bounds.h"
436 ad_swdk(i,j,k)=0.0_r8
463 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
481 & lbi, ubi, lbj, ubj, 1, n(ng), &
482 & ad_t(:,:,:,3,itrc))
491 & lbi, ubi, lbj, ubj, n(ng), nt(ng), &
492 & imins, imaxs, jmins, jmaxs, &
502 j_loop2 :
DO j=jstr,jend
509 dc(i,0)=cff*(pm(i,j)+pm(i,j-1))*(pn(i,j)+pn(i,j-1))
514# ifdef DIAGNOSTICS_UV
523 ad_cff1=ad_cff1+ad_v(i,j,k,nnew)
524 ad_cff2=ad_cff2+ad_v(i,j,k,nnew)
525 ad_v(i,j,k,nnew)=0.0_r8
528 ad_fc(i,k-1)=ad_fc(i,k-1)-ad_cff2
529 ad_fc(i,k )=ad_fc(i,k )+ad_cff2
537 adfac1=adfac*v(i,j,k,nstp)
538 ad_v(i,j,k,nstp)=ad_v(i,j,k,nstp)+ &
539 & (hz(i,j,k)+hz(i,j-1,k))*adfac
540 ad_hz(i,j-1,k)=ad_hz(i,j-1,k)+adfac1
541 ad_hz(i,j ,k)=ad_hz(i,j ,k)+adfac1
549# ifdef DIAGNOSTICS_UV
564 ad_rv(i,j,k,indx)=ad_rv(i,j,k,indx)- &
565 & cff3*ad_v(i,j,k,nnew)
566 ad_cff1=ad_cff1+ad_v(i,j,k,nnew)
567 ad_cff2=ad_cff2+ad_v(i,j,k,nnew)
568 ad_v(i,j,k,nnew)=0.0_r8
571 ad_fc(i,k-1)=ad_fc(i,k-1)-ad_cff2
572 ad_fc(i,k )=ad_fc(i,k )+ad_cff2
580 adfac1=adfac*v(i,j,k,nstp)
581 ad_hz(i,j-1,k)=ad_hz(i,j-1,k)+adfac1
582 ad_hz(i,j ,k)=ad_hz(i,j ,k)+adfac1
583 ad_v(i,j,k,nstp)=ad_v(i,j,k,nstp)+ &
584 & (hz(i,j,k)+hz(i,j-1,k))*adfac
593# ifdef DIAGNOSTICS_UV
613 adfac=dc(i,0)*ad_v(i,j,k,nnew)
614 ad_rv(i,j,k,nrhs)=ad_rv(i,j,k,nrhs)+cff1*adfac
615 ad_rv(i,j,k,indx)=ad_rv(i,j,k,indx)-cff2*adfac
616 ad_cff3=ad_cff3+ad_v(i,j,k,nnew)
617 ad_cff4=ad_cff4+ad_v(i,j,k,nnew)
618 ad_v(i,j,k,nnew)=0.0_r8
621 ad_fc(i,k-1)=ad_fc(i,k-1)-ad_cff4
622 ad_fc(i,k )=ad_fc(i,k )+ad_cff4
630 adfac1=adfac*v(i,j,k,nstp)
631 ad_hz(i,j-1,k)=ad_hz(i,j-1,k)+adfac1
632 ad_hz(i,j ,k)=ad_hz(i,j ,k)+adfac1
633 ad_v(i,j,k,nstp)=ad_v(i,j,k,nstp)+ &
634 & (hz(i,j,k)+hz(i,j-1,k))*adfac
646 ad_fc(i,n(ng))=0.0_r8
653 ad_svstr(i,j)=ad_svstr(i,j)+
dt(ng)*ad_fc(i,n(ng))
654 ad_fc(i,n(ng))=0.0_r8
657 ad_bvstr(i,j)=ad_bvstr(i,j)+
dt(ng)*ad_fc(i,0)
669 cff=1.0_r8/(z_r(i,j,k+1)+z_r(i,j-1,k+1)- &
670 & z_r(i,j,k )-z_r(i,j-1,k ))
679 adfac=cff3*ad_fc(i,k)
681 adfac2=adfac1*(akv(i,j,k)+akv(i,j-1,k))
682 adfac3=adfac1*(v(i,j,k+1,nstp)-v(i,j,k,nstp))
683 ad_v(i,j,k ,nstp)=ad_v(i,j,k ,nstp)-adfac2
684 ad_v(i,j,k+1,nstp)=ad_v(i,j,k+1,nstp)+adfac2
685 ad_akv(i,j-1,k)=ad_akv(i,j-1,k)+adfac3
686 ad_akv(i,j ,k)=ad_akv(i,j ,k)+adfac3
688 & (v(i,j,k+1,nstp)-v(i,j,k,nstp))* &
689 & (akv(i,j,k)+akv(i,j-1,k))*adfac
694 adfac=-cff*cff*ad_cff
695 ad_z_r(i,j-1,k )=ad_z_r(i,j-1,k )-adfac
696 ad_z_r(i,j ,k )=ad_z_r(i,j ,k )-adfac
697 ad_z_r(i,j-1,k+1)=ad_z_r(i,j-1,k+1)+adfac
698 ad_z_r(i,j ,k+1)=ad_z_r(i,j ,k+1)+adfac
712 dc(i,0)=cff*(pm(i,j)+pm(i-1,j))*(pn(i,j)+pn(i-1,j))
717# ifdef DIAGNOSTICS_UV
726 ad_cff1=ad_cff1+ad_u(i,j,k,nnew)
727 ad_cff2=ad_cff2+ad_u(i,j,k,nnew)
728 ad_u(i,j,k,nnew)=0.0_r8
731 ad_fc(i,k-1)=ad_fc(i,k-1)-ad_cff2
732 ad_fc(i,k )=ad_fc(i,k )+ad_cff2
740 adfac1=adfac*u(i,j,k,nstp)
741 ad_hz(i-1,j,k)=ad_hz(i-1,j,k)+adfac1
742 ad_hz(i ,j,k)=ad_hz(i ,j,k)+adfac1
743 ad_u(i,j,k,nstp)=ad_u(i,j,k,nstp)+ &
744 & (hz(i,j,k)+hz(i-1,j,k))*adfac
752# ifdef DIAGNOSTICS_UV
767 ad_ru(i,j,k,indx)=ad_ru(i,j,k,indx)- &
768 & cff3*ad_u(i,j,k,nnew)
769 ad_cff1=ad_cff1+ad_u(i,j,k,nnew)
770 ad_cff2=ad_cff2+ad_u(i,j,k,nnew)
771 ad_u(i,j,k,nnew)=0.0_r8
774 ad_fc(i,k-1)=ad_fc(i,k-1)-ad_cff2
775 ad_fc(i,k )=ad_fc(i,k )+ad_cff2
783 adfac1=adfac*u(i,j,k,nstp)
784 ad_hz(i-1,j,k)=ad_hz(i-1,j,k)+adfac1
785 ad_hz(i ,j,k)=ad_hz(i ,j,k)+adfac1
786 ad_u(i,j,k,nstp)=ad_u(i,j,k,nstp)+ &
787 & (hz(i,j,k)+hz(i-1,j,k))*adfac
796# ifdef DIAGNOSTICS_UV
816 adfac=dc(i,0)*ad_u(i,j,k,nnew)
817 ad_ru(i,j,k,nrhs)=ad_ru(i,j,k,nrhs)+cff1*adfac
818 ad_ru(i,j,k,indx)=ad_ru(i,j,k,indx)-cff2*adfac
819 ad_cff3=ad_cff3+ad_u(i,j,k,nnew)
820 ad_cff4=ad_cff4+ad_u(i,j,k,nnew)
821 ad_u(i,j,k,nnew)=0.0_r8
824 ad_fc(i,k-1)=ad_fc(i,k-1)-ad_cff4
825 ad_fc(i,k )=ad_fc(i,k )+ad_cff4
833 adfac1=adfac*u(i,j,k,nstp)
834 ad_hz(i-1,j,k)=ad_hz(i-1,j,k)+adfac1
835 ad_hz(i ,j,k)=ad_hz(i ,j,k)+adfac1
836 ad_u(i,j,k,nstp)=ad_u(i,j,k,nstp)+ &
837 & (hz(i,j,k)+hz(i-1,j,k))*adfac
849 ad_fc(i,n(ng))=0.0_r8
856 ad_sustr(i,j)=ad_sustr(i,j)+
dt(ng)*ad_fc(i,n(ng))
857 ad_fc(i,n(ng))=0.0_r8
860 ad_bustr(i,j)=ad_bustr(i,j)+
dt(ng)*ad_fc(i,0)
872 cff=1.0/(z_r(i,j,k+1)+z_r(i-1,j,k+1)- &
873 & z_r(i,j,k )-z_r(i-1,j,k ))
882 adfac=cff3*ad_fc(i,k)
884 adfac2=adfac1*(akv(i,j,k)+akv(i-1,j,k))
885 adfac3=adfac1*(u(i,j,k+1,nstp)-u(i,j,k,nstp))
886 ad_u(i,j,k ,nstp)=ad_u(i,j,k ,nstp)-adfac2
887 ad_u(i,j,k+1,nstp)=ad_u(i,j,k+1,nstp)+adfac2
888 ad_akv(i-1,j,k)=ad_akv(i-1,j,k)+adfac3
889 ad_akv(i ,j,k)=ad_akv(i ,j,k)+adfac3
891 & (u(i,j,k+1,nstp)-u(i,j,k,nstp))* &
892 & (akv(i,j,k)+akv(i-1,j,k))*adfac
897 adfac=-cff*cff*ad_cff
898 ad_z_r(i-1,j,k )=ad_z_r(i-1,j,k )-adfac
899 ad_z_r(i ,j,k )=ad_z_r(i ,j,k )-adfac
900 ad_z_r(i-1,j,k+1)=ad_z_r(i-1,j,k+1)+adfac
901 ad_z_r(i ,j,k+1)=ad_z_r(i ,j,k+1)+adfac
928# ifdef DIAGNOSTICS_TS
934 ad_cff1=ad_cff1+ad_t(i,j,k,nnew,itrc)
935 ad_cff2=ad_cff2+ad_t(i,j,k,nnew,itrc)
936 ad_t(i,j,k,nnew,itrc)=0.0_r8
939 ad_fc(i,k-1)=ad_fc(i,k-1)-ad_cff2
940 ad_fc(i,k )=ad_fc(i,k )+ad_cff2
945 ad_t(i,j,k,nstp,itrc)=ad_t(i,j,k,nstp,itrc)+ &
947 ad_hz(i,j,k)=ad_hz(i,j,k)+t(i,j,k,nstp,itrc)*ad_cff1
957 ad_stflx(i,j,itrc)=ad_stflx(i,j,itrc)+
dt(ng)*ad_fc(i,n(ng))
958 ad_fc(i,n(ng))=0.0_r8
961 ad_btflx(i,j,itrc)=ad_btflx(i,j,itrc)+
dt(ng)*ad_fc(i,0)
970 IF (itrc.eq.
itemp)
THEN
975# ifdef WET_DRY_NOT_YET
980 ad_swdk(i,j,k)=ad_swdk(i,j,k)+ &
981 &
dt(ng)*srflx(i,j)* &
982# ifdef WET_DRY_NOT_YET
990# ifdef LMD_NONLOCAL_NOT_YET
997 IF (itrc.le.nat)
THEN
1006 adfac=
dt(ng)*ad_fc(i,k)
1007 ad_ghats(i,j,k,itrc)=ad_ghats(i,j,k,itrc)- &
1008 & akt(i,j,k,itrc)*adfac
1009 ad_akt(i,j,k,itrc)=ad_akt(i,j,k,itrc)- &
1010 & ghats(i,j,k,itrc)*adfac
1025 cff=1.0_r8/(z_r(i,j,k+1)-z_r(i,j,k))
1037 adfac=cff3*ad_fc(i,k)
1039 adfac2=adfac1*akt(i,j,k,ltrc)
1040 ad_akt(i,j,k,ltrc)=ad_akt(i,j,k,ltrc)+ &
1041 & (t(i,j,k+1,nstp,itrc)- &
1042 & t(i,j,k ,nstp,itrc))*adfac1
1043 ad_t(i,j,k ,nstp,itrc)=ad_t(i,j,k ,nstp,itrc)-adfac2
1044 ad_t(i,j,k+1,nstp,itrc)=ad_t(i,j,k+1,nstp,itrc)+adfac2
1046 & (akt(i,j,k,ltrc)* &
1047 & (t(i,j,k+1,nstp,itrc)- &
1048 & t(i,j,k ,nstp,itrc)))*adfac
1052 adfac=-cff*cff*ad_cff
1053 ad_z_r(i,j,k )=ad_z_r(i,j,k )-adfac
1054 ad_z_r(i,j,k+1)=ad_z_r(i,j,k+1)+adfac
1066 j_loop1 :
DO j=jstr,jend
1067 t_loop2 :
DO itrc=1,nt(ng)
1077 fc(i,0)=1.5_r8*t(i,j,1,nstp,itrc)
1080 fc(i,0)=2.0_r8*t(i,j,1,nstp,itrc)
1086 cff=1.0_r8/(2.0_r8*hz(i,j,k)+ &
1087 & hz(i,j,k+1)*(2.0_r8-cf(i,k)))
1088 cf(i,k+1)=cff*hz(i,j,k)
1089 fc(i,k)=cff*(3.0_r8*(hz(i,j,k )*t(i,j,k+1,nstp,itrc)+ &
1090 & hz(i,j,k+1)*t(i,j,k ,nstp,itrc))- &
1091 & hz(i,j,k+1)*fc(i,k-1))
1096 fc(i,n(ng))=(3.0_r8*t(i,j,n(ng),nstp,itrc)- &
1097 & fc(i,n(ng)-1))/(2.0_r8-cf(i,n(ng)))
1099 fc(i,n(ng))=(2.0_r8*t(i,j,n(ng),nstp,itrc)- &
1100 & fc(i,n(ng)-1))/(1.0_r8-cf(i,n(ng)))
1105 fc(i,k)=fc(i,k)-cf(i,k+1)*fc(i,k+1)
1106 fc(i,k+1)=w(i,j,k+1)*fc(i,k+1)
1120 fc(i,k)=t(i,j,k+1,nstp,itrc)- &
1121 & t(i,j,k ,nstp,itrc)
1126 fc(i,n(ng))=fc(i,n(ng)-1)
1130 cff=2.0_r8*fc(i,k)*fc(i,k-1)
1131 IF (cff.gt.eps)
THEN
1132 cf(i,k)=cff/(fc(i,k)+fc(i,k-1))
1142 & 0.5_r8*(t(i,j,k ,nstp,itrc)+ &
1143 & t(i,j,k+1,nstp,itrc)- &
1144 & cff1*(cf(i,k+1)-cf(i,k)))
1160 & 0.5_r8*(t(i,j,k ,nstp,itrc)+ &
1161 & t(i,j,k+1,nstp,itrc))
1177 cff1=max(w(i,j,k),0.0_r8)
1178 cff2=min(w(i,j,k),0.0_r8)
1179 fc(i,k)=cff1*t(i,j,k ,nstp,itrc)+ &
1180 & cff2*t(i,j,k+1,nstp,itrc)
1198 & (cff2*(t(i,j,k ,nstp,itrc)+ &
1199 & t(i,j,k+1,nstp,itrc))- &
1200 & cff3*(t(i,j,k-1,nstp,itrc)+ &
1201 & t(i,j,k+2,nstp,itrc)))
1207 & (cff1*t(i,j,1,nstp,itrc)+ &
1208 & cff2*t(i,j,2,nstp,itrc)- &
1209 & cff3*t(i,j,3,nstp,itrc))
1210 fc(i,n(ng)-1)=w(i,j,n(ng)-1)* &
1211 & (cff1*t(i,j,n(ng) ,nstp,itrc)+ &
1212 & cff2*t(i,j,n(ng)-1,nstp,itrc)- &
1213 & cff3*t(i,j,n(ng)-2,nstp,itrc))
1232 cff=(1.0_r8-gamma)*
dt(ng)
1236 dc(i,k)=1.0_r8/(hz(i,j,k)- &
1237 & cff*pm(i,j)*pn(i,j)* &
1238 & (huon(i+1,j,k)-huon(i,j,k)+ &
1239 & hvom(i,j+1,k)-hvom(i,j,k)+ &
1240 & (w(i,j,k)-w(i,j,k-1))))
1253 cff1=cff*pm(i,j)*pn(i,j)
1261 adfac=dc(i,k)*ad_t(i,j,k,3,itrc)
1263 ad_dc(i,k)=ad_dc(i,k)+ &
1264 & (t(i,j,k,3,itrc)*hz(i,j,k)- &
1265 & cff1*(fc(i,k)-fc(i,k-1)))* &
1266 & ad_t(i,j,k,3,itrc)
1267 ad_fc(i,k-1)=ad_fc(i,k-1)+adfac1
1268 ad_fc(i,k )=ad_fc(i,k )-adfac1
1269 ad_t(i,j,k,3,itrc)=adfac
1286 adfac=-dc(i,k)*dc(i,k)*ad_dc(i,k)
1287 adfac1=adfac*cff*pm(i,j)*pn(i,j)
1288 ad_hz(i,j,k)=ad_hz(i,j,k)+adfac
1289 ad_huon(i ,j,k)=ad_huon(i ,j,k)+adfac1
1290 ad_huon(i+1,j,k)=ad_huon(i+1,j,k)-adfac1
1291 ad_hvom(i,j ,k)=ad_hvom(i,j ,k)+adfac1
1292 ad_hvom(i,j+1,k)=ad_hvom(i,j+1,k)-adfac1
1293 ad_w(i,j,k-1)=ad_w(i,j,k-1)+adfac1
1294 ad_w(i,j,k )=ad_w(i,j,k )-adfac1
1311 fc(i,0)=1.5_r8*t(i,j,1,nstp,itrc)
1314 fc(i,0)=2.0_r8*t(i,j,1,nstp,itrc)
1320 cff=1.0_r8/(2.0_r8*hz(i,j,k)+ &
1321 & hz(i,j,k+1)*(2.0_r8-cf(i,k)))
1322 cf(i,k+1)=cff*hz(i,j,k)
1323 fc(i,k)=cff*(3.0_r8*(hz(i,j,k )*t(i,j,k+1,nstp,itrc)+ &
1324 & hz(i,j,k+1)*t(i,j,k ,nstp,itrc))- &
1325 & hz(i,j,k+1)*fc(i,k-1))
1330 fc(i,n(ng))=(3.0_r8*t(i,j,n(ng),nstp,itrc)- &
1331 & fc(i,n(ng)-1))/(2.0_r8-cf(i,n(ng)))
1333 fc(i,n(ng))=(2.0_r8*t(i,j,n(ng),nstp,itrc)- &
1334 & fc(i,n(ng)-1))/(1.0_r8-cf(i,n(ng)))
1339 fc(i,k)=fc(i,k)-cf(i,k+1)*fc(i,k+1)
1348 ad_fc(i,n(ng))=0.0_r8
1361 ad_w(i,j,k+1)=ad_w(i,j,k+1)+fc(i,k+1)*ad_fc(i,k+1)
1362 ad_fc(i,k+1)=w(i,j,k+1)*ad_fc(i,k+1)
1365 ad_fc(i,k+1)=ad_fc(i,k+1)-cf(i,k+1)*ad_fc(i,k)
1375 adfac=ad_fc(i,n(ng))/(2.0_r8-cf(i,n(ng)))
1376 ad_t(i,j,n(ng),nstp,itrc)=ad_t(i,j,n(ng),nstp,itrc)+ &
1378 ad_fc(i,n(ng)-1)=ad_fc(i,n(ng)-1)-adfac
1379 ad_fc(i,n(ng))=0.0_r8
1385 adfac=ad_fc(i,n(ng))/(1.0_r8-cf(i,n(ng)))
1386 ad_t(i,j,n(ng),nstp,itrc)=ad_t(i,j,n(ng),nstp,itrc)+ &
1388 ad_fc(i,n(ng)-1))=ad_fc(i,n(ng)-1))-adfac
1389 ad_fc(i,n(ng))=0.0_r8
1395 cff=1.0_r8/(2.0_r8*hz(i,j,k)+ &
1396 & hz(i,j,k+1)*(2.0_r8-cf(i,k)))
1412 adfac=cff*ad_fc(i,k)
1415 ad_t(i,j,k ,nstp,itrc)=ad_t(i,j,k ,nstp,itrc)+ &
1416 & hz(i,j,k+1)*adfac1
1417 ad_t(i,j,k+1,nstp,itrc)=ad_t(i,j,k+1,nstp,itrc)+ &
1419 ad_hz(i,j,k )=ad_hz(i,j,k )+ &
1420 & t(i,j,k+1,nstp,itrc)*adfac1- &
1421 & fc(i,k )*adfac2- &
1423 ad_hz(i,j,k+1)=ad_hz(i,j,k+1)+ &
1424 & t(i,j,k ,nstp,itrc)*adfac1- &
1425 & fc(i,k-1)*adfac- &
1427 ad_fc(i,k-1)=ad_fc(i,k-1)-hz(i,j,k+1)*adfac
1436 ad_t(i,j,1,nstp,itrc)=ad_t(i,j,1,nstp,itrc)+ &
1442 ad_t(i,j,1,nstp,itrc)=ad_t(i,j,1,nstp,itrc)+ &
1454 fc(i,k)=t(i,j,k+1,nstp,itrc)- &
1455 & t(i,j,k ,nstp,itrc)
1460 fc(i,n(ng))=fc(i,n(ng)-1)
1464 cff=2.0_r8*fc(i,k)*fc(i,k-1)
1465 IF (cff.gt.eps)
THEN
1466 cf(i,k)=cff/(fc(i,k)+fc(i,k-1))
1475 ad_fc(i,n(ng))=0.0_r8
1493 adfac=0.5_r8*ad_fc(i,k)
1494 adfac1=adfac*w(i,j,k)
1496 ad_cf(i,k )=ad_cf(i,k )+adfac2
1497 ad_cf(i,k+1)=ad_cf(i,k+1)-adfac2
1498 ad_t(i,j,k ,nstp,itrc)=ad_t(i,j,k ,nstp,itrc)+adfac1
1499 ad_t(i,j,k+1,nstp,itrc)=ad_t(i,j,k+1,nstp,itrc)+adfac1
1500 ad_w(i,j,k)=ad_w(i,j,k)+ &
1501 & (t(i,j,k ,nstp,itrc)+ &
1502 & t(i,j,k+1,nstp,itrc)- &
1503 & cff1*(cf(i,k+1)-cf(i,k)))*adfac
1509 cff=2.0_r8*fc(i,k)*fc(i,k-1)
1510 IF (cff.gt.eps)
THEN
1516 & ((fc(i,k)+fc(i,k-1))*(fc(i,k)+fc(i,k-1)))
1518 ad_fc(i,k-1)=ad_fc(i,k-1)-adfac1
1519 ad_fc(i,k )=ad_fc(i,k )-adfac1
1520 ad_cff=ad_cff+(fc(i,k)+fc(i,k-1))*adfac
1531 ad_fc(i,k-1)=ad_fc(i,k-1)+fc(i,k )*adfac
1532 ad_fc(i,k )=ad_fc(i,k )+fc(i,k-1)*adfac
1539 ad_fc(i,n(ng)-1)=ad_fc(i,n(ng)-1)+ad_fc(i,n(ng))
1540 ad_fc(i,n(ng))=0.0_r8
1543 ad_fc(i,1)=ad_fc(i,1)+ad_fc(i,0)
1551 ad_t(i,j,k ,nstp,itrc)=ad_t(i,j,k ,nstp,itrc)- &
1553 ad_t(i,j,k+1,nstp,itrc)=ad_t(i,j,k+1,nstp,itrc)+ &
1566 ad_fc(i,n(ng))=0.0_r8
1581 adfac=0.5_r8*ad_fc(i,k)
1582 adfac1=adfac*w(i,j,k)
1583 ad_w(i,j,k)=ad_w(i,j,k)+ &
1584 & (t(i,j,k ,nstp,itrc)+ &
1585 & t(i,j,k+1,nstp,itrc))*adfac
1586 ad_t(i,j,k ,nstp,itrc)=ad_t(i,j,k ,nstp,itrc)+adfac1
1587 ad_t(i,j,k+1,nstp,itrc)=ad_t(i,j,k+1,nstp,itrc)+adfac1
1600 ad_fc(i,n(ng))=0.0_r8
1607 cff1=max(w(i,j,k),0.0_r8)
1608 cff2=min(w(i,j,k),0.0_r8)
1614 ad_t(i,j,k ,nstp,itrc)=ad_t(i,j,k ,nstp,itrc)+ &
1616 ad_t(i,j,k+1,nstp,itrc)=ad_t(i,j,k+1,nstp,itrc)+ &
1618 ad_cff1=ad_cff1+t(i,j,k ,nstp,itrc)*ad_fc(i,k)
1619 ad_cff2=ad_cff2+t(i,j,k+1,nstp,itrc)*ad_fc(i,k)
1624 ad_w(i,j,k)=ad_w(i,j,k)+ &
1625 & (0.5_r8+sign(0.5_r8,-w(i,j,k)))*ad_cff2+ &
1626 & (0.5_r8+sign(0.5_r8, w(i,j,k)))*ad_cff1
1643 ad_fc(i,n(ng))=0.0_r8
1653 adfac=w(i,j,n(ng)-1)*ad_fc(i,n(ng)-1)
1654 ad_w(i,j,n(ng)-1)=ad_w(i,j,n(ng)-1)+ &
1655 & (cff1*t(i,j,n(ng) ,nstp,itrc)+ &
1656 & cff2*t(i,j,n(ng)-1,nstp,itrc)- &
1657 & cff3*t(i,j,n(ng)-2,nstp,itrc))* &
1659 ad_t(i,j,n(ng)-2,nstp,itrc)=ad_t(i,j,n(ng)-2,nstp,itrc)- &
1661 ad_t(i,j,n(ng)-1,nstp,itrc)=ad_t(i,j,n(ng)-1,nstp,itrc)+ &
1663 ad_t(i,j,n(ng) ,nstp,itrc)=ad_t(i,j,n(ng) ,nstp,itrc)+ &
1665 ad_fc(i,n(ng)-1)=0.0_r8
1675 adfac=w(i,j,1)*ad_fc(i,1)
1676 ad_w(i,j,1)=ad_w(i,j,1)+ &
1677 & (cff1*t(i,j,1,nstp,itrc)+ &
1678 & cff2*t(i,j,2,nstp,itrc)- &
1679 & cff3*t(i,j,3,nstp,itrc))*ad_fc(i,1)
1680 ad_t(i,j,1,nstp,itrc)=ad_t(i,j,1,nstp,itrc)+cff1*adfac
1681 ad_t(i,j,2,nstp,itrc)=ad_t(i,j,2,nstp,itrc)+cff2*adfac
1682 ad_t(i,j,3,nstp,itrc)=ad_t(i,j,3,nstp,itrc)-cff3*adfac
1701 adfac=w(i,j,k)*ad_fc(i,k)
1704 ad_w(i,j,k)=ad_w(i,j,k)+ &
1705 & (cff2*(t(i,j,k ,nstp,itrc)+ &
1706 & t(i,j,k+1,nstp,itrc))- &
1707 & cff3*(t(i,j,k-1,nstp,itrc)+ &
1708 & t(i,j,k+2,nstp,itrc)))*ad_fc(i,k)
1709 ad_t(i,j,k-1,nstp,itrc)=ad_t(i,j,k-1,nstp,itrc)-adfac2
1710 ad_t(i,j,k ,nstp,itrc)=ad_t(i,j,k ,nstp,itrc)+adfac1
1711 ad_t(i,j,k+1,nstp,itrc)=ad_t(i,j,k+1,nstp,itrc)+adfac1
1712 ad_t(i,j,k+2,nstp,itrc)=ad_t(i,j,k+2,nstp,itrc)-adfac2
1720# if defined AGE_MEAN && defined T_PASSIVE
1734 cff=(1.0_r8-gamma)*
dt(ng)
1747 adfac=cff*ad_t(i,j,k,3,iage)
1748 ad_t(i,j,k,nnew,
inert(itrc))=ad_t(i,j,k,nnew, &
1751 ad_hz(i,j,k)=ad_hz(i,j,k)+ &
1752 & t(i,j,k,nnew,
inert(itrc))*adfac
1763 t_loop1 :
DO itrc=1,nt(ng)
1764 k_loop:
DO k=1,n(ng)
1779 cff=(1.0_r8-gamma)*
dt(ng)
1795 adfac1=hz(i,j,k)*ad_t(i,j,k,3,itrc)
1796 adfac2=cff*pm(i,j)*pn(i,j)*ad_t(i,j,k,3,itrc)
1797 ad_hz(i,j,k)=ad_hz(i,j,k)+ &
1798 & (cff1*t(i,j,k,nstp,itrc)+ &
1799 & cff2*t(i,j,k,nnew,itrc))*ad_t(i,j,k,3,itrc)
1800 ad_t(i,j,k,nstp,itrc)=ad_t(i,j,k,nstp,itrc)+cff1*adfac1
1801 ad_t(i,j,k,nnew,itrc)=ad_t(i,j,k,nnew,itrc)+cff2*adfac1
1802 ad_fe(i,j )=ad_fe(i,j )+adfac2
1803 ad_fe(i,j+1)=ad_fe(i,j+1)-adfac2
1804 ad_fx(i ,j)=ad_fx(i ,j)+adfac2
1805 ad_fx(i+1,j)=ad_fx(i+1,j)-adfac2
1806 ad_t(i,j,k,3,itrc)=0.0_r8
1820 IF (((istr.le.isrc).and.(isrc.le.iend+1)).and. &
1821 & ((jstr.le.jsrc).and.(jsrc.le.jend+1)))
THEN
1822 IF (int(
sources(ng)%Dsrc(is)).eq.0)
THEN
1829 ad_huon(isrc,jsrc,k)=ad_huon(isrc,jsrc,k)+ &
1830 &
sources(ng)%Tsrc(is,k,itrc)* &
1832 sources(ng)%ad_Tsrc(is,k,itrc)= &
1833 &
sources(ng)%ad_Tsrc(is,k,itrc)+ &
1834 & huon(isrc,jsrc,k)* &
1836 ad_fx(isrc,jsrc)=0.0_r8
1840 ad_fx(isrc,jsrc)=0.0_r8
1842 ELSE IF (int(
sources(ng)%Dsrc(is)).eq.1)
THEN
1849 ad_hvom(isrc,jsrc,k)=ad_hvom(isrc,jsrc,k)+ &
1850 &
sources(ng)%Tsrc(is,k,itrc)* &
1852 sources(ng)%ad_Tsrc(is,k,itrc)= &
1853 &
sources(ng)%ad_Tsrc(is,k,itrc)+ &
1854 & hvom(isrc,jsrc,k)* &
1856 ad_fe(isrc,jsrc)=0.0_r8
1860 ad_fe(isrc,jsrc)=0.0_r8
1883 adfac=0.5_r8*ad_fe(i,j)
1884 adfac1=adfac*hvom(i,j,k)
1885 ad_hvom(i,j,k)=ad_hvom(i,j,k)+ &
1886 & adfac*(t(i,j ,k,nstp,itrc)+ &
1887 & t(i,j-1,k,nstp,itrc))
1888 ad_t(i,j-1,k,nstp,itrc)=ad_t(i,j-1,k,nstp,itrc)+adfac1
1889 ad_t(i,j ,k,nstp,itrc)=ad_t(i,j ,k,nstp,itrc)+adfac1
1903 adfac=0.5_r8*ad_fx(i,j)
1904 adfac1=adfac*huon(i,j,k)
1905 ad_huon(i,j,k)=ad_huon(i,j,k)+ &
1906 & adfac*(t(i-1,j,k,nstp,itrc)+ &
1907 & t(i ,j,k,nstp,itrc))
1908 ad_t(i-1,j,k,nstp,itrc)=ad_t(i-1,j,k,nstp,itrc)+adfac1
1909 ad_t(i ,j,k,nstp,itrc)=ad_t(i ,j,k,nstp,itrc)+adfac1
1921 cff1=max(hvom(i,j,k),0.0_r8)
1922 cff2=min(hvom(i,j,k),0.0_r8)
1928 ad_t(i,j-1,k,nstp,itrc)=ad_t(i,j-1,k,nstp,itrc)+ &
1930 ad_t(i,j ,k,nstp,itrc)=ad_t(i,j ,k,nstp,itrc)+ &
1932 ad_cff1=ad_cff1+t(i,j-1,k,nstp,itrc)*ad_fe(i,j)
1933 ad_cff2=ad_cff2+t(i,j ,k,nstp,itrc)*ad_fe(i,j)
1940 ad_hvom(i,j,k)=ad_hvom(i,j,k)+ &
1941 & (0.5_r8+sign(0.5_r8,-hvom(i,j,k)))* &
1943 & (0.5_r8+sign(0.5_r8, hvom(i,j,k)))* &
1951 cff1=max(huon(i,j,k),0.0_r8)
1952 cff2=min(huon(i,j,k),0.0_r8)
1958 ad_t(i ,j,k,nstp,itrc)=ad_t(i ,j,k,nstp,itrc)+ &
1960 ad_t(i-1,j,k,nstp,itrc)=ad_t(i-1,j,k,nstp,itrc)+ &
1962 ad_cff1=ad_cff1+t(i-1,j,k,nstp,itrc)*ad_fx(i,j)
1963 ad_cff2=ad_cff2+t(i ,j,k,nstp,itrc)*ad_fx(i,j)
1970 ad_huon(i,j,k)=ad_huon(i,j,k)+ &
1971 & (0.5_r8+sign(0.5_r8,-huon(i,j,k)))* &
1973 & (0.5_r8+sign(0.5_r8, huon(i,j,k)))* &
1991 fe(i,j)=t(i,j ,k,nstp,itrc)- &
1992 & t(i,j-1,k,nstp,itrc)
1994 fe(i,j)=fe(i,j)*vmask(i,j)
1999 IF (
domain(ng)%Southern_Edge(tile))
THEN
2001 fe(i,jstr-1)=fe(i,jstr)
2006 IF (
domain(ng)%Northern_Edge(tile))
THEN
2008 fe(i,jend+2)=fe(i,jend+1)
2016 curv(i,j)=fe(i,j+1)-fe(i,j)
2018 cff=2.0_r8*fe(i,j+1)*fe(i,j)
2019 IF (cff.gt.eps)
THEN
2020 grad(i,j)=cff/(fe(i,j+1)+fe(i,j))
2026 grad(i,j)=0.5_r8*(fe(i,j+1)+fe(i,j))
2053 adfac=0.5_r8*ad_fe(i,j)
2054 adfac1=adfac*hvom(i,j,k)
2055 adfac2=cff1*ad_fe(i,j)
2056 ad_hvom(i,j,k)=ad_hvom(i,j,k)+ &
2057 & (t(i,j-1,k,nstp,itrc)+ &
2058 & t(i,j ,k,nstp,itrc))*adfac- &
2060 & (0.5_r8+sign(0.5_r8, hvom(i,j,k)))+ &
2062 & (0.5_r8+sign(0.5_r8,-hvom(i,j,k))))* &
2064 ad_t(i,j-1,k,nstp,itrc)=ad_t(i,j-1,k,nstp,itrc)+adfac1
2065 ad_t(i,j ,k,nstp,itrc)=ad_t(i,j ,k,nstp,itrc)+adfac1
2066 ad_curv(i,j-1)=ad_curv(i,j-1)- &
2067 & max(hvom(i,j,k),0.0_r8)*adfac2
2068 ad_curv(i,j )=ad_curv(i,j )- &
2069 & min(hvom(i,j,k),0.0_r8)*adfac2
2086 adfac=0.5_r8*ad_fe(i,j)
2087 adfac1=adfac*hvom(i,j,k)
2089 ad_hvom(i,j,k)=ad_hvom(i,j,k)+ &
2090 & adfac*(t(i,j-1,k,nstp,itrc)+ &
2091 & t(i,j ,k,nstp,itrc)- &
2092 & cff2*(grad(i,j )- &
2094 ad_t(i,j-1,k,nstp,itrc)=ad_t(i,j-1,k,nstp,itrc)+adfac1
2095 ad_t(i,j ,k,nstp,itrc)=ad_t(i,j ,k,nstp,itrc)+adfac1
2096 ad_grad(i,j-1)=ad_grad(i,j-1)+adfac2
2097 ad_grad(i,j )=ad_grad(i,j )-adfac2
2108 ad_fe(i,j )=ad_fe(i,j )-ad_curv(i,j)
2109 ad_fe(i,j+1)=ad_fe(i,j+1)+ad_curv(i,j)
2112 cff=2.0_r8*fe(i,j+1)*fe(i,j)
2113 IF (cff.gt.eps)
THEN
2119 adfac=ad_grad(i,j)/ &
2120 & ((fe(i,j+1)+fe(i,j))*(fe(i,j+1)+fe(i,j)))
2122 ad_fe(i,j )=ad_fe(i,j )-adfac1
2123 ad_fe(i,j+1)=ad_fe(i,j+1)-adfac1
2124 ad_cff=ad_cff+(fe(i,j+1)+fe(i,j))*adfac
2135 ad_fe(i,j )=ad_fe(i,j )+fe(i,j+1)*adfac
2136 ad_fe(i,j+1)=ad_fe(i,j+1)+fe(i,j )*adfac
2142 adfac=0.5_r8*ad_grad(i,j)
2143 ad_fe(i,j )=ad_fe(i,j )+adfac
2144 ad_fe(i,j+1)=ad_fe(i,j+1)+adfac
2150 IF (
domain(ng)%Northern_Edge(tile))
THEN
2154 ad_fe(i,jend+1)=ad_fe(i,jend+1)+ad_fe(i,jend+2)
2155 ad_fe(i,jend+2)=0.0_r8
2160 IF (
domain(ng)%Southern_Edge(tile))
THEN
2164 ad_fe(i,jstr)=ad_fe(i,jstr)+ad_fe(i,jstr-1)
2165 ad_fe(i,jstr-1)=0.0_r8
2175 ad_fe(i,j)=ad_fe(i,j)*vmask(i,j)
2180 ad_t(i,j-1,k,nstp,itrc)=ad_t(i,j-1,k,nstp,itrc)- &
2182 ad_t(i,j ,k,nstp,itrc)=ad_t(i,j ,k,nstp,itrc)+ &
2190 fx(i,j)=t(i ,j,k,nstp,itrc)- &
2191 & t(i-1,j,k,nstp,itrc)
2193 fx(i,j)=fx(i,j)*umask(i,j)
2198 IF (
domain(ng)%Western_Edge(tile))
THEN
2200 fx(istr-1,j)=fx(istr,j)
2205 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2207 fx(iend+2,j)=fx(iend+1,j)
2215 curv(i,j)=fx(i+1,j)-fx(i,j)
2217 cff=2.0_r8*fx(i+1,j)*fx(i,j)
2218 IF (cff.gt.eps)
THEN
2219 grad(i,j)=cff/(fx(i+1,j)+fx(i,j))
2225 grad(i,j)=0.5_r8*(fx(i+1,j)+fx(i,j))
2252 adfac=0.5_r8*ad_fx(i,j)
2253 adfac1=adfac*huon(i,j,k)
2254 adfac2=cff1*ad_fx(i,j)
2255 ad_huon(i,j,k)=ad_huon(i,j,k)+ &
2256 & (t(i-1,j,k,nstp,itrc)+ &
2257 & t(i ,j,k,nstp,itrc))*adfac- &
2259 & (0.5_r8+sign(0.5_r8, huon(i,j,k)))+ &
2261 & (0.5_r8+sign(0.5_r8,-huon(i,j,k))))* &
2263 ad_t(i-1,j,k,nstp,itrc)=ad_t(i-1,j,k,nstp,itrc)+adfac1
2264 ad_t(i ,j,k,nstp,itrc)=ad_t(i ,j,k,nstp,itrc)+adfac1
2265 ad_curv(i-1,j)=ad_curv(i-1,j)- &
2266 & max(huon(i,j,k),0.0_r8)*adfac2
2267 ad_curv(i ,j)=ad_curv(i ,j)- &
2268 & min(huon(i,j,k),0.0_r8)*adfac2
2285 adfac=0.5_r8*ad_fx(i,j)
2286 adfac1=adfac*huon(i,j,k)
2288 ad_huon(i,j,k)=ad_huon(i,j,k)+ &
2289 & adfac*(t(i-1,j,k,nstp,itrc)+ &
2290 & t(i ,j,k,nstp,itrc)- &
2291 & cff2*(grad(i ,j)- &
2293 ad_t(i-1,j,k,nstp,itrc)=ad_t(i-1,j,k,nstp,itrc)+adfac1
2294 ad_t(i ,j,k,nstp,itrc)=ad_t(i ,j,k,nstp,itrc)+adfac1
2295 ad_grad(i-1,j)=ad_grad(i-1,j)+adfac2
2296 ad_grad(i ,j)=ad_grad(i ,j)-adfac2
2307 ad_fx(i ,j)=ad_fx(i ,j)-ad_curv(i,j)
2308 ad_fx(i+1,j)=ad_fx(i+1,j)+ad_curv(i,j)
2311 cff=2.0_r8*fx(i+1,j)*fx(i,j)
2312 IF (cff.gt.eps)
THEN
2318 adfac=ad_grad(i,j)/ &
2319 & ((fx(i+1,j)+fx(i,j))*(fx(i+1,j)+fx(i,j)))
2321 ad_fx(i ,j)=ad_fx(i ,j)-adfac1
2322 ad_fx(i+1,j)=ad_fx(i+1,j)-adfac1
2323 ad_cff=ad_cff+(fx(i+1,j)+fx(i,j))*adfac
2334 adfac=0.5_r8*ad_grad(i,j)
2335 ad_fx(i ,j)=ad_fx(i ,j)+adfac
2336 ad_fx(i+1,j)=ad_fx(i+1,j)+adfac
2343 ad_fx(i ,j)=ad_fx(i ,j)+fx(i+1,j)*adfac
2344 ad_fx(i+1,j)=ad_fx(i+1,j)+fx(i ,j)*adfac
2349 IF (
domain(ng)%Eastern_Edge(tile))
THEN
2353 ad_fx(iend+1,j)=ad_fx(iend+1,j)+ad_fx(iend+2,j)
2354 ad_fx(iend+2,j)=0.0_r8
2359 IF (
domain(ng)%Western_Edge(tile))
THEN
2363 ad_fx(istr,j)=ad_fx(istr,j)+ad_fx(istr-1,j)
2364 ad_fx(istr-1,j)=0.0_r8
2374 ad_fx(i,j)=ad_fx(i,j)*umask(i,j)
2379 ad_t(i-1,j,k,nstp,itrc)=ad_t(i-1,j,k,nstp,itrc)- &
2381 ad_t(i ,j,k,nstp,itrc)=ad_t(i ,j,k,nstp,itrc)+ &
2399 fx(i,j)=z_w(i,j,n(ng))-z_w(i,j,k)
2406 ad_fe(i,j)=ad_fe(i,j)+ad_swdk(i,j,k)
2407 ad_swdk(i,j,k)=0.0_r8
2416 & lbi, ubi, lbj, ubj, &
2417 & imins, imaxs, jmins, jmaxs, &
2418 & -1.0_r8, fx, ad_fx, ad_fe)
2423 ad_z_w(i,j,k )=ad_z_w(i,j,k )-ad_fx(i,j)
2424 ad_z_w(i,j,n(ng))=ad_z_w(i,j,n(ng))+ad_fx(i,j)
2430# endif /* !TS_FIXED */