76 & LBi, UBi, LBj, UBj, &
77 & IminS, ImaxS, JminS, JmaxS, &
80 & ad_sustr, ad_svstr, &
82# if defined ADJUST_STFLUX && defined SOLVE3D
83 & ad_tflux, ad_stflx, &
93 integer,
intent(in) :: ng, tile
94 integer,
intent(in) :: LBi, UBi, LBj, UBj
95 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
96 integer,
intent(in) :: Linp
100 real(r8),
intent(inout) :: ad_sustr(LBi:,LBj:)
101 real(r8),
intent(inout) :: ad_svstr(LBi:,LBj:)
103# if defined ADJUST_STFLUX && defined SOLVE3D
104 real(r8),
intent(inout) :: ad_stflx(LBi:,LBj:,:)
106# ifdef ADJUST_WSTRESS
107 real(r8),
intent(inout) :: ad_ustr(LBi:,LBj:,:,:)
108 real(r8),
intent(inout) :: ad_vstr(LBi:,LBj:,:,:)
110# if defined ADJUST_STFLUX && defined SOLVE3D
111 real(r8),
intent(inout) :: ad_tflux(LBi:,LBj:,:,:,:)
114# ifdef ADJUST_WSTRESS
115 real(r8),
intent(inout) :: ad_sustr(LBi:UBi,LBj:UBj)
116 real(r8),
intent(inout) :: ad_svstr(LBi:UBi,LBj:UBj)
118# if defined ADJUST_STFLUX && defined SOLVE3D
119 real(r8),
intent(inout) :: ad_stflx(LBi:UBi,LBj:UBj,NT(ng))
121# ifdef ADJUST_WSTRESS
122 real(r8),
intent(inout) :: ad_ustr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
123 real(r8),
intent(inout) :: ad_vstr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
125# if defined ADJUST_STFLUX && defined SOLVE3D
126 real(r8),
intent(inout) :: ad_tflux(LBi:UBi,LBj:UBj, &
127 & Nfrec(ng),2,NT(ng))
133 integer :: i, it1, it2, j
137 real(r8) :: fac, fac1, fac2
139# include "set_bounds.h"
147 IF (nfrec(ng).eq.1)
THEN
153# ifdef GENERIC_DSTART
156 it1=max(0,(
iic(ng)-1)/
nsff(ng))+1
158 it2=min(it1+1,nfrec(ng))
161 fac=1.0_r8/(fac1+fac2)
166# ifdef ADJUST_WSTRESS
175 ad_ustr(i,j,it1,linp)=ad_ustr(i,j,it1,linp)+ &
177 ad_ustr(i,j,it2,linp)=ad_ustr(i,j,it2,linp)+ &
187 ad_vstr(i,j,it1,linp)=ad_vstr(i,j,it1,linp)+ &
189 ad_vstr(i,j,it2,linp)=ad_vstr(i,j,it2,linp)+ &
195# if defined ADJUST_STFLUX && defined SOLVE3D
207 ad_tflux(i,j,it1,linp,
itemp)=ad_tflux(i,j,it1,linp,
itemp)+ &
208 & fac1*ad_stflx(i,j,
itemp)
209 ad_tflux(i,j,it2,linp,
itemp)=ad_tflux(i,j,it2,linp,
itemp)+ &
210 & fac2*ad_stflx(i,j,
itemp)
219 ad_tflux(i,j,it1,linp,
itemp)=ad_tflux(i,j,it1,linp,
itemp)+ &
220 & fac1*ad_stflx(i,j,
itemp)
221 ad_tflux(i,j,it2,linp,
itemp)=ad_tflux(i,j,it2,linp,
itemp)+ &
222 & fac2*ad_stflx(i,j,
itemp)
223 ad_stflx(i,j,
itemp)=0.0_r8
237 ad_tflux(i,j,it1,linp,
isalt)=ad_tflux(i,j,it1,linp,
isalt)+ &
238 & fac1*ad_stflx(i,j,
isalt)
239 ad_tflux(i,j,it2,linp,
isalt)=ad_tflux(i,j,it2,linp,
isalt)+ &
240 & fac2*ad_stflx(i,j,
isalt)
253 ad_tflux(i,j,it1,linp,itrc)=ad_tflux(i,j,it1,linp,itrc)+ &
254 & fac1*ad_stflx(i,j,itrc)
255 ad_tflux(i,j,it2,linp,itrc)=ad_tflux(i,j,it2,linp,itrc)+ &
256 & fac2*ad_stflx(i,j,itrc)
257 ad_stflx(i,j,itrc)=0.0_r8
subroutine ad_frc_adjust_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, ad_ustr, ad_vstr, ad_sustr, ad_svstr, ad_tflux, ad_stflx, linp)