62 REAL(SP) :: XFLUX(0:NT,KB),YFLUX(0:NT,KB)
63 REAL(SP) :: PSTX_TM(0:NT,KB),PSTY_TM(0:NT,KB)
64 REAL(SP) :: COFA1,COFA2,COFA3,COFA4,COFA5,COFA6,COFA7,COFA8
65 REAL(SP) :: XADV,YADV,TXXIJ,TYYIJ,TXYIJ
66 REAL(SP) :: VISCOF,VISCOF1,VISCOF2,TEMP,TPA,TPB
67 REAL(SP) :: XIJA,YIJA,XIJB,YIJB,UIJ,VIJ
68 REAL(SP) :: DIJ,ELIJ,TMPA,TMPB,TMP,XFLUXV,YFLUXV
69 REAL(SP) :: FACT,FM1,EXFLUX,ISWETTMP
70 INTEGER :: I,IA,IB,J1,J2,K1,K2,K3,K4,K5,K6,K,II,J,I1,I2
73 REAL(SP) :: UIJ1,VIJ1,UIJ2,VIJ2,FXX,FYY
77 REAL(SP) :: A1UIA1,A1UIA2,A1UIA3,A1UIA4,A2UIA1,A2UIA2,A2UIA3,A2UIA4
78 REAL(SP) :: A1UIB1,A1UIB2,A1UIB3,A1UIB4,A2UIB1,A2UIB2,A2UIB3,A2UIB4
79 INTEGER :: J11,J12,J21,J22,E1,E2,ISBCE1,ISBC_TMP,IB_TMP
86 SELECT CASE(horizontal_mixing_type)
95 & trim(horizontal_mixing_type) )
120 elij=0.5_sp*(
egf(j1)+
egf(j2))
152 dij=0.5_sp*(
dt(j1)*
dz(j1,k)+
dt(j2)*
dz(j2,k))
171 a1uib1 =
a1u(ib_tmp,1)
172 a1uib2 =
a1u(ib_tmp,2)
173 a1uib3 =
a1u(ib_tmp,3)
174 a1uib4 =
a1u(ib_tmp,4)
175 a2uib1 =
a2u(ib_tmp,1)
176 a2uib2 =
a2u(ib_tmp,2)
177 a2uib3 =
a2u(ib_tmp,3)
178 a2uib4 =
a2u(ib_tmp,4)
202 cofa1=a1uia1*
u(ia,k)+a1uia2*
u(k1,k)+a1uia3*
u(k2,k)+a1uia4*
u(k3,k)
203 cofa2=a2uia1*
u(ia,k)+a2uia2*
u(k1,k)+a2uia3*
u(k2,k)+a2uia4*
u(k3,k)
204 cofa5=a1uia1*
v(ia,k)+a1uia2*
v(k1,k)+a1uia3*
v(k2,k)+a1uia4*
v(k3,k)
205 cofa6=a2uia1*
v(ia,k)+a2uia2*
v(k1,k)+a2uia3*
v(k2,k)+a2uia4*
v(k3,k)
211 uij1=
u(ia,k)+cofa1*xija+cofa2*yija
212 vij1=
v(ia,k)+cofa5*xija+cofa6*yija
214 cofa3=a1uib1*
u(ib_tmp,k)+a1uib2*
u(k4,k)+a1uib3*
u(k5,k)+a1uib4*
u(k6,k)
215 cofa4=a2uib1*
u(ib_tmp,k)+a2uib2*
u(k4,k)+a2uib3*
u(k5,k)+a2uib4*
u(k6,k)
216 cofa7=a1uib1*
v(ib_tmp,k)+a1uib2*
v(k4,k)+a1uib3*
v(k5,k)+a1uib4*
v(k6,k)
217 cofa8=a2uib1*
v(ib_tmp,k)+a2uib2*
v(k4,k)+a2uib3*
v(k5,k)+a2uib4*
v(k6,k)
223 uij2=
u(ib_tmp,k)+cofa3*xijb+cofa4*yijb
224 vij2=
v(ib_tmp,k)+cofa7*xijb+cofa8*yijb
226 uij=0.5_sp*(uij1+uij2)
227 vij=0.5_sp*(vij1+vij2)
234 viscof1=
art(ia)*sqrt(cofa1**2+cofa6**2+0.5_sp*(cofa2+cofa5)**2)
235 viscof2=
art(ib_tmp)*sqrt(cofa3**2+cofa8**2+0.5_sp*(cofa4+cofa7)**2)
244 txxij=(cofa1+cofa3)*viscof
245 tyyij=(cofa6+cofa8)*viscof
246 txyij=0.5_sp*(cofa2+cofa4+cofa5+cofa7)*viscof
250 xadv=exflux*((1.0_sp-sign(1.0_sp,exflux))*uij2+(1.0_sp+sign(1.0_sp,exflux))*uij1)*0.5_sp
251 yadv=exflux*((1.0_sp-sign(1.0_sp,exflux))*vij2+(1.0_sp+sign(1.0_sp,exflux))*vij1)*0.5_sp
256 tpa = float(1-isbc_tmp)*
epor(ia)
257 tpb = float(1-isbc_tmp)*
epor(ib_tmp)
265 xflux(ia,k)=xflux(ia,k)+xadv*tpa+(fxx+3.0_sp*fxx*float(isbc_tmp))*
epor(ia)
266 yflux(ia,k)=yflux(ia,k)+yadv*tpa+(fyy+3.0_sp*fyy*float(isbc_tmp))*
epor(ia)
267 xflux(ib,k)=xflux(ib,k)-xadv*tpb-(fxx+3.0_sp*fxx*float(isbc_tmp))*
epor(ib)
268 yflux(ib,k)=yflux(ib,k)-yadv*tpb-(fyy+3.0_sp*fyy*float(isbc_tmp))*
epor(ib)
292 xflux(i,k) = xflux(i,k)*iswettmp
293 yflux(i,k) = yflux(i,k)*iswettmp
294 pstx_tm(i,k)= pstx_tm(i,k)*iswettmp
295 psty_tm(i,k)= psty_tm(i,k)*iswettmp
298 xflux(i,k)=xflux(i,k)+pstx_tm(i,k)
299 yflux(i,k)=yflux(i,k)+psty_tm(i,k)
314 xfluxv=-
w(i,k+1)*(
u(i,k)*
dz1(i,k+1)+
u(i,k+1)*
dz1(i,k))/&
316 yfluxv=-
w(i,k+1)*(
v(i,k)*
dz1(i,k+1)+
v(i,k+1)*
dz1(i,k))/&
318 ELSE IF(k == kbm1)
THEN 319 xfluxv=
w(i,k)*(
u(i,k)*
dz1(i,k-1)+
u(i,k-1)*
dz1(i,k))/&
321 yfluxv=
w(i,k)*(
v(i,k)*
dz1(i,k-1)+
v(i,k-1)*
dz1(i,k))/&
324 xfluxv=
w(i,k)*(
u(i,k)*
dz1(i,k-1)+
u(i,k-1)*
dz1(i,k))/&
326 w(i,k+1)*(
u(i,k)*
dz1(i,k+1)+
u(i,k+1)*
dz1(i,k))/&
328 yfluxv=
w(i,k)*(
v(i,k)*
dz1(i,k-1)+
v(i,k-1)*
dz1(i,k))/&
330 w(i,k+1)*(
v(i,k)*
dz1(i,k+1)+
v(i,k+1)*
dz1(i,k))/&
337 xflux(i,k)=xflux(i,k)+xfluxv*
art(i)&
339 yflux(i,k)=yflux(i,k)+yfluxv*
art(i)&
350 IF(
isbce(i) == 2)
THEN 360 IF(river_inflow_location ==
'node')
THEN 373 xflux(i1,k)=xflux(i1,k)-temp*cos(
angleq(ii))
374 xflux(i2,k)=xflux(i2,k)-temp*cos(
angleq(ii))
375 yflux(i1,k)=yflux(i1,k)-temp*sin(
angleq(ii))
376 yflux(i2,k)=yflux(i2,k)-temp*sin(
angleq(ii))
379 ELSE IF(river_inflow_location ==
'edge')
THEN 388 xflux(i1,k)=xflux(i1,k)-temp*cos(
angleq(ii))
389 yflux(i1,k)=yflux(i1,k)-temp*sin(
angleq(ii))
393 print*,
'RIVER_INFLOW_LOCATION NOT CORRECT' integer, dimension(:,:), allocatable, target ienode
real(sp), dimension(:), allocatable, target epor
real(sp), dimension(:), allocatable, target cor
real(sp), dimension(:), allocatable, target d1
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 w
real(sp), dimension(:), allocatable, target dltxc
real(sp), dimension(:), allocatable, target egf
real(sp), dimension(:,:), allocatable, target a1u
integer, dimension(:), allocatable iswetct
real(sp), dimension(:,:), allocatable, target vf
real(sp), dimension(:,:), allocatable, target viscofm
real(sp), dimension(:,:), allocatable, target u
integer, dimension(:), allocatable, target isbc
real(sp), dimension(:), allocatable, target angleq
integer, dimension(:,:), allocatable, target iec
real(sp), dimension(:,:), allocatable, target drhox
real(sp), dimension(:,:), allocatable, target vbeta
real(sp), dimension(:), allocatable, target grav_e
real(sp), dimension(:,:), allocatable, target uf
real(sp), dimension(:,:), allocatable, target ubeta
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 drhoy
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
real(sp), dimension(:), allocatable, target dt1
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