59 INTEGER :: I,J,K,IA,IB,J1,J2,K1,K2,K3,I1,I2
60 REAL(SP) :: DIJ,ELIJ,XIJ,YIJ,UIJ,VIJ
61 REAL(SP) :: COFA1,COFA2,COFA3,COFA4,COFA5,COFA6,COFA7,COFA8
62 REAL(SP) :: XADV,YADV,TXXIJ,TYYIJ,TXYIJ,UN
63 REAL(SP) :: VISCOF,VISCOF1,VISCOF2,TEMP
64 REAL(SP) :: XFLUX(0:NT),YFLUX(0:NT)
65 REAL(SP) :: FACT,FM1,ISWETTMP
66 REAL(SP) :: UAK1,UAK2,UAK3,VAK1,VAK2,VAK3
69 REAL(SP) :: UIJ1,VIJ1,UIJ2,VIJ2,FXX,FYY
72 REAL(SP) :: U_TMP,V_TMP,UAC_TMP,VAC_TMP,WUSURF_TMP,WVSURF_TMP,WUBOT_TMP,WVBOT_TMP,UAF_TMP,VAF_TMP
79 SELECT CASE(horizontal_mixing_type)
88 & trim(horizontal_mixing_type) )
110 dij=0.5_sp*(
d(j1)+
d(j2))
111 elij=0.5_sp*(
el(j1)+
el(j2))
129 IF(k1 == 0)
CALL ghostuv2(ia,1,uak1,vak1)
130 IF(k2 == 0)
CALL ghostuv2(ia,2,uak2,vak2)
131 IF(k3 == 0)
CALL ghostuv2(ia,3,uak3,vak3)
133 cofa1=
a1u(ia,1)*
ua(ia)+
a1u(ia,2)*uak1+
a1u(ia,3)*uak2+
a1u(ia,4)*uak3
134 cofa2=
a2u(ia,1)*
ua(ia)+
a2u(ia,2)*uak1+
a2u(ia,3)*uak2+
a2u(ia,4)*uak3
135 cofa5=
a1u(ia,1)*
va(ia)+
a1u(ia,2)*vak1+
a1u(ia,3)*vak2+
a1u(ia,4)*vak3
136 cofa6=
a2u(ia,1)*
va(ia)+
a2u(ia,2)*vak1+
a2u(ia,3)*vak2+
a2u(ia,4)*vak3
140 uij1=
ua(ia)+cofa1*xij+cofa2*yij
141 vij1=
va(ia)+cofa5*xij+cofa6*yij
155 IF(k1 == 0)
CALL ghostuv2(ib,1,uak1,vak1)
156 IF(k2 == 0)
CALL ghostuv2(ib,2,uak2,vak2)
157 IF(k3 == 0)
CALL ghostuv2(ib,3,uak3,vak3)
159 cofa3=
a1u(ib,1)*
ua(ib)+
a1u(ib,2)*uak1+
a1u(ib,3)*uak2+
a1u(ib,4)*uak3
160 cofa4=
a2u(ib,1)*
ua(ib)+
a2u(ib,2)*uak1+
a2u(ib,3)*uak2+
a2u(ib,4)*uak3
161 cofa7=
a1u(ib,1)*
va(ib)+
a1u(ib,2)*vak1+
a1u(ib,3)*vak2+
a1u(ib,4)*vak3
162 cofa8=
a2u(ib,1)*
va(ib)+
a2u(ib,2)*vak1+
a2u(ib,3)*vak2+
a2u(ib,4)*vak3
166 uij2=
ua(ib)+cofa3*xij+cofa4*yij
167 vij2=
va(ib)+cofa7*xij+cofa8*yij
170 uij=0.5_sp*(uij1+uij2)
171 vij=0.5_sp*(vij1+vij2)
177 viscof1=
art(ia)*sqrt(cofa1**2+cofa6**2+0.5_sp*(cofa2+cofa5)**2)
178 viscof2=
art(ib)*sqrt(cofa3**2+cofa8**2+0.5_sp*(cofa4+cofa7)**2)
185 txxij=(cofa1+cofa3)*viscof
186 tyyij=(cofa6+cofa8)*viscof
187 txyij=0.5_sp*(cofa2+cofa4+cofa5+cofa7)*viscof
195 ((1.0_sp-sign(1.0_sp,un))*uij2+(1.0_sp+sign(1.0_sp,un))*uij1)*0.5_sp
197 ((1.0_sp-sign(1.0_sp,un))*vij2+(1.0_sp+sign(1.0_sp,un))*vij1)*0.5_sp
205 xflux(ia)=xflux(ia)+(xadv+fxx*
epor(ia))*(1.0_sp-
isbc(i))*
iucp(ia)
206 yflux(ia)=yflux(ia)+(yadv+fyy*
epor(ia))*(1.0_sp-
isbc(i))*
iucp(ia)
207 xflux(ib)=xflux(ib)-(xadv+fxx*
epor(ib))*(1.0_sp-
isbc(i))*
iucp(ib)
208 yflux(ib)=yflux(ib)-(yadv+fyy*
epor(ib))*(1.0_sp-
isbc(i))*
iucp(ib)
226 xflux(i) = xflux(i)*iswettmp
227 yflux(i) = yflux(i)*iswettmp
239 IF(
isbce(i) == 2)
THEN 247 IF(river_inflow_location ==
'node')
THEN 258 ELSE IF(river_inflow_location ==
'edge')
THEN 263 xflux(i1)=xflux(i1)-temp*cos(
angleq(k))
264 yflux(i1)=yflux(i1)-temp*sin(
angleq(k))
integer, dimension(:,:), allocatable, target ienode
real(sp), dimension(:), allocatable, target epor
real(sp), dimension(:), allocatable, target va
real(sp), dimension(:), allocatable, target d
real(sp), dimension(:), allocatable, target d1
integer, dimension(:), allocatable iswetce
real(sp), dimension(:), allocatable, target psty
subroutine ghostuv2(I, JJ, UAKK, VAKK)
real(sp), dimension(:), allocatable, target art
real(sp), dimension(:), allocatable, target el
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 iucp
real(sp), dimension(:), allocatable, target dltxc
real(sp), dimension(:,:), allocatable, target a1u
integer, dimension(:), allocatable, target isbc
real(sp), dimension(:), allocatable, target angleq
integer, dimension(:,:), allocatable, target iec
real(sp), dimension(:), allocatable, target pstx
real(sp), dimension(:), allocatable, target grav_e
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 ua
real(sp), dimension(:), allocatable fluxobn
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
integer, dimension(:), allocatable, target isbce
real(sp), dimension(:), allocatable, target vlctyq
integer, parameter dbg_sbr
integer, dimension(:), allocatable, target inodeq
subroutine advave_edge_gcy(XFLUX, YFLUX)