57 REAL(SP),
INTENT(OUT),
DIMENSION(0:NT,KB) :: XFLUX,YFLUX
59 REAL(SP) :: COFA1,COFA2,COFA3,COFA4,COFA5,COFA6,COFA7,COFA8
60 REAL(SP) :: XADV,YADV,TXXIJ,TYYIJ,TXYIJ,UN
61 REAL(SP) :: VISCOF,VISCOF1,VISCOF2,TEMP,TPA,TPB
62 REAL(SP) :: XIJA,YIJA,XIJB,YIJB,UIJ,VIJ
64 INTEGER :: I,IA,IB,J1,J2,K1,K2,K3,K4,K5,K6,K,II,J,I1,I2
67 REAL(SP) :: UIJ1,VIJ1,UIJ2,VIJ2,FXX,FYY
68 REAL(SP) :: UK1(KB),UK2(KB),UK3(KB),UK4(KB),UK5(KB),UK6(KB), &
69 VK1(KB),VK2(KB),VK3(KB),VK4(KB),VK5(KB),VK6(KB)
75 SELECT CASE(horizontal_mixing_type)
84 & trim(horizontal_mixing_type) )
128 IF(k1 == 0)
CALL ghostuv3(ia,1,uk1,vk1)
129 IF(k2 == 0)
CALL ghostuv3(ia,2,uk2,vk2)
130 IF(k3 == 0)
CALL ghostuv3(ia,3,uk3,vk3)
131 IF(k4 == 0)
CALL ghostuv3(ib,1,uk4,vk4)
132 IF(k5 == 0)
CALL ghostuv3(ib,2,uk5,vk5)
133 IF(k6 == 0)
CALL ghostuv3(ib,3,uk6,vk6)
137 dij= 0.5_sp*(
dt(j1)*
dz(j1,k)+
dt(j2)*
dz(j2,k))
140 cofa1=
a1u(ia,1)*
u(ia,k)+
a1u(ia,2)*uk1(k)+
a1u(ia,3)*uk2(k)+
a1u(ia,4)*uk3(k)
141 cofa2=
a2u(ia,1)*
u(ia,k)+
a2u(ia,2)*uk1(k)+
a2u(ia,3)*uk2(k)+
a2u(ia,4)*uk3(k)
142 cofa5=
a1u(ia,1)*
v(ia,k)+
a1u(ia,2)*vk1(k)+
a1u(ia,3)*vk2(k)+
a1u(ia,4)*vk3(k)
143 cofa6=
a2u(ia,1)*
v(ia,k)+
a2u(ia,2)*vk1(k)+
a2u(ia,3)*vk2(k)+
a2u(ia,4)*vk3(k)
144 uij1=
u(ia,k)+cofa1*xija+cofa2*yija
145 vij1=
v(ia,k)+cofa5*xija+cofa6*yija
148 cofa3=
a1u(ib,1)*
u(ib,k)+
a1u(ib,2)*uk4(k)+
a1u(ib,3)*uk5(k)+
a1u(ib,4)*uk6(k)
149 cofa4=
a2u(ib,1)*
u(ib,k)+
a2u(ib,2)*uk4(k)+
a2u(ib,3)*uk5(k)+
a2u(ib,4)*uk6(k)
150 cofa7=
a1u(ib,1)*
v(ib,k)+
a1u(ib,2)*vk4(k)+
a1u(ib,3)*vk5(k)+
a1u(ib,4)*vk6(k)
151 cofa8=
a2u(ib,1)*
v(ib,k)+
a2u(ib,2)*vk4(k)+
a2u(ib,3)*vk5(k)+
a2u(ib,4)*vk6(k)
152 uij2=
u(ib,k)+cofa3*xijb+cofa4*yijb
153 vij2=
v(ib,k)+cofa7*xijb+cofa8*yijb
156 uij=0.5_sp*(uij1+uij2)
157 vij=0.5_sp*(vij1+vij2)
160 viscof1=
art(ia)*sqrt(cofa1**2+cofa6**2+0.5_sp*(cofa2+cofa5)**2)
161 viscof2=
art(ib)*sqrt(cofa3**2+cofa8**2+0.5_sp*(cofa4+cofa7)**2)
168 txxij=(cofa1+cofa3)*viscof
169 tyyij=(cofa6+cofa8)*viscof
170 txyij=0.5_sp*(cofa2+cofa4+cofa5+cofa7)*viscof
176 xadv=dij*un*((1.0_sp-sign(1.0_sp,un))*uij2+(1.0_sp+sign(1.0_sp,un))*uij1)*0.5_sp
177 yadv=dij*un*((1.0_sp-sign(1.0_sp,un))*vij2+(1.0_sp+sign(1.0_sp,un))*vij1)*0.5_sp
186 xflux(ia,k)=xflux(ia,k)+xadv*tpa+fxx*tpa
187 yflux(ia,k)=yflux(ia,k)+yadv*tpa+fyy*tpa
188 xflux(ib,k)=xflux(ib,k)-xadv*tpb-fxx*tpb
189 yflux(ib,k)=yflux(ib,k)-yadv*tpb-fyy*tpb
200 xflux(i,k) = xflux(i,k)*iswettmp
201 yflux(i,k) = yflux(i,k)*iswettmp
210 IF(
isbce(i) == 2)
THEN 223 IF(river_inflow_location ==
'node')
THEN 236 xflux(i1,k)=xflux(i1,k)-temp*cos(
angleq(ii))
237 xflux(i2,k)=xflux(i2,k)-temp*cos(
angleq(ii))
238 yflux(i1,k)=yflux(i1,k)-temp*sin(
angleq(ii))
239 yflux(i2,k)=yflux(i2,k)-temp*sin(
angleq(ii))
242 ELSE IF(river_inflow_location ==
'edge')
THEN 251 xflux(i1,k)=xflux(i1,k)-temp*cos(
angleq(ii))
252 yflux(i1,k)=yflux(i1,k)-temp*sin(
angleq(ii))
integer, dimension(:,:), allocatable, target ienode
real(sp), dimension(:), allocatable, target epor
real(sp), dimension(:), allocatable, target art
real(sp), dimension(:,:), allocatable, target v
real(sp), dimension(:,:), allocatable, target vqdist
logical function dbg_set(vrb)
real(sp), dimension(:), allocatable, target qdis
real(sp), dimension(:), allocatable, target yc
real(sp), dimension(:), allocatable cc_hvc
real(sp), dimension(:), allocatable, target dltxc
subroutine ghostuv3(I, JJ, UAKK, VAKK)
real(sp), dimension(:,:), allocatable, target a1u
integer, dimension(:), allocatable iswetct
real(sp), dimension(:,:), allocatable, target u
integer, dimension(:), allocatable, target isbc
real(sp), dimension(:), allocatable, target angleq
integer, dimension(:,:), allocatable, target iec
subroutine advection_edge_gcy(XFLUX, YFLUX)
integer, dimension(:), allocatable, target ntve
integer, dimension(:,:), allocatable, target nbe
real(sp), dimension(:), allocatable, target xijc
real(sp), dimension(:), allocatable, target qarea
real(sp), dimension(:), allocatable, target dltyc
real(sp), dimension(:,:), allocatable, target dz
integer, dimension(:), allocatable, target icellq
real(sp), dimension(:), allocatable, target yijc
real(sp), dimension(:,:), allocatable, target a2u
integer, dimension(:), allocatable iswetc
integer, dimension(:,:), allocatable, target nbve
subroutine fatal_error(ER1, ER2, ER3, ER4)
real(sp), dimension(:), allocatable, target xc
real(sp), dimension(:,:), allocatable, target dz1
integer, dimension(:), allocatable, target isbce
real(sp), dimension(:), allocatable, target vlctyq
integer, parameter dbg_sbr
integer, dimension(:), allocatable, target inodeq
real(sp), dimension(:), allocatable, target dt