81 & LBi, UBi, LBj, UBj, &
82 & IminS, ImaxS, JminS, JmaxS, &
88 & Zt_avg1, ad_Zt_avg1, &
89 & ad_Hz, ad_z_r, ad_z_w)
94# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
106 integer,
intent(in) :: ng, tile, model
107 integer,
intent(in) :: lbi, ubi, lbj, ubj
108 integer,
intent(in) :: imins, imaxs, jmins, jmaxs
109 integer,
intent(in) :: nstp, nnew
112 real(r8),
intent(in) :: h(lbi:,lbj:)
113 real(r8),
intent(in) :: zt_avg1(lbi:,lbj:)
115 real(r8),
intent(in) :: zice(lbi:,lbj:)
117 real(r8),
intent(inout) :: ad_h(lbi:,lbj:)
118 real(r8),
intent(inout) :: ad_zt_avg1(lbi:,lbj:)
119 real(r8),
intent(inout) :: ad_hz(lbi:,lbj:,:)
120 real(r8),
intent(inout) :: ad_z_r(lbi:,lbj:,:)
121 real(r8),
intent(inout) :: ad_z_w(lbi:,lbj:,0:)
123 real(r8),
intent(in) :: h(lbi:ubi,lbj:ubj)
124 real(r8),
intent(in) :: zt_avg1(lbi:ubi,lbj:ubj)
126 real(r8),
intent(in) :: zice(lbi:ubi,lbj:ubj)
128 real(r8),
intent(inout) :: ad_h(lbi:ubi,lbj:ubj)
129 real(r8),
intent(inout) :: ad_zt_avg1(lbi:ubi,lbj:ubj)
130 real(r8),
intent(inout) :: ad_hz(lbi:ubi,lbj:ubj,
n(ng))
131 real(r8),
intent(inout) :: ad_z_r(lbi:ubi,lbj:ubj,
n(ng))
132 real(r8),
intent(inout) :: ad_z_w(lbi:ubi,lbj:ubj,0:
n(ng))
139 real(r8) :: cff, cff_r, cff1_r, cff2_r, cff_w, cff1_w, cff2_w
140 real(r8) :: hinv, hwater, z_r0, z_w0
141 real(r8) :: adfac, ad_hinv, ad_hwater, ad_z_r0, ad_z_w0
142 real(r8) :: ad_cff2_r, ad_cff2_w
144# include "set_bounds.h"
171 & lbi, ubi, lbj, ubj, 1,
n(ng), &
182 & lbi, ubi, lbj, ubj, 0,
n(ng), &
193 & lbi, ubi, lbj, ubj, &
206 & lbi, ubi, lbj, ubj, 1,
n(ng), &
213 & lbi, ubi, lbj, ubj, 1,
n(ng), &
220 & lbi, ubi, lbj, ubj, 0,
n(ng), &
227 & lbi, ubi, lbj, ubj, &
252 hwater=hwater-abs(zice(i,j))
255 z_w0=cff_w+cff1_w*hwater
256 z_r0=cff_r+cff1_r*hwater
260 ad_z_w(i,j,k )=ad_z_w(i,j,k )+ad_hz(i,j,k)
261 ad_z_w(i,j,k-1)=ad_z_w(i,j,k-1)-ad_hz(i,j,k)
267 adfac=zt_avg1(i,j)*ad_z_r(i,j,k)
268 ad_z_r0=ad_z_r0+hinv*adfac+ad_z_r(i,j,k)
269 ad_hinv=ad_hinv+z_r0*adfac
270 ad_zt_avg1(i,j)=ad_zt_avg1(i,j)+ &
271 & (1.0_r8+z_r0*hinv)*ad_z_r(i,j,k)
275 ad_hwater=ad_hwater+cff1_r*ad_z_r0
281 adfac=zt_avg1(i,j)*ad_z_w(i,j,k)
282 ad_z_w0=ad_z_w0+hinv*adfac+ad_z_w(i,j,k)
283 ad_hinv=ad_hinv+z_w0*adfac
284 ad_zt_avg1(i,j)=ad_zt_avg1(i,j)+ &
285 & (1.0_r8+z_w0*hinv)*ad_z_w(i,j,k)
289 ad_hwater=ad_hwater+cff1_w*ad_z_w0
293 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
297 ad_h(i,j)=ad_h(i,j)+ad_hwater
305 ad_h(i,j)=ad_h(i,j)-ad_z_w(i,j,0)
308 IF (h(i,j).eq.0.0_r8)
THEN
338 hwater=hwater-abs(zice(i,j))
340 hinv=1.0_r8/(
hc(ng)+hwater)
341 cff2_r=(cff_r+cff1_r*hwater)*hinv
342 cff2_w=(cff_w+cff1_w*hwater)*hinv
345 ad_z_w(i,j,k )=ad_z_w(i,j,k )+ad_hz(i,j,k)
346 ad_z_w(i,j,k-1)=ad_z_w(i,j,k-1)-ad_hz(i,j,k)
352 adfac=cff2_r*ad_z_r(i,j,k)
353 ad_cff2_r=ad_cff2_r+ &
354 & (zt_avg1(i,j)+hwater)*ad_z_r(i,j,k)
355 ad_hwater=ad_hwater+adfac
356 ad_zt_avg1(i,j)=ad_zt_avg1(i,j)+ad_z_r(i,j,k)+adfac
362 & (cff_r+cff1_r*hwater)*ad_cff2_r
363 ad_hwater=ad_hwater+ &
364 & cff1_r*hinv*ad_cff2_r
370 adfac=cff2_w*ad_z_w(i,j,k)
371 ad_cff2_w=ad_cff2_w+ &
372 & (zt_avg1(i,j)+hwater)*ad_z_w(i,j,k)
373 ad_hwater=ad_hwater+adfac
374 ad_zt_avg1(i,j)=ad_zt_avg1(i,j)+ad_z_w(i,j,k)+adfac
380 & (cff_w+cff1_w*hwater)*ad_cff2_w
381 ad_hwater=ad_hwater+ &
382 & cff1_w*hinv*ad_cff2_w
386 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
390 ad_h(i,j)=ad_h(i,j)+ad_hwater
398 ad_h(i,j)=ad_h(i,j)-ad_z_w(i,j,0)
401 IF (h(i,j).eq.0.0_r8)
THEN
455 & LBi, UBi, LBj, UBj, LBij, UBij, &
456 & IminS, ImaxS, JminS, JmaxS, &
475 integer,
intent(in) :: ng, tile, model
476 integer,
intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
477 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
480 real(r8),
intent(in) :: h(LBi:,LBj:)
481 real(r8),
intent(inout) :: ad_h(LBi:,LBj:)
483 real(r8),
intent(in) :: zice(LBi:,LBj:)
485 real(r8),
intent(out) :: ad_Hz_bry(LBij:,:,:)
487 real(r8),
intent(in) :: h(LBi:UBi,LBj:UBj)
488 real(r8),
intent(inout) :: ad_h(LBi:UBi,LBj:UBj)
490 real(r8),
intent(in) :: zice(LBi:UBi,LBj:UBj)
492 real(r8),
intent(out) :: ad_Hz_bry(LBij:UBij,N(ng),4)
497 integer :: i, ibry, j, k
499 real(r8) :: cff_w, cff1_w, cff2_w
500 real(r8) :: hinv, hwater, z_w0
501 real(r8) :: ad_cff2_w, ad_hinv, ad_hwater, ad_z_w0
504 real(r8),
dimension(0:N(ng)) :: ad_Zw
506# include "set_bounds.h"
516 ad_zw(0:n(ng))=0.0_r8
532 & lbij, ubij, 1, n(ng), &
535 & ad_hz_bry(:,:,ibry))
553 &
domain(ng)%Northern_Edge(tile))
THEN
558 hwater=hwater-abs(zice(i,j))
564 z_w0=cff_w+cff1_w*hwater
567 ad_zw(k-1)=ad_zw(k-1)-ad_hz_bry(i,k,
inorth)
568 ad_zw(k )=ad_zw(k )+ad_hz_bry(i,k,
inorth)
569 ad_hz_bry(i,k,
inorth)=0.0_r8
576 adfac=
boundary(ng)%zeta_north(i)*ad_zw(k)
577 ad_z_w0=ad_z_w0+hinv*adfac+ad_zw(k)
578 ad_hinv=ad_hinv+z_w0*adfac
580 & ad_zeta_north(i)+ &
581 & (1.0_r8+z_w0*hinv)*ad_zw(k)
585 ad_hwater=ad_hwater+cff1_w*ad_z_w0
590 ad_h(i,j)=ad_h(i,j)-ad_zw(0)
594 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
598 ad_h(i,j)=ad_h(i,j)+ad_hwater
604 &
domain(ng)%Southern_Edge(tile))
THEN
609 hwater=hwater-abs(zice(i,j))
615 z_w0=cff_w+cff1_w*hwater
618 ad_zw(k-1)=ad_zw(k-1)-ad_hz_bry(i,k,
isouth)
619 ad_zw(k )=ad_zw(k )+ad_hz_bry(i,k,
isouth)
620 ad_hz_bry(i,k,
isouth)=0.0_r8
627 adfac=
boundary(ng)%zeta_south(i)*ad_zw(k)
628 ad_z_w0=ad_z_w0+hinv*adfac+ad_zw(k)
629 ad_hinv=ad_hinv+z_w0*adfac
631 & ad_zeta_south(i)+ &
632 & (1.0_r8+z_w0*hinv)*ad_zw(k)
636 ad_hwater=ad_hwater+cff1_w*ad_z_w0
641 ad_h(i,j)=ad_h(i,j)-ad_zw(0)
645 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
649 ad_h(i,j)=ad_h(i,j)+ad_hwater
655 &
domain(ng)%Eastern_Edge(tile))
THEN
660 hwater=hwater-abs(zice(i,j))
666 z_w0=cff_w+cff1_w*hwater
669 ad_zw(k-1)=ad_zw(k-1)-ad_hz_bry(i,k,
ieast)
670 ad_zw(k )=ad_zw(k )+ad_hz_bry(i,k,
ieast)
671 ad_hz_bry(i,k,
ieast)=0.0_r8
678 adfac=
boundary(ng)%zeta_east(j)*ad_zw(k)
679 ad_z_w0=ad_z_w0+hinv*adfac+ad_zw(k)
680 ad_hinv=ad_hinv+z_w0*adfac
683 & (1.0_r8+z_w0*hinv)*ad_zw(k)
687 ad_hwater=ad_hwater+cff1_w*ad_z_w0
692 ad_h(i,j)=ad_h(i,j)-ad_zw(0)
696 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
700 ad_h(i,j)=ad_h(i,j)+ad_hwater
706 &
domain(ng)%Western_Edge(tile))
THEN
711 hwater=hwater-abs(zice(i,j))
717 z_w0=cff_w+cff1_w*hwater
720 ad_zw(k-1)=ad_zw(k-1)-ad_hz_bry(i,k,
iwest)
721 ad_zw(k )=ad_zw(k )+ad_hz_bry(i,k,
iwest)
722 ad_hz_bry(i,k,
iwest)=0.0_r8
729 adfac=
boundary(ng)%zeta_west(j)*ad_zw(k)
730 ad_z_w0=ad_z_w0+hinv*adfac+ad_zw(k)
731 ad_hinv=ad_hinv+z_w0*adfac
734 & (1.0_r8+z_w0*hinv)*ad_zw(k)
738 ad_hwater=ad_hwater+cff1_w*ad_z_w0
743 ad_h(i,j)=ad_h(i,j)-ad_zw(0)
747 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
751 ad_h(i,j)=ad_h(i,j)+ad_hwater
770 &
domain(ng)%Northern_Edge(tile))
THEN
775 hwater=hwater-abs(zice(i,j))
777 hinv=1.0_r8/(
hc(ng)+hwater)
781 cff2_w=(cff_w+cff1_w*hwater)*hinv
784 ad_zw(k-1)=ad_zw(k-1)-ad_hz_bry(i,k,
inorth)
785 ad_zw(k )=ad_zw(k )+ad_hz_bry(i,k,
inorth)
786 ad_hz_bry(i,k,
inorth)=0.0_r8
793 adfac=cff2_w*ad_zw(k)
794 ad_cff2_w=ad_cff2_w+ &
795 & (
boundary(ng)%zeta_north(i)+hwater)*ad_zw(k)
796 ad_hwater=ad_hwater+adfac
798 & ad_zeta_north(i)+ &
805 & (cff_w+cff1_w*hwater)*ad_cff2_w
806 ad_hwater=ad_hwater+ &
807 & cff1_w*hinv*ad_cff2_w
812 ad_h(i,j)=ad_h(i,j)-ad_zw(0)
816 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
820 ad_h(i,j)=ad_h(i,j)+ad_hwater
826 &
domain(ng)%Southern_Edge(tile))
THEN
831 hwater=hwater-abs(zice(i,j))
833 hinv=1.0_r8/(
hc(ng)+hwater)
837 cff2_w=(cff_w+cff1_w*hwater)*hinv
840 ad_zw(k-1)=ad_zw(k-1)-ad_hz_bry(i,k,
isouth)
841 ad_zw(k )=ad_zw(k )+ad_hz_bry(i,k,
isouth)
842 ad_hz_bry(i,k,
isouth)=0.0_r8
849 adfac=cff2_w*ad_zw(k)
850 ad_cff2_w=ad_cff2_w+ &
851 & (
boundary(ng)%zeta_south(i)+hwater)*ad_zw(k)
852 ad_hwater=ad_hwater+adfac
854 & ad_zeta_south(i)+ &
861 & (cff_w+cff1_w*hwater)*ad_cff2_w
862 ad_hwater=ad_hwater+ &
863 & cff1_w*hinv*ad_cff2_w
868 ad_h(i,j)=ad_h(i,j)-ad_zw(0)
872 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
876 ad_h(i,j)=ad_h(i,j)+ad_hwater
882 &
domain(ng)%Eastern_Edge(tile))
THEN
887 hwater=hwater-abs(zice(i,j))
889 hinv=1.0_r8/(
hc(ng)+hwater)
893 cff2_w=(cff_w+cff1_w*hwater)*hinv
896 ad_zw(k-1)=ad_zw(k-1)-ad_hz_bry(i,k,
ieast)
897 ad_zw(k )=ad_zw(k )+ad_hz_bry(i,k,
ieast)
898 ad_hz_bry(i,k,
ieast)=0.0_r8
905 adfac=cff2_w*ad_zw(k)
906 ad_cff2_w=ad_cff2_w+ &
907 & (
boundary(ng)%zeta_east(j)+hwater)*ad_zw(k)
908 ad_hwater=ad_hwater+adfac
917 & (cff_w+cff1_w*hwater)*ad_cff2_w
918 ad_hwater=ad_hwater+ &
919 & cff1_w*hinv*ad_cff2_w
924 ad_h(i,j)=ad_h(i,j)-ad_zw(0)
928 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
932 ad_h(i,j)=ad_h(i,j)+ad_hwater
938 &
domain(ng)%Western_Edge(tile))
THEN
943 hwater=hwater-abs(zice(i,j))
945 hinv=1.0_r8/(
hc(ng)+hwater)
949 cff2_w=(cff_w+cff1_w*hwater)*hinv
952 ad_zw(k-1)=ad_zw(k-1)-ad_hz_bry(i,k,
iwest)
953 ad_zw(k )=ad_zw(k )+ad_hz_bry(i,k,
iwest)
954 ad_hz_bry(i,k,
iwest)=0.0_r8
961 adfac=cff2_w*ad_zw(k)
962 ad_cff2_w=ad_cff2_w+ &
963 & (
boundary(ng)%zeta_west(j)+hwater)*ad_zw(k)
964 ad_hwater=ad_hwater+adfac
973 & (cff_w+cff1_w*hwater)*ad_cff2_w
974 ad_hwater=ad_hwater+ &
975 & cff1_w*hinv*ad_cff2_w
980 ad_h(i,j)=ad_h(i,j)-ad_zw(0)
984 ad_hwater=ad_hwater-hinv*hinv*ad_hinv
988 ad_h(i,j)=ad_h(i,j)+ad_hwater