66 c_dyn, test_filter, mij, lij, num, den)
67 logical,
intent(in) :: if_ext
68 real(kind=
rp),
intent(in) :: t
69 integer,
intent(in) :: tstep
70 type(
coef_t),
intent(in) :: coef
71 type(
field_t),
intent(inout) :: nut
72 type(
field_t),
intent(in) :: delta
73 type(
field_t),
intent(inout) :: c_dyn
75 type(
field_t),
intent(inout) :: mij(6), lij(6)
76 type(
field_t),
intent(inout) :: num, den
78 type(
field_t),
pointer :: u, v, w
81 type(
field_t),
pointer :: s11, s22, s33, s12, s13, s23, s_abs
82 real(kind=
rp) :: alpha
83 integer :: temp_indices(7)
86 if (tstep .eq. 1)
then
92 if (if_ext .eqv. .true.)
then
112 call strain_rate(s11%x, s22%x, s33%x, s12%x, s13%x, s23%x, u, v, w, coef)
114 call coef%gs_h%op(s11%x, s11%dof%size(),
gs_op_add)
115 call coef%gs_h%op(s22%x, s11%dof%size(),
gs_op_add)
116 call coef%gs_h%op(s33%x, s11%dof%size(),
gs_op_add)
117 call coef%gs_h%op(s12%x, s11%dof%size(),
gs_op_add)
118 call coef%gs_h%op(s13%x, s11%dof%size(),
gs_op_add)
119 call coef%gs_h%op(s23%x, s11%dof%size(),
gs_op_add)
121 do concurrent(i = 1:u%dof%size())
122 s11%x(i,1,1,1) = s11%x(i,1,1,1) * coef%mult(i,1,1,1)
123 s22%x(i,1,1,1) = s22%x(i,1,1,1) * coef%mult(i,1,1,1)
124 s33%x(i,1,1,1) = s33%x(i,1,1,1) * coef%mult(i,1,1,1)
125 s12%x(i,1,1,1) = s12%x(i,1,1,1) * coef%mult(i,1,1,1)
126 s13%x(i,1,1,1) = s13%x(i,1,1,1) * coef%mult(i,1,1,1)
127 s23%x(i,1,1,1) = s23%x(i,1,1,1) * coef%mult(i,1,1,1)
130 do concurrent(i = 1:u%dof%size())
131 s_abs%x(i,1,1,1) = sqrt(2.0_rp * (s11%x(i,1,1,1)*s11%x(i,1,1,1) + &
132 s22%x(i,1,1,1)*s22%x(i,1,1,1) + &
133 s33%x(i,1,1,1)*s33%x(i,1,1,1)) + &
134 4.0_rp * (s12%x(i,1,1,1)*s12%x(i,1,1,1) + &
135 s13%x(i,1,1,1)*s13%x(i,1,1,1) + &
136 s23%x(i,1,1,1)*s23%x(i,1,1,1)))
141 s_abs, test_filter, delta, u%dof%size())
144 do concurrent(i =1:u%dof%size())
145 if (den%x(i,1,1,1) .gt. 0.0_rp)
then
146 c_dyn%x(i,1,1,1) = 0.5_rp * (num%x(i,1,1,1)/den%x(i,1,1,1))
148 c_dyn%x(i,1,1,1) = 0.0_rp
150 c_dyn%x(i,1,1,1) =
max(c_dyn%x(i,1,1,1),0.0_rp)
151 nut%x(i,1,1,1) = c_dyn%x(i,1,1,1) * delta%x(i,1,1,1)**2 &
156 call col2(nut%x, coef%mult, nut%dof%size())
170 type(
field_t),
intent(inout) :: lij(6)
171 type(
field_t),
pointer,
intent(in) :: u, v, w
173 integer,
intent(in) :: n
176 integer :: temp_indices(3)
177 type(
field_t),
pointer :: fu, fv, fw
183 call test_filter%apply(fu, u)
184 call test_filter%apply(fv, v)
185 call test_filter%apply(fw, w)
188 do concurrent(i = 1:n)
189 lij(1)%x(i,1,1,1) = fu%x(i,1,1,1) * fu%x(i,1,1,1)
190 lij(2)%x(i,1,1,1) = fv%x(i,1,1,1) * fv%x(i,1,1,1)
191 lij(3)%x(i,1,1,1) = fw%x(i,1,1,1) * fw%x(i,1,1,1)
192 lij(4)%x(i,1,1,1) = fu%x(i,1,1,1) * fv%x(i,1,1,1)
193 lij(5)%x(i,1,1,1) = fu%x(i,1,1,1) * fw%x(i,1,1,1)
194 lij(6)%x(i,1,1,1) = fv%x(i,1,1,1) * fw%x(i,1,1,1)
200 call col3(fu%x, u%x, u%x, n)
201 call test_filter%apply(fv, fu)
202 call sub2(lij(1)%x, fv%x, n)
204 call col3(fu%x, v%x, v%x, n)
205 call test_filter%apply(fv, fu)
206 call sub2(lij(2)%x, fv%x, n)
208 call col3(fu%x, w%x, w%x, n)
209 call test_filter%apply(fv, fu)
210 call sub2(lij(3)%x, fv%x, n)
212 call col3(fu%x, u%x, v%x, n)
213 call test_filter%apply(fv, fu)
214 call sub2(lij(4)%x, fv%x, n)
216 call col3(fu%x, u%x, w%x, n)
217 call test_filter%apply(fv, fu)
218 call sub2(lij(5)%x, fv%x, n)
220 call col3(fu%x, v%x, w%x, n)
221 call test_filter%apply(fv, fu)
222 call sub2(lij(6)%x, fv%x, n)
235 s_abs, test_filter, delta, n)
236 type(
field_t),
intent(inout) :: mij(6)
237 type(
field_t),
intent(inout) :: s11, s22, s33, s12, s13, s23, s_abs
239 type(
field_t),
intent(in) :: delta
240 integer,
intent(in) :: n
242 integer :: temp_indices(7)
243 type(
field_t),
pointer :: fs11, fs22, fs33, fs12, fs13, fs23, fs_abs
244 real(kind=
rp) :: delta_ratio2
246 real(kind=
rp) :: delta2
248 delta_ratio2 = ((test_filter%nx-1.0_rp)/(test_filter%nt-1.0_rp))**2
260 call test_filter%apply(fs_abs, s_abs)
262 call test_filter%apply(fs11, s11)
263 call col3(mij(1)%x, fs_abs%x, fs11%x, n)
264 call cmult(mij(1)%x, delta_ratio2, n)
266 call test_filter%apply(fs22, s22)
267 call col3(mij(2)%x, fs_abs%x, fs22%x, n)
268 call cmult(mij(2)%x, delta_ratio2, n)
270 call test_filter%apply(fs33, s33)
271 call col3(mij(3)%x, fs_abs%x, fs33%x, n)
272 call cmult(mij(3)%x, delta_ratio2, n)
274 call test_filter%apply(fs12, s12)
275 call col3(mij(4)%x, fs_abs%x, fs12%x, n)
276 call cmult(mij(4)%x, delta_ratio2, n)
278 call test_filter%apply(fs13, s13)
279 call col3(mij(5)%x, fs_abs%x, fs13%x, n)
280 call cmult(mij(5)%x, delta_ratio2, n)
282 call test_filter%apply(fs23, s23)
283 call col3(mij(6)%x, fs_abs%x, fs23%x, n)
284 call cmult(mij(6)%x, delta_ratio2, n)
290 call col3(fs11%x, s_abs%x, s11%x, n)
291 call test_filter%apply(fs22, fs11)
292 call sub2(mij(1)%x, fs22%x, n)
294 call col3(fs11%x, s_abs%x, s22%x, n)
295 call test_filter%apply(fs22, fs11)
296 call sub2(mij(2)%x, fs22%x, n)
298 call col3(fs11%x, s_abs%x, s33%x, n)
299 call test_filter%apply(fs22, fs11)
300 call sub2(mij(3)%x, fs22%x, n)
302 call col3(fs11%x, s_abs%x, s12%x, n)
303 call test_filter%apply(fs22, fs11)
304 call sub2(mij(4)%x, fs22%x, n)
306 call col3(fs11%x, s_abs%x, s13%x, n)
307 call test_filter%apply(fs22, fs11)
308 call sub2(mij(5)%x, fs22%x, n)
310 call col3(fs11%x, s_abs%x, s23%x, n)
311 call test_filter%apply(fs22, fs11)
312 call sub2(mij(6)%x, fs22%x, n)
315 do concurrent(i = 1:n)
316 delta2 = delta%x(i,1,1,1)**2
317 mij(1)%x(i,1,1,1) = mij(1)%x(i,1,1,1) * delta2
318 mij(2)%x(i,1,1,1) = mij(2)%x(i,1,1,1) * delta2
319 mij(3)%x(i,1,1,1) = mij(3)%x(i,1,1,1) * delta2
320 mij(4)%x(i,1,1,1) = mij(4)%x(i,1,1,1) * delta2
321 mij(5)%x(i,1,1,1) = mij(5)%x(i,1,1,1) * delta2
322 mij(6)%x(i,1,1,1) = mij(6)%x(i,1,1,1) * delta2
334 type(
field_t),
intent(inout) :: num, den
335 type(
field_t),
intent(in) :: lij(6), mij(6)
336 real(kind=
rp),
intent(in) :: alpha
337 integer,
intent(in) :: n
339 real(kind=
rp),
dimension(n) :: num_curr, den_curr
342 do concurrent(i = 1:n)
343 num_curr(i) = mij(1)%x(i,1,1,1)*lij(1)%x(i,1,1,1) + &
344 mij(2)%x(i,1,1,1)*lij(2)%x(i,1,1,1) + &
345 mij(3)%x(i,1,1,1)*lij(3)%x(i,1,1,1) + &
346 2.0_rp*(mij(4)%x(i,1,1,1)*lij(4)%x(i,1,1,1) + &
347 mij(5)%x(i,1,1,1)*lij(5)%x(i,1,1,1) + &
348 mij(6)%x(i,1,1,1)*lij(6)%x(i,1,1,1))
349 den_curr(i) = mij(1)%x(i,1,1,1)*mij(1)%x(i,1,1,1) + &
350 mij(2)%x(i,1,1,1)*mij(2)%x(i,1,1,1) + &
351 mij(3)%x(i,1,1,1)*mij(3)%x(i,1,1,1) + &
352 2.0_rp*(mij(4)%x(i,1,1,1)*mij(4)%x(i,1,1,1) + &
353 mij(5)%x(i,1,1,1)*mij(5)%x(i,1,1,1) + &
354 mij(6)%x(i,1,1,1)*mij(6)%x(i,1,1,1))
358 do concurrent(i = 1:n)
359 num%x(i,1,1,1) = alpha * num%x(i,1,1,1) + (1.0_rp - alpha) * num_curr(i)
360 den%x(i,1,1,1) = alpha * den%x(i,1,1,1) + (1.0_rp - alpha) * den_curr(i)