123 & LBi, UBi, LBj, UBj, &
124 & IminS, ImaxS, JminS, JmaxS, &
125 & kstp, krhs, knew, &
130 & rmask, umask, vmask, &
138 & ubar, ad_ubar_sol, ad_ubar, &
139 & vbar, ad_vbar_sol, ad_vbar, &
145 integer,
intent(in) :: ng, tile, model
146 integer,
intent(in) :: LBi, UBi, LBj, UBj
147 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
148 integer,
intent(in) :: kstp, krhs, knew
150 integer,
intent(in) :: nstp, nnew
155 real(r8),
intent(in) :: rmask(LBi:,LBj:)
156 real(r8),
intent(in) :: umask(LBi:,LBj:)
157 real(r8),
intent(in) :: vmask(LBi:,LBj:)
160 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
161 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
162 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
164 real(r8),
intent(in) :: ubar(LBi:,LBj:,:)
165 real(r8),
intent(in) :: vbar(LBi:,LBj:,:)
166 real(r8),
intent(in) :: zeta(LBi:,LBj:,:)
168 real(r8),
intent(inout) :: ad_Hz(LBi:,LBj:,:)
169 real(r8),
intent(inout) :: ad_t(LBi:,LBj:,:,:,:)
170 real(r8),
intent(inout) :: ad_u(LBi:,LBj:,:,:)
171 real(r8),
intent(inout) :: ad_v(LBi:,LBj:,:,:)
173 real(r8),
intent(inout) :: ad_ubar_sol(LBi:,LBj:)
174 real(r8),
intent(inout) :: ad_vbar_sol(LBi:,LBj:)
176 real(r8),
intent(inout) :: ad_ubar(LBi:,LBj:,:)
177 real(r8),
intent(inout) :: ad_vbar(LBi:,LBj:,:)
178 real(r8),
intent(inout) :: ad_zeta(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) :: Hz(LBi:UBi,LBj:UBj,N(ng))
189 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
190 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
192 real(r8),
intent(in) :: ubar(LBi:UBi,LBj:UBj,:)
193 real(r8),
intent(in) :: vbar(LBi:UBi,LBj:UBj,:)
194 real(r8),
intent(in) :: zeta(LBi:UBi,LBj:UBj,:)
196# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
197 real(r8),
intent(inout) :: ad_bed(LBi:UBi,LBj:UBj,Nbed,MBEDP)
198 real(r8),
intent(inout) :: ad_bed_thick0(LBi:UBi,LBj:UBj)
199 real(r8),
intent(inout) :: ad_bed_thick(LBi:UBi,LBj:UBj,3)
201 real(r8),
intent(inout) :: ad_Hz(LBi:UBi,LBj:UBj,N(ng))
202 real(r8),
intent(inout) :: ad_Zt_avg1(LBi:UBi,LBj:UBj)
203 real(r8),
intent(inout) :: ad_z_r(LBi:UBi,LBj:UBj,N(ng))
204 real(r8),
intent(inout) :: ad_z_w(LBi:UBi,LBj:UBj,0:N(ng))
206 real(r8),
intent(inout) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
207 real(r8),
intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
208 real(r8),
intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
210 real(r8),
intent(inout) :: ad_ubar_sol(LBi:UBi,LBj:UBj)
211 real(r8),
intent(inout) :: ad_vbar_sol(LBi:UBi,LBj:UBj)
213 real(r8),
intent(inout) :: ad_ubar(LBi:UBi,LBj:UBj,:)
214 real(r8),
intent(inout) :: ad_vbar(LBi:UBi,LBj:UBj,:)
215 real(r8),
intent(inout) :: ad_zeta(LBi:UBi,LBj:UBj,:)
220 integer :: i, ic, itrc, j, k, kbed
223 real(r8) :: adfac, ad_cff1, ad_cff2
225 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: CF
226 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: DC
228 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: ad_CF
229 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: ad_DC
232# include "set_bounds.h"
267 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
270 & ad_t(:,:,:,nstp,:))
292 & lbi, ubi, lbj, ubj, 1, n(ng), &
293 & ad_t(:,:,:,nstp,itrc))
314 & lbi, ubi, lbj, ubj, n(ng), nt(ng), &
315 & imins, imaxs, jmins, jmaxs, &
327 ad_cff1=ad_cff1+ad_t(i,j,k,nstp,itrc)
329 ad_t(i,j,k,nstp,itrc)=0.0_r8
334 ad_cff1=ad_cff1*rmask(i,j)
338 ad_t(i,j,k,nstp,itrc)=ad_t(i,j,k,nstp,itrc)+ad_cff1
356# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
364 & lbi, ubi, lbj, ubj, &
367 & ad_ubar(:,:,kstp), ad_vbar(:,:,kstp))
377 & lbi, ubi, lbj, ubj, &
380 & ad_ubar(:,:,kstp), ad_vbar(:,:,kstp), &
381 & ad_ubar(:,:,knew), ad_vbar(:,:,knew))
387# if !(defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3)
393 & lbi, ubi, lbj, ubj, &
400 & lbi, ubi, lbj, ubj, &
408 & lbi, ubi, lbj, ubj, &
415 & lbi, ubi, lbj, ubj, &
423# if !(defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3)
432 & lbi, ubi, lbj, ubj, &
433 & imins, imaxs, jmins, jmaxs, &
434 & krhs, kstp, knew, &
435 & ubar, vbar, zeta, &
436 & ad_ubar, ad_vbar, ad_zeta)
445 & lbi, ubi, lbj, ubj, &
446 & imins, imaxs, jmins, jmaxs, &
447 & krhs, kstp, knew, &
448 & ubar, vbar, zeta, &
449 & ad_ubar, ad_vbar, ad_zeta)
459 & lbi, ubi, lbj, ubj, &
460 & imins, imaxs, jmins, jmaxs, &
461 & krhs, kstp, kstp, &
462 & ubar, vbar, zeta, &
463 & ad_ubar, ad_vbar, ad_zeta)
472 & lbi, ubi, lbj, ubj, &
473 & imins, imaxs, jmins, jmaxs, &
474 & krhs, kstp, kstp, &
475 & ubar, vbar, zeta, &
476 & ad_ubar, ad_vbar, ad_zeta)
483# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
484 ad_ubar_sol(i,j)=ad_ubar(i,j,kstp)
486 ad_ubar_sol(i,j)=ad_ubar(i,j,kstp)+ad_ubar(i,j,knew)
491# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
492 ad_vbar_sol(i,j)=ad_vbar(i,j,kstp)
494 ad_vbar_sol(i,j)=ad_vbar(i,j,kstp)+ad_vbar(i,j,knew)
513 dc(i,k)=0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
514 dc(i,0)=dc(i,0)+dc(i,k)
515 cf(i,0)=cf(i,0)+dc(i,k)*v(i,j,k,nstp)
520# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
523 ad_cff2=ad_cff2+ad_vbar(i,j,kstp)
524 ad_vbar(i,j,kstp)=0.0_r8
529 ad_cff2=ad_cff2+ad_vbar(i,j,knew)+ &
531 ad_vbar(i,j,knew)=0.0_r8
532 ad_vbar(i,j,kstp)=0.0_r8
537 ad_cff2=ad_cff2*vmask(i,j)
541 ad_cff1=ad_cff1+cf(i,0)*ad_cff2
542 ad_cf(i,0)=ad_cf(i,0)+cff1*ad_cff2
546 ad_dc(i,0)=ad_dc(i,0)-cff1*cff1*ad_cff1
554 ad_dc(i,k)=ad_dc(i,k)+v(i,j,k,nstp)*ad_cf(i,0)
555 ad_v(i,j,k,nstp)=ad_v(i,j,k,nstp)+dc(i,k)*ad_cf(i,0)
558 ad_dc(i,k)=ad_dc(i,k)+ad_dc(i,0)
561 adfac=0.5_r8*ad_dc(i,k)
562 ad_hz(i,j-1,k)=ad_hz(i,j-1,k)+adfac
563 ad_hz(i,j ,k)=ad_hz(i,j ,k)+adfac
583 dc(i,k)=0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
584 dc(i,0)=dc(i,0)+dc(i,k)
585 cf(i,0)=cf(i,0)+dc(i,k)*u(i,j,k,nstp)
590# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
593 ad_cff2=ad_cff2+ad_ubar(i,j,kstp)
594 ad_ubar(i,j,kstp)=0.0_r8
599 ad_cff2=ad_cff2+ad_ubar(i,j,knew)+ &
601 ad_ubar(i,j,knew)=0.0_r8
602 ad_ubar(i,j,kstp)=0.0_r8
607 ad_cff2=ad_cff2*umask(i,j)
611 ad_cff1=ad_cff1+cf(i,0)*ad_cff2
612 ad_cf(i,0)=ad_cf(i,0)+cff1*ad_cff2
616 ad_dc(i,0)=ad_dc(i,0)-cff1*cff1*ad_cff1
624 ad_dc(i,k)=ad_dc(i,k)+u(i,j,k,nstp)*ad_cf(i,0)
625 ad_u(i,j,k,nstp)=ad_u(i,j,k,nstp)+dc(i,k)*ad_cf(i,0)
628 ad_dc(i,k)=ad_dc(i,k)+ad_dc(i,0)
631 adfac=0.5_r8*ad_dc(i,k)
632 ad_hz(i-1,j,k)=ad_hz(i-1,j,k)+adfac
633 ad_hz(i ,j,k)=ad_hz(i ,j,k)+adfac
664 & lbi, ubi, lbj, ubj, &
667 & ad_ubar(:,:,kstp), ad_vbar(:,:,kstp), &
668 & ad_ubar(:,:,krhs), ad_vbar(:,:,krhs))
678 & lbi, ubi, lbj, ubj, &
685 & lbi, ubi, lbj, ubj, &
693 & lbi, ubi, lbj, ubj, &
700 & lbi, ubi, lbj, ubj, &
716 & lbi, ubi, lbj, ubj, &
717 & imins, imaxs, jmins, jmaxs, &
718 & krhs, kstp, krhs, &
719 & ubar, vbar, zeta, &
720 & ad_ubar, ad_vbar, ad_zeta)
729 & lbi, ubi, lbj, ubj, &
730 & imins, imaxs, jmins, jmaxs, &
731 & krhs, kstp, krhs, &
732 & ubar, vbar, zeta, &
733 & ad_ubar, ad_vbar, ad_zeta)
743 & lbi, ubi, lbj, ubj, &
744 & imins, imaxs, jmins, jmaxs, &
745 & krhs, kstp, kstp, &
746 & ubar, vbar, zeta, &
747 & ad_ubar, ad_vbar, ad_zeta)
756 & lbi, ubi, lbj, ubj, &
757 & imins, imaxs, jmins, jmaxs, &
758 & krhs, kstp, kstp, &
759 & ubar, vbar, zeta, &
760 & ad_ubar, ad_vbar, ad_zeta)
767# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
768 ad_ubar_sol(i,j)=ad_ubar(i,j,kstp)
770 ad_ubar_sol(i,j)=ad_ubar(i,j,kstp)+ad_ubar(i,j,krhs)
775# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
776 ad_vbar_sol(i,j)=ad_vbar(i,j,kstp)
778 ad_vbar_sol(i,j)=ad_vbar(i,j,kstp)+ad_vbar(i,j,krhs)
789# if !(defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3)
792 ad_cff2=ad_cff2+ad_vbar(i,j,krhs)
793 ad_vbar(i,j,krhs)=0.0_r8
797 ad_cff2=ad_cff2+ad_vbar(i,j,kstp)
798 ad_vbar(i,j,kstp)=0.0_r8
802 ad_cff2=ad_cff2*vmask(i,j)
806 ad_vbar(i,j,kstp)=ad_vbar(i,j,kstp)+ad_cff2
811# if !(defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3)
814 ad_cff1=ad_cff1+ad_ubar(i,j,krhs)
815 ad_ubar(i,j,krhs)=0.0_r8
819 ad_cff1=ad_cff1+ad_ubar(i,j,kstp)
820 ad_ubar(i,j,kstp)=0.0_r8
824 ad_cff1=ad_cff1*umask(i,j)
828 ad_ubar(i,j,kstp)=ad_ubar(i,j,kstp)+ad_cff1
851 & lbi, ubi, lbj, ubj, 1, n(ng), &
854 & ad_u(:,:,:,nstp), ad_v(:,:,:,nstp))
871 & lbi, ubi, lbj, ubj, 1, n(ng), &
878 & lbi, ubi, lbj, ubj, 1, n(ng), &
901 & lbi, ubi, lbj, ubj, n(ng), &
902 & imins, imaxs, jmins, jmaxs, &
912 & lbi, ubi, lbj, ubj, n(ng), &
913 & imins, imaxs, jmins, jmaxs, &
926 ad_cff2=ad_cff2+ad_v(i,j,k,nstp)
928 ad_v(i,j,k,nstp)=0.0_r8
933 ad_cff2=ad_cff2*vmask(i,j)
937 ad_v(i,j,k,nstp)=ad_v(i,j,k,nstp)+ad_cff2
947 ad_cff1=ad_cff1+ad_u(i,j,k,nstp)
949 ad_u(i,j,k,nstp)=0.0_r8
954 ad_cff1=ad_cff1*umask(i,j)
958 ad_u(i,j,k,nstp)=ad_u(i,j,k,nstp)+ad_cff1
1019 & LBi, UBi, LBj, UBj, &
1020 & IminS, ImaxS, JminS, JmaxS, &
1021 & kstp, krhs, knew, &
1025# ifdef WET_DRY_NOT_YET
1029# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1031 & ad_bed_thick0, ad_bed_thick, &
1036 & zeta, ad_zeta_sol, ad_zeta)
1041 integer,
intent(in) :: ng, tile, model
1042 integer,
intent(in) :: LBi, UBi, LBj, UBj
1043 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
1044 integer,
intent(in) :: kstp, krhs, knew
1046# ifdef ASSUMED_SHAPE
1048 real(r8),
intent(in) :: rmask(LBi:,LBj:)
1050# ifdef WET_DRY_NOT_YET
1051 real(r8),
intent(in) :: h(LBi:,LBj:)
1053 real(r8),
intent(in) :: zeta(LBi:,LBj:,:)
1055# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1056 real(r8),
intent(inout) :: ad_bed(LBi:,LBj:,:,:)
1057 real(r8),
intent(inout) :: ad_bed_thick0(LBi:,LBj:)
1058 real(r8),
intent(inout) :: ad_bed_thick(LBi:,LBj:,:)
1060 real(r8),
intent(inout) :: ad_Zt_avg1(LBi:,LBj:)
1062 real(r8),
intent(inout) :: ad_zeta_sol(LBi:,LBj:)
1063 real(r8),
intent(inout) :: ad_zeta(LBi:,LBj:,:)
1068 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
1070# ifdef WET_DRY_NOT_YET
1071 real(r8),
intent(in) :: h(LBi:UBi,LBj:UBj)
1073 real(r8),
intent(in) :: zeta(LBi:UBi,LBj:UBj,:)
1075# if defined SOLVE3D && defined SEDIMENT && defined SED_MORPH
1076 real(r8),
intent(inout) :: ad_bed(LBi:UBi,LBj:UBj,Nbed,MBEDP)
1077 real(r8),
intent(inout) :: ad_bed_thick0(LBi:UBi,LBj:UBj)
1078 real(r8),
intent(inout) :: ad_bed_thick(LBi:UBi,LBj:UBj,3)
1080 real(r8),
intent(inout) :: ad_Zt_avg1(LBi:UBi,LBj:UBj)
1082 real(r8),
intent(inout) :: ad_zeta_sol(LBi:UBi,LBj:UBj)
1083 real(r8),
intent(inout) :: ad_zeta(LBi:UBi,LBj:UBj,:)
1088 integer :: Imin, Imax, Jmin, Jmax
1089 integer :: i, j, kbed
1093# include "set_bounds.h"
1102# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
1117 & lbi, ubi, lbj, ubj, &
1121 & ad_bed_thick(:,:,1), ad_bed_thick(:,:,2))
1131 & lbi, ubi, lbj, ubj, &
1132 & ad_bed_thick(:,:,2))
1138 & lbi, ubi, lbj, ubj, &
1139 & ad_bed_thick(:,:,1))
1145 & lbi, ubi, lbj, ubj, &
1154 ad_bed_thick0(i,j)=ad_bed_thick0(i,j)+ &
1155 & ad_bed_thick(i,j,1)+ad_bed_thick(i,j,1)
1156 ad_bed_thick(i,j,1)=0.0_r8
1157 ad_bed_thick(i,j,2)=0.0_r8
1161 ad_bed(i,j,kbed,
ithck)=ad_bed(i,j,kbed,
ithck)+ &
1162 & ad_bed_thick0(i,j)
1166 ad_bed_thick0(i,j)=0.0_r8
1186# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1194 & lbi, ubi, lbj, ubj, &
1197 & ad_zeta(:,:,kstp))
1208 & lbi, ubi, lbj, ubj, &
1211 & ad_zeta(:,:,kstp), &
1212 & ad_zeta(:,:,knew))
1222 & lbi, ubi, lbj, ubj, &
1225 & ad_zeta(:,:,kstp), &
1226 & ad_zeta(:,:,krhs))
1233# if !(defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3)
1240 & lbi, ubi, lbj, ubj, &
1241 & ad_zeta(:,:,knew))
1248 & lbi, ubi, lbj, ubj, &
1249 & ad_zeta(:,:,krhs))
1257 & lbi, ubi, lbj, ubj, &
1258 & ad_zeta(:,:,kstp))
1261# if !(defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1262 defined sensitivity_4dvar || defined so_semi)
1267# if !(defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3)
1277 & lbi, ubi, lbj, ubj, &
1278 & imins, imaxs, jmins, jmaxs, &
1279 & krhs, kstp, knew, &
1291 & lbi, ubi, lbj, ubj, &
1292 & imins, imaxs, jmins, jmaxs, &
1293 & krhs, kstp, krhs, &
1306 & lbi, ubi, lbj, ubj, &
1307 & imins, imaxs, jmins, jmaxs, &
1308 & krhs, kstp, kstp, &
1331# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1334 ad_cff1=ad_cff1+ad_zeta(i,j,kstp)
1335 ad_zeta(i,j,kstp)=0.0_r8
1341 ad_cff1=ad_cff1+ad_zeta(i,j,knew)+ad_zeta(i,j,kstp)
1342 ad_zeta(i,j,knew)=0.0_r8
1343 ad_zeta(i,j,kstp)=0.0_r8
1348 ad_cff1=ad_cff1+ad_zeta(i,j,krhs)+ad_zeta(i,j,kstp)
1349 ad_zeta(i,j,krhs)=0.0_r8
1350 ad_zeta(i,j,kstp)=0.0_r8
1356 ad_cff1=ad_cff1*rmask(i,j)
1360 ad_zeta(i,j,kstp)=ad_zeta(i,j,kstp)+ad_cff1
1371 ad_zeta_sol(i,j)=ad_zeta(i,j,kstp)
1537 & LBi, UBi, LBj, UBj, &
1538 & IminS, ImaxS, JminS, JmaxS, &
1539 & kstp, krhs, knew, &
1542 & rmask, umask, vmask, &
1549 & zeta, ubar, vbar, &
1550 & ad_ubar_sol, ad_ubar, &
1551 & ad_vbar_sol, ad_vbar, ad_zeta)
1556 integer,
intent(in) :: ng, tile, model
1557 integer,
intent(in) :: LBi, UBi, LBj, UBj
1558 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
1559 integer,
intent(in) :: kstp, krhs, knew
1560 integer,
intent(in) :: nstp, nnew
1562# ifdef ASSUMED_SHAPE
1564 real(r8),
intent(in) :: rmask(LBi:,LBj:)
1565 real(r8),
intent(in) :: umask(LBi:,LBj:)
1566 real(r8),
intent(in) :: vmask(LBi:,LBj:)
1568 real(r8),
intent(in) :: ubar(LBi:,LBj:,:)
1569 real(r8),
intent(in) :: vbar(LBi:,LBj:,:)
1570 real(r8),
intent(in) :: zeta(LBi:,LBj:,:)
1572 real(r8),
intent(inout) :: ad_ubar_sol(LBi:,LBj:)
1573 real(r8),
intent(inout) :: ad_vbar_sol(LBi:,LBj:)
1575 real(r8),
intent(inout) :: ad_zeta(LBi:,LBj:,:)
1576 real(r8),
intent(inout) :: ad_ubar(LBi:,LBj:,:)
1577 real(r8),
intent(inout) :: ad_vbar(LBi:,LBj:,:)
1579 real(r8),
intent(inout) :: ad_t(LBi:,LBj:,:,:,:)
1580 real(r8),
intent(inout) :: ad_u(LBi:,LBj:,:,:)
1581 real(r8),
intent(inout) :: ad_v(LBi:,LBj:,:,:)
1582 real(r8),
intent(inout) :: ad_t_sol(LBi:,LBj:,:,:)
1583 real(r8),
intent(inout) :: ad_u_sol(LBi:,LBj:,:)
1584 real(r8),
intent(inout) :: ad_v_sol(LBi:,LBj:,:)
1590 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
1591 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
1592 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
1594 real(r8),
intent(in) :: ubar(LBi:UBi,LBj:UBj,:)
1595 real(r8),
intent(in) :: vbar(LBi:UBi,LBj:UBj,:)
1596 real(r8),
intent(in) :: zeta(LBi:UBi,LBj:UBj,:)
1598 real(r8),
intent(inout) :: ad_ubar_sol(LBi:UBi,LBj:UBj)
1599 real(r8),
intent(inout) :: ad_vbar_sol(LBi:UBi,LBj:UBj)
1601 real(r8),
intent(inout) :: ad_zeta(LBi:UBi,LBj:UBj,:)
1602 real(r8),
intent(inout) :: ad_ubar(LBi:UBi,LBj:UBj,:)
1603 real(r8),
intent(inout) :: ad_vbar(LBi:UBi,LBj:UBj,:)
1605 real(r8),
intent(inout) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
1606 real(r8),
intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
1607 real(r8),
intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
1608 real(r8),
intent(inout) :: ad_t_sol(LBi:UBi,LBj:UBj,N(ng),NT(ng))
1609 real(r8),
intent(inout) :: ad_u_sol(LBi:UBi,LBj:UBj,N(ng))
1610 real(r8),
intent(inout) :: ad_v_sol(LBi:UBi,LBj:UBj,N(ng))
1616 integer :: i, ic, itrc, j, k, kbed, kout
1619 real(r8) :: adfac, ad_cff1, ad_cff2
1621# include "set_bounds.h"
1625 IF (
iic(ng).eq.
ntend(ng)) kout=krhs
1630# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1632 & lbi, ubi, lbj, ubj, &
1635 & ad_ubar(:,:,knew), ad_vbar(:,:,knew))
1638 & lbi, ubi, lbj, ubj, &
1641 & ad_ubar(:,:,kstp), ad_vbar(:,:,kstp), &
1642 & ad_ubar(:,:,kout), ad_vbar(:,:,kout))
1647# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1649 & lbi, ubi, lbj, ubj, &
1650 & ad_vbar(:,:,knew))
1652 & lbi, ubi, lbj, ubj, &
1653 & ad_ubar(:,:,knew))
1656 & lbi, ubi, lbj, ubj, &
1657 & ad_vbar(:,:,kout))
1659 & lbi, ubi, lbj, ubj, &
1660 & ad_ubar(:,:,kout))
1663 & lbi, ubi, lbj, ubj, &
1664 & ad_vbar(:,:,kstp))
1666 & lbi, ubi, lbj, ubj, &
1667 & ad_ubar(:,:,kstp))
1676 & lbi, ubi, lbj, ubj, &
1677 & imins, imaxs, jmins, jmaxs, &
1678 & krhs, kstp, knew, &
1679 & ubar, vbar, zeta, &
1680 & ad_ubar, ad_vbar, ad_zeta)
1682 & lbi, ubi, lbj, ubj, &
1683 & imins, imaxs, jmins, jmaxs, &
1684 & krhs, kstp, knew, &
1685 & ubar, vbar, zeta, &
1686 & ad_ubar, ad_vbar, ad_zeta)
1687# if !(defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3)
1689 & lbi, ubi, lbj, ubj, &
1690 & imins, imaxs, jmins, jmaxs, &
1691 & krhs, kstp, kstp, &
1692 & ubar, vbar, zeta, &
1693 & ad_ubar, ad_vbar, ad_zeta)
1695 & lbi, ubi, lbj, ubj, &
1696 & imins, imaxs, jmins, jmaxs, &
1697 & krhs, kstp, kstp, &
1698 & ubar, vbar, zeta, &
1699 & ad_ubar, ad_vbar, ad_zeta)
1707# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1708 ad_ubar_sol(i,j)=ad_ubar(i,j,knew)
1710 ad_ubar_sol(i,j)=ad_ubar(i,j,kstp)+ad_ubar(i,j,kout)
1713 IF (j.ge.jstrp)
THEN
1715# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1716 ad_vbar_sol(i,j)=ad_vbar(i,j,knew)
1718 ad_vbar_sol(i,j)=ad_vbar(i,j,kstp)+ad_vbar(i,j,kout)
1725# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1727 & lbi, ubi, lbj, ubj, &
1730 & ad_ubar(:,:,knew), ad_vbar(:,:,knew))
1733 & lbi, ubi, lbj, ubj, &
1736 & ad_ubar(:,:,kstp), ad_vbar(:,:,kstp), &
1737 & ad_ubar(:,:,kout), ad_vbar(:,:,kout))
1742# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1744 & lbi, ubi, lbj, ubj, &
1745 & ad_vbar(:,:,knew))
1747 & lbi, ubi, lbj, ubj, &
1748 & ad_ubar(:,:,knew))
1751 & lbi, ubi, lbj, ubj, &
1752 & ad_vbar(:,:,kout))
1754 & lbi, ubi, lbj, ubj, &
1755 & ad_ubar(:,:,kout))
1758 & lbi, ubi, lbj, ubj, &
1759 & ad_vbar(:,:,kstp))
1761 & lbi, ubi, lbj, ubj, &
1762 & ad_ubar(:,:,kstp))
1770# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1772 & lbi, ubi, lbj, ubj, &
1773 & imins, imaxs, jmins, jmaxs, &
1774 & krhs, kstp, knew, &
1775 & ubar, vbar, zeta, &
1776 & ad_ubar, ad_vbar, ad_zeta)
1778 & lbi, ubi, lbj, ubj, &
1779 & imins, imaxs, jmins, jmaxs, &
1780 & krhs, kstp, knew, &
1781 & ubar, vbar, zeta, &
1782 & ad_ubar, ad_vbar, ad_zeta)
1785 & lbi, ubi, lbj, ubj, &
1786 & imins, imaxs, jmins, jmaxs, &
1787 & krhs, kstp, kout, &
1788 & ubar, vbar, zeta, &
1789 & ad_ubar, ad_vbar, ad_zeta)
1791 & lbi, ubi, lbj, ubj, &
1792 & imins, imaxs, jmins, jmaxs, &
1793 & krhs, kstp, kout, &
1794 & ubar, vbar, zeta, &
1795 & ad_ubar, ad_vbar, ad_zeta)
1798 & lbi, ubi, lbj, ubj, &
1799 & imins, imaxs, jmins, jmaxs, &
1800 & krhs, kstp, kstp, &
1801 & ubar, vbar, zeta, &
1802 & ad_ubar, ad_vbar, ad_zeta)
1804 & lbi, ubi, lbj, ubj, &
1805 & imins, imaxs, jmins, jmaxs, &
1806 & krhs, kstp, kstp, &
1807 & ubar, vbar, zeta, &
1808 & ad_ubar, ad_vbar, ad_zeta)
1816# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1817 ad_ubar_sol(i,j)=ad_ubar(i,j,knew)
1819 ad_ubar_sol(i,j)=ad_ubar(i,j,kstp)+ad_ubar(i,j,kout)
1822 IF (j.ge.jstrp)
THEN
1824# if defined STEP2D_FB_AB3_AM4 || defined STEP2D_FB_LF_AM3
1825 ad_vbar_sol(i,j)=ad_vbar(i,j,knew)
1827 ad_vbar_sol(i,j)=ad_vbar(i,j,kstp)+ad_vbar(i,j,kout)
1838 & lbi, ubi, lbj, ubj, 1, n(ng), &
1841 & ad_u(:,:,:,nstp), ad_v(:,:,:,nstp), &
1842 & ad_u(:,:,:,nnew), ad_v(:,:,:,nnew))
1846 & lbi, ubi, lbj, ubj, 1, n(ng), &
1849 & lbi, ubi, lbj, ubj, 1, n(ng), &
1852 & lbi, ubi, lbj, ubj, 1, n(ng), &
1855 & lbi, ubi, lbj, ubj, 1, n(ng), &
1859 & lbi, ubi, lbj, ubj, n(ng), &
1860 & imins, imaxs, jmins, jmaxs, &
1864 & lbi, ubi, lbj, ubj, n(ng), &
1865 & imins, imaxs, jmins, jmaxs, &
1869 & lbi, ubi, lbj, ubj, n(ng), &
1870 & imins, imaxs, jmins, jmaxs, &
1874 & lbi, ubi, lbj, ubj, n(ng), &
1875 & imins, imaxs, jmins, jmaxs, &
1883 IF (j.ge.jstrm)
THEN
1886 ad_v_sol(i,j,k)=ad_v_sol(i,j,k)+ad_v(i,j,k,nnew)
1892 ad_u_sol(i,j,k)=ad_u_sol(i,j,k)+ad_u(i,j,k,nnew)
1898 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
1901 & ad_t(:,:,:,nstp,:), &
1902 & ad_t(:,:,:,nnew,:))
1912 & lbi, ubi, lbj, ubj, 1, n(ng), &
1913 & ad_t(:,:,:,nstp,itrc))
1915 & lbi, ubi, lbj, ubj, 1, n(ng), &
1916 & ad_t(:,:,:,nnew,itrc))
1919 & lbi, ubi, lbj, ubj, n(ng), nt(ng), &
1920 & imins, imaxs, jmins, jmaxs, &
1924 & lbi, ubi, lbj, ubj, n(ng), nt(ng), &
1925 & imins, imaxs, jmins, jmaxs, &
1931 ad_t_sol(i,j,k,itrc)=ad_t(i,j,k,nstp,itrc)+ &
1932 & ad_t(i,j,k,nnew,itrc)