108 h1, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
109 jacinv, weights3, svv_h1, svv_F, svv_Ft, svv_direction, ident, n, lx)
110 integer,
intent(in) :: n, lx
111 real(kind=
rp),
intent(inout) :: w(lx, lx, lx, n)
112 real(kind=
rp),
intent(in) :: u(lx, lx, lx, n)
113 real(kind=
rp),
intent(in) :: h1(lx, lx, lx, n)
114 real(kind=
rp),
intent(in) :: drdx(lx, lx, lx, n)
115 real(kind=
rp),
intent(in) :: drdy(lx, lx, lx, n)
116 real(kind=
rp),
intent(in) :: drdz(lx, lx, lx, n)
117 real(kind=
rp),
intent(in) :: dsdx(lx, lx, lx, n)
118 real(kind=
rp),
intent(in) :: dsdy(lx, lx, lx, n)
119 real(kind=
rp),
intent(in) :: dsdz(lx, lx, lx, n)
120 real(kind=
rp),
intent(in) :: dtdx(lx, lx, lx, n)
121 real(kind=
rp),
intent(in) :: dtdy(lx, lx, lx, n)
122 real(kind=
rp),
intent(in) :: dtdz(lx, lx, lx, n)
123 real(kind=
rp),
intent(in) :: jacinv(lx, lx, lx, n)
124 real(kind=
rp),
intent(in) :: weights3(lx, lx, lx)
125 real(kind=
rp),
intent(in) :: dx(lx,lx), dy(lx,lx), dz(lx,lx)
126 real(kind=
rp),
intent(in) :: dxt(lx,lx), dyt(lx,lx), dzt(lx,lx)
127 real(kind=
rp),
intent(in) :: svv_h1(lx, lx, lx, n)
128 real(kind=
rp),
intent(in) :: svv_f(lx, lx), svv_ft(lx, lx)
129 real(kind=
rp),
intent(in) :: ident(lx, lx)
130 character(len=*),
intent(in) :: svv_direction
131 real(kind=
rp) :: u1(lx, lx, lx), u2(lx, lx, lx), u3(lx, lx, lx)
132 real(kind=
rp) :: u1_svv(lx, lx, lx), u2_svv(lx, lx, lx)
133 real(kind=
rp) :: u3_svv(lx, lx, lx)
134 real(kind=
rp) :: wur(lx, lx, lx), wus(lx, lx, lx), wut(lx, lx, lx)
135 real(kind=
rp) :: filter_r(lx, lx), filter_s(lx, lx), filter_t(lx, lx)
136 real(kind=
rp) :: ur_h, us_h, ut_h, tmp
137 integer :: e, i, j, k, l
139 if (index(svv_direction,
"r") > 0)
then
144 if (index(svv_direction,
"s") > 0)
then
149 if (index(svv_direction,
"t") > 0)
then
162 tmp = tmp + dx(i,k) * u(k,j,1,e)
173 tmp = tmp + dy(j,l) * u(i,l,k,e)
184 tmp = tmp + dz(k,l) * u(i,1,l,e)
190 do i = 1, lx * lx * lx
191 u1(i,1,1) = (drdx(i,1,1,e) * wur(i,1,1) + &
192 dsdx(i,1,1,e) * wus(i,1,1) + &
193 dtdx(i,1,1,e) * wut(i,1,1)) * jacinv(i,1,1,e)
194 u2(i,1,1) = (drdy(i,1,1,e) * wur(i,1,1) + &
195 dsdy(i,1,1,e) * wus(i,1,1) + &
196 dtdy(i,1,1,e) * wut(i,1,1)) * jacinv(i,1,1,e)
197 u3(i,1,1) = (drdz(i,1,1,e) * wur(i,1,1) + &
198 dsdz(i,1,1,e) * wus(i,1,1) + &
199 dtdz(i,1,1,e) * wut(i,1,1)) * jacinv(i,1,1,e)
202 call tnsr3d_el(u1_svv, lx, u1, lx, filter_r, filter_s, filter_t)
203 call tnsr3d_el(u2_svv, lx, u2, lx, filter_r, filter_s, filter_t)
204 call tnsr3d_el(u3_svv, lx, u3, lx, filter_r, filter_s, filter_t)
206 do i = 1, lx * lx * lx
207 u1_svv(i,1,1) = u1(i,1,1) - u1_svv(i,1,1)
208 u2_svv(i,1,1) = u2(i,1,1) - u2_svv(i,1,1)
209 u3_svv(i,1,1) = u3(i,1,1) - u3_svv(i,1,1)
211 ur_h = (svv_h1(i,1,1,e) * u1_svv(i,1,1) + &
212 h1(i,1,1,e) * u1(i,1,1)) * weights3(i,1,1)
213 us_h = (svv_h1(i,1,1,e) * u2_svv(i,1,1) + &
214 h1(i,1,1,e) * u2(i,1,1)) * weights3(i,1,1)
215 ut_h = (svv_h1(i,1,1,e) * u3_svv(i,1,1) + &
216 h1(i,1,1,e) * u3(i,1,1)) * weights3(i,1,1)
218 wur(i,1,1) = drdx(i,1,1,e) * ur_h + &
219 drdy(i,1,1,e) * us_h + drdz(i,1,1,e) * ut_h
220 wus(i,1,1) = dsdx(i,1,1,e) * ur_h + &
221 dsdy(i,1,1,e) * us_h + dsdz(i,1,1,e) * ut_h
222 wut(i,1,1) = dtdx(i,1,1,e) * ur_h + &
223 dtdy(i,1,1,e) * us_h + dtdz(i,1,1,e) * ut_h
230 tmp = tmp + dxt(i,k) * wur(k,j,1)
240 tmp = tmp + dyt(j,l) * wus(i,l,k)
242 w(i,j,k,e) = w(i,j,k,e) + tmp
250 tmp = tmp + dzt(k,l) * wut(i,1,l)
252 w(i,1,k,e) = w(i,1,k,e) + tmp