60 REAL(SP),
DIMENSION(0:MT,KB) :: XFLUX,XFLUX_ADV
61 REAL(SP),
DIMENSION(0:MT) :: PUPX,PUPY,PVPX,PVPY
62 REAL(SP),
DIMENSION(0:MT) :: PSPX,PSPY,PSPXD,PSPYD,VISCOFF
63 REAL(SP),
DIMENSION(3*(NT),KBM1) :: DTIJ
64 REAL(SP),
DIMENSION(3*(NT),KBM1) :: UVN
65 REAL(SP) :: UTMP,VTMP,SITAI,FFD,FF1
66 REAL(SP) :: DXA,DYA,DXB,DYB,FIJ1,FIJ2,UN
67 REAL(SP) :: TXX,TYY,FXX,FYY,VISCOF,EXFLUX,TEMP,STPOINT
69 INTEGER :: I,I1,I2,IA,IB,J,J1,J2,K,JTMP,JJ,II
70 REAL(SP) :: S1MIN, S1MAX, S2MIN, S2MAX
89 SELECT CASE(horizontal_mixing_type)
98 & trim(horizontal_mixing_type) )
115 dtij(i,k) =
dt1(i1)*
dz1(i1,k)
151 IF(backward_advection==.false.)
THEN 155 ff1=0.5_sp*(
s1(i,k)+
s1(i2,k))
158 ff1=0.5_sp*(
s1(i1,k)+
s1(i,k))
161 ff1=0.5_sp*(
s1(i,k)+
s1(i,k))
164 ff1=0.5_sp*(
s1(i1,k)+
s1(i2,k))
169 IF(backward_step==1)
THEN 172 ff1=0.5_sp*((
s0(i,k)+
s1(i,k))*0.5+(
s0(i2,k)+
s1(i2,k))*0.5)
175 ff1=0.5_sp*((
s0(i1,k)+
s1(i1,k))*0.5+(
s0(i,k)+
s1(i,k))*0.5)
178 ff1=0.5_sp*((
s0(i,k)+
s1(i,k))*0.5+(
s0(i,k)+
s1(i,k))*0.5)
181 ff1=0.5_sp*((
s0(i1,k)+
s1(i1,k))*0.5+(
s0(i2,k)+
s1(i2,k))*0.5)
183 ELSEIF(backward_step==2)
THEN 186 ff1=0.5_sp*((
s2(i,k)+
s0(i,k)+
s1(i,k))/3.0_sp+(
s2(i2,k)+
s0(i2,k)+
s1(i2,k))/3.0_sp)
189 ff1=0.5_sp*((
s2(i1,k)+
s0(i1,k)+
s1(i1,k))/3.0_sp+(
s2(i,k)+
s0(i,k)+
s1(i,k))/3.0_sp)
192 ff1=0.5_sp*((
s2(i,k)+
s0(i,k)+
s1(i,k))/3.0_sp+(
s2(i,k)+
s0(i,k)+
s1(i,k))/3.0_sp)
195 ff1=0.5_sp*((
s2(i1,k)+
s0(i1,k)+
s1(i1,k))/3.0_sp+(
s2(i2,k)+
s0(i2,k)+
s1(i2,k))/3.0_sp)
256 pspx(i)=pspx(i)/
art2(i)
257 pspy(i)=pspy(i)/
art2(i)
258 pspxd(i)=pspxd(i)/
art2(i)
259 pspyd(i)=pspyd(i)/
art2(i)
321 IF(backward_advection==.false.)
THEN 325 IF(backward_step==1)
THEN 328 ELSEIF(backward_step==2)
THEN 335 s1min=min(s1min,
s1(ia,k))
337 s1max=max(s1max,
s1(ia,k))
339 s2min=min(s2min,
s1(ib,k))
341 s2max=max(s2max,
s1(ib,k))
342 IF(fij1 < s1min) fij1=s1min
343 IF(fij1 > s1max) fij1=s1max
344 IF(fij2 < s2min) fij2=s2min
345 IF(fij2 > s2max) fij2=s2max
354 txx=0.5_sp*(pspxd(ia)+pspxd(ib))*viscof
355 tyy=0.5_sp*(pspyd(ia)+pspyd(ib))*viscof
357 fxx=-dtij(i,k)*txx*
dltye(i)
358 fyy= dtij(i,k)*tyy*
dltxe(i)
360 exflux=-un*dtij(i,k)* &
361 ((1.0_sp+sign(1.0_sp,un))*fij2+(1.0_sp-sign(1.0_sp,un))*fij1)*0.5_sp+fxx+fyy
363 xflux(ia,k)=xflux(ia,k)+exflux
364 xflux(ib,k)=xflux(ib,k)-exflux
366 xflux_adv(ia,k)=xflux_adv(ia,k)+(exflux-fxx-fyy)
367 xflux_adv(ib,k)=xflux_adv(ib,k)-(exflux-fxx-fyy)
408 IF(backward_advection==.false.)
THEN 410 temp=-
wts(i,k+1)*(
s1(i,k)*
dz(i,k+1)+
s1(i,k+1)*
dz(i,k))/ &
412 ELSE IF(k == kbm1)
THEN 413 temp=
wts(i,k)*(
s1(i,k)*
dz(i,k-1)+
s1(i,k-1)*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))
415 temp=
wts(i,k)*(
s1(i,k)*
dz(i,k-1)+
s1(i,k-1)*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))-&
419 IF(backward_step==1)
THEN 421 temp=-
wts(i,k+1)*((
s0(i,k)+
s1(i,k))*0.5*
dz(i,k+1)+(
s0(i,k+1)+
s1(i,k+1))*0.5*
dz(i,k))/ &
423 ELSE IF(k == kbm1)
THEN 424 temp=
wts(i,k)*((
s0(i,k)+
s1(i,k))*0.5*
dz(i,k-1)+(
s0(i,k-1)+
s1(i,k-1))*0.5*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))
426 temp=
wts(i,k)*((
s0(i,k)+
s1(i,k))*0.5*
dz(i,k-1)+(
s0(i,k-1)+
s1(i,k-1))*0.5*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))-&
427 wts(i,k+1)*((
s0(i,k)+
s1(i,k))*0.5*
dz(i,k+1)+(
s0(i,k+1)+
s1(i,k+1))*0.5*
dz(i,k))/(
dz(i,k)+
dz(i,k+1))
429 ELSEIF(backward_step==2)
THEN 431 temp=-
wts(i,k+1)*((
s2(i,k)+
s0(i,k)+
s1(i,k))/3.0_sp*
dz(i,k+1)+(
s2(i,k+1)+
s0(i,k+1)+
s1(i,k+1))/3.0_sp*
dz(i,k))/ &
433 ELSE IF(k == kbm1)
THEN 434 temp=
wts(i,k)*((
s2(i,k)+
s0(i,k)+
s1(i,k))/3.0_sp*
dz(i,k-1)+(
s2(i,k-1)+
s0(i,k-1)+
s1(i,k-1))/3.0_sp*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))
436 temp=
wts(i,k)*((
s2(i,k)+
s0(i,k)+
s1(i,k))/3.0_sp*
dz(i,k-1)+(
s2(i,k-1)+
s0(i,k-1)+
s1(i,k-1))/3.0_sp*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))-&
437 wts(i,k+1)*((
s2(i,k)+
s0(i,k)+
s1(i,k))/3.0_sp*
dz(i,k+1)+(
s2(i,k+1)+
s0(i,k+1)+
s1(i,k+1))/3.0_sp*
dz(i,k))/(
dz(i,k)+
dz(i,k+1))
444 IF(
isonb(i) == 2)
THEN 446 xflux(i,k)=temp*
art1(i)
449 xflux(i,k)=xflux(i,k)+temp*
art1(i)
459 IF(river_ts_setting ==
'calculated')
THEN 460 IF(river_inflow_location ==
'node')
THEN 467 xflux(jj,k)=xflux(jj,k) -
qdis(j)*
vqdist(j,k)*stpoint
471 ELSE IF(river_inflow_location ==
'edge')
THEN 493 IF(groundwater_on .and. groundwater_salt_on)
THEN 497 ELSEIF(groundwater_on)
THEN 501 IF(backward_advection==.false.)
THEN 502 xflux(i,kbm1)=xflux(i,kbm1)-
bfwdis(i)*
s1(i,kbm1)
504 IF(backward_step==1)
THEN 505 xflux(i,kbm1)=xflux(i,kbm1)-
bfwdis(i)*(
s0(i,kbm1)+
s1(i,kbm1))*0.5
506 ELSEIF(backward_step==2)
THEN 507 xflux(i,kbm1)=xflux(i,kbm1)-
bfwdis(i)*(
s2(i,kbm1)+
s0(i,kbm1)+
s1(i,kbm1))/3.0_sp
integer, dimension(:), allocatable, target ntsn
real(sp), dimension(:,:), allocatable, target viscofh
real(sp), dimension(:), allocatable, target dtfa
real(sp), dimension(:,:), allocatable, target v
real(sp), dimension(:,:), allocatable, target vqdist
logical function dbg_set(vrb)
real(sp), dimension(:), allocatable, target pfpxb
real(sp), dimension(:,:), allocatable, target dltxncve
real(sp), dimension(:), allocatable, target art1
real(sp), dimension(:), allocatable, target qdis
real(sp), dimension(:,:), allocatable xflux_obc
real(sp), dimension(:,:), allocatable, target dltytrie
real(sp), dimension(:,:), allocatable, target dltyncve
real(sp), dimension(:), allocatable, target pfpyb
real(sp), dimension(:), allocatable, target art2
integer, dimension(:), allocatable, target ntrg
real(sp), dimension(:,:), allocatable, target u
real(sp), dimension(:,:), allocatable, target s1
real(sp), dimension(:), allocatable, target sdis
integer, dimension(:,:), allocatable, target niec
real(sp), dimension(:,:), allocatable, target smean1
real(sp), dimension(:,:), allocatable, target rdisq
real(sp), dimension(:), allocatable, target dltye
real(sp), dimension(:), allocatable, target bfwslt
real(sp), dimension(:), allocatable nn_hvc
integer, dimension(:), allocatable i_obc_n
real(sp), dimension(:,:), allocatable, target sf1
real(sp), dimension(:), allocatable, target bfwdis
integer, dimension(:,:), allocatable, target n_icellq
real(sp), dimension(:,:), allocatable, target dz
integer, dimension(:), allocatable iswetnt
real(sp), dimension(:,:), allocatable, target dltxtrie
real(sp), dimension(:), allocatable, target dt1
subroutine fatal_error(ER1, ER2, ER3, ER4)
real(sp), dimension(:,:), allocatable, target dz1
integer, dimension(:,:), allocatable, target nbsn
real(sp), dimension(:,:), allocatable, target wts
real(sp), dimension(:), allocatable, target ah_bottom
real(sp), dimension(:,:), allocatable, target s2
real(sp), dimension(:), allocatable, target dltxe
integer, parameter dbg_sbr
real(sp), dimension(:,:), allocatable, target s0
integer, dimension(:), allocatable, target inodeq
integer, dimension(:), allocatable, target isonb
real(sp), dimension(:), allocatable, target dt
integer, dimension(:), allocatable iswetn