59 REAL(SP),
DIMENSION(0:MT,KB) :: XFLUX,XFLUX_ADV,RF
60 REAL(SP),
DIMENSION(0:MT) :: PUPX,PUPY,PVPX,PVPY
61 REAL(SP),
DIMENSION(0:MT) :: PTPX,PTPY,PTPXD,PTPYD,VISCOFF
62 REAL(SP),
DIMENSION(3*(NT),KBM1) :: DTIJ
63 REAL(SP),
DIMENSION(3*(NT),KBM1) :: UVN
64 REAL(SP) :: UTMP,VTMP,SITAI,FFD,FF1
65 REAL(SP) :: DXA,DYA,DXB,DYB,FIJ1,FIJ2,UN,TTIME,ZDEP
66 REAL(SP) :: TXX,TYY,FXX,FYY,VISCOF,EXFLUX,TEMP,STPOINT,STPOINT1,STPOINT2
68 INTEGER :: I,I1,I2,IA,IB,J,J1,J2,K,JTMP,JJ,II
69 REAL(SP) :: T1MIN, T1MAX, T2MIN, T2MAX
86 SELECT CASE(horizontal_mixing_type)
95 & trim(horizontal_mixing_type) )
112 dtij(i,k) =
dt1(i1)*
dz1(i1,k)
138 SELECT CASE(heating_type)
155 zdep=0.5_sp*(
z(i,k)+
z(i,k+1))*
dt(i)
157 rf(i,k)=-
swrad(i)*((rheat/zeta1)*exp(zdep/zeta1) &
158 +((1-rheat)/zeta2)*exp(zdep/zeta2))*
dt(i)
167 CALL fatal_error(
'The surface heating type is set incorrectly:',&
168 & trim(heating_type))
173 IF (precipitation_on)
THEN 192 IF(backward_advection==.false.)
THEN 195 ff1=0.5_sp*(
t1(i,k)+
t1(i2,k))
198 ff1=0.5_sp*(
t1(i1,k)+
t1(i,k))
201 ff1=0.5_sp*(
t1(i,k)+
t1(i,k))
204 ff1=0.5_sp*(
t1(i1,k)+
t1(i2,k))
207 IF(backward_step==1)
THEN 210 ff1=0.5_sp*((
t0(i,k)+
t1(i,k))*0.5+(
t0(i2,k)+
t1(i2,k))*0.5)
213 ff1=0.5_sp*((
t0(i1,k)+
t1(i1,k))*0.5+(
t0(i,k)+
t1(i,k))*0.5)
216 ff1=0.5_sp*((
t0(i,k)+
t1(i,k))*0.5+(
t0(i,k)+
t1(i,k))*0.5)
219 ff1=0.5_sp*((
t0(i1,k)+
t1(i1,k))*0.5+(
t0(i2,k)+
t1(i2,k))*0.5)
221 ELSEIF(backward_step==2)
THEN 224 ff1=0.5_sp*((
t2(i,k)+
t0(i,k)+
t1(i,k))/3.0_sp+(
t2(i2,k)+
t0(i2,k)+
t1(i2,k))/3.0_sp)
227 ff1=0.5_sp*((
t2(i1,k)+
t0(i1,k)+
t1(i1,k))/3.0_sp+(
t2(i,k)+
t0(i,k)+
t1(i,k))/3.0_sp)
230 ff1=0.5_sp*((
t2(i,k)+
t0(i,k)+
t1(i,k))/3.0_sp+(
t2(i,k)+
t0(i,k)+
t1(i,k))/3.0_sp)
233 ff1=0.5_sp*((
t2(i1,k)+
t0(i1,k)+
t1(i1,k))/3.0_sp+(
t2(i2,k)+
t0(i2,k)+
t1(i2,k))/3.0_sp)
294 ptpx(i)=ptpx(i)/
art2(i)
295 ptpy(i)=ptpy(i)/
art2(i)
296 ptpxd(i)=ptpxd(i)/
art2(i)
297 ptpyd(i)=ptpyd(i)/
art2(i)
362 IF(backward_advection==.false.)
THEN 366 IF(backward_step==1)
THEN 369 ELSEIF(backward_step==2)
THEN 377 t1min=min(t1min,
t1(ia,k))
379 t1max=max(t1max,
t1(ia,k))
381 t2min=min(t2min,
t1(ib,k))
383 t2max=max(t2max,
t1(ib,k))
384 IF(fij1 < t1min) fij1=t1min
385 IF(fij1 > t1max) fij1=t1max
386 IF(fij2 < t2min) fij2=t2min
387 IF(fij2 > t2max) fij2=t2max
396 txx=0.5_sp*(ptpxd(ia)+ptpxd(ib))*viscof
397 tyy=0.5_sp*(ptpyd(ia)+ptpyd(ib))*viscof
399 fxx=-dtij(i,k)*txx*
dltye(i)
400 fyy= dtij(i,k)*tyy*
dltxe(i)
402 exflux=-un*dtij(i,k)* &
403 ((1.0_sp+sign(1.0_sp,un))*fij2+(1.0_sp-sign(1.0_sp,un))*fij1)*0.5_sp+fxx+fyy
405 xflux(ia,k)=xflux(ia,k)+exflux
406 xflux(ib,k)=xflux(ib,k)-exflux
408 xflux_adv(ia,k)=xflux_adv(ia,k)+(exflux-fxx-fyy)
409 xflux_adv(ib,k)=xflux_adv(ib,k)-(exflux-fxx-fyy)
447 IF(backward_advection==.false.)
THEN 449 temp=-
wts(i,k+1)*(
t1(i,k)*
dz(i,k+1)+
t1(i,k+1)*
dz(i,k))/ &
451 ELSE IF(k == kbm1)
THEN 452 temp=
wts(i,k)*(
t1(i,k)*
dz(i,k-1)+
t1(i,k-1)*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))
454 temp=
wts(i,k)*(
t1(i,k)*
dz(i,k-1)+
t1(i,k-1)*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))-&
458 IF(backward_step==1)
THEN 460 temp=-
wts(i,k+1)*((
t0(i,k)+
t1(i,k))*0.5*
dz(i,k+1)+(
t0(i,k+1)+
t1(i,k+1))*0.5*
dz(i,k))/ &
462 ELSE IF(k == kbm1)
THEN 463 temp=
wts(i,k)*((
t0(i,k)+
t1(i,k))*0.5*
dz(i,k-1)+(
t0(i,k-1)+
t1(i,k-1))*0.5*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))
465 temp=
wts(i,k)*((
t0(i,k)+
t1(i,k))*0.5*
dz(i,k-1)+(
t0(i,k-1)+
t1(i,k-1))*0.5*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))-&
466 wts(i,k+1)*((
t0(i,k)+
t1(i,k))*0.5*
dz(i,k+1)+(
t0(i,k+1)+
t1(i,k+1))*0.5*
dz(i,k))/(
dz(i,k)+
dz(i,k+1))
468 ELSEIF(backward_step==2)
THEN 470 temp=-
wts(i,k+1)*((
t2(i,k)+
t0(i,k)+
t1(i,k))/3.0_sp*
dz(i,k+1)+(
t2(i,k+1)+
t0(i,k+1)+
t1(i,k+1))/3.0_sp*
dz(i,k))/ &
472 ELSE IF(k == kbm1)
THEN 473 temp=
wts(i,k)*((
t2(i,k)+
t0(i,k)+
t1(i,k))/3.0_sp*
dz(i,k-1)+(
t2(i,k-1)+
t0(i,k-1)+
t1(i,k-1))/3.0_sp*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))
475 temp=
wts(i,k)*((
t2(i,k)+
t0(i,k)+
t1(i,k))/3.0_sp*
dz(i,k-1)+(
t2(i,k-1)+
t0(i,k-1)+
t1(i,k-1))/3.0_sp*
dz(i,k))/(
dz(i,k)+
dz(i,k-1))-&
476 wts(i,k+1)*((
t2(i,k)+
t0(i,k)+
t1(i,k))/3.0_sp*
dz(i,k+1)+(
t2(i,k+1)+
t0(i,k+1)+
t1(i,k+1))/3.0_sp*
dz(i,k))/(
dz(i,k)+
dz(i,k+1))
483 IF(
isonb(i) == 2)
THEN 485 xflux(i,k)=temp*
art1(i)
488 xflux(i,k)=xflux(i,k)+temp*
art1(i)
497 IF(river_ts_setting ==
'calculated')
THEN 498 IF(river_inflow_location ==
'node')
THEN 506 xflux(jj,k)= xflux(jj,k)-
qdis(j)*
vqdist(j,k)*stpoint
510 ELSE IF(river_inflow_location ==
'edge')
THEN 534 IF(groundwater_on .and. groundwater_temp_on)
THEN 538 ELSEIF(groundwater_on)
THEN 541 IF(backward_advection==.false.)
THEN 542 xflux(i,kbm1)=xflux(i,kbm1)-
bfwdis(i)*
t1(i,kbm1)
544 IF(backward_step==1)
THEN 545 xflux(i,kbm1)=xflux(i,kbm1)-
bfwdis(i)*(
t0(i,kbm1)+
t1(i,kbm1))*0.5
546 ELSEIF(backward_step==2)
THEN 547 xflux(i,kbm1)=xflux(i,kbm1)-
bfwdis(i)*(
t2(i,kbm1)+
t0(i,kbm1)+
t1(i,kbm1))/3.0_sp
563 xflux(i,k) = xflux(i,k) - rf(i,k)*
art1(i)
integer, dimension(:), allocatable, target ntsn
real(sp), dimension(:), allocatable, target qprec
real(sp), dimension(:,:), allocatable, target t2
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, target t1
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 tmean1
real(sp), dimension(:,:), allocatable, target u
integer, dimension(:,:), allocatable, target niec
real(sp), dimension(:,:), allocatable, target rdisq
real(sp), dimension(:), allocatable, target dltye
real(sp), dimension(:), allocatable, target swrad
real(sp), dimension(:,:), allocatable, target tf1
real(sp), dimension(:), allocatable nn_hvc
integer, dimension(:), allocatable i_obc_n
real(sp), dimension(:), allocatable, target bfwdis
real(sp), dimension(:), allocatable, target bfwtmp
integer, dimension(:,:), allocatable, target n_icellq
real(sp), dimension(:), allocatable, target qevap
real(sp), dimension(:,:), allocatable, target dz
integer, dimension(:), allocatable iswetnt
real(sp), dimension(:,:), allocatable, target dltxtrie
real(sp), dimension(:), allocatable, target dt1
real(sp), dimension(:,:), allocatable, target z
subroutine fatal_error(ER1, ER2, ER3, ER4)
real(sp), dimension(:,:), allocatable, target dz1
real(sp), dimension(:,:), allocatable, target t0
integer, dimension(:,:), allocatable, target nbsn
real(sp), dimension(:,:), allocatable, target wts
real(sp), dimension(:), allocatable, target ah_bottom
real(sp), dimension(:), allocatable, target tdis
real(sp), dimension(:), allocatable, target dltxe
integer, parameter dbg_sbr
integer, dimension(:), allocatable, target inodeq
integer, dimension(:), allocatable, target isonb
real(sp), dimension(:), allocatable, target dt
integer, dimension(:), allocatable iswetn