110 & LBi, UBi, LBj, UBj, &
111 & IminS, ImaxS, JminS, JmaxS, &
117 & rmask, umask, vmask, &
124 & ad_ubar, ubar, ubarG, &
125 & ad_vbar, vbar, vbarG, &
126 & ad_zeta, zeta, zetaG)
143 integer,
intent(in) :: ng, tile
144 integer,
intent(in) :: LBi, UBi, LBj, UBj
145 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
146 integer,
intent(in) :: Kinp, Linp
148 integer,
intent(in) :: Ninp
153 real(r8),
intent(in) :: rmask(LBi:,LBj:)
154 real(r8),
intent(in) :: umask(LBi:,LBj:)
155 real(r8),
intent(in) :: vmask(LBi:,LBj:)
158 real(r8),
intent(in) :: ad_t(LBi:,LBj:,:,:,:)
159 real(r8),
intent(in) :: t (LBi:,LBj:,:,:,:)
160 real(r8),
intent(in) :: tG(LBi:,LBj:,:,:,:)
162 real(r8),
intent(in) :: ad_u(LBi:,LBj:,:,:)
163 real(r8),
intent(in) :: u (LBi:,LBj:,:,:)
164 real(r8),
intent(in) :: uG(LBi:,LBj:,:,:)
166 real(r8),
intent(in) :: ad_v(LBi:,LBj:,:,:)
167 real(r8),
intent(in) :: v (LBi:,LBj:,:,:)
168 real(r8),
intent(in) :: vG(LBi:,LBj:,:,:)
170 real(r8),
intent(in) :: ad_ubar(LBi:,LBj:,:)
171 real(r8),
intent(in) :: ubar (LBi:,LBj:,:)
172 real(r8),
intent(in) :: ubarG(LBi:,LBj:,:)
174 real(r8),
intent(in) :: ad_vbar(LBi:,LBj:,:)
175 real(r8),
intent(in) :: vbar (LBi:,LBj:,:)
176 real(r8),
intent(in) :: vbarG(LBi:,LBj:,:)
178 real(r8),
intent(in) :: ad_zeta(LBi:,LBj:,:)
179 real(r8),
intent(in) :: zeta (LBi:,LBj:,:)
180 real(r8),
intent(in) :: zetaG(LBi:,LBj:,:)
183 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
184 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
185 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
188 real(r8),
intent(in) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
189 real(r8),
intent(in) :: t (LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
190 real(r8),
intent(in) :: tG(LBi:UBi,LBj:UBj,N(ng),2,NT(ng))
192 real(r8),
intent(in) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
193 real(r8),
intent(in) :: u (LBi:UBi,LBj:UBj,N(ng),2)
194 real(r8),
intent(in) :: uG(LBi:UBi,LBj:UBj,N(ng),2)
196 real(r8),
intent(in) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
197 real(r8),
intent(in) :: v (LBi:UBi,LBj:UBj,N(ng),2)
198 real(r8),
intent(in) :: vG(LBi:UBi,LBj:UBj,N(ng),2)
200 real(r8),
intent(in) :: ad_ubar(LBi:UBi,LBj:UBj,:)
201 real(r8),
intent(in) :: ubar (LBi:UBi,LBj:UBj,:)
202 real(r8),
intent(in) :: ubarG(LBi:UBi,LBj:UBj,2)
204 real(r8),
intent(in) :: ad_vbar(LBi:UBi,LBj:UBj,:)
205 real(r8),
intent(in) :: vbar (LBi:UBi,LBj:UBj,:)
206 real(r8),
intent(in) :: vbarG(LBi:UBi,LBj:UBj,2)
208 real(r8),
intent(in) :: ad_zeta(LBi:UBi,LBj:UBj,:)
209 real(r8),
intent(in) :: zeta (LBi:UBi,LBj:UBj,:)
210 real(r8),
intent(in) :: zetaG(LBi:UBi,LBj:UBj,2)
215 integer :: NSUB, Tindex, i, j
219 real(r8) :: my_dot, p, scale
222 character(len=3 ) :: op_handle
224 character(len=12) :: text
226# include "set_bounds.h"
233 IF ((
outer.ge.1).and.(mod(
iic(ng)-1,
nhis(ng)).eq.0).and. &
238 p=10.0_r8**real(-
inner,r8)
257 & p*scale*ad_zeta(i,j,linp)* &
258 & (zeta(i,j,kinp)-zetag(i,j,tindex))
260 my_dot=my_dot*rmask(i,j)
270 & p*scale*ad_ubar(i,j,linp)* &
271 & (ubar(i,j,kinp)-ubarg(i,j,tindex))
273 my_dot=my_dot*umask(i,j)
283 & p*scale*ad_vbar(i,j,linp)* &
284 & (vbar(i,j,kinp)-vbarg(i,j,tindex))
286 my_dot=my_dot*vmask(i,j)
298 & p*scale*ad_u(i,j,k,linp)* &
299 & (u(i,j,k,ninp)-ug(i,j,k,tindex))
301 my_dot=my_dot*umask(i,j)
313 & p*scale*ad_v(i,j,k,linp)* &
314 & (v(i,j,k,ninp)-vg(i,j,k,tindex))
316 my_dot=my_dot*vmask(i,j)
329 & p*scale*ad_t(i,j,k,linp,itrc)* &
330 & (t(i,j,k,ninp,itrc)-tg(i,j,k,tindex,itrc))
332 my_dot=my_dot*rmask(i,j)
345 IF (
domain(ng)%SouthWest_Corner(tile).and. &
346 &
domain(ng)%NorthEast_Corner(tile))
THEN
369 10
FORMAT (5x,
'(Outer,Inner) = ',
'(',i4.4,
',',i4.4,
')',3x, &
370 &
'TLM Check, p = ',1p,e21.14,0p,/,5x,a,4x, &
371 &
'(Index=',i1,
')',5x,
'TLM Check, g1 = ',1p,e21.14,0p)
444 & LBi, UBi, LBj, UBj, &
445 & IminS, ImaxS, JminS, JmaxS, &
449 & rmask, umask, vmask, &
457 & ad_t, ad_u, ad_v, &
459 & ad_ubar, ad_vbar, &
475 integer,
intent(in) :: ng, tile
476 integer,
intent(in) :: LBi, UBi, LBj, UBj
477 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
478 integer,
intent(in) :: Kinp, Ninp
480 real(r8),
intent(out) :: StateNorm
484 real(r8),
intent(in) :: rmask(LBi:,LBj:)
485 real(r8),
intent(in) :: umask(LBi:,LBj:)
486 real(r8),
intent(in) :: vmask(LBi:,LBj:)
489 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
491 real(r8),
intent(in) :: h(LBi:,LBj:)
494 real(r8),
intent(in) :: ad_t(LBi:,LBj:,:,:,:)
495 real(r8),
intent(in) :: ad_u(LBi:,LBj:,:,:)
496 real(r8),
intent(in) :: ad_v(LBi:,LBj:,:,:)
498 real(r8),
intent(in) :: ad_ubar(LBi:,LBj:,:)
499 real(r8),
intent(in) :: ad_vbar(LBi:,LBj:,:)
501 real(r8),
intent(in) :: ad_zeta(LBi:,LBj:,:)
504 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
505 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
506 real(r8),
intent(in) :: vmask(LBi:Ubi,LBj:UBj)
509 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
511 real(r8),
intent(in) :: h(LBi:UBi,LBj:UBj)
514 real(r8),
intent(in) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
515 real(r8),
intent(in) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
516 real(r8),
intent(in) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
518 real(r8),
intent(in) :: ad_ubar(LBi:UBi,LBj:UBj,:)
519 real(r8),
intent(in) :: ad_vbar(LBi:UBi,LBj:UBj,:)
521 real(r8),
intent(in) :: ad_zeta(LBi:UBi,LBj:UBj,:)
526 integer :: NSUB, i, j
530 real(r8) :: cff, cff1, my_norm, scale
533 character(len=3) :: op_handle
536# include "set_bounds.h"
543# define IR_RANGE IstrT,IendT
544# define IU_RANGE IstrP,IendT
545# define JR_RANGE JstrT,JendT
546# define JV_RANGE JstrP,JendT
548# define IR_RANGE Istr,Iend
549# define IU_RANGE IstrU,Iend
550# define JR_RANGE Jstr,Jend
551# define JV_RANGE JstrV,Jend
563 cff1=scale*ad_zeta(i,j,kinp)*ad_zeta(i,j,kinp)
578 scale=cff*(h(i-1,j)+h(i,j))
579 cff1=scale*ad_ubar(i,j,kinp)*ad_ubar(i,j,kinp)
592 scale=cff*(h(i,j-1)+h(i,j))
593 cff1=scale*ad_vbar(i,j,kinp)*ad_vbar(i,j,kinp)
608 scale=cff*(hz(i-1,j,k)+hz(i,j,k))
609 cff1=scale*ad_u(i,j,k,ninp)*ad_u(i,j,k,ninp)
624 scale=cff*(hz(i,j-1,k)+hz(i,j,k))
625 cff1=scale*ad_v(i,j,k,ninp)*ad_v(i,j,k,ninp)
637 IF (itrc.eq.
itemp)
THEN
639 ELSE IF (itrc.eq.
isalt)
THEN
648 cff1=scale*ad_t(i,j,k,ninp,itrc)* &
649 & ad_t(i,j,k,ninp,itrc)
665 IF (
domain(ng)%SouthWest_Corner(tile).and. &
666 &
domain(ng)%NorthEast_Corner(tile))
THEN
676 statenorm=statenorm+my_norm
772 & LBi, UBi, LBj, UBj, &
773 & IminS, ImaxS, JminS, JmaxS, &
777 & rmask, umask, vmask, &
793 & tl_t, tl_u, tl_v, &
795 & tl_ubar, tl_vbar, &
811 integer,
intent(in) :: ng, tile
812 integer,
intent(in) :: LBi, UBi, LBj, UBj
813 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
814 integer,
intent(in) :: Kinp, Ninp
816 real(r8),
intent(out) :: StateNorm
820 real(r8),
intent(in) :: rmask(LBi:,LBj:)
821 real(r8),
intent(in) :: umask(LBi:,LBj:)
822 real(r8),
intent(in) :: vmask(LBi:,LBj:)
825 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
827 real(r8),
intent(in) :: h(LBi:,LBj:)
830 real(r8),
intent(in) :: tl_t(LBi:,LBj:,:,:,:)
831 real(r8),
intent(in) :: tl_u(LBi:,LBj:,:,:)
832 real(r8),
intent(in) :: tl_v(LBi:,LBj:,:,:)
834 real(r8),
intent(in) :: tl_ubar(LBi:,LBj:,:)
835 real(r8),
intent(in) :: tl_vbar(LBi:,LBj:,:)
837 real(r8),
intent(in) :: tl_zeta(LBi:,LBj:,:)
839 real(r8),
intent(in) :: e_zeta(LBi:,LBj:,:)
841 real(r8),
intent(in) :: e_t(LBi:,LBj:,:,:,:)
842 real(r8),
intent(in) :: e_u(LBi:,LBj:,:,:)
843 real(r8),
intent(in) :: e_v(LBi:,LBj:,:,:)
845 real(r8),
intent(in) :: e_ubar(LBi:,LBj:,:)
846 real(r8),
intent(in) :: e_vbar(LBi:,LBj:,:)
851 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
852 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
853 real(r8),
intent(in) :: vmask(LBi:Ubi,LBj:UBj)
856 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
858 real(r8),
intent(in) :: h(LBi:UBi,LBj:UBj)
861 real(r8),
intent(in) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
862 real(r8),
intent(in) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
863 real(r8),
intent(in) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
865 real(r8),
intent(in) :: tl_ubar(LBi:UBi,LBj:UBj,:)
866 real(r8),
intent(in) :: tl_vbar(LBi:UBi,LBj:UBj,:)
868 real(r8),
intent(in) :: tl_zeta(LBi:UBi,LBj:UBj,:)
870 real(r8),
intent(in) :: e_zeta(LBi:UBi,LBj:UBj,NSA)
872 real(r8),
intent(in) :: e_t(LBi:UBi,LBj:UBj,N(ng),NSA,NT(ng))
873 real(r8),
intent(in) :: e_u(LBi:UBi,LBj:UBj,N(ng),NSA)
874 real(r8),
intent(in) :: e_v(LBi:UBi,LBj:UBj,N(ng),NSA)
876 real(r8),
intent(in) :: e_ubar(LBi:UBi,LBj:UBj,NSA)
877 real(r8),
intent(in) :: e_vbar(LBi:UBi,LBj:UBj,NSA)
884 integer :: NSUB, i, j
888 real(r8) :: cff, cff1, my_norm, scale
891 character(len=3) :: op_handle
894# include "set_bounds.h"
901# define IR_RANGE IstrT,IendT
902# define IU_RANGE IstrP,IendT
903# define JR_RANGE JstrT,JendT
904# define JV_RANGE JstrP,JendT
906# define IR_RANGE Istr,Iend
907# define IU_RANGE IstrU,Iend
908# define JR_RANGE Jstr,Jend
909# define JV_RANGE JstrV,Jend
922 IF (e_zeta(i,j,1).gt.0.0_r8)
THEN
923 cff1=1.0_r8/(e_zeta(i,j,1)*e_zeta(i,j,1))
927 cff1=cff1*tl_zeta(i,j,kinp)*tl_zeta(i,j,kinp)
929 cff1=scale*tl_zeta(i,j,kinp)*tl_zeta(i,j,kinp)
946 IF (e_ubar(i,j,1).gt.0.0_r8)
THEN
947 cff1=1.0_r8/(e_ubar(i,j,1)*e_ubar(i,j,1))
951 cff1=cff1*tl_ubar(i,j,kinp)*tl_ubar(i,j,kinp)
953 scale=cff*(h(i-1,j)+h(i,j))
954 cff1=scale*tl_ubar(i,j,kinp)*tl_ubar(i,j,kinp)
969 IF (e_vbar(i,j,1).gt.0.0_r8)
THEN
970 cff1=1.0_r8/(e_vbar(i,j,1)*e_vbar(i,j,1))
974 cff1=cff1*tl_vbar(i,j,kinp)*tl_vbar(i,j,kinp)
976 scale=cff*(h(i,j-1)+h(i,j))
977 cff1=scale*tl_vbar(i,j,kinp)*tl_vbar(i,j,kinp)
994 IF (e_u(i,j,k,1).gt.0.0_r8)
THEN
995 cff1=1.0_r8/(e_u(i,j,k,1)*e_u(i,j,k,1))
999 cff1=cff1*tl_u(i,j,k,ninp)*tl_u(i,j,k,ninp)
1001 scale=cff*(hz(i-1,j,k)+hz(i,j,k))
1002 cff1=scale*tl_u(i,j,k,ninp)*tl_u(i,j,k,ninp)
1005 cff1=cff1*umask(i,j)
1007 my_norm=my_norm+cff1
1019 IF (e_v(i,j,k,1).gt.0.0_r8)
THEN
1020 cff1=1.0_r8/(e_v(i,j,k,1)*e_v(i,j,k,1))
1024 cff1=cff1*tl_v(i,j,k,ninp)*tl_v(i,j,k,ninp)
1026 scale=cff*(hz(i,j-1,k)+hz(i,j,k))
1027 cff1=scale*tl_v(i,j,k,ninp)*tl_v(i,j,k,ninp)
1030 cff1=cff1*vmask(i,j)
1032 my_norm=my_norm+cff1
1040 IF (itrc.eq.
itemp)
THEN
1042 ELSE IF (itrc.eq.
isalt)
THEN
1051 IF (e_t(i,j,k,1,itrc).gt.0.0_r8)
THEN
1052 cff1=1.0_r8/(e_t(i,j,k,1,itrc)*e_t(i,j,k,1,itrc))
1056 cff1=cff1*tl_t(i,j,k,ninp,itrc)* &
1057 & tl_t(i,j,k,ninp,itrc)
1060 cff1=scale*tl_t(i,j,k,ninp,itrc)* &
1061 & tl_t(i,j,k,ninp,itrc)
1064 cff1=cff1*rmask(i,j)
1066 my_norm=my_norm+cff1
1078 IF (
domain(ng)%SouthWest_Corner(tile).and. &
1079 &
domain(ng)%NorthEast_Corner(tile))
THEN
1089 statenorm=statenorm+my_norm
1175 & LBi, UBi, LBj, UBj, &
1176 & IminS, ImaxS, JminS, JmaxS, &
1182 & rmask, umask, vmask, &
1189 & ad_ubar, tl_ubar, &
1190 & ad_vbar, tl_vbar, &
1207 integer,
intent(in) :: ng, tile
1208 integer,
intent(in) :: LBi, UBi, LBj, UBj
1209 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
1210 integer,
intent(in) :: Kinp, Linp
1212 integer,
intent(in) :: Ninp
1215# ifdef ASSUMED_SHAPE
1217 real(r8),
intent(in) :: rmask(LBi:,LBj:)
1218 real(r8),
intent(in) :: umask(LBi:,LBj:)
1219 real(r8),
intent(in) :: vmask(LBi:,LBj:)
1222 real(r8),
intent(in) :: ad_t(LBi:,LBj:,:,:,:)
1223 real(r8),
intent(in) :: tl_t(LBi:,LBj:,:,:,:)
1225 real(r8),
intent(in) :: ad_u(LBi:,LBj:,:,:)
1226 real(r8),
intent(in) :: tl_u(LBi:,LBj:,:,:)
1228 real(r8),
intent(in) :: ad_v(LBi:,LBj:,:,:)
1229 real(r8),
intent(in) :: tl_v(LBi:,LBj:,:,:)
1231 real(r8),
intent(in) :: ad_ubar(LBi:,LBj:,:)
1232 real(r8),
intent(in) :: tl_ubar(LBi:,LBj:,:)
1234 real(r8),
intent(in) :: ad_vbar(LBi:,LBj:,:)
1235 real(r8),
intent(in) :: tl_vbar(LBi:,LBj:,:)
1237 real(r8),
intent(in) :: ad_zeta(LBi:,LBj:,:)
1238 real(r8),
intent(in) :: tl_zeta(LBi:,LBj:,:)
1241 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
1242 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
1243 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
1246 real(r8),
intent(in) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
1247 real(r8),
intent(in) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
1249 real(r8),
intent(in) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
1250 real(r8),
intent(in) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
1252 real(r8),
intent(in) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
1253 real(r8),
intent(in) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
1255 real(r8),
intent(in) :: ad_ubar(LBi:UBi,LBj:UBj,:)
1256 real(r8),
intent(in) :: tl_ubar(LBi:UBi,LBj:UBj,:)
1258 real(r8),
intent(in) :: ad_vbar(LBi:UBi,LBj:UBj,:)
1259 real(r8),
intent(in) :: tl_vbar(LBi:UBi,LBj:UBj,:)
1261 real(r8),
intent(in) :: ad_zeta(LBi:UBi,LBj:UBj,:)
1262 real(r8),
intent(in) :: tl_zeta(LBi:UBi,LBj:UBj,:)
1267 integer :: NSUB, Tindex, i, j
1271 real(r8) :: my_dot, p, scale
1274 character(len=3 ) :: op_handle
1276 character(len=12) :: text
1278# include "set_bounds.h"
1285 IF ((
outer.ge.1).and.(mod(
iic(ng)-1,
ntlm(ng)).eq.0).and. &
1290 p=10.0_r8**real(-
inner,r8)
1304 & p*scale*ad_zeta(i,j,linp)*tl_zeta(i,j,kinp)
1306 my_dot=my_dot*rmask(i,j)
1316 & p*scale*ad_ubar(i,j,linp)*tl_ubar(i,j,kinp)
1318 my_dot=my_dot*umask(i,j)
1328 & p*scale*ad_vbar(i,j,linp)*tl_vbar(i,j,kinp)
1330 my_dot=my_dot*vmask(i,j)
1342 & p*scale*ad_u(i,j,k,linp)*tl_u(i,j,k,ninp)
1344 my_dot=my_dot*umask(i,j)
1356 & p*scale*ad_v(i,j,k,linp)*tl_v(i,j,k,ninp)
1358 my_dot=my_dot*vmask(i,j)
1371 & p*scale*ad_t(i,j,k,linp,itrc)* &
1372 & tl_t(i,j,k,ninp,itrc)
1374 my_dot=my_dot*rmask(i,j)
1387 IF (
domain(ng)%SouthWest_Corner(tile).and. &
1388 &
domain(ng)%NorthEast_Corner(tile))
THEN
1411 10
FORMAT (5x,
'(Outer,Inner) = ',
'(',i4.4,
',',i4.4,
')',3x, &
1412 &
'TLM Check, p = ',1p,e21.14,0p,/,5x,a,18x, &
1413 &
'TLM Check, g2 = ',1p,e21.14,0p)
1477 & LBi, UBi, LBj, UBj, &
1478 & IminS, ImaxS, JminS, JmaxS, &
1481 & rmask, umask, vmask, &
1484 & ad_t, ad_u, ad_v, &
1486 & ad_ubar, ad_vbar, ad_zeta)
1502 integer,
intent(in) :: ng, tile
1503 integer,
intent(in) :: LBi, UBi, LBj, UBj
1504 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
1505 integer,
intent(in) :: Linp
1507# ifdef ASSUMED_SHAPE
1509 real(r8),
intent(in) :: rmask(LBi:,LBj:)
1510 real(r8),
intent(in) :: umask(LBi:,LBj:)
1511 real(r8),
intent(in) :: vmask(LBi:,LBj:)
1514 real(r8),
intent(in) :: ad_t(LBi:,LBj:,:,:,:)
1515 real(r8),
intent(in) :: ad_u(LBi:,LBj:,:,:)
1516 real(r8),
intent(in) :: ad_v(LBi:,LBj:,:,:)
1518 real(r8),
intent(in) :: ad_ubar(LBi:,LBj:,:)
1519 real(r8),
intent(in) :: ad_vbar(LBi:,LBj:,:)
1520 real(r8),
intent(in) :: ad_zeta(LBi:,LBj:,:)
1523 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
1524 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
1525 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
1528 real(r8),
intent(in) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
1529 real(r8),
intent(in) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
1530 real(r8),
intent(in) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
1532 real(r8),
intent(in) :: ad_ubar(LBi:UBi,LBj:UBj,:)
1533 real(r8),
intent(in) :: ad_vbar(LBi:UBi,LBj:UBj,:)
1534 real(r8),
intent(in) :: ad_zeta(LBi:UBi,LBj:UBj,:)
1539 integer :: NSUB, i, j
1546 character(len=3) :: op_handle
1549# include "set_bounds.h"
1562 & ad_zeta(i,j,linp)*ad_zeta(i,j,linp)
1564 my_dot=my_dot*rmask(i,j)
1575 & ad_ubar(i,j,linp)*ad_ubar(i,j,linp)
1577 my_dot=my_dot*umask(i,j)
1587 & ad_vbar(i,j,linp)*ad_vbar(i,j,linp)
1589 my_dot=my_dot*vmask(i,j)
1602 & ad_u(i,j,k,linp)*ad_u(i,j,k,linp)
1604 my_dot=my_dot*umask(i,j)
1616 & ad_v(i,j,k,linp)*ad_v(i,j,k,linp)
1618 my_dot=my_dot*vmask(i,j)
1631 & ad_t(i,j,k,linp,itrc)*ad_t(i,j,k,linp,itrc)
1633 my_dot=my_dot*rmask(i,j)
1646 IF (
domain(ng)%SouthWest_Corner(tile).and. &
1647 &
domain(ng)%NorthEast_Corner(tile))
THEN
1668 10
FORMAT (/,
' Adjoint Solution Dot Product: ',1p,e21.14)
subroutine nl_dotproduct_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, kinp, linp, ninp, rmask, umask, vmask, ad_t, t, tg, ad_u, u, ug, ad_v, v, vg, ad_ubar, ubar, ubarg, ad_vbar, vbar, vbarg, ad_zeta, zeta, zetag)
subroutine tl_dotproduct_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, kinp, linp, ninp, rmask, umask, vmask, ad_t, tl_t, ad_u, tl_u, ad_v, tl_v, ad_ubar, tl_ubar, ad_vbar, tl_vbar, ad_zeta, tl_zeta)