84 & LBi, UBi, LBj, UBj, &
85 & IminS, ImaxS, JminS, JmaxS, &
90 & Rscope, Uscope, Vscope, &
92 & u_ads, v_ads, wvel_ads, &
95 & ubar_ads, vbar_ads, zeta_ads, &
97 & ad_u, ad_v, ad_wvel, &
113 integer,
intent(in) :: ng, tile
114 integer,
intent(in) :: LBi, UBi, LBj, UBj
115 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
116 integer,
intent(in) :: knew
118 integer,
intent(in) :: nnew, nstp
122 real(r8),
intent(in) :: Rscope(LBi:,LBj:)
123 real(r8),
intent(in) :: Uscope(LBi:,LBj:)
124 real(r8),
intent(in) :: Vscope(LBi:,LBj:)
126 real(r8),
intent(in) :: u_ads(LBi:,LBj:,:)
127 real(r8),
intent(in) :: v_ads(LBi:,LBj:,:)
128 real(r8),
intent(in) :: wvel_ads(LBi:,LBj:,:)
129 real(r8),
intent(in) :: t_ads(LBi:,LBj:,:,:)
131 real(r8),
intent(in) :: ubar_ads(LBi:,LBj:)
132 real(r8),
intent(in) :: vbar_ads(LBi:,LBj:)
133 real(r8),
intent(in) :: zeta_ads(LBi:,LBj:)
135 real(r8),
intent(inout) :: ad_u(LBi:,LBj:,:,:)
136 real(r8),
intent(inout) :: ad_v(LBi:,LBj:,:,:)
137 real(r8),
intent(inout) :: ad_wvel(LBi:,LBj:,:)
138 real(r8),
intent(inout) :: ad_t(LBi:,LBj:,:,:,:)
139 real(r8),
intent(inout) :: ad_Zt_avg1(LBi:,LBj:)
141 real(r8),
intent(inout) :: ad_zeta(LBi:,LBj:,:)
143 real(r8),
intent(inout) :: ad_ubar(LBi:,LBj:,:)
144 real(r8),
intent(inout) :: ad_vbar(LBi:,LBj:,:)
146 real(r8),
intent(in) :: Rscope(LBi:UBi,LBj:UBj)
147 real(r8),
intent(in) :: Uscope(LBi:UBi,LBj:UBj)
148 real(r8),
intent(in) :: Vscope(LBi:UBi,LBj:UBj)
150 real(r8),
intent(in) :: u_ads(LBi:UBi,LBj:UBj,N(ng))
151 real(r8),
intent(in) :: v_ads(LBi:UBi,LBj:UBj,N(ng))
152 real(r8),
intent(in) :: wvel_ads(LBi:UBi,LBj:UBj,N(ng))
153 real(r8),
intent(in) :: t_ads(LBi:UBi,LBj:UBj,N(ng),NT(ng))
155 real(r8),
intent(in) :: ubar_ads(LBi:UBi,LBj:UBj)
156 real(r8),
intent(in) :: vbar_ads(LBi:UBi,LBj:UBj)
157 real(r8),
intent(in) :: zeta_ads(LBi:UBi,LBj:UBj)
159 real(r8),
intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
160 real(r8),
intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
161 real(r8),
intent(inout) :: ad_u(LBi:UBi,LBj:UBj,0:N(ng))
162 real(r8),
intent(inout) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
163 real(r8),
intent(inout) :: ad_Zt_avg1(LBi:UBi,LBj:UBj)
165 real(r8),
intent(inout) :: ad_zeta(LBi:UBi,LBj:UBj,:)
167 real(r8),
intent(inout) :: ad_ubar(LBi:UBi,LBj:UBj,:)
168 real(r8),
intent(inout) :: ad_vbar(LBi:UBi,LBj:UBj,:)
173 integer :: Kfrc, Nfrc, i, itrc, j, k
177# include "set_bounds.h"
202# ifdef I4DVAR_ANA_SENSITIVITY
203 IF ((mod(
iic(ng)-1,
nhis(ng)).eq.0).and. &
206 IF ((mod(
iic(ng)-1,
ntlm(ng)).eq.0).and. &
212 10
FORMAT (2x,
'ADSEN_FORCE - forcing Adjoint model at', &
226 ad_zt_avg1(i,j)=ad_zt_avg1(i,j)+ &
227 & adfac*zeta_ads(i,j)*rscope(i,j)
233 ad_zeta(i,j,kfrc)=ad_zeta(i,j,kfrc)+ &
234 & adfac*zeta_ads(i,j)*rscope(i,j)
245 ad_ubar(i,j,kfrc)=ad_ubar(i,j,kfrc)+ &
246 & adfac*ubar_ads(i,j)*uscope(i,j)
254 ad_vbar(i,j,kfrc)=ad_vbar(i,j,kfrc)+ &
255 & adfac*vbar_ads(i,j)*vscope(i,j)
267 ad_u(i,j,k,nfrc)=ad_u(i,j,k,nfrc)+ &
268 & adfac*u_ads(i,j,k)*uscope(i,j)
278 ad_v(i,j,k,nfrc)=ad_v(i,j,k,nfrc)+ &
279 & adfac*v_ads(i,j,k)*vscope(i,j)
296 ad_wvel(i,j,k)=ad_wvel(i,j,k)+ &
297 & adfac*wvel_ads(i,j,k)*rscope(i,j)
310 ad_t(i,j,k,nfrc,itrc)=ad_t(i,j,k,nfrc,itrc)+ &
311 & adfac*t_ads(i,j,k,itrc)* &
subroutine adsen_force_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, knew, nnew, nstp, rscope, uscope, vscope, u_ads, v_ads, wvel_ads, t_ads, ubar_ads, vbar_ads, zeta_ads, ad_u, ad_v, ad_wvel, ad_t, ad_zt_avg1, ad_ubar, ad_vbar)