673 REAL(SP) :: XFLUX(0:NT,KB),YFLUX(0:NT,KB)
674 REAL(SP) :: PSTX_TM(0:NT,KB),PSTY_TM(0:NT,KB)
675 REAL(SP) :: COFA1,COFA2,COFA3,COFA4,COFA5,COFA6,COFA7,COFA8
676 REAL(SP) :: XADV,YADV,TXXIJ,TYYIJ,TXYIJ,UN
677 REAL(SP) :: VISCOF,VISCOF1,VISCOF2,TEMP,TPA,TPB
678 REAL(SP) :: XIJA,YIJA,XIJB,YIJB,UIJ,VIJ
679 REAL(SP) :: SITA,DIJ,ELIJ,TMPA,TMPB,TMP,XFLUXV,YFLUXV
680 REAL(SP) :: FACT,FM1,EXFLUX,ISWETTMP
681 INTEGER :: I,IA,IB,J1,J2,K1,K2,K3,K4,K5,K6,K,II,J,I1,I2
684 REAL(SP) :: UIJ1_TMP,VIJ1_TMP,UIJ2_TMP,VIJ2_TMP,UIJ3_TMP,VIJ3_TMP
685 REAL(SP) :: U_TMP,V_TMP,UF_TMP,VF_TMP
686 REAL(SP) :: TXXIJ_TMP,TYYIJ_TMP
687 REAL(SP) :: XADV_TMP,YADV_TMP,PSTX_TMP,PSTY_TMP
688 REAL(SP) :: UIJ_TMP,VIJ_TMP,EXFLUX_TMP
689 REAL(SP) :: DLTXC_TMP,DLTYC_TMP
690 REAL(SP) :: VX1_TMP,VX2_TMP,VY1_TMP,VY2_TMP
691 REAL(SP) :: UIA,VIA,UIB,VIB,UK1,VK1,UK2,VK2,UK3,VK3,UK4,VK4,UK5,VK5,UK6,VK6
692 REAL(SP) :: XIJC_TMP,YIJC_TMP,XCIA_TMP,YCIA_TMP,XCIB_TMP,YCIB_TMP
696 REAL(SP) :: UIJ1,VIJ1,UIJ2,VIJ2,FXX,FYY
698 INTEGER :: STG, K_STG
713 CALL fatal_error(
"UNKNOW HORIZONTAL MIXING TYPE:",&
729 pstx_tm(ia,k) = 0.0_sp
730 psty_tm(ia,k) = 0.0_sp
735 pstx_tm(ib,k) = 0.0_sp
736 psty_tm(ib,k) = 0.0_sp
754 elij=0.5_sp*(
egf(j1)+
egf(j2))
781 xija = xijc_tmp-xcia_tmp
782 yija = yijc_tmp-ycia_tmp
783 xijb = xijc_tmp-xcib_tmp
784 yijb = yijc_tmp-ycib_tmp
788 dij=0.5_sp*(
dt(j1)*
dz(j1,k)+
dt(j2)*
dz(j2,k))
816 uij1=uia+cofa1*xija+cofa2*yija
817 vij1=via+cofa5*xija+cofa6*yija
828 uij2=uib+cofa3*xijb+cofa4*yijb
829 vij2=vib+cofa7*xijb+cofa8*yijb
833 viscof1=
art(ia)*sqrt(cofa1**2+cofa6**2+0.5_sp*(cofa2+cofa5)**2)
834 viscof2=
art(ib)*sqrt(cofa3**2+cofa8**2+0.5_sp*(cofa4+cofa7)**2)
851 dltxc_tmp = vx2_tmp-vx1_tmp
852 dltyc_tmp = vy2_tmp-vy1_tmp
854 txxij=(cofa1+cofa3)*viscof
855 tyyij=(cofa6+cofa8)*viscof
856 txyij=0.5_sp*(cofa2+cofa4+cofa5+cofa7)*viscof
857 fxx=dij*(txxij*dltyc_tmp-txyij*dltxc_tmp)
858 fyy=dij*(txyij*dltyc_tmp-tyyij*dltxc_tmp)
866 uij_tmp=0.5_sp*(uij1+uij2)
867 vij_tmp=0.5_sp*(vij1+vij2)
868 exflux_tmp = dij*(-uij_tmp*dltyc_tmp + vij_tmp*dltxc_tmp)
875 xadv_tmp=exflux_tmp*&
876 ((1.0_sp-sign(1.0_sp,exflux_tmp))*uij2_tmp &
877 +(1.0_sp+sign(1.0_sp,exflux_tmp))*uij1_tmp)*0.5_sp
878 yadv_tmp=exflux_tmp* &
879 ((1.0_sp-sign(1.0_sp,exflux_tmp))*vij2_tmp &
880 +(1.0_sp+sign(1.0_sp,exflux_tmp))*vij1_tmp)*0.5_sp
882 xflux(ia,k)=xflux(ia,k)+xadv_tmp*tpa+(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ia)
883 yflux(ia,k)=yflux(ia,k)+yadv_tmp*tpa+(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ia)
884 xflux(ib,k)=xflux(ib,k)-xadv_tmp*tpb-(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ib)
885 yflux(ib,k)=yflux(ib,k)-yadv_tmp*tpb-(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ib)
887 xflux(ia,k)=xflux(ia,k)+xadv_tmp*tpa+(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ia)
888 yflux(ia,k)=yflux(ia,k)+yadv_tmp*tpa+(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ia)
890 xflux(ib,k)=xflux(ib,k)-xadv_tmp*tpb-(fxx+3.0_sp*fxx*float(
isbc(i)))*
epor(ib)
891 yflux(ib,k)=yflux(ib,k)-yadv_tmp*tpb-(fyy+3.0_sp*fyy*float(
isbc(i)))*
epor(ib)
904 dltxc_tmp = vx2_tmp-vx1_tmp
905 dltyc_tmp = vy2_tmp-vy1_tmp
908 pstx_tm(ia,k)=pstx_tm(ia,k)-
grav_e(ia)*
dt1(ia)*
dz1(ia,k)*elij*dltyc_tmp/ &
910 psty_tm(ia,k)=psty_tm(ia,k)+
grav_e(ia)*
dt1(ia)*
dz1(ia,k)*elij*dltxc_tmp/ &
912 pstx_tm(ib,k)=pstx_tm(ib,k)+
grav_e(ib)*
dt1(ib)*
dz1(ib,k)*elij*dltyc_tmp/ &
914 psty_tm(ib,k)=psty_tm(ib,k)-
grav_e(ib)*
dt1(ib)*
dz1(ib,k)*elij*dltxc_tmp/ &
917 pstx_tm(ia,k)=pstx_tm(ia,k)-
grav_e(ia)*
dt1(ia)*
dz1(ia,k)*elij*dltyc_tmp/ &
919 psty_tm(ia,k)=psty_tm(ia,k)+
grav_e(ia)*
dt1(ia)*
dz1(ia,k)*elij*dltxc_tmp/ &
922 pstx_tm(ib,k)=pstx_tm(ib,k)+
grav_e(ib)*
dt1(ib)*
dz1(ib,k)*elij*dltyc_tmp/ &
924 psty_tm(ib,k)=psty_tm(ib,k)-
grav_e(ib)*
dt1(ib)*
dz1(ib,k)*elij*dltxc_tmp/ &
934 xflux(i,k)=xflux(i,k)+pstx_tm(i,k)
935 yflux(i,k)=yflux(i,k)+psty_tm(i,k)
951 xfluxv=-
w(i,k+1)*(uij1_tmp*
dz1(i,k+1)+uij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k+1))
952 yfluxv=-
w(i,k+1)*(vij1_tmp*
dz1(i,k+1)+vij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k+1))
953 ELSE IF(k ==
kbm1)
THEN 958 xfluxv=
w(i,k)*(uij1_tmp*
dz1(i,k-1)+uij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k-1))
959 yfluxv=
w(i,k)*(vij1_tmp*
dz1(i,k-1)+vij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k-1))
967 xfluxv=
w(i,k)*(uij1_tmp*
dz1(i,k-1)+uij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k-1))- &
968 w(i,k+1)*(uij1_tmp*
dz1(i,k+1)+uij3_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k+1))
969 yfluxv=
w(i,k)*(vij1_tmp*
dz1(i,k-1)+vij2_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k-1))- &
970 w(i,k+1)*(vij1_tmp*
dz1(i,k+1)+vij3_tmp*
dz1(i,k))/(
dz1(i,k)+
dz1(i,k+1))
978 xflux(i,k)=xflux(i,k)+xfluxv*
art(i)&
980 yflux(i,k)=yflux(i,k)+yfluxv*
art(i)&
integer, dimension(:,:), allocatable, target ienode
real(sp), dimension(:), allocatable, target epor
real(sp), dimension(:), allocatable, target cor
real(dp), parameter rearth
real(sp), dimension(:), allocatable, target art
real(sp), dimension(:,:), allocatable, target v
logical function dbg_set(vrb)
integer, dimension(:), allocatable npedge_lst
real(sp), dimension(:), allocatable, target yc
real(sp), dimension(:), allocatable cc_hvc
real(sp), dimension(:,:), allocatable, target w
real(sp), dimension(:), allocatable, target egf
real(sp), dimension(:,:), allocatable, target u
integer, dimension(:), allocatable, target isbc
integer, dimension(:,:), allocatable, target iec
real(sp), dimension(:,:), allocatable, target drhox
integer, dimension(:), allocatable cell_northarea
real(sp), dimension(:), allocatable, target vx
real(sp), dimension(:), allocatable, target grav_e
real(sp), dimension(:), allocatable, target vy
integer, dimension(:,:), allocatable, target nbe
real(sp), dimension(:), allocatable, target xijc
real(dp), dimension(:,:), allocatable a2u_xy
integer, dimension(:), allocatable np_lst
real(sp), dimension(:,:), allocatable, target drhoy
real(sp), dimension(:,:), allocatable, target dz
real(sp), dimension(:), allocatable, target yijc
real(dp), dimension(:,:), allocatable a1u_xy
real(sp), dimension(:), allocatable, target dt1
real(dp), parameter deg2rad
subroutine fatal_error(ER1, ER2, ER3, ER4)
real(sp), dimension(:), allocatable, target xc
real(sp), dimension(:,:), allocatable, target dz1
character(len=80) horizontal_mixing_type
integer, parameter dbg_sbr
real(sp), dimension(:), allocatable, target dt