108 & LBi, UBi, LBj, UBj, &
109 & IminS, ImaxS, JminS, JmaxS, &
119#ifdef TIDE_GENERATING_FORCES
120 & eq_tide, ad_eq_tide, &
136 integer,
intent(in) :: ng, tile
137 integer,
intent(in) :: LBi, UBi, LBj, UBj
138 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
139 integer,
intent(in) :: nrhs
143 real(r8),
intent(in) :: umask(LBi:,LBj:)
144 real(r8),
intent(in) :: vmask(LBi:,LBj:)
146 real(r8),
intent(in) :: om_v(LBi:,LBj:)
147 real(r8),
intent(in) :: on_u(LBi:,LBj:)
148 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
149 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
150 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
151 real(r8),
intent(in) :: rho(LBi:,LBj:,:)
153 real(r8),
intent(in) :: Pair(LBi:,LBj:)
155# ifdef TIDE_GENERATING_FORCES
156 real(r8),
intent(in) :: eq_tide(LBi:,LBj:)
157 real(r8),
intent(inout) :: ad_eq_tide(LBi:,LBj:)
159# ifdef DIAGNOSTICS_UV
163 real(r8),
intent(inout) :: ad_Hz(LBi:,LBj:,:)
164 real(r8),
intent(inout) :: ad_z_r(LBi:,LBj:,:)
165 real(r8),
intent(inout) :: ad_z_w(LBi:,LBj:,0:)
166 real(r8),
intent(inout) :: ad_rho(LBi:,LBj:,:)
167 real(r8),
intent(inout) :: ad_ru(LBi:,LBj:,0:,:)
168 real(r8),
intent(inout) :: ad_rv(LBi:,LBj:,0:,:)
171 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
172 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
174 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
175 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
176 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
177 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
178 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
179 real(r8),
intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
181 real(r8),
intent(in) :: Pair(LBi:UBi,LBj:UBj)
183# ifdef TIDE_GENERATING_FORCES
184 real(r8),
intent(in) :: eq_tide(LBi:UBi,LBj:UBj)
185 real(r8),
intent(inout) :: ad_eq_tide(LBi:UBi,LBj:UBj)
187# ifdef DIAGNOSTICS_UV
191 real(r8),
intent(inout) :: ad_Hz(LBi:UBi,LBj:UBj,N(ng))
192 real(r8),
intent(inout) :: ad_z_r(LBi:UBi,LBj:UBj,N(ng))
193 real(r8),
intent(inout) :: ad_z_w(LBi:UBi,LBj:UBj,0:N(ng))
194 real(r8),
intent(inout) :: ad_rho(LBi:UBi,LBj:UBj,N(ng))
195 real(r8),
intent(inout) :: ad_ru(LBi:UBi,LBj:UBj,0:N(ng),2)
196 real(r8),
intent(inout) :: ad_rv(LBi:UBi,LBj:UBj,0:N(ng),2)
203 real(r8),
parameter :: OneFifth = 0.2_r8
204 real(r8),
parameter :: OneTwelfth = 1.0_r8/12.0_r8
205 real(r8),
parameter :: eps = 1.0e-10_r8
207 real(r8) :: GRho, GRho0, HalfGRho
208 real(r8) :: cff, cff1, cff2
210 real(r8) :: OneAtm, fac
212 real(r8) :: ad_cff, ad_cff1, ad_cff2, adfac
213 real(r8) :: adfac1, adfac2, adfac3, adfac4, adfac5, adfac6
214 real(r8) :: adfac7, adfac8, adfac9, adfac10, adfac11, adfac12
216 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: P
218 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: ad_P
220 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: dR
221 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: dR1
222 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: dZ
223 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: dZ1
225 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: ad_dR
226 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: ad_dZ
228 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FC
229 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: aux
230 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: dRx
231 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: dZx
233 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_FC
234 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_aux
235 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_dRx
236 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_dZx
238#include "set_bounds.h"
284 dr(i,k)=rho(i,j,k+1)-rho(i,j,k)
285 dz(i,k)=z_r(i,j,k+1)-z_r(i,j,k)
289 dr(i,n(ng))=dr(i,n(ng)-1)
290 dz(i,n(ng))=dz(i,n(ng)-1)
296 cff=2.0_r8*dr(i,k)*dr(i,k-1)
298 dr(i,k)=cff/(dr(i,k)+dr(i,k-1))
302 dz(i,k)=2.0_r8*dz(i,k)*dz(i,k-1)/(dz(i,k)+dz(i,k-1))
306 cff1=1.0_r8/(z_r(i,j,n(ng))-z_r(i,j,n(ng)-1))
307 cff2=0.5_r8*(rho(i,j,n(ng))-rho(i,j,n(ng)-1))* &
308 & (z_w(i,j,n(ng))-z_r(i,j,n(ng)))*cff1
309 p(i,j,n(ng))=
g*z_w(i,j,n(ng))+ &
311 & fac*(pair(i,j)-oneatm)+ &
313 & grho*(rho(i,j,n(ng))+cff2)* &
314 & (z_w(i,j,n(ng))-z_r(i,j,n(ng)))
315#ifdef TIDE_GENERATING_FORCES
316 p(i,j,n(ng))=p(i,j,n(ng))-
g*eq_tide(i,j)
321 p(i,j,k)=p(i,j,k+1)+ &
322 & halfgrho*((rho(i,j,k+1)+rho(i,j,k))* &
323 & (z_r(i,j,k+1)-z_r(i,j,k))- &
325 & ((dr(i,k+1)-dr(i,k))* &
326 & (z_r(i,j,k+1)-z_r(i,j,k)- &
328 & (dz(i,k+1)+dz(i,k)))- &
329 & (dz(i,k+1)-dz(i,k))* &
330 & (rho(i,j,k+1)-rho(i,j,k)- &
332 & (dr(i,k+1)+dr(i,k)))))
347 aux(i,j)=z_r(i,j,k)-z_r(i,j-1,k)
349 aux(i,j)=aux(i,j)*vmask(i,j)
351 fc(i,j)=rho(i,j,k)-rho(i,j-1,k)
353 fc(i,j)=fc(i,j)*vmask(i,j)
360 cff=2.0_r8*aux(i,j)*aux(i,j+1)
362 cff1=1.0_r8/(aux(i,j)+aux(i,j+1))
367 cff1=2.0_r8*fc(i,j)*fc(i,j+1)
368 IF (cff1.gt.eps)
THEN
369 cff2=1.0_r8/(fc(i,j)+fc(i,j+1))
422 adfac=om_v(i,j)*0.5_r8*ad_rv(i,j,k,nrhs)
423 adfac1=adfac*(p(i,j-1,k)-p(i,j,k)- &
425 & ((rho(i,j,k)+rho(i,j-1,k))* &
426 & (z_r(i,j,k)-z_r(i,j-1,k))- &
428 & ((drx(i,j)-drx(i,j-1))* &
429 & (z_r(i,j,k)-z_r(i,j-1,k)- &
431 & (dzx(i,j)+dzx(i,j-1)))- &
432 & (dzx(i,j)-dzx(i,j-1))* &
433 & (rho(i,j,k)-rho(i,j-1,k)- &
435 & (drx(i,j)+drx(i,j-1))))))
436 adfac2=adfac*(hz(i,j,k)+hz(i,j-1,k))
437 adfac3=adfac2*halfgrho
438 adfac4=adfac3*(z_r(i,j,k)-z_r(i,j-1,k))
439 adfac5=adfac3*(rho(i,j,k)+rho(i,j-1,k))
440 adfac6=adfac3*onefifth
441 adfac7=adfac6*(z_r(i,j,k)-z_r(i,j-1,k)- &
442 & onetwelfth*(dzx(i,j)+dzx(i,j-1)))
443 adfac8=adfac6*(drx(i,j)-drx(i,j-1))
444 adfac9=adfac8*onetwelfth
445 adfac10=adfac6*(rho(i,j,k)-rho(i,j-1,k)- &
446 & onetwelfth*(drx(i,j)+drx(i,j-1)))
447 adfac11=adfac6*(dzx(i,j)-dzx(i,j-1))
448 adfac12=adfac11*onetwelfth
449 ad_hz(i,j-1,k)=ad_hz(i,j-1,k)+adfac1
450 ad_hz(i,j ,k)=ad_hz(i,j ,k)+adfac1
451 ad_p(i,j-1,k)=ad_p(i,j-1,k)+adfac2
452 ad_p(i,j ,k)=ad_p(i,j ,k)-adfac2
453 ad_rho(i,j-1,k)=ad_rho(i,j-1,k)-adfac4+adfac11
454 ad_rho(i,j ,k)=ad_rho(i,j ,k)-adfac4-adfac11
455 ad_z_r(i,j-1,k)=ad_z_r(i,j-1,k)+adfac5-adfac8
456 ad_z_r(i,j ,k)=ad_z_r(i,j ,k)-adfac5+adfac8
457 ad_drx(i,j-1)=ad_drx(i,j-1)-adfac7+adfac12
458 ad_drx(i,j )=ad_drx(i,j )+adfac7+adfac12
459 ad_dzx(i,j-1)=ad_dzx(i,j-1)-adfac9+adfac10
460 ad_dzx(i,j )=ad_dzx(i,j )-adfac9-adfac10
461 ad_rv(i,j,k,nrhs)=0.0_r8
467 cff1=2.0_r8*fc(i,j)*fc(i,j+1)
468 IF (cff1.gt.eps)
THEN
469 cff2=1.0_r8/(fc(i,j)+fc(i,j+1))
472 ad_cff1=ad_cff1+cff2*ad_drx(i,j)
473 ad_cff2=ad_cff2+cff1*ad_drx(i,j)
477 adfac=-cff2*cff2*ad_cff2
478 ad_fc(i,j )=ad_fc(i,j )+adfac
479 ad_fc(i,j+1)=ad_fc(i,j+1)+adfac
490 ad_fc(i,j )=ad_fc(i,j )+fc(i,j+1)*adfac
491 ad_fc(i,j+1)=ad_fc(i,j+1)+fc(i,j )*adfac
494 cff=2.0_r8*aux(i,j)*aux(i,j+1)
496 cff1=1.0_r8/(aux(i,j)+aux(i,j+1))
499 ad_cff=ad_cff+cff1*ad_dzx(i,j)
500 ad_cff1=ad_cff1+cff*ad_dzx(i,j)
504 adfac=-cff1*cff1*ad_cff1
505 ad_aux(i,j )=ad_aux(i,j )+adfac
506 ad_aux(i,j+1)=ad_aux(i,j+1)+adfac
517 ad_aux(i,j )=ad_aux(i,j )+aux(i,j+1)*adfac
518 ad_aux(i,j+1)=ad_aux(i,j+1)+aux(i,j )*adfac
527 ad_fc(i,j)=ad_fc(i,j)*vmask(i,j)
531 ad_rho(i,j-1,k)=ad_rho(i,j-1,k)-ad_fc(i,j)
532 ad_rho(i,j, k)=ad_rho(i,j ,k)+ad_fc(i,j)
537 ad_aux(i,j)=ad_aux(i,j)*vmask(i,j)
541 ad_z_r(i,j-1,k)=ad_z_r(i,j-1,k)-ad_aux(i,j)
542 ad_z_r(i,j ,k)=ad_z_r(i,j ,k)+ad_aux(i,j)
558 aux(i,j)=z_r(i,j,k)-z_r(i-1,j,k)
560 aux(i,j)=aux(i,j)*umask(i,j)
562 fc(i,j)=rho(i,j,k)-rho(i-1,j,k)
564 fc(i,j)=fc(i,j)*umask(i,j)
571 cff=2.0_r8*aux(i,j)*aux(i+1,j)
573 cff1=1.0_r8/(aux(i,j)+aux(i+1,j))
578 cff1=2.0_r8*fc(i,j)*fc(i+1,j)
579 IF (cff1.gt.eps)
THEN
580 cff2=1.0_r8/(fc(i,j)+fc(i+1,j))
633 adfac=on_u(i,j)*0.5_r8*ad_ru(i,j,k,nrhs)
634 adfac1=adfac*(p(i-1,j,k)-p(i,j,k)- &
636 & ((rho(i,j,k)+rho(i-1,j,k))* &
637 & (z_r(i,j,k)-z_r(i-1,j,k))- &
639 & ((drx(i,j)-drx(i-1,j))* &
640 & (z_r(i,j,k)-z_r(i-1,j,k)- &
642 & (dzx(i,j)+dzx(i-1,j)))- &
643 & (dzx(i,j)-dzx(i-1,j))* &
644 & (rho(i,j,k)-rho(i-1,j,k)- &
646 & (drx(i,j)+drx(i-1,j))))))
647 adfac2=adfac*(hz(i,j,k)+hz(i-1,j,k))
648 adfac3=adfac2*halfgrho
649 adfac4=adfac3*(z_r(i,j,k)-z_r(i-1,j,k))
650 adfac5=adfac3*(rho(i,j,k)+rho(i-1,j,k))
651 adfac6=adfac3*onefifth
652 adfac7=adfac6*(z_r(i,j,k)-z_r(i-1,j,k)- &
653 & onetwelfth*(dzx(i,j)+dzx(i-1,j)))
654 adfac8=adfac6*(drx(i,j)-drx(i-1,j))
655 adfac9=adfac8*onetwelfth
656 adfac10=adfac6*(rho(i,j,k)-rho(i-1,j,k)- &
657 & onetwelfth*(drx(i,j)+drx(i-1,j)))
658 adfac11=adfac6*(dzx(i,j)-dzx(i-1,j))
659 adfac12=adfac11*onetwelfth
660 ad_hz(i-1,j,k)=ad_hz(i-1,j,k)+adfac1
661 ad_hz(i ,j,k)=ad_hz(i ,j,k)+adfac1
662 ad_p(i-1,j,k)=ad_p(i-1,j,k)+adfac2
663 ad_p(i ,j,k)=ad_p(i ,j,k)-adfac2
664 ad_rho(i-1,j,k)=ad_rho(i-1,j,k)-adfac4+adfac11
665 ad_rho(i ,j,k)=ad_rho(i ,j,k)-adfac4-adfac11
666 ad_z_r(i-1,j,k)=ad_z_r(i-1,j,k)+adfac5-adfac8
667 ad_z_r(i ,j,k)=ad_z_r(i ,j,k)-adfac5+adfac8
668 ad_drx(i-1,j)=ad_drx(i-1,j)-adfac7+adfac12
669 ad_drx(i ,j)=ad_drx(i ,j)+adfac7+adfac12
670 ad_dzx(i-1,j)=ad_dzx(i-1,j)-adfac9+adfac10
671 ad_dzx(i ,j)=ad_dzx(i ,j)-adfac9-adfac10
672 ad_ru(i,j,k,nrhs)=0.0_r8
678 cff1=2.0_r8*fc(i,j)*fc(i+1,j)
679 IF (cff1.gt.eps)
THEN
680 cff2=1.0_r8/(fc(i,j)+fc(i+1,j))
683 ad_cff1=ad_cff1+cff2*ad_drx(i,j)
684 ad_cff2=ad_cff2+cff1*ad_drx(i,j)
688 adfac=-cff2*cff2*ad_cff2
689 ad_fc(i ,j)=ad_fc(i ,j)+adfac
690 ad_fc(i+1,j)=ad_fc(i+1,j)+adfac
701 ad_fc(i ,j)=ad_fc(i ,j)+fc(i+1,j)*adfac
702 ad_fc(i+1,j)=ad_fc(i+1,j)+fc(i ,j)*adfac
705 cff=2.0_r8*aux(i,j)*aux(i+1,j)
707 cff1=1.0_r8/(aux(i,j)+aux(i+1,j))
710 ad_cff=ad_cff+cff1*ad_dzx(i,j)
711 ad_cff1=ad_cff1+cff*ad_dzx(i,j)
715 adfac=-cff1*cff1*ad_cff1
716 ad_aux(i ,j)=ad_aux(i ,j)+adfac
717 ad_aux(i+1,j)=ad_aux(i+1,j)+adfac
728 ad_aux(i ,j)=ad_aux(i ,j)+aux(i+1,j)*adfac
729 ad_aux(i+1,j)=ad_aux(i+1,j)+aux(i ,j)*adfac
738 ad_fc(i,j)=ad_fc(i,j)*umask(i,j)
742 ad_rho(i-1,j,k)=ad_rho(i-1,j,k)-ad_fc(i,j)
743 ad_rho(i ,j,k)=ad_rho(i ,j,k)+ad_fc(i,j)
748 ad_aux(i,j)=ad_aux(i,j)*umask(i,j)
752 ad_z_r(i-1,j,k)=ad_z_r(i-1,j,k)-ad_aux(i,j)
753 ad_z_r(i ,j,k)=ad_z_r(i ,j,k)+ad_aux(i,j)
766 dr(i,k)=rho(i,j,k+1)-rho(i,j,k)
767 dz(i,k)=z_r(i,j,k+1)-z_r(i,j,k)
773 dr(i,n(ng))=dr(i,n(ng)-1)
774 dr1(i,n(ng))=dr(i,n(ng))
775 dz(i,n(ng))=dz(i,n(ng)-1)
776 dz1(i,n(ng))=dz(i,n(ng))
784 cff=2.0_r8*dr(i,k)*dr(i,k-1)
786 dr(i,k)=cff/(dr(i,k)+dr(i,k-1))
790 dz(i,k)=2.0_r8*dz(i,k)*dz(i,k-1)/(dz(i,k)+dz(i,k-1))
798 ad_cff=ad_cff+ad_p(i,j,k)
821 adfac=halfgrho*ad_cff
822 adfac1=adfac*(z_r(i,j,k+1)-z_r(i,j,k))
823 adfac2=adfac*(rho(i,j,k+1)+rho(i,j,k))
824 adfac3=adfac*onefifth
825 adfac4=adfac3*(z_r(i,j,k+1)-z_r(i,j,k)- &
826 & onetwelfth*(dz(i,k+1)+dz(i,k)))
827 adfac5=adfac3*(dr(i,k+1)-dr(i,k))
828 adfac6=adfac5*onetwelfth
829 adfac7=adfac3*(rho(i,j,k+1)-rho(i,j,k)- &
830 & onetwelfth*(dr(i,k+1)+dr(i,k)))
831 adfac8=adfac3*(dz(i,k+1)-dz(i,k))
832 adfac9=adfac8*onetwelfth
833 ad_p(i,j,k+1)=ad_p(i,j,k+1)+ad_p(i,j,k)
834 ad_rho(i,j,k )=ad_rho(i,j,k )+adfac1-adfac8
835 ad_rho(i,j,k+1)=ad_rho(i,j,k+1)+adfac1+adfac8
836 ad_z_r(i,j,k )=ad_z_r(i,j,k )-adfac2+adfac5
837 ad_z_r(i,j,k+1)=ad_z_r(i,j,k+1)+adfac2-adfac5
838 ad_dr(i,k )=ad_dr(i,k )+adfac4-adfac9
839 ad_dr(i,k+1)=ad_dr(i,k+1)-adfac4-adfac9
840 ad_dz(i,k )=ad_dz(i,k )+adfac6-adfac7
841 ad_dz(i,k+1)=ad_dz(i,k+1)+adfac6+adfac7
846 cff1=1.0_r8/(z_r(i,j,n(ng))-z_r(i,j,n(ng)-1))
847 cff2=0.5_r8*(rho(i,j,n(ng))-rho(i,j,n(ng)-1))* &
848 & (z_w(i,j,n(ng))-z_r(i,j,n(ng)))*cff1
849#ifdef TIDE_GENERATING_FORCES
852 ad_eq_tide(i,j)=ad_eq_tide(i,j)-
g*ad_p(i,j,n(ng))
860 adfac=grho*ad_p(i,j,n(ng))
861 adfac1=adfac*(z_w(i,j,n(ng))-z_r(i,j,n(ng)))
862 adfac2=adfac*(rho(i,j,n(ng))+cff2)
863 ad_z_r(i,j,n(ng))=ad_z_r(i,j,n(ng))-adfac2
864 ad_z_w(i,j,n(ng))=ad_z_w(i,j,n(ng))+adfac2+ &
866 ad_rho(i,j,n(ng))=ad_rho(i,j,n(ng))+adfac1
867 ad_cff2=ad_cff2+adfac1
868 ad_p(i,j,n(ng))=0.0_r8
876 adfac1=adfac*(z_w(i,j,n(ng))-z_r(i,j,n(ng)))*cff1
877 adfac2=adfac*(rho(i,j,n(ng))-rho(i,j,n(ng)-1))
879 ad_rho(i,j,n(ng)-1)=ad_rho(i,j,n(ng)-1)-adfac1
880 ad_rho(i,j,n(ng) )=ad_rho(i,j,n(ng) )+adfac1
881 ad_z_r(i,j,n(ng))=ad_z_r(i,j,n(ng))-adfac3
882 ad_z_w(i,j,n(ng))=ad_z_w(i,j,n(ng))+adfac3
883 ad_cff1=ad_cff1+(z_w(i,j,n(ng))-z_r(i,j,n(ng)))*adfac2
887 adfac=-cff1*cff1*ad_cff1
888 ad_z_r(i,j,n(ng)-1)=ad_z_r(i,j,n(ng)-1)-adfac
889 ad_z_r(i,j,n(ng) )=ad_z_r(i,j,n(ng) )+adfac
903 adfac=ad_dz(i,k)/(dz1(i,k)+dz1(i,k-1))
906 ad_dz(i,k-1)=ad_dz(i,k-1)+dz1(i,k)*adfac1-adfac2
907 ad_dz(i,k )=dz1(i,k-1)*adfac1-adfac2
909 cff=2.0_r8*dr1(i,k)*dr1(i,k-1)
914 adfac=ad_dr(i,k)/(dr1(i,k)+dr1(i,k-1))
916 ad_dr(i,k-1)=ad_dr(i,k-1)-adfac1
928 ad_dr(i,k-1)=ad_dr(i,k-1)+dr1(i,k )*adfac
929 ad_dr(i,k )=ad_dr(i,k )+dr1(i,k-1)*adfac
936 ad_dz(i,1)=ad_dz(i,1)+ad_dz(i,0)
940 ad_dr(i,1)=ad_dr(i,1)+ad_dr(i,0)
944 ad_dz(i,n(ng)-1)=ad_dz(i,n(ng)-1)+ad_dz(i,n(ng))
945 ad_dz(i,n(ng))=0.0_r8
949 ad_dr(i,n(ng)-1)=ad_dr(i,n(ng)-1)+ad_dr(i,n(ng))
950 ad_dr(i,n(ng))=0.0_r8
956 ad_z_r(i,j,k )=ad_z_r(i,j,k )-ad_dz(i,k)
957 ad_z_r(i,j,k+1)=ad_z_r(i,j,k+1)+ad_dz(i,k)
962 ad_rho(i,j,k )=ad_rho(i,j,k )-ad_dr(i,k)
963 ad_rho(i,j,k+1)=ad_rho(i,j,k+1)+ad_dr(i,k)