53 & LBi, UBi, LBj, UBj, &
54 & IminS, ImaxS, JminS, JmaxS, &
67 integer,
intent(in) :: ng, tile
68 integer,
intent(in) :: lbi, ubi, lbj, ubj
69 integer,
intent(in) :: imins, imaxs, jmins, jmaxs
70 integer,
intent(in) :: krhs, kstp, kout
73 real(r8),
intent(in) :: zeta(lbi:,lbj:,:)
75 real(r8),
intent(inout) :: ad_zeta(lbi:,lbj:,:)
77 real(r8),
intent(in) :: zeta(lbi:ubi,lbj:ubj,3)
79 real(r8),
intent(inout) :: ad_zeta(lbi:ubi,lbj:ubj,3)
87 real(r8) :: cff, cff1, cff2, dt2d, tau
89 real(r8) :: ad_ce, ad_cx
90 real(r8) :: ad_cff1, ad_cff2
93 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_grad
95# include "set_bounds.h"
106 ad_grad(lbi:ubi,lbj:ubj)=0.0_r8
112 IF (first_2d_step)
THEN
132 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
135 IF (zeta(iend+1,jend+1,kout).le. &
136 & (
dcrit(ng)-
grid(ng)%h(iend+1,jend+1)))
THEN
139 grid(ng)%ad_h(iend+1,jend+1)=
grid(ng)%ad_h(iend+1,jend+1)-&
140 & ad_zeta(iend+1,jend+1,kout)
141 ad_zeta(iend+1,jend+1,kout)=0.0_r8
145 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
148 IF (zeta(istr-1,jend+1,kout).le. &
149 & (
dcrit(ng)-
grid(ng)%h(istr-1,jend+1)))
THEN
152 grid(ng)%ad_h(istr-1,jend+1)=
grid(ng)%ad_h(istr-1,jend+1)-&
153 & ad_zeta(istr-1,jend+1,kout)
154 ad_zeta(istr-1,jend+1,kout)=0.0_r8
158 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
161 IF (zeta(iend+1,jstr-1,kout).le. &
162 & (
dcrit(ng)-
grid(ng)%h(iend+1,jstr-1)))
THEN
165 grid(ng)%ad_h(iend+1,jstr-1)=
grid(ng)%ad_h(iend+1,jstr-1)-&
166 & ad_zeta(iend+1,jstr-1,kout)
167 tl_zeta(iend+1,jstr-1,kout)=0.0_r8
171 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
174 IF (zeta(istr-1,jstr-1,kout).le. &
175 & (
dcrit(ng)-
grid(ng)%h(istr-1,jstr-1)))
THEN
178 grid(ng)%ad_h(istr-1,jstr-1)=
grid(ng)%ad_h(istr-1,jstr-1)-&
179 & ad_zeta(istr-1,jstr-1,kout)
180 ad_zeta(istr-1,jstr-1,kout)=0.0_r8
187 IF (
domain(ng)%Northern_Edge(tile))
THEN
190 IF (zeta(i,jend+1,kout).le. &
194 grid(ng)%ad_h(i,jend+1)=
grid(ng)%ad_h(i,jend+1)- &
195 & ad_zeta(i,jend+1,kout)
196 ad_zeta(i,jend+1,kout)=0.0_r8
201 IF (
domain(ng)%Southern_Edge(tile))
THEN
204 IF (zeta(i,jstr-1,kout).le. &
208 grid(ng)%ad_h(i,jstr-1)=
grid(ng)%ad_h(i,jstr-1)- &
209 & ad_zeta(i,jstr-1,kout)
210 ad_zeta(i,jstr-1,kout)=0.0_r8
218 IF (
domain(ng)%Eastern_Edge(tile))
THEN
221 IF (zeta(iend+1,j,kout).le. &
225 grid(ng)%ad_h(iend+1,j)=
grid(ng)%ad_h(iend+1,j)- &
226 & ad_zeta(iend+1,j,kout)
227 ad_zeta(iend+1,j,kout)=0.0_r8
232 IF (
domain(ng)%Western_Edge(tile))
THEN
235 IF (zeta(istr-1,j,kout).le. &
239 grid(ng)%ad_h(istr-1,j)=
grid(ng)%ad_h(istr-1,j)- &
240 & ad_zeta(istr-1,j,kout)
241 ad_zeta(istr-1,j,kout)=0.0_r8
254 IF (
domain(ng)%NorthEast_Corner(tile))
THEN
261 adfac=0.5_r8*ad_zeta(iend+1,jend+1,kout)
262 ad_zeta(iend ,jend+1,kout)=ad_zeta(iend ,jend+1,kout)+ &
264 ad_zeta(iend+1,jend ,kout)=ad_zeta(iend+1,jend ,kout)+ &
266 ad_zeta(iend+1,jend+1,kout)=0.0_r8
269 IF (
domain(ng)%NorthWest_Corner(tile))
THEN
276 adfac=0.5_r8*ad_zeta(istr-1,jend+1,kout)
277 ad_zeta(istr-1,jend ,kout)=ad_zeta(istr-1,jend ,kout)+ &
279 ad_zeta(istr ,jend+1,kout)=ad_zeta(istr ,jend+1,kout)+ &
281 ad_zeta(istr-1,jend+1,kout)=0.0_r8
284 IF (
domain(ng)%SouthEast_Corner(tile))
THEN
291 adfac=0.5_r8*ad_zeta(iend+1,jstr-1,kout)
292 ad_zeta(iend ,jstr-1,kout)=ad_zeta(iend ,jstr-1,kout)+ &
294 ad_zeta(iend+1,jstr ,kout)=ad_zeta(iend+1,jstr ,kout)+ &
296 ad_zeta(iend+1,jstr-1,kout)=0.0_r8
299 IF (
domain(ng)%SouthWest_Corner(tile))
THEN
306 adfac=0.5_r8*ad_zeta(istr-1,jstr-1,kout)
307 ad_zeta(istr ,jstr-1,kout)=ad_zeta(istr ,jstr-1,kout)+ &
309 ad_zeta(istr-1,jstr ,kout)=ad_zeta(istr-1,jstr ,kout)+ &
311 ad_zeta(istr-1,jstr-1,kout)=0.0_r8
320 IF (
domain(ng)%Northern_Edge(tile))
THEN
325 IF (
iic(ng).ne.0)
THEN
328# if defined CELERITY_READ && defined FORWARD_READ
330 IF (
boundary(ng)%zeta_north_Ce(i).eq.0.0_r8)
THEN
349 ad_zeta(i,jend+1,kout)=ad_zeta(i,jend+1,kout)* &
350 &
grid(ng)%rmask(i,jend+1)
356 ad_zeta(i,jend+1,know)=ad_zeta(i,jend+1,know)- &
357 & tau*ad_zeta(i,jend+1,kout)
367 adfac=ad_zeta(i,jend+1,kout)/(cff+ce)
368 ad_grad(i ,jend+1)=ad_grad(i ,jend+1)- &
369 & max(cx,0.0_r8)*adfac
370 ad_grad(i+1,jend+1)=ad_grad(i+1,jend+1)- &
371 & min(cx,0.0_r8)*adfac
372 ad_zeta(i,jend ,kout)=ad_zeta(i,jend ,kout)+ce *adfac
373 ad_zeta(i,jend+1,know)=ad_zeta(i,jend+1,know)+cff*adfac
374 ad_zeta(i,jend+1,kout)=0.0_r8
384 cff=dt2d*
grid(ng)%pn(i,jend)
385 cff1=sqrt(
g*(
grid(ng)%h(i,jend)+ &
386 & zeta(i,jend,know)))
392 ad_zeta(i,jend+1,kout)=ad_zeta(i,jend+1,kout)* &
393 &
grid(ng)%rmask(i,jend+1)
400 ad_zeta(i,jend+1,know)=ad_zeta(i,jend+1,know)+ &
401 & (1.0_r8-ce)*ad_zeta(i,jend+1,kout)
402 ad_ce=ad_ce+(zeta(i,jend+1,know)+ &
403 & zeta(i,jend ,know))*ad_zeta(i,jend+1,kout)
404 ad_zeta(i,jend,know)=ad_zeta(i,jend,know)+ &
405 & ce*ad_zeta(i,jend+1,kout)
406 ad_zeta(i,jend+1,kout)=0.0_r8
409 ad_cff1=ad_cff1+cff*ad_ce
414 adfac=0.5_r8*
g*ad_cff1/cff1
415 grid(ng)%ad_h(i,jend)=
grid(ng)%ad_h(i,jend)+adfac
416 ad_zeta(i,jend,know)=ad_zeta(i,jend,know)+adfac
426 cff=dt2d*
grid(ng)%pn(i,jend)
427 cff1=sqrt(
g*(
grid(ng)%h(i,jend)+ &
428 & zeta(i,jend,know)))
430 cff2=1.0_r8/(1.0_r8+ce)
435 ad_zeta(i,jend+1,kout)=ad_zeta(i,jend+1,kout)* &
436 &
grid(ng)%rmask(i,jend+1)
444 adfac=cff2*ad_zeta(i,jend+1,kout)
445 ad_zeta(i,jend ,kout)=ad_zeta(i,jend ,kout)+ce*adfac
446 ad_zeta(i,jend+1,know)=ad_zeta(i,jend+1,know)+adfac
447 ad_ce=ad_ce+zeta(i,jend,kout)*adfac
449 & (zeta(i,jend+1,know)+ &
450 & ce*zeta(i,jend,kout))*ad_zeta(i,jend+1,kout)
451 ad_zeta(i,jend+1,kout)=0.0_r8
454 ad_ce=ad_ce-cff2*cff2*ad_cff2
458 ad_cff1=ad_cff1+cff*ad_ce
463 adfac=0.5_r8*
g*ad_cff1/cff1
464 grid(ng)%ad_h(i,jend)=
grid(ng)%ad_h(i,jend)+adfac
465 ad_zeta(i,jend,know)=ad_zeta(i,jend,know)+adfac
479 ad_zeta(i,jend+1,kout)=ad_zeta(i,jend+1,kout)* &
480 &
grid(ng)%rmask(i,jend+1)
482# ifdef ADJUST_BOUNDARY
487 & ad_zeta_north(i)+ &
488 & ad_zeta(i,jend+1,kout)
489 ad_zeta(i,jend+1,kout)=0.0_r8
493 ad_zeta(i,jend+1,kout)=0.0_r8
498 ad_zeta(i,jend+1,kout)=0.0_r8
512 ad_zeta(i,jend+1,kout)=ad_zeta(i,jend+1,kout)* &
513 &
grid(ng)%rmask(i,jend+1)
517 ad_zeta(i,jend ,kout)=ad_zeta(i,jend ,kout)+ &
518 & ad_zeta(i,jend+1,kout)
519 ad_zeta(i,jend+1,kout)=0.0_r8
532 ad_zeta(i,jend+1,kout)=ad_zeta(i,jend+1,kout)* &
533 &
grid(ng)%rmask(i,jend+1)
537 ad_zeta(i,jend ,kout)=ad_zeta(i,jend ,kout)+ &
538 & ad_zeta(i,jend+1,kout)
539 ad_zeta(i,jend+1,kout)=0.0_r8
549 IF (
domain(ng)%Southern_Edge(tile))
THEN
554 IF (
iic(ng).ne.0)
THEN
557# if defined CELERITY_READ && defined FORWARD_READ
559 IF (
boundary(ng)%zeta_south_Ce(i).eq.0.0_r8)
THEN
578 ad_zeta(i,jstr-1,kout)=ad_zeta(i,jstr-1,kout)* &
579 &
grid(ng)%rmask(i,jstr-1)
585 ad_zeta(i,jstr-1,know)=ad_zeta(i,jstr-1,know)- &
586 & tau*ad_zeta(i,jstr-1,kout)
596 adfac=ad_zeta(i,jstr-1,kout)/(cff+ce)
597 ad_grad(i ,jstr-1)=ad_grad(i ,jstr-1)- &
598 & max(cx,0.0_r8)*adfac
599 ad_grad(i+1,jstr-1)=ad_grad(i+1,jstr-1)- &
600 & min(cx,0.0_r8)*adfac
601 ad_zeta(i,jstr-1,know)=ad_zeta(i,jstr-1,know)+cff*adfac
602 ad_zeta(i,jstr ,kout)=ad_zeta(i,jstr ,kout)+ce *adfac
603 ad_zeta(i,jstr-1,kout)=0.0_r8
613 cff=dt2d*
grid(ng)%pn(i,jstr)
614 cff1=sqrt(
g*(
grid(ng)%h(i,jstr)+ &
615 & zeta(i,jstr,know)))
621 ad_zeta(i,jstr-1,kout)=ad_zeta(i,jstr-1,kout)* &
622 &
grid(ng)%rmask(i,jstr-1)
629 ad_zeta(i,jstr-1,know)=ad_zeta(i,jstr-1,know)+ &
630 & (1.0_r8-ce)*ad_zeta(i,jstr-1,kout)
631 ad_ce=ad_ce+(zeta(i,jstr-1,know)+ &
632 & zeta(i,jstr ,know))*ad_zeta(i,jstr-1,kout)
633 ad_zeta(i,jstr,know)=ad_zeta(i,jstr,know)+ &
634 & ce*ad_zeta(i,jstr-1,kout)
635 ad_zeta(i,jstr-1,kout)=0.0_r8
638 ad_cff1=ad_cff1+cff*ad_ce
643 adfac=0.5_r8*
g*ad_cff1/cff1
644 grid(ng)%ad_h(i,jstr)=
grid(ng)%ad_h(i,jstr)+adfac
645 ad_zeta(i,jstr,know)=ad_zeta(i,jstr,know)+adfac
655 cff=dt2d*
grid(ng)%pn(i,jstr)
656 cff1=sqrt(
g*(
grid(ng)%h(i,jstr)+ &
657 & zeta(i,jstr,know)))
659 cff2=1.0_r8/(1.0_r8+ce)
664 ad_zeta(i,jstr-1,kout)=ad_zeta(i,jstr-1,kout)* &
665 &
grid(ng)%rmask(i,jstr-1)
673 adfac=cff2*ad_zeta(i,jstr-1,kout)
674 ad_zeta(i,jstr-1,know)=ad_zeta(i,jstr-1,know)+adfac
675 ad_zeta(i,jstr ,kout)=ad_zeta(i,jstr ,kout)+ce*adfac
676 ad_ce=ad_ce+zeta(i,jstr,kout)*adfac
678 & (zeta(i,jstr-1,know)+ &
679 & ce*zeta(i,jstr,kout))*ad_zeta(i,jstr-1,kout)
680 ad_zeta(i,jstr-1,kout)=0.0_r8
683 ad_ce=ad_ce-cff2*cff2*ad_cff2
687 ad_cff1=ad_cff1+cff*ad_ce
692 adfac=0.5_r8*
g*ad_cff1/cff1
693 grid(ng)%ad_h(i,jstr)=
grid(ng)%ad_h(i,jstr)+adfac
694 ad_zeta(i,jstr,know)=ad_zeta(i,jstr,know)+adfac
708 ad_zeta(i,jstr-1,kout)=ad_zeta(i,jstr-1,kout)* &
709 &
grid(ng)%rmask(i,jstr-1)
711# ifdef ADJUST_BOUNDARY
716 & ad_zeta_south(i)+ &
717 & ad_zeta(i,jstr-1,kout)
718 ad_zeta(i,jstr-1,kout)=0.0_r8
722 ad_zeta(i,jstr-1,kout)=0.0_r8
727 ad_zeta(i,jstr-1,kout)=0.0_r8
741 ad_zeta(i,jstr-1,kout)=ad_zeta(i,jstr-1,kout)* &
742 &
grid(ng)%rmask(i,jstr-1)
746 ad_zeta(i,jstr ,kout)=ad_zeta(i,jstr ,kout)+ &
747 & ad_zeta(i,jstr-1,kout)
748 ad_zeta(i,jstr-1,kout)=0.0_r8
761 ad_zeta(i,jstr-1,kout)=ad_zeta(i,jstr-1,kout)* &
762 &
grid(ng)%rmask(i,jstr-1)
766 ad_zeta(i,jstr ,kout)=ad_zeta(i,jstr ,kout)+ &
767 & ad_zeta(i,jstr-1,kout)
768 ad_zeta(i,jstr-1,kout)=0.0_r8
778 IF (
domain(ng)%Eastern_Edge(tile))
THEN
783 IF (
iic(ng).ne.0)
THEN
786# if defined CELERITY_READ && defined FORWARD_READ
788 IF (
boundary(ng)%zeta_east_Cx(j).eq.0.0_r8)
THEN
807 ad_zeta(iend+1,j,kout)=ad_zeta(iend+1,j,kout)* &
808 &
grid(ng)%rmask(iend+1,j)
814 ad_zeta(iend+1,j,know)=ad_zeta(iend+1,j,know)- &
815 & tau*ad_zeta(iend+1,j,kout)
825 adfac=ad_zeta(iend+1,j,kout)/(cff+cx)
826 ad_grad(iend+1,j )=ad_grad(iend+1,j )- &
827 & max(ce,0.0_r8)*adfac
828 ad_grad(iend+1,j+1)=ad_grad(iend+1,j+1)- &
829 & min(ce,0.0_r8)*adfac
830 ad_zeta(iend ,j,kout)=ad_zeta(iend ,j,kout)+cx *adfac
831 ad_zeta(iend+1,j,know)=ad_zeta(iend+1,j,know)+cff*adfac
832 ad_zeta(iend+1,j,kout)=0.0_r8
842 cff=dt2d*
grid(ng)%pm(iend,j)
843 cff1=sqrt(
g*(
grid(ng)%h(iend,j)+ &
844 & zeta(iend,j,know)))
850 ad_zeta(iend+1,j,kout)=ad_zeta(iend+1,j,kout)* &
851 &
grid(ng)%rmask(iend+1,j)
858 ad_zeta(iend+1,j,know)=ad_zeta(iend+1,j,know)+ &
859 & (1.0_r8-cx)*ad_zeta(iend+1,j,kout)
860 ad_cx=ad_cx+(zeta(iend+1,j,know)+ &
861 & zeta(iend ,j,know))*ad_zeta(iend+1,j,kout)
862 ad_zeta(iend,j,know)=ad_zeta(iend,j,know)+ &
863 & cx*ad_zeta(iend+1,j,kout)
864 ad_zeta(iend+1,j,kout)=0.0_r8
867 ad_cff1=ad_cff1+cff*ad_cx
872 adfac=0.5_r8*
g*ad_cff1/cff1
873 grid(ng)%ad_h(iend,j)=
grid(ng)%ad_h(iend,j)+adfac
874 ad_zeta(iend,j,know)=ad_zeta(iend,j,know)+adfac
884 cff=dt2d*
grid(ng)%pm(iend,j)
885 cff1=sqrt(
g*(
grid(ng)%h(iend,j)+ &
886 & zeta(iend,j,know)))
888 cff2=1.0_r8/(1.0_r8+cx)
893 ad_zeta(iend+1,j,kout)=ad_zeta(iend+1,j,kout)* &
894 &
grid(ng)%rmask(iend+1,j)
902 adfac=cff2*ad_zeta(iend+1,j,kout)
903 ad_zeta(iend ,j,kout)=ad_zeta(iend ,j,kout)+cx*adfac
904 ad_zeta(iend+1,j,know)=ad_zeta(iend+1,j,know)+adfac
905 ad_cx=ad_cx+zeta(iend,j,kout)*adfac
907 & (zeta(iend+1,j,know)+ &
908 & cx*zeta(iend,j,kout))*ad_zeta(iend+1,j,kout)
909 ad_zeta(iend+1,j,kout)=0.0_r8
912 ad_cx=ad_cx-cff2*cff2*ad_cff2
916 ad_cff1=ad_cff1+cff*ad_cx
921 adfac=0.5_r8*
g*ad_cff1/cff1
922 grid(ng)%ad_h(iend,j)=
grid(ng)%ad_h(iend,j)+adfac
923 ad_zeta(iend,j,know)=ad_zeta(iend,j,know)+adfac
937 ad_zeta(iend+1,j,kout)=ad_zeta(iend+1,j,kout)* &
938 &
grid(ng)%rmask(iend+1,j)
940# ifdef ADJUST_BOUNDARY
946 & ad_zeta(iend+1,j,kout)
947 ad_zeta(iend+1,j,kout)=0.0_r8
951 ad_zeta(iend+1,j,kout)=0.0_r8
956 ad_zeta(iend+1,j,kout)=0.0_r8
970 ad_zeta(iend+1,j,kout)=ad_zeta(iend+1,j,kout)* &
971 &
grid(ng)%rmask(iend+1,j)
975 ad_zeta(iend ,j,kout)=ad_zeta(iend ,j,kout)+ &
976 & ad_zeta(iend+1,j,kout)
977 ad_zeta(iend+1,j,kout)=0.0_r8
990 ad_zeta(iend+1,j,kout)=ad_zeta(iend+1,j,kout)* &
991 &
grid(ng)%rmask(iend+1,j)
995 ad_zeta(iend ,j,kout)=ad_zeta(iend ,j,kout)+ &
996 & ad_zeta(iend+1,j,kout)
997 ad_zeta(iend+1,j,kout)=0.0_r8
1007 IF (
domain(ng)%Western_Edge(tile))
THEN
1012 IF (
iic(ng).ne.0)
THEN
1015# if defined CELERITY_READ && defined FORWARD_READ
1017 IF (
boundary(ng)%zeta_west_Cx(j).eq.0.0_r8)
THEN
1036 ad_zeta(istr-1,j,kout)=ad_zeta(istr-1,j,kout)* &
1037 &
grid(ng)%rmask(istr-1,j)
1043 ad_zeta(istr-1,j,know)=ad_zeta(istr-1,j,know)- &
1044 & tau*ad_zeta(istr-1,j,kout)
1055 adfac=ad_zeta(istr-1,j,kout)/(cff+cx)
1056 ad_grad(istr-1,j )=ad_grad(istr-1,j )- &
1057 & max(ce,0.0_r8)*adfac
1058 ad_grad(istr-1,j+1)=ad_grad(istr-1,j+1)- &
1059 & min(ce,0.0_r8)*adfac
1060 ad_zeta(istr-1,j,know)=ad_zeta(istr-1,j,know)+cff*adfac
1061 ad_zeta(istr ,j,kout)=ad_zeta(istr ,j,kout)+cx *adfac
1062 ad_zeta(istr-1,j,kout)=0.0_r8
1072 cff=dt2d*
grid(ng)%pm(istr,j)
1073 cff1=sqrt(
g*(
grid(ng)%h(istr,j)+ &
1074 & zeta(istr,j,know)))
1080 ad_zeta(istr-1,j,kout)=ad_zeta(istr-1,j,kout)* &
1081 &
grid(ng)%rmask(istr-1,j)
1088 ad_zeta(istr-1,j,know)=ad_zeta(istr-1,j,know)+ &
1089 & (1.0_r8-cx)*ad_zeta(istr-1,j,kout)
1090 ad_cx=ad_cx+(zeta(istr-1,j,know)+ &
1091 & zeta(istr ,j,know))*ad_zeta(istr-1,j,kout)
1092 ad_zeta(istr,j,know)=ad_zeta(istr,j,know)+ &
1093 & cx*ad_zeta(istr-1,j,kout)
1094 ad_zeta(istr-1,j,kout)=0.0_r8
1097 ad_cff1=ad_cff1+cff*ad_cx
1102 adfac=0.5_r8*
g*ad_cff1/cff1
1103 grid(ng)%ad_h(istr,j)=
grid(ng)%ad_h(istr,j)+adfac
1104 ad_zeta(istr,j,know)=ad_zeta(istr,j,know)+adfac
1114 cff=dt2d*
grid(ng)%pm(istr,j)
1115 cff1=sqrt(
g*(
grid(ng)%h(istr,j)+ &
1116 & zeta(istr,j,know)))
1118 cff2=1.0_r8/(1.0_r8+cx)
1123 ad_zeta(istr-1,j,kout)=ad_zeta(istr-1,j,kout)* &
1124 &
grid(ng)%rmask(istr-1,j)
1132 adfac=cff2*ad_zeta(istr-1,j,kout)
1133 ad_zeta(istr-1,j,know)=ad_zeta(istr-1,j,know)+adfac
1134 ad_zeta(istr ,j,kout)=ad_zeta(istr ,j,kout)+cx*adfac
1135 ad_cx=ad_cx+zeta(istr,j,kout)*adfac
1137 & (zeta(istr-1,j,know)+ &
1138 & cx*zeta(istr,j,kout))*ad_zeta(istr-1,j,kout)
1139 ad_zeta(istr-1,j,kout)=0.0_r8
1142 ad_cx=ad_cx-cff2*cff2*ad_cff2
1146 ad_cff1=ad_cff1+cff*ad_cx
1151 adfac=0.5_r8*
g*ad_cff1/cff1
1152 grid(ng)%ad_h(istr,j)=
grid(ng)%ad_h(istr,j)+adfac
1153 ad_zeta(istr,j,know)=ad_zeta(istr,j,know)+adfac
1167 ad_zeta(istr-1,j,kout)=ad_zeta(istr-1,j,kout)* &
1168 &
grid(ng)%rmask(istr-1,j)
1170# ifdef ADJUST_BOUNDARY
1175 & ad_zeta_west(j)+ &
1176 & ad_zeta(istr-1,j,kout)
1177 ad_zeta(istr-1,j,kout)=0.0_r8
1181 ad_zeta(istr-1,j,kout)=0.0_r8
1186 ad_zeta(istr-1,j,kout)=0.0_r8
1200 ad_zeta(istr-1,j,kout)=ad_zeta(istr-1,j,kout)* &
1201 &
grid(ng)%rmask(istr-1,j)
1205 ad_zeta(istr ,j,kout)=ad_zeta(istr ,j,kout)+ &
1206 & ad_zeta(istr-1,j,kout)
1207 ad_zeta(istr-1,j,kout)=0.0_r8
1220 ad_zeta(istr-1,j,kout)=ad_zeta(istr-1,j,kout)* &
1221 &
grid(ng)%rmask(istr-1,j)
1225 ad_zeta(istr ,j,kout)=ad_zeta(istr ,j,kout)+ &
1226 & ad_zeta(istr-1,j,kout)
1227 ad_zeta(istr-1,j,kout)=0.0_r8