42 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n, lx)
43 integer,
intent(in) :: n, lx
44 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
45 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
46 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
47 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
48 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
49 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
50 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
51 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
52 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
53 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
54 real(kind=
rp) :: grad(lx*lx*lx,3,3)
55 integer :: temp_indices(9), ind_sort(3)
56 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
57 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
58 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
59 real(kind=
rp) :: msk1, msk2, msk3
60 real(kind=
rp) :: ur(lx,lx,lx)
61 real(kind=
rp) :: vr(lx,lx,lx)
62 real(kind=
rp) :: wr(lx,lx,lx)
63 real(kind=
rp) :: us(lx,lx,lx)
64 real(kind=
rp) :: vs(lx,lx,lx)
65 real(kind=
rp) :: ws(lx,lx,lx)
66 real(kind=
rp) :: ut(lx,lx,lx)
67 real(kind=
rp) :: vt(lx,lx,lx)
68 real(kind=
rp) :: wt(lx,lx,lx)
69 real(kind=
rp) :: tmp1, tmp2, tmp3
70 integer :: e, i, j, k, l
79 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
80 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
81 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
96 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
97 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
98 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
113 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
114 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
115 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
123 do i = 1, lx * lx * lx
124 grad(1,1,1) = w3(i,1,1) &
125 * ( drdx(i,1,1,e) * ur(i,1,1) &
126 + dsdx(i,1,1,e) * us(i,1,1) &
127 + dtdx(i,1,1,e) * ut(i,1,1) )
128 grad(1,1,2) = w3(i,1,1) &
129 * ( dsdy(i,1,1,e) * us(i,1,1) &
130 + drdy(i,1,1,e) * ur(i,1,1) &
131 + dtdy(i,1,1,e) * ut(i,1,1) )
132 grad(1,1,3) = w3(i,1,1) &
133 * ( dtdz(i,1,1,e) * ut(i,1,1) &
134 + drdz(i,1,1,e) * ur(i,1,1) &
135 + dsdz(i,1,1,e) * us(i,1,1) )
137 grad(1,2,1) = w3(i,1,1) &
138 * ( drdx(i,1,1,e) * vr(i,1,1) &
139 + dsdx(i,1,1,e) * vs(i,1,1) &
140 + dtdx(i,1,1,e) * vt(i,1,1) )
141 grad(1,2,2) = w3(i,1,1) &
142 * ( dsdy(i,1,1,e) * vs(i,1,1) &
143 + drdy(i,1,1,e) * vr(i,1,1) &
144 + dtdy(i,1,1,e) * vt(i,1,1) )
145 grad(1,2,3) = w3(i,1,1) &
146 * ( dtdz(i,1,1,e) * vt(i,1,1) &
147 + drdz(i,1,1,e) * vr(i,1,1) &
148 + dsdz(i,1,1,e) * vs(i,1,1) )
150 grad(1,3,1) = w3(i,1,1) &
151 * ( drdx(i,1,1,e) * wr(i,1,1) &
152 + dsdx(i,1,1,e) * ws(i,1,1) &
153 + dtdx(i,1,1,e) * wt(i,1,1) )
154 grad(1,3,2) = w3(i,1,1) &
155 * ( dsdy(i,1,1,e) * ws(i,1,1) &
156 + drdy(i,1,1,e) * wr(i,1,1) &
157 + dtdy(i,1,1,e) * wt(i,1,1) )
158 grad(1,3,3) = w3(i,1,1) &
159 * ( dtdz(i,1,1,e) * wt(i,1,1) &
160 + drdz(i,1,1,e) * wr(i,1,1) &
161 + dsdz(i,1,1,e) * ws(i,1,1) )
165 do i = 1, lx * lx * lx
171 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
172 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
173 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
175 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
176 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
177 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
179 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
180 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
181 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
183 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
184 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
185 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
188 b = -(a11 + a22 + a33)
189 c = -(a12*a12 + a13*a13 + a23*a23 &
190 - a11 * a22 - a11 * a33 - a22 * a33)
191 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
192 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
195 q = (3.0 * c - b*b) / 9.0
196 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
197 theta = acos( r / sqrt(-q*q*q) )
199 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
200 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
201 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
203 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
204 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
205 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
206 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
207 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
208 .le. eigen(2) .and. eigen(2) .le. eigen(1))
209 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
210 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
211 .le. eigen(3) .and. eigen(3) .le. eigen(1))
213 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
215 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
221 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
222 integer,
parameter :: lx = 18
223 integer,
intent(in) :: n
224 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
225 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
226 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
227 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
228 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
229 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
230 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
231 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
232 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
233 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
234 real(kind=
rp) :: grad(lx*lx*lx,3,3)
235 integer :: temp_indices(9), ind_sort(3)
236 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
237 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
238 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
239 real(kind=
rp) :: msk1, msk2, msk3
240 real(kind=
rp) :: ur(lx,lx,lx)
241 real(kind=
rp) :: vr(lx,lx,lx)
242 real(kind=
rp) :: wr(lx,lx,lx)
243 real(kind=
rp) :: us(lx,lx,lx)
244 real(kind=
rp) :: vs(lx,lx,lx)
245 real(kind=
rp) :: ws(lx,lx,lx)
246 real(kind=
rp) :: ut(lx,lx,lx)
247 real(kind=
rp) :: vt(lx,lx,lx)
248 real(kind=
rp) :: wt(lx,lx,lx)
249 real(kind=
rp) :: tmp1, tmp2, tmp3
250 integer :: e, i, j, k, l
259 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
260 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
261 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
276 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
277 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
278 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
293 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
294 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
295 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
303 do i = 1, lx * lx * lx
304 grad(1,1,1) = w3(i,1,1) &
305 * ( drdx(i,1,1,e) * ur(i,1,1) &
306 + dsdx(i,1,1,e) * us(i,1,1) &
307 + dtdx(i,1,1,e) * ut(i,1,1) )
308 grad(1,1,2) = w3(i,1,1) &
309 * ( dsdy(i,1,1,e) * us(i,1,1) &
310 + drdy(i,1,1,e) * ur(i,1,1) &
311 + dtdy(i,1,1,e) * ut(i,1,1) )
312 grad(1,1,3) = w3(i,1,1) &
313 * ( dtdz(i,1,1,e) * ut(i,1,1) &
314 + drdz(i,1,1,e) * ur(i,1,1) &
315 + dsdz(i,1,1,e) * us(i,1,1) )
317 grad(1,2,1) = w3(i,1,1) &
318 * ( drdx(i,1,1,e) * vr(i,1,1) &
319 + dsdx(i,1,1,e) * vs(i,1,1) &
320 + dtdx(i,1,1,e) * vt(i,1,1) )
321 grad(1,2,2) = w3(i,1,1) &
322 * ( dsdy(i,1,1,e) * vs(i,1,1) &
323 + drdy(i,1,1,e) * vr(i,1,1) &
324 + dtdy(i,1,1,e) * vt(i,1,1) )
325 grad(1,2,3) = w3(i,1,1) &
326 * ( dtdz(i,1,1,e) * vt(i,1,1) &
327 + drdz(i,1,1,e) * vr(i,1,1) &
328 + dsdz(i,1,1,e) * vs(i,1,1) )
330 grad(1,3,1) = w3(i,1,1) &
331 * ( drdx(i,1,1,e) * wr(i,1,1) &
332 + dsdx(i,1,1,e) * ws(i,1,1) &
333 + dtdx(i,1,1,e) * wt(i,1,1) )
334 grad(1,3,2) = w3(i,1,1) &
335 * ( dsdy(i,1,1,e) * ws(i,1,1) &
336 + drdy(i,1,1,e) * wr(i,1,1) &
337 + dtdy(i,1,1,e) * wt(i,1,1) )
338 grad(1,3,3) = w3(i,1,1) &
339 * ( dtdz(i,1,1,e) * wt(i,1,1) &
340 + drdz(i,1,1,e) * wr(i,1,1) &
341 + dsdz(i,1,1,e) * ws(i,1,1) )
345 do i = 1, lx * lx * lx
351 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
352 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
353 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
355 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
356 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
357 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
359 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
360 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
361 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
363 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
364 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
365 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
368 b = -(a11 + a22 + a33)
369 c = -(a12*a12 + a13*a13 + a23*a23 &
370 - a11 * a22 - a11 * a33 - a22 * a33)
371 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
372 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
375 q = (3.0 * c - b*b) / 9.0
376 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
377 theta = acos( r / sqrt(-q*q*q) )
379 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
380 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
381 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
383 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
384 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
385 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
386 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
387 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
388 .le. eigen(2) .and. eigen(2) .le. eigen(1))
389 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
390 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
391 .le. eigen(3) .and. eigen(3) .le. eigen(1))
393 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
395 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
401 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
402 integer,
parameter :: lx = 17
403 integer,
intent(in) :: n
404 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
405 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
406 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
407 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
408 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
409 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
410 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
411 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
412 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
413 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
414 real(kind=
rp) :: grad(lx*lx*lx,3,3)
415 integer :: temp_indices(9), ind_sort(3)
416 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
417 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
418 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
419 real(kind=
rp) :: msk1, msk2, msk3
420 real(kind=
rp) :: ur(lx,lx,lx)
421 real(kind=
rp) :: vr(lx,lx,lx)
422 real(kind=
rp) :: wr(lx,lx,lx)
423 real(kind=
rp) :: us(lx,lx,lx)
424 real(kind=
rp) :: vs(lx,lx,lx)
425 real(kind=
rp) :: ws(lx,lx,lx)
426 real(kind=
rp) :: ut(lx,lx,lx)
427 real(kind=
rp) :: vt(lx,lx,lx)
428 real(kind=
rp) :: wt(lx,lx,lx)
429 real(kind=
rp) :: tmp1, tmp2, tmp3
430 integer :: e, i, j, k, l
439 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
440 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
441 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
456 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
457 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
458 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
473 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
474 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
475 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
483 do i = 1, lx * lx * lx
484 grad(1,1,1) = w3(i,1,1) &
485 * ( drdx(i,1,1,e) * ur(i,1,1) &
486 + dsdx(i,1,1,e) * us(i,1,1) &
487 + dtdx(i,1,1,e) * ut(i,1,1) )
488 grad(1,1,2) = w3(i,1,1) &
489 * ( dsdy(i,1,1,e) * us(i,1,1) &
490 + drdy(i,1,1,e) * ur(i,1,1) &
491 + dtdy(i,1,1,e) * ut(i,1,1) )
492 grad(1,1,3) = w3(i,1,1) &
493 * ( dtdz(i,1,1,e) * ut(i,1,1) &
494 + drdz(i,1,1,e) * ur(i,1,1) &
495 + dsdz(i,1,1,e) * us(i,1,1) )
497 grad(1,2,1) = w3(i,1,1) &
498 * ( drdx(i,1,1,e) * vr(i,1,1) &
499 + dsdx(i,1,1,e) * vs(i,1,1) &
500 + dtdx(i,1,1,e) * vt(i,1,1) )
501 grad(1,2,2) = w3(i,1,1) &
502 * ( dsdy(i,1,1,e) * vs(i,1,1) &
503 + drdy(i,1,1,e) * vr(i,1,1) &
504 + dtdy(i,1,1,e) * vt(i,1,1) )
505 grad(1,2,3) = w3(i,1,1) &
506 * ( dtdz(i,1,1,e) * vt(i,1,1) &
507 + drdz(i,1,1,e) * vr(i,1,1) &
508 + dsdz(i,1,1,e) * vs(i,1,1) )
510 grad(1,3,1) = w3(i,1,1) &
511 * ( drdx(i,1,1,e) * wr(i,1,1) &
512 + dsdx(i,1,1,e) * ws(i,1,1) &
513 + dtdx(i,1,1,e) * wt(i,1,1) )
514 grad(1,3,2) = w3(i,1,1) &
515 * ( dsdy(i,1,1,e) * ws(i,1,1) &
516 + drdy(i,1,1,e) * wr(i,1,1) &
517 + dtdy(i,1,1,e) * wt(i,1,1) )
518 grad(1,3,3) = w3(i,1,1) &
519 * ( dtdz(i,1,1,e) * wt(i,1,1) &
520 + drdz(i,1,1,e) * wr(i,1,1) &
521 + dsdz(i,1,1,e) * ws(i,1,1) )
525 do i = 1, lx * lx * lx
531 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
532 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
533 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
535 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
536 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
537 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
539 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
540 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
541 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
543 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
544 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
545 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
548 b = -(a11 + a22 + a33)
549 c = -(a12*a12 + a13*a13 + a23*a23 &
550 - a11 * a22 - a11 * a33 - a22 * a33)
551 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
552 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
555 q = (3.0 * c - b*b) / 9.0
556 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
557 theta = acos( r / sqrt(-q*q*q) )
559 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
560 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
561 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
563 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
564 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
565 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
566 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
567 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
568 .le. eigen(2) .and. eigen(2) .le. eigen(1))
569 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
570 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
571 .le. eigen(3) .and. eigen(3) .le. eigen(1))
573 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
575 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
581 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
582 integer,
parameter :: lx = 16
583 integer,
intent(in) :: n
584 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
585 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
586 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
587 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
588 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
589 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
590 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
591 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
592 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
593 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
594 real(kind=
rp) :: grad(lx*lx*lx,3,3)
595 integer :: temp_indices(9), ind_sort(3)
596 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
597 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
598 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
599 real(kind=
rp) :: msk1, msk2, msk3
600 real(kind=
rp) :: ur(lx,lx,lx)
601 real(kind=
rp) :: vr(lx,lx,lx)
602 real(kind=
rp) :: wr(lx,lx,lx)
603 real(kind=
rp) :: us(lx,lx,lx)
604 real(kind=
rp) :: vs(lx,lx,lx)
605 real(kind=
rp) :: ws(lx,lx,lx)
606 real(kind=
rp) :: ut(lx,lx,lx)
607 real(kind=
rp) :: vt(lx,lx,lx)
608 real(kind=
rp) :: wt(lx,lx,lx)
609 real(kind=
rp) :: tmp1, tmp2, tmp3
610 integer :: e, i, j, k, l
619 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
620 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
621 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
636 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
637 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
638 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
653 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
654 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
655 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
663 do i = 1, lx * lx * lx
664 grad(1,1,1) = w3(i,1,1) &
665 * ( drdx(i,1,1,e) * ur(i,1,1) &
666 + dsdx(i,1,1,e) * us(i,1,1) &
667 + dtdx(i,1,1,e) * ut(i,1,1) )
668 grad(1,1,2) = w3(i,1,1) &
669 * ( dsdy(i,1,1,e) * us(i,1,1) &
670 + drdy(i,1,1,e) * ur(i,1,1) &
671 + dtdy(i,1,1,e) * ut(i,1,1) )
672 grad(1,1,3) = w3(i,1,1) &
673 * ( dtdz(i,1,1,e) * ut(i,1,1) &
674 + drdz(i,1,1,e) * ur(i,1,1) &
675 + dsdz(i,1,1,e) * us(i,1,1) )
677 grad(1,2,1) = w3(i,1,1) &
678 * ( drdx(i,1,1,e) * vr(i,1,1) &
679 + dsdx(i,1,1,e) * vs(i,1,1) &
680 + dtdx(i,1,1,e) * vt(i,1,1) )
681 grad(1,2,2) = w3(i,1,1) &
682 * ( dsdy(i,1,1,e) * vs(i,1,1) &
683 + drdy(i,1,1,e) * vr(i,1,1) &
684 + dtdy(i,1,1,e) * vt(i,1,1) )
685 grad(1,2,3) = w3(i,1,1) &
686 * ( dtdz(i,1,1,e) * vt(i,1,1) &
687 + drdz(i,1,1,e) * vr(i,1,1) &
688 + dsdz(i,1,1,e) * vs(i,1,1) )
690 grad(1,3,1) = w3(i,1,1) &
691 * ( drdx(i,1,1,e) * wr(i,1,1) &
692 + dsdx(i,1,1,e) * ws(i,1,1) &
693 + dtdx(i,1,1,e) * wt(i,1,1) )
694 grad(1,3,2) = w3(i,1,1) &
695 * ( dsdy(i,1,1,e) * ws(i,1,1) &
696 + drdy(i,1,1,e) * wr(i,1,1) &
697 + dtdy(i,1,1,e) * wt(i,1,1) )
698 grad(1,3,3) = w3(i,1,1) &
699 * ( dtdz(i,1,1,e) * wt(i,1,1) &
700 + drdz(i,1,1,e) * wr(i,1,1) &
701 + dsdz(i,1,1,e) * ws(i,1,1) )
705 do i = 1, lx * lx * lx
711 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
712 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
713 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
715 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
716 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
717 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
719 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
720 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
721 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
723 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
724 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
725 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
728 b = -(a11 + a22 + a33)
729 c = -(a12*a12 + a13*a13 + a23*a23 &
730 - a11 * a22 - a11 * a33 - a22 * a33)
731 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
732 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
735 q = (3.0 * c - b*b) / 9.0
736 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
737 theta = acos( r / sqrt(-q*q*q) )
739 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
740 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
741 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
743 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
744 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
745 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
746 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
747 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
748 .le. eigen(2) .and. eigen(2) .le. eigen(1))
749 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
750 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
751 .le. eigen(3) .and. eigen(3) .le. eigen(1))
753 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
755 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
761 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
762 integer,
parameter :: lx = 15
763 integer,
intent(in) :: n
764 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
765 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
766 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
767 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
768 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
769 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
770 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
771 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
772 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
773 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
774 real(kind=
rp) :: grad(lx*lx*lx,3,3)
775 integer :: temp_indices(9), ind_sort(3)
776 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
777 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
778 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
779 real(kind=
rp) :: msk1, msk2, msk3
780 real(kind=
rp) :: ur(lx,lx,lx)
781 real(kind=
rp) :: vr(lx,lx,lx)
782 real(kind=
rp) :: wr(lx,lx,lx)
783 real(kind=
rp) :: us(lx,lx,lx)
784 real(kind=
rp) :: vs(lx,lx,lx)
785 real(kind=
rp) :: ws(lx,lx,lx)
786 real(kind=
rp) :: ut(lx,lx,lx)
787 real(kind=
rp) :: vt(lx,lx,lx)
788 real(kind=
rp) :: wt(lx,lx,lx)
789 real(kind=
rp) :: tmp1, tmp2, tmp3
790 integer :: e, i, j, k, l
799 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
800 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
801 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
816 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
817 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
818 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
833 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
834 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
835 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
843 do i = 1, lx * lx * lx
844 grad(1,1,1) = w3(i,1,1) &
845 * ( drdx(i,1,1,e) * ur(i,1,1) &
846 + dsdx(i,1,1,e) * us(i,1,1) &
847 + dtdx(i,1,1,e) * ut(i,1,1) )
848 grad(1,1,2) = w3(i,1,1) &
849 * ( dsdy(i,1,1,e) * us(i,1,1) &
850 + drdy(i,1,1,e) * ur(i,1,1) &
851 + dtdy(i,1,1,e) * ut(i,1,1) )
852 grad(1,1,3) = w3(i,1,1) &
853 * ( dtdz(i,1,1,e) * ut(i,1,1) &
854 + drdz(i,1,1,e) * ur(i,1,1) &
855 + dsdz(i,1,1,e) * us(i,1,1) )
857 grad(1,2,1) = w3(i,1,1) &
858 * ( drdx(i,1,1,e) * vr(i,1,1) &
859 + dsdx(i,1,1,e) * vs(i,1,1) &
860 + dtdx(i,1,1,e) * vt(i,1,1) )
861 grad(1,2,2) = w3(i,1,1) &
862 * ( dsdy(i,1,1,e) * vs(i,1,1) &
863 + drdy(i,1,1,e) * vr(i,1,1) &
864 + dtdy(i,1,1,e) * vt(i,1,1) )
865 grad(1,2,3) = w3(i,1,1) &
866 * ( dtdz(i,1,1,e) * vt(i,1,1) &
867 + drdz(i,1,1,e) * vr(i,1,1) &
868 + dsdz(i,1,1,e) * vs(i,1,1) )
870 grad(1,3,1) = w3(i,1,1) &
871 * ( drdx(i,1,1,e) * wr(i,1,1) &
872 + dsdx(i,1,1,e) * ws(i,1,1) &
873 + dtdx(i,1,1,e) * wt(i,1,1) )
874 grad(1,3,2) = w3(i,1,1) &
875 * ( dsdy(i,1,1,e) * ws(i,1,1) &
876 + drdy(i,1,1,e) * wr(i,1,1) &
877 + dtdy(i,1,1,e) * wt(i,1,1) )
878 grad(1,3,3) = w3(i,1,1) &
879 * ( dtdz(i,1,1,e) * wt(i,1,1) &
880 + drdz(i,1,1,e) * wr(i,1,1) &
881 + dsdz(i,1,1,e) * ws(i,1,1) )
885 do i = 1, lx * lx * lx
891 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
892 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
893 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
895 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
896 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
897 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
899 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
900 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
901 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
903 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
904 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
905 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
908 b = -(a11 + a22 + a33)
909 c = -(a12*a12 + a13*a13 + a23*a23 &
910 - a11 * a22 - a11 * a33 - a22 * a33)
911 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
912 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
915 q = (3.0 * c - b*b) / 9.0
916 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
917 theta = acos( r / sqrt(-q*q*q) )
919 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
920 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
921 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
923 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
924 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
925 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
926 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
927 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
928 .le. eigen(2) .and. eigen(2) .le. eigen(1))
929 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
930 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
931 .le. eigen(3) .and. eigen(3) .le. eigen(1))
933 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
935 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
941 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
942 integer,
parameter :: lx = 14
943 integer,
intent(in) :: n
944 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
945 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
946 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
947 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
948 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
949 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
950 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
951 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
952 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
953 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
954 real(kind=
rp) :: grad(lx*lx*lx,3,3)
955 integer :: temp_indices(9), ind_sort(3)
956 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
957 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
958 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
959 real(kind=
rp) :: msk1, msk2, msk3
960 real(kind=
rp) :: ur(lx,lx,lx)
961 real(kind=
rp) :: vr(lx,lx,lx)
962 real(kind=
rp) :: wr(lx,lx,lx)
963 real(kind=
rp) :: us(lx,lx,lx)
964 real(kind=
rp) :: vs(lx,lx,lx)
965 real(kind=
rp) :: ws(lx,lx,lx)
966 real(kind=
rp) :: ut(lx,lx,lx)
967 real(kind=
rp) :: vt(lx,lx,lx)
968 real(kind=
rp) :: wt(lx,lx,lx)
969 real(kind=
rp) :: tmp1, tmp2, tmp3
970 integer :: e, i, j, k, l
979 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
980 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
981 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
996 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
997 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
998 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
1013 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
1014 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
1015 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
1023 do i = 1, lx * lx * lx
1024 grad(1,1,1) = w3(i,1,1) &
1025 * ( drdx(i,1,1,e) * ur(i,1,1) &
1026 + dsdx(i,1,1,e) * us(i,1,1) &
1027 + dtdx(i,1,1,e) * ut(i,1,1) )
1028 grad(1,1,2) = w3(i,1,1) &
1029 * ( dsdy(i,1,1,e) * us(i,1,1) &
1030 + drdy(i,1,1,e) * ur(i,1,1) &
1031 + dtdy(i,1,1,e) * ut(i,1,1) )
1032 grad(1,1,3) = w3(i,1,1) &
1033 * ( dtdz(i,1,1,e) * ut(i,1,1) &
1034 + drdz(i,1,1,e) * ur(i,1,1) &
1035 + dsdz(i,1,1,e) * us(i,1,1) )
1037 grad(1,2,1) = w3(i,1,1) &
1038 * ( drdx(i,1,1,e) * vr(i,1,1) &
1039 + dsdx(i,1,1,e) * vs(i,1,1) &
1040 + dtdx(i,1,1,e) * vt(i,1,1) )
1041 grad(1,2,2) = w3(i,1,1) &
1042 * ( dsdy(i,1,1,e) * vs(i,1,1) &
1043 + drdy(i,1,1,e) * vr(i,1,1) &
1044 + dtdy(i,1,1,e) * vt(i,1,1) )
1045 grad(1,2,3) = w3(i,1,1) &
1046 * ( dtdz(i,1,1,e) * vt(i,1,1) &
1047 + drdz(i,1,1,e) * vr(i,1,1) &
1048 + dsdz(i,1,1,e) * vs(i,1,1) )
1050 grad(1,3,1) = w3(i,1,1) &
1051 * ( drdx(i,1,1,e) * wr(i,1,1) &
1052 + dsdx(i,1,1,e) * ws(i,1,1) &
1053 + dtdx(i,1,1,e) * wt(i,1,1) )
1054 grad(1,3,2) = w3(i,1,1) &
1055 * ( dsdy(i,1,1,e) * ws(i,1,1) &
1056 + drdy(i,1,1,e) * wr(i,1,1) &
1057 + dtdy(i,1,1,e) * wt(i,1,1) )
1058 grad(1,3,3) = w3(i,1,1) &
1059 * ( dtdz(i,1,1,e) * wt(i,1,1) &
1060 + drdz(i,1,1,e) * wr(i,1,1) &
1061 + dsdz(i,1,1,e) * ws(i,1,1) )
1065 do i = 1, lx * lx * lx
1071 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
1072 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
1073 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
1075 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
1076 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
1077 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
1079 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
1080 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
1081 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
1083 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
1084 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
1085 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
1088 b = -(a11 + a22 + a33)
1089 c = -(a12*a12 + a13*a13 + a23*a23 &
1090 - a11 * a22 - a11 * a33 - a22 * a33)
1091 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
1092 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
1095 q = (3.0 * c - b*b) / 9.0
1096 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
1097 theta = acos( r / sqrt(-q*q*q) )
1099 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
1100 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
1101 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
1103 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
1104 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
1105 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
1106 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
1107 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
1108 .le. eigen(2) .and. eigen(2) .le. eigen(1))
1109 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
1110 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
1111 .le. eigen(3) .and. eigen(3) .le. eigen(1))
1113 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
1115 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
1121 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
1122 integer,
parameter :: lx = 13
1123 integer,
intent(in) :: n
1124 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
1125 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
1126 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
1127 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
1128 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
1129 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
1130 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
1131 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
1132 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
1133 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
1134 real(kind=
rp) :: grad(lx*lx*lx,3,3)
1135 integer :: temp_indices(9), ind_sort(3)
1136 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
1137 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
1138 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
1139 real(kind=
rp) :: msk1, msk2, msk3
1140 real(kind=
rp) :: ur(lx,lx,lx)
1141 real(kind=
rp) :: vr(lx,lx,lx)
1142 real(kind=
rp) :: wr(lx,lx,lx)
1143 real(kind=
rp) :: us(lx,lx,lx)
1144 real(kind=
rp) :: vs(lx,lx,lx)
1145 real(kind=
rp) :: ws(lx,lx,lx)
1146 real(kind=
rp) :: ut(lx,lx,lx)
1147 real(kind=
rp) :: vt(lx,lx,lx)
1148 real(kind=
rp) :: wt(lx,lx,lx)
1149 real(kind=
rp) :: tmp1, tmp2, tmp3
1150 integer :: e, i, j, k, l
1159 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
1160 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
1161 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
1176 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
1177 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
1178 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
1193 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
1194 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
1195 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
1203 do i = 1, lx * lx * lx
1204 grad(1,1,1) = w3(i,1,1) &
1205 * ( drdx(i,1,1,e) * ur(i,1,1) &
1206 + dsdx(i,1,1,e) * us(i,1,1) &
1207 + dtdx(i,1,1,e) * ut(i,1,1) )
1208 grad(1,1,2) = w3(i,1,1) &
1209 * ( dsdy(i,1,1,e) * us(i,1,1) &
1210 + drdy(i,1,1,e) * ur(i,1,1) &
1211 + dtdy(i,1,1,e) * ut(i,1,1) )
1212 grad(1,1,3) = w3(i,1,1) &
1213 * ( dtdz(i,1,1,e) * ut(i,1,1) &
1214 + drdz(i,1,1,e) * ur(i,1,1) &
1215 + dsdz(i,1,1,e) * us(i,1,1) )
1217 grad(1,2,1) = w3(i,1,1) &
1218 * ( drdx(i,1,1,e) * vr(i,1,1) &
1219 + dsdx(i,1,1,e) * vs(i,1,1) &
1220 + dtdx(i,1,1,e) * vt(i,1,1) )
1221 grad(1,2,2) = w3(i,1,1) &
1222 * ( dsdy(i,1,1,e) * vs(i,1,1) &
1223 + drdy(i,1,1,e) * vr(i,1,1) &
1224 + dtdy(i,1,1,e) * vt(i,1,1) )
1225 grad(1,2,3) = w3(i,1,1) &
1226 * ( dtdz(i,1,1,e) * vt(i,1,1) &
1227 + drdz(i,1,1,e) * vr(i,1,1) &
1228 + dsdz(i,1,1,e) * vs(i,1,1) )
1230 grad(1,3,1) = w3(i,1,1) &
1231 * ( drdx(i,1,1,e) * wr(i,1,1) &
1232 + dsdx(i,1,1,e) * ws(i,1,1) &
1233 + dtdx(i,1,1,e) * wt(i,1,1) )
1234 grad(1,3,2) = w3(i,1,1) &
1235 * ( dsdy(i,1,1,e) * ws(i,1,1) &
1236 + drdy(i,1,1,e) * wr(i,1,1) &
1237 + dtdy(i,1,1,e) * wt(i,1,1) )
1238 grad(1,3,3) = w3(i,1,1) &
1239 * ( dtdz(i,1,1,e) * wt(i,1,1) &
1240 + drdz(i,1,1,e) * wr(i,1,1) &
1241 + dsdz(i,1,1,e) * ws(i,1,1) )
1245 do i = 1, lx * lx * lx
1251 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
1252 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
1253 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
1255 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
1256 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
1257 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
1259 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
1260 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
1261 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
1263 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
1264 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
1265 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
1268 b = -(a11 + a22 + a33)
1269 c = -(a12*a12 + a13*a13 + a23*a23 &
1270 - a11 * a22 - a11 * a33 - a22 * a33)
1271 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
1272 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
1275 q = (3.0 * c - b*b) / 9.0
1276 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
1277 theta = acos( r / sqrt(-q*q*q) )
1279 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
1280 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
1281 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
1283 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
1284 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
1285 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
1286 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
1287 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
1288 .le. eigen(2) .and. eigen(2) .le. eigen(1))
1289 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
1290 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
1291 .le. eigen(3) .and. eigen(3) .le. eigen(1))
1293 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
1295 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
1301 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
1302 integer,
parameter :: lx = 12
1303 integer,
intent(in) :: n
1304 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
1305 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
1306 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
1307 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
1308 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
1309 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
1310 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
1311 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
1312 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
1313 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
1314 real(kind=
rp) :: grad(lx*lx*lx,3,3)
1315 integer :: temp_indices(9), ind_sort(3)
1316 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
1317 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
1318 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
1319 real(kind=
rp) :: msk1, msk2, msk3
1320 real(kind=
rp) :: ur(lx,lx,lx)
1321 real(kind=
rp) :: vr(lx,lx,lx)
1322 real(kind=
rp) :: wr(lx,lx,lx)
1323 real(kind=
rp) :: us(lx,lx,lx)
1324 real(kind=
rp) :: vs(lx,lx,lx)
1325 real(kind=
rp) :: ws(lx,lx,lx)
1326 real(kind=
rp) :: ut(lx,lx,lx)
1327 real(kind=
rp) :: vt(lx,lx,lx)
1328 real(kind=
rp) :: wt(lx,lx,lx)
1329 real(kind=
rp) :: tmp1, tmp2, tmp3
1330 integer :: e, i, j, k, l
1339 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
1340 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
1341 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
1356 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
1357 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
1358 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
1373 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
1374 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
1375 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
1383 do i = 1, lx * lx * lx
1384 grad(1,1,1) = w3(i,1,1) &
1385 * ( drdx(i,1,1,e) * ur(i,1,1) &
1386 + dsdx(i,1,1,e) * us(i,1,1) &
1387 + dtdx(i,1,1,e) * ut(i,1,1) )
1388 grad(1,1,2) = w3(i,1,1) &
1389 * ( dsdy(i,1,1,e) * us(i,1,1) &
1390 + drdy(i,1,1,e) * ur(i,1,1) &
1391 + dtdy(i,1,1,e) * ut(i,1,1) )
1392 grad(1,1,3) = w3(i,1,1) &
1393 * ( dtdz(i,1,1,e) * ut(i,1,1) &
1394 + drdz(i,1,1,e) * ur(i,1,1) &
1395 + dsdz(i,1,1,e) * us(i,1,1) )
1397 grad(1,2,1) = w3(i,1,1) &
1398 * ( drdx(i,1,1,e) * vr(i,1,1) &
1399 + dsdx(i,1,1,e) * vs(i,1,1) &
1400 + dtdx(i,1,1,e) * vt(i,1,1) )
1401 grad(1,2,2) = w3(i,1,1) &
1402 * ( dsdy(i,1,1,e) * vs(i,1,1) &
1403 + drdy(i,1,1,e) * vr(i,1,1) &
1404 + dtdy(i,1,1,e) * vt(i,1,1) )
1405 grad(1,2,3) = w3(i,1,1) &
1406 * ( dtdz(i,1,1,e) * vt(i,1,1) &
1407 + drdz(i,1,1,e) * vr(i,1,1) &
1408 + dsdz(i,1,1,e) * vs(i,1,1) )
1410 grad(1,3,1) = w3(i,1,1) &
1411 * ( drdx(i,1,1,e) * wr(i,1,1) &
1412 + dsdx(i,1,1,e) * ws(i,1,1) &
1413 + dtdx(i,1,1,e) * wt(i,1,1) )
1414 grad(1,3,2) = w3(i,1,1) &
1415 * ( dsdy(i,1,1,e) * ws(i,1,1) &
1416 + drdy(i,1,1,e) * wr(i,1,1) &
1417 + dtdy(i,1,1,e) * wt(i,1,1) )
1418 grad(1,3,3) = w3(i,1,1) &
1419 * ( dtdz(i,1,1,e) * wt(i,1,1) &
1420 + drdz(i,1,1,e) * wr(i,1,1) &
1421 + dsdz(i,1,1,e) * ws(i,1,1) )
1425 do i = 1, lx * lx * lx
1431 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
1432 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
1433 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
1435 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
1436 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
1437 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
1439 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
1440 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
1441 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
1443 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
1444 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
1445 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
1448 b = -(a11 + a22 + a33)
1449 c = -(a12*a12 + a13*a13 + a23*a23 &
1450 - a11 * a22 - a11 * a33 - a22 * a33)
1451 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
1452 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
1455 q = (3.0 * c - b*b) / 9.0
1456 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
1457 theta = acos( r / sqrt(-q*q*q) )
1459 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
1460 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
1461 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
1463 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
1464 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
1465 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
1466 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
1467 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
1468 .le. eigen(2) .and. eigen(2) .le. eigen(1))
1469 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
1470 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
1471 .le. eigen(3) .and. eigen(3) .le. eigen(1))
1473 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
1475 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
1481 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
1482 integer,
parameter :: lx = 11
1483 integer,
intent(in) :: n
1484 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
1485 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
1486 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
1487 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
1488 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
1489 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
1490 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
1491 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
1492 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
1493 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
1494 real(kind=
rp) :: grad(lx*lx*lx,3,3)
1495 integer :: temp_indices(9), ind_sort(3)
1496 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
1497 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
1498 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
1499 real(kind=
rp) :: msk1, msk2, msk3
1500 real(kind=
rp) :: ur(lx,lx,lx)
1501 real(kind=
rp) :: vr(lx,lx,lx)
1502 real(kind=
rp) :: wr(lx,lx,lx)
1503 real(kind=
rp) :: us(lx,lx,lx)
1504 real(kind=
rp) :: vs(lx,lx,lx)
1505 real(kind=
rp) :: ws(lx,lx,lx)
1506 real(kind=
rp) :: ut(lx,lx,lx)
1507 real(kind=
rp) :: vt(lx,lx,lx)
1508 real(kind=
rp) :: wt(lx,lx,lx)
1509 real(kind=
rp) :: tmp1, tmp2, tmp3
1510 integer :: e, i, j, k, l
1519 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
1520 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
1521 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
1536 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
1537 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
1538 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
1553 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
1554 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
1555 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
1563 do i = 1, lx * lx * lx
1564 grad(1,1,1) = w3(i,1,1) &
1565 * ( drdx(i,1,1,e) * ur(i,1,1) &
1566 + dsdx(i,1,1,e) * us(i,1,1) &
1567 + dtdx(i,1,1,e) * ut(i,1,1) )
1568 grad(1,1,2) = w3(i,1,1) &
1569 * ( dsdy(i,1,1,e) * us(i,1,1) &
1570 + drdy(i,1,1,e) * ur(i,1,1) &
1571 + dtdy(i,1,1,e) * ut(i,1,1) )
1572 grad(1,1,3) = w3(i,1,1) &
1573 * ( dtdz(i,1,1,e) * ut(i,1,1) &
1574 + drdz(i,1,1,e) * ur(i,1,1) &
1575 + dsdz(i,1,1,e) * us(i,1,1) )
1577 grad(1,2,1) = w3(i,1,1) &
1578 * ( drdx(i,1,1,e) * vr(i,1,1) &
1579 + dsdx(i,1,1,e) * vs(i,1,1) &
1580 + dtdx(i,1,1,e) * vt(i,1,1) )
1581 grad(1,2,2) = w3(i,1,1) &
1582 * ( dsdy(i,1,1,e) * vs(i,1,1) &
1583 + drdy(i,1,1,e) * vr(i,1,1) &
1584 + dtdy(i,1,1,e) * vt(i,1,1) )
1585 grad(1,2,3) = w3(i,1,1) &
1586 * ( dtdz(i,1,1,e) * vt(i,1,1) &
1587 + drdz(i,1,1,e) * vr(i,1,1) &
1588 + dsdz(i,1,1,e) * vs(i,1,1) )
1590 grad(1,3,1) = w3(i,1,1) &
1591 * ( drdx(i,1,1,e) * wr(i,1,1) &
1592 + dsdx(i,1,1,e) * ws(i,1,1) &
1593 + dtdx(i,1,1,e) * wt(i,1,1) )
1594 grad(1,3,2) = w3(i,1,1) &
1595 * ( dsdy(i,1,1,e) * ws(i,1,1) &
1596 + drdy(i,1,1,e) * wr(i,1,1) &
1597 + dtdy(i,1,1,e) * wt(i,1,1) )
1598 grad(1,3,3) = w3(i,1,1) &
1599 * ( dtdz(i,1,1,e) * wt(i,1,1) &
1600 + drdz(i,1,1,e) * wr(i,1,1) &
1601 + dsdz(i,1,1,e) * ws(i,1,1) )
1605 do i = 1, lx * lx * lx
1611 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
1612 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
1613 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
1615 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
1616 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
1617 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
1619 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
1620 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
1621 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
1623 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
1624 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
1625 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
1628 b = -(a11 + a22 + a33)
1629 c = -(a12*a12 + a13*a13 + a23*a23 &
1630 - a11 * a22 - a11 * a33 - a22 * a33)
1631 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
1632 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
1635 q = (3.0 * c - b*b) / 9.0
1636 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
1637 theta = acos( r / sqrt(-q*q*q) )
1639 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
1640 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
1641 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
1643 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
1644 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
1645 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
1646 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
1647 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
1648 .le. eigen(2) .and. eigen(2) .le. eigen(1))
1649 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
1650 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
1651 .le. eigen(3) .and. eigen(3) .le. eigen(1))
1653 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
1655 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
1661 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
1662 integer,
parameter :: lx = 10
1663 integer,
intent(in) :: n
1664 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
1665 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
1666 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
1667 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
1668 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
1669 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
1670 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
1671 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
1672 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
1673 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
1674 real(kind=
rp) :: grad(lx*lx*lx,3,3)
1675 integer :: temp_indices(9), ind_sort(3)
1676 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
1677 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
1678 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
1679 real(kind=
rp) :: msk1, msk2, msk3
1680 real(kind=
rp) :: ur(lx,lx,lx)
1681 real(kind=
rp) :: vr(lx,lx,lx)
1682 real(kind=
rp) :: wr(lx,lx,lx)
1683 real(kind=
rp) :: us(lx,lx,lx)
1684 real(kind=
rp) :: vs(lx,lx,lx)
1685 real(kind=
rp) :: ws(lx,lx,lx)
1686 real(kind=
rp) :: ut(lx,lx,lx)
1687 real(kind=
rp) :: vt(lx,lx,lx)
1688 real(kind=
rp) :: wt(lx,lx,lx)
1689 real(kind=
rp) :: tmp1, tmp2, tmp3
1690 integer :: e, i, j, k, l
1699 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
1700 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
1701 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
1716 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
1717 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
1718 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
1733 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
1734 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
1735 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
1743 do i = 1, lx * lx * lx
1744 grad(1,1,1) = w3(i,1,1) &
1745 * ( drdx(i,1,1,e) * ur(i,1,1) &
1746 + dsdx(i,1,1,e) * us(i,1,1) &
1747 + dtdx(i,1,1,e) * ut(i,1,1) )
1748 grad(1,1,2) = w3(i,1,1) &
1749 * ( dsdy(i,1,1,e) * us(i,1,1) &
1750 + drdy(i,1,1,e) * ur(i,1,1) &
1751 + dtdy(i,1,1,e) * ut(i,1,1) )
1752 grad(1,1,3) = w3(i,1,1) &
1753 * ( dtdz(i,1,1,e) * ut(i,1,1) &
1754 + drdz(i,1,1,e) * ur(i,1,1) &
1755 + dsdz(i,1,1,e) * us(i,1,1) )
1757 grad(1,2,1) = w3(i,1,1) &
1758 * ( drdx(i,1,1,e) * vr(i,1,1) &
1759 + dsdx(i,1,1,e) * vs(i,1,1) &
1760 + dtdx(i,1,1,e) * vt(i,1,1) )
1761 grad(1,2,2) = w3(i,1,1) &
1762 * ( dsdy(i,1,1,e) * vs(i,1,1) &
1763 + drdy(i,1,1,e) * vr(i,1,1) &
1764 + dtdy(i,1,1,e) * vt(i,1,1) )
1765 grad(1,2,3) = w3(i,1,1) &
1766 * ( dtdz(i,1,1,e) * vt(i,1,1) &
1767 + drdz(i,1,1,e) * vr(i,1,1) &
1768 + dsdz(i,1,1,e) * vs(i,1,1) )
1770 grad(1,3,1) = w3(i,1,1) &
1771 * ( drdx(i,1,1,e) * wr(i,1,1) &
1772 + dsdx(i,1,1,e) * ws(i,1,1) &
1773 + dtdx(i,1,1,e) * wt(i,1,1) )
1774 grad(1,3,2) = w3(i,1,1) &
1775 * ( dsdy(i,1,1,e) * ws(i,1,1) &
1776 + drdy(i,1,1,e) * wr(i,1,1) &
1777 + dtdy(i,1,1,e) * wt(i,1,1) )
1778 grad(1,3,3) = w3(i,1,1) &
1779 * ( dtdz(i,1,1,e) * wt(i,1,1) &
1780 + drdz(i,1,1,e) * wr(i,1,1) &
1781 + dsdz(i,1,1,e) * ws(i,1,1) )
1785 do i = 1, lx * lx * lx
1791 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
1792 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
1793 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
1795 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
1796 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
1797 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
1799 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
1800 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
1801 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
1803 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
1804 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
1805 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
1808 b = -(a11 + a22 + a33)
1809 c = -(a12*a12 + a13*a13 + a23*a23 &
1810 - a11 * a22 - a11 * a33 - a22 * a33)
1811 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
1812 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
1815 q = (3.0 * c - b*b) / 9.0
1816 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
1817 theta = acos( r / sqrt(-q*q*q) )
1819 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
1820 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
1821 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
1823 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
1824 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
1825 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
1826 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
1827 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
1828 .le. eigen(2) .and. eigen(2) .le. eigen(1))
1829 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
1830 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
1831 .le. eigen(3) .and. eigen(3) .le. eigen(1))
1833 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
1835 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
1841 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
1842 integer,
parameter :: lx = 9
1843 integer,
intent(in) :: n
1844 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
1845 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
1846 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
1847 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
1848 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
1849 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
1850 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
1851 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
1852 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
1853 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
1854 real(kind=
rp) :: grad(lx*lx*lx,3,3)
1855 integer :: temp_indices(9), ind_sort(3)
1856 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
1857 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
1858 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
1859 real(kind=
rp) :: msk1, msk2, msk3
1860 real(kind=
rp) :: ur(lx,lx,lx)
1861 real(kind=
rp) :: vr(lx,lx,lx)
1862 real(kind=
rp) :: wr(lx,lx,lx)
1863 real(kind=
rp) :: us(lx,lx,lx)
1864 real(kind=
rp) :: vs(lx,lx,lx)
1865 real(kind=
rp) :: ws(lx,lx,lx)
1866 real(kind=
rp) :: ut(lx,lx,lx)
1867 real(kind=
rp) :: vt(lx,lx,lx)
1868 real(kind=
rp) :: wt(lx,lx,lx)
1869 real(kind=
rp) :: tmp1, tmp2, tmp3
1870 integer :: e, i, j, k, l
1879 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
1880 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
1881 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
1896 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
1897 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
1898 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
1913 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
1914 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
1915 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
1923 do i = 1, lx * lx * lx
1924 grad(1,1,1) = w3(i,1,1) &
1925 * ( drdx(i,1,1,e) * ur(i,1,1) &
1926 + dsdx(i,1,1,e) * us(i,1,1) &
1927 + dtdx(i,1,1,e) * ut(i,1,1) )
1928 grad(1,1,2) = w3(i,1,1) &
1929 * ( dsdy(i,1,1,e) * us(i,1,1) &
1930 + drdy(i,1,1,e) * ur(i,1,1) &
1931 + dtdy(i,1,1,e) * ut(i,1,1) )
1932 grad(1,1,3) = w3(i,1,1) &
1933 * ( dtdz(i,1,1,e) * ut(i,1,1) &
1934 + drdz(i,1,1,e) * ur(i,1,1) &
1935 + dsdz(i,1,1,e) * us(i,1,1) )
1937 grad(1,2,1) = w3(i,1,1) &
1938 * ( drdx(i,1,1,e) * vr(i,1,1) &
1939 + dsdx(i,1,1,e) * vs(i,1,1) &
1940 + dtdx(i,1,1,e) * vt(i,1,1) )
1941 grad(1,2,2) = w3(i,1,1) &
1942 * ( dsdy(i,1,1,e) * vs(i,1,1) &
1943 + drdy(i,1,1,e) * vr(i,1,1) &
1944 + dtdy(i,1,1,e) * vt(i,1,1) )
1945 grad(1,2,3) = w3(i,1,1) &
1946 * ( dtdz(i,1,1,e) * vt(i,1,1) &
1947 + drdz(i,1,1,e) * vr(i,1,1) &
1948 + dsdz(i,1,1,e) * vs(i,1,1) )
1950 grad(1,3,1) = w3(i,1,1) &
1951 * ( drdx(i,1,1,e) * wr(i,1,1) &
1952 + dsdx(i,1,1,e) * ws(i,1,1) &
1953 + dtdx(i,1,1,e) * wt(i,1,1) )
1954 grad(1,3,2) = w3(i,1,1) &
1955 * ( dsdy(i,1,1,e) * ws(i,1,1) &
1956 + drdy(i,1,1,e) * wr(i,1,1) &
1957 + dtdy(i,1,1,e) * wt(i,1,1) )
1958 grad(1,3,3) = w3(i,1,1) &
1959 * ( dtdz(i,1,1,e) * wt(i,1,1) &
1960 + drdz(i,1,1,e) * wr(i,1,1) &
1961 + dsdz(i,1,1,e) * ws(i,1,1) )
1965 do i = 1, lx * lx * lx
1971 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
1972 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
1973 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
1975 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
1976 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
1977 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
1979 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
1980 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
1981 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
1983 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
1984 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
1985 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
1988 b = -(a11 + a22 + a33)
1989 c = -(a12*a12 + a13*a13 + a23*a23 &
1990 - a11 * a22 - a11 * a33 - a22 * a33)
1991 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
1992 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
1995 q = (3.0 * c - b*b) / 9.0
1996 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
1997 theta = acos( r / sqrt(-q*q*q) )
1999 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
2000 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
2001 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
2003 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
2004 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
2005 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
2006 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
2007 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
2008 .le. eigen(2) .and. eigen(2) .le. eigen(1))
2009 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
2010 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
2011 .le. eigen(3) .and. eigen(3) .le. eigen(1))
2013 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
2015 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
2021 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
2022 integer,
parameter :: lx = 8
2023 integer,
intent(in) :: n
2024 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
2025 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
2026 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
2027 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
2028 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
2029 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
2030 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
2031 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
2032 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
2033 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
2034 real(kind=
rp) :: grad(lx*lx*lx,3,3)
2035 integer :: temp_indices(9), ind_sort(3)
2036 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
2037 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
2038 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
2039 real(kind=
rp) :: msk1, msk2, msk3
2040 real(kind=
rp) :: ur(lx,lx,lx)
2041 real(kind=
rp) :: vr(lx,lx,lx)
2042 real(kind=
rp) :: wr(lx,lx,lx)
2043 real(kind=
rp) :: us(lx,lx,lx)
2044 real(kind=
rp) :: vs(lx,lx,lx)
2045 real(kind=
rp) :: ws(lx,lx,lx)
2046 real(kind=
rp) :: ut(lx,lx,lx)
2047 real(kind=
rp) :: vt(lx,lx,lx)
2048 real(kind=
rp) :: wt(lx,lx,lx)
2049 real(kind=
rp) :: tmp1, tmp2, tmp3
2050 integer :: e, i, j, k, l
2059 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
2060 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
2061 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
2076 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
2077 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
2078 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
2093 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
2094 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
2095 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
2103 do i = 1, lx * lx * lx
2104 grad(1,1,1) = w3(i,1,1) &
2105 * ( drdx(i,1,1,e) * ur(i,1,1) &
2106 + dsdx(i,1,1,e) * us(i,1,1) &
2107 + dtdx(i,1,1,e) * ut(i,1,1) )
2108 grad(1,1,2) = w3(i,1,1) &
2109 * ( dsdy(i,1,1,e) * us(i,1,1) &
2110 + drdy(i,1,1,e) * ur(i,1,1) &
2111 + dtdy(i,1,1,e) * ut(i,1,1) )
2112 grad(1,1,3) = w3(i,1,1) &
2113 * ( dtdz(i,1,1,e) * ut(i,1,1) &
2114 + drdz(i,1,1,e) * ur(i,1,1) &
2115 + dsdz(i,1,1,e) * us(i,1,1) )
2117 grad(1,2,1) = w3(i,1,1) &
2118 * ( drdx(i,1,1,e) * vr(i,1,1) &
2119 + dsdx(i,1,1,e) * vs(i,1,1) &
2120 + dtdx(i,1,1,e) * vt(i,1,1) )
2121 grad(1,2,2) = w3(i,1,1) &
2122 * ( dsdy(i,1,1,e) * vs(i,1,1) &
2123 + drdy(i,1,1,e) * vr(i,1,1) &
2124 + dtdy(i,1,1,e) * vt(i,1,1) )
2125 grad(1,2,3) = w3(i,1,1) &
2126 * ( dtdz(i,1,1,e) * vt(i,1,1) &
2127 + drdz(i,1,1,e) * vr(i,1,1) &
2128 + dsdz(i,1,1,e) * vs(i,1,1) )
2130 grad(1,3,1) = w3(i,1,1) &
2131 * ( drdx(i,1,1,e) * wr(i,1,1) &
2132 + dsdx(i,1,1,e) * ws(i,1,1) &
2133 + dtdx(i,1,1,e) * wt(i,1,1) )
2134 grad(1,3,2) = w3(i,1,1) &
2135 * ( dsdy(i,1,1,e) * ws(i,1,1) &
2136 + drdy(i,1,1,e) * wr(i,1,1) &
2137 + dtdy(i,1,1,e) * wt(i,1,1) )
2138 grad(1,3,3) = w3(i,1,1) &
2139 * ( dtdz(i,1,1,e) * wt(i,1,1) &
2140 + drdz(i,1,1,e) * wr(i,1,1) &
2141 + dsdz(i,1,1,e) * ws(i,1,1) )
2145 do i = 1, lx * lx * lx
2151 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
2152 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
2153 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
2155 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
2156 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
2157 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
2159 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
2160 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
2161 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
2163 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
2164 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
2165 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
2168 b = -(a11 + a22 + a33)
2169 c = -(a12*a12 + a13*a13 + a23*a23 &
2170 - a11 * a22 - a11 * a33 - a22 * a33)
2171 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
2172 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
2175 q = (3.0 * c - b*b) / 9.0
2176 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
2177 theta = acos( r / sqrt(-q*q*q) )
2179 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
2180 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
2181 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
2183 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
2184 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
2185 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
2186 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
2187 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
2188 .le. eigen(2) .and. eigen(2) .le. eigen(1))
2189 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
2190 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
2191 .le. eigen(3) .and. eigen(3) .le. eigen(1))
2193 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
2195 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
2201 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
2202 integer,
parameter :: lx = 7
2203 integer,
intent(in) :: n
2204 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
2205 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
2206 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
2207 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
2208 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
2209 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
2210 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
2211 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
2212 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
2213 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
2214 real(kind=
rp) :: grad(lx*lx*lx,3,3)
2215 integer :: temp_indices(9), ind_sort(3)
2216 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
2217 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
2218 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
2219 real(kind=
rp) :: msk1, msk2, msk3
2220 real(kind=
rp) :: ur(lx,lx,lx)
2221 real(kind=
rp) :: vr(lx,lx,lx)
2222 real(kind=
rp) :: wr(lx,lx,lx)
2223 real(kind=
rp) :: us(lx,lx,lx)
2224 real(kind=
rp) :: vs(lx,lx,lx)
2225 real(kind=
rp) :: ws(lx,lx,lx)
2226 real(kind=
rp) :: ut(lx,lx,lx)
2227 real(kind=
rp) :: vt(lx,lx,lx)
2228 real(kind=
rp) :: wt(lx,lx,lx)
2229 real(kind=
rp) :: tmp1, tmp2, tmp3
2230 integer :: e, i, j, k, l
2239 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
2240 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
2241 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
2256 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
2257 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
2258 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
2273 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
2274 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
2275 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
2283 do i = 1, lx * lx * lx
2284 grad(1,1,1) = w3(i,1,1) &
2285 * ( drdx(i,1,1,e) * ur(i,1,1) &
2286 + dsdx(i,1,1,e) * us(i,1,1) &
2287 + dtdx(i,1,1,e) * ut(i,1,1) )
2288 grad(1,1,2) = w3(i,1,1) &
2289 * ( dsdy(i,1,1,e) * us(i,1,1) &
2290 + drdy(i,1,1,e) * ur(i,1,1) &
2291 + dtdy(i,1,1,e) * ut(i,1,1) )
2292 grad(1,1,3) = w3(i,1,1) &
2293 * ( dtdz(i,1,1,e) * ut(i,1,1) &
2294 + drdz(i,1,1,e) * ur(i,1,1) &
2295 + dsdz(i,1,1,e) * us(i,1,1) )
2297 grad(1,2,1) = w3(i,1,1) &
2298 * ( drdx(i,1,1,e) * vr(i,1,1) &
2299 + dsdx(i,1,1,e) * vs(i,1,1) &
2300 + dtdx(i,1,1,e) * vt(i,1,1) )
2301 grad(1,2,2) = w3(i,1,1) &
2302 * ( dsdy(i,1,1,e) * vs(i,1,1) &
2303 + drdy(i,1,1,e) * vr(i,1,1) &
2304 + dtdy(i,1,1,e) * vt(i,1,1) )
2305 grad(1,2,3) = w3(i,1,1) &
2306 * ( dtdz(i,1,1,e) * vt(i,1,1) &
2307 + drdz(i,1,1,e) * vr(i,1,1) &
2308 + dsdz(i,1,1,e) * vs(i,1,1) )
2310 grad(1,3,1) = w3(i,1,1) &
2311 * ( drdx(i,1,1,e) * wr(i,1,1) &
2312 + dsdx(i,1,1,e) * ws(i,1,1) &
2313 + dtdx(i,1,1,e) * wt(i,1,1) )
2314 grad(1,3,2) = w3(i,1,1) &
2315 * ( dsdy(i,1,1,e) * ws(i,1,1) &
2316 + drdy(i,1,1,e) * wr(i,1,1) &
2317 + dtdy(i,1,1,e) * wt(i,1,1) )
2318 grad(1,3,3) = w3(i,1,1) &
2319 * ( dtdz(i,1,1,e) * wt(i,1,1) &
2320 + drdz(i,1,1,e) * wr(i,1,1) &
2321 + dsdz(i,1,1,e) * ws(i,1,1) )
2325 do i = 1, lx * lx * lx
2331 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
2332 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
2333 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
2335 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
2336 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
2337 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
2339 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
2340 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
2341 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
2343 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
2344 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
2345 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
2348 b = -(a11 + a22 + a33)
2349 c = -(a12*a12 + a13*a13 + a23*a23 &
2350 - a11 * a22 - a11 * a33 - a22 * a33)
2351 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
2352 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
2355 q = (3.0 * c - b*b) / 9.0
2356 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
2357 theta = acos( r / sqrt(-q*q*q) )
2359 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
2360 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
2361 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
2363 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
2364 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
2365 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
2366 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
2367 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
2368 .le. eigen(2) .and. eigen(2) .le. eigen(1))
2369 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
2370 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
2371 .le. eigen(3) .and. eigen(3) .le. eigen(1))
2373 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
2375 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
2381 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
2382 integer,
parameter :: lx = 6
2383 integer,
intent(in) :: n
2384 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
2385 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
2386 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
2387 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
2388 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
2389 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
2390 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
2391 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
2392 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
2393 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
2394 real(kind=
rp) :: grad(lx*lx*lx,3,3)
2395 integer :: temp_indices(9), ind_sort(3)
2396 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
2397 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
2398 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
2399 real(kind=
rp) :: msk1, msk2, msk3
2400 real(kind=
rp) :: ur(lx,lx,lx)
2401 real(kind=
rp) :: vr(lx,lx,lx)
2402 real(kind=
rp) :: wr(lx,lx,lx)
2403 real(kind=
rp) :: us(lx,lx,lx)
2404 real(kind=
rp) :: vs(lx,lx,lx)
2405 real(kind=
rp) :: ws(lx,lx,lx)
2406 real(kind=
rp) :: ut(lx,lx,lx)
2407 real(kind=
rp) :: vt(lx,lx,lx)
2408 real(kind=
rp) :: wt(lx,lx,lx)
2409 real(kind=
rp) :: tmp1, tmp2, tmp3
2410 integer :: e, i, j, k, l
2419 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
2420 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
2421 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
2436 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
2437 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
2438 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
2453 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
2454 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
2455 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
2463 do i = 1, lx * lx * lx
2464 grad(1,1,1) = w3(i,1,1) &
2465 * ( drdx(i,1,1,e) * ur(i,1,1) &
2466 + dsdx(i,1,1,e) * us(i,1,1) &
2467 + dtdx(i,1,1,e) * ut(i,1,1) )
2468 grad(1,1,2) = w3(i,1,1) &
2469 * ( dsdy(i,1,1,e) * us(i,1,1) &
2470 + drdy(i,1,1,e) * ur(i,1,1) &
2471 + dtdy(i,1,1,e) * ut(i,1,1) )
2472 grad(1,1,3) = w3(i,1,1) &
2473 * ( dtdz(i,1,1,e) * ut(i,1,1) &
2474 + drdz(i,1,1,e) * ur(i,1,1) &
2475 + dsdz(i,1,1,e) * us(i,1,1) )
2477 grad(1,2,1) = w3(i,1,1) &
2478 * ( drdx(i,1,1,e) * vr(i,1,1) &
2479 + dsdx(i,1,1,e) * vs(i,1,1) &
2480 + dtdx(i,1,1,e) * vt(i,1,1) )
2481 grad(1,2,2) = w3(i,1,1) &
2482 * ( dsdy(i,1,1,e) * vs(i,1,1) &
2483 + drdy(i,1,1,e) * vr(i,1,1) &
2484 + dtdy(i,1,1,e) * vt(i,1,1) )
2485 grad(1,2,3) = w3(i,1,1) &
2486 * ( dtdz(i,1,1,e) * vt(i,1,1) &
2487 + drdz(i,1,1,e) * vr(i,1,1) &
2488 + dsdz(i,1,1,e) * vs(i,1,1) )
2490 grad(1,3,1) = w3(i,1,1) &
2491 * ( drdx(i,1,1,e) * wr(i,1,1) &
2492 + dsdx(i,1,1,e) * ws(i,1,1) &
2493 + dtdx(i,1,1,e) * wt(i,1,1) )
2494 grad(1,3,2) = w3(i,1,1) &
2495 * ( dsdy(i,1,1,e) * ws(i,1,1) &
2496 + drdy(i,1,1,e) * wr(i,1,1) &
2497 + dtdy(i,1,1,e) * wt(i,1,1) )
2498 grad(1,3,3) = w3(i,1,1) &
2499 * ( dtdz(i,1,1,e) * wt(i,1,1) &
2500 + drdz(i,1,1,e) * wr(i,1,1) &
2501 + dsdz(i,1,1,e) * ws(i,1,1) )
2505 do i = 1, lx * lx * lx
2511 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
2512 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
2513 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
2515 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
2516 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
2517 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
2519 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
2520 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
2521 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
2523 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
2524 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
2525 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
2528 b = -(a11 + a22 + a33)
2529 c = -(a12*a12 + a13*a13 + a23*a23 &
2530 - a11 * a22 - a11 * a33 - a22 * a33)
2531 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
2532 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
2535 q = (3.0 * c - b*b) / 9.0
2536 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
2537 theta = acos( r / sqrt(-q*q*q) )
2539 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
2540 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
2541 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
2543 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
2544 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
2545 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
2546 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
2547 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
2548 .le. eigen(2) .and. eigen(2) .le. eigen(1))
2549 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
2550 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
2551 .le. eigen(3) .and. eigen(3) .le. eigen(1))
2553 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
2555 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
2561 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
2562 integer,
parameter :: lx = 5
2563 integer,
intent(in) :: n
2564 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
2565 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
2566 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
2567 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
2568 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
2569 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
2570 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
2571 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
2572 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
2573 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
2574 real(kind=
rp) :: grad(lx*lx*lx,3,3)
2575 integer :: temp_indices(9), ind_sort(3)
2576 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
2577 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
2578 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
2579 real(kind=
rp) :: msk1, msk2, msk3
2580 real(kind=
rp) :: ur(lx,lx,lx)
2581 real(kind=
rp) :: vr(lx,lx,lx)
2582 real(kind=
rp) :: wr(lx,lx,lx)
2583 real(kind=
rp) :: us(lx,lx,lx)
2584 real(kind=
rp) :: vs(lx,lx,lx)
2585 real(kind=
rp) :: ws(lx,lx,lx)
2586 real(kind=
rp) :: ut(lx,lx,lx)
2587 real(kind=
rp) :: vt(lx,lx,lx)
2588 real(kind=
rp) :: wt(lx,lx,lx)
2589 real(kind=
rp) :: tmp1, tmp2, tmp3
2590 integer :: e, i, j, k, l
2599 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
2600 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
2601 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
2616 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
2617 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
2618 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
2633 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
2634 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
2635 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
2643 do i = 1, lx * lx * lx
2644 grad(1,1,1) = w3(i,1,1) &
2645 * ( drdx(i,1,1,e) * ur(i,1,1) &
2646 + dsdx(i,1,1,e) * us(i,1,1) &
2647 + dtdx(i,1,1,e) * ut(i,1,1) )
2648 grad(1,1,2) = w3(i,1,1) &
2649 * ( dsdy(i,1,1,e) * us(i,1,1) &
2650 + drdy(i,1,1,e) * ur(i,1,1) &
2651 + dtdy(i,1,1,e) * ut(i,1,1) )
2652 grad(1,1,3) = w3(i,1,1) &
2653 * ( dtdz(i,1,1,e) * ut(i,1,1) &
2654 + drdz(i,1,1,e) * ur(i,1,1) &
2655 + dsdz(i,1,1,e) * us(i,1,1) )
2657 grad(1,2,1) = w3(i,1,1) &
2658 * ( drdx(i,1,1,e) * vr(i,1,1) &
2659 + dsdx(i,1,1,e) * vs(i,1,1) &
2660 + dtdx(i,1,1,e) * vt(i,1,1) )
2661 grad(1,2,2) = w3(i,1,1) &
2662 * ( dsdy(i,1,1,e) * vs(i,1,1) &
2663 + drdy(i,1,1,e) * vr(i,1,1) &
2664 + dtdy(i,1,1,e) * vt(i,1,1) )
2665 grad(1,2,3) = w3(i,1,1) &
2666 * ( dtdz(i,1,1,e) * vt(i,1,1) &
2667 + drdz(i,1,1,e) * vr(i,1,1) &
2668 + dsdz(i,1,1,e) * vs(i,1,1) )
2670 grad(1,3,1) = w3(i,1,1) &
2671 * ( drdx(i,1,1,e) * wr(i,1,1) &
2672 + dsdx(i,1,1,e) * ws(i,1,1) &
2673 + dtdx(i,1,1,e) * wt(i,1,1) )
2674 grad(1,3,2) = w3(i,1,1) &
2675 * ( dsdy(i,1,1,e) * ws(i,1,1) &
2676 + drdy(i,1,1,e) * wr(i,1,1) &
2677 + dtdy(i,1,1,e) * wt(i,1,1) )
2678 grad(1,3,3) = w3(i,1,1) &
2679 * ( dtdz(i,1,1,e) * wt(i,1,1) &
2680 + drdz(i,1,1,e) * wr(i,1,1) &
2681 + dsdz(i,1,1,e) * ws(i,1,1) )
2685 do i = 1, lx * lx * lx
2691 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
2692 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
2693 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
2695 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
2696 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
2697 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
2699 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
2700 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
2701 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
2703 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
2704 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
2705 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
2708 b = -(a11 + a22 + a33)
2709 c = -(a12*a12 + a13*a13 + a23*a23 &
2710 - a11 * a22 - a11 * a33 - a22 * a33)
2711 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
2712 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
2715 q = (3.0 * c - b*b) / 9.0
2716 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
2717 theta = acos( r / sqrt(-q*q*q) )
2719 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
2720 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
2721 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
2723 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
2724 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
2725 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
2726 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
2727 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
2728 .le. eigen(2) .and. eigen(2) .le. eigen(1))
2729 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
2730 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
2731 .le. eigen(3) .and. eigen(3) .le. eigen(1))
2733 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
2735 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
2741 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
2742 integer,
parameter :: lx = 4
2743 integer,
intent(in) :: n
2744 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
2745 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
2746 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
2747 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
2748 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
2749 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
2750 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
2751 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
2752 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
2753 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
2754 real(kind=
rp) :: grad(lx*lx*lx,3,3)
2755 integer :: temp_indices(9), ind_sort(3)
2756 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
2757 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
2758 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
2759 real(kind=
rp) :: msk1, msk2, msk3
2760 real(kind=
rp) :: ur(lx,lx,lx)
2761 real(kind=
rp) :: vr(lx,lx,lx)
2762 real(kind=
rp) :: wr(lx,lx,lx)
2763 real(kind=
rp) :: us(lx,lx,lx)
2764 real(kind=
rp) :: vs(lx,lx,lx)
2765 real(kind=
rp) :: ws(lx,lx,lx)
2766 real(kind=
rp) :: ut(lx,lx,lx)
2767 real(kind=
rp) :: vt(lx,lx,lx)
2768 real(kind=
rp) :: wt(lx,lx,lx)
2769 real(kind=
rp) :: tmp1, tmp2, tmp3
2770 integer :: e, i, j, k, l
2779 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
2780 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
2781 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
2796 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
2797 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
2798 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
2813 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
2814 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
2815 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
2823 do i = 1, lx * lx * lx
2824 grad(1,1,1) = w3(i,1,1) &
2825 * ( drdx(i,1,1,e) * ur(i,1,1) &
2826 + dsdx(i,1,1,e) * us(i,1,1) &
2827 + dtdx(i,1,1,e) * ut(i,1,1) )
2828 grad(1,1,2) = w3(i,1,1) &
2829 * ( dsdy(i,1,1,e) * us(i,1,1) &
2830 + drdy(i,1,1,e) * ur(i,1,1) &
2831 + dtdy(i,1,1,e) * ut(i,1,1) )
2832 grad(1,1,3) = w3(i,1,1) &
2833 * ( dtdz(i,1,1,e) * ut(i,1,1) &
2834 + drdz(i,1,1,e) * ur(i,1,1) &
2835 + dsdz(i,1,1,e) * us(i,1,1) )
2837 grad(1,2,1) = w3(i,1,1) &
2838 * ( drdx(i,1,1,e) * vr(i,1,1) &
2839 + dsdx(i,1,1,e) * vs(i,1,1) &
2840 + dtdx(i,1,1,e) * vt(i,1,1) )
2841 grad(1,2,2) = w3(i,1,1) &
2842 * ( dsdy(i,1,1,e) * vs(i,1,1) &
2843 + drdy(i,1,1,e) * vr(i,1,1) &
2844 + dtdy(i,1,1,e) * vt(i,1,1) )
2845 grad(1,2,3) = w3(i,1,1) &
2846 * ( dtdz(i,1,1,e) * vt(i,1,1) &
2847 + drdz(i,1,1,e) * vr(i,1,1) &
2848 + dsdz(i,1,1,e) * vs(i,1,1) )
2850 grad(1,3,1) = w3(i,1,1) &
2851 * ( drdx(i,1,1,e) * wr(i,1,1) &
2852 + dsdx(i,1,1,e) * ws(i,1,1) &
2853 + dtdx(i,1,1,e) * wt(i,1,1) )
2854 grad(1,3,2) = w3(i,1,1) &
2855 * ( dsdy(i,1,1,e) * ws(i,1,1) &
2856 + drdy(i,1,1,e) * wr(i,1,1) &
2857 + dtdy(i,1,1,e) * wt(i,1,1) )
2858 grad(1,3,3) = w3(i,1,1) &
2859 * ( dtdz(i,1,1,e) * wt(i,1,1) &
2860 + drdz(i,1,1,e) * wr(i,1,1) &
2861 + dsdz(i,1,1,e) * ws(i,1,1) )
2865 do i = 1, lx * lx * lx
2871 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
2872 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
2873 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
2875 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
2876 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
2877 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
2879 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
2880 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
2881 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
2883 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
2884 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
2885 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
2888 b = -(a11 + a22 + a33)
2889 c = -(a12*a12 + a13*a13 + a23*a23 &
2890 - a11 * a22 - a11 * a33 - a22 * a33)
2891 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
2892 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
2895 q = (3.0 * c - b*b) / 9.0
2896 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
2897 theta = acos( r / sqrt(-q*q*q) )
2899 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
2900 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
2901 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
2903 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
2904 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
2905 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
2906 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
2907 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
2908 .le. eigen(2) .and. eigen(2) .le. eigen(1))
2909 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
2910 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
2911 .le. eigen(3) .and. eigen(3) .le. eigen(1))
2913 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
2915 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
2921 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
2922 integer,
parameter :: lx = 3
2923 integer,
intent(in) :: n
2924 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
2925 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
2926 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
2927 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
2928 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
2929 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
2930 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
2931 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
2932 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
2933 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
2934 real(kind=
rp) :: grad(lx*lx*lx,3,3)
2935 integer :: temp_indices(9), ind_sort(3)
2936 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
2937 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
2938 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
2939 real(kind=
rp) :: msk1, msk2, msk3
2940 real(kind=
rp) :: ur(lx,lx,lx)
2941 real(kind=
rp) :: vr(lx,lx,lx)
2942 real(kind=
rp) :: wr(lx,lx,lx)
2943 real(kind=
rp) :: us(lx,lx,lx)
2944 real(kind=
rp) :: vs(lx,lx,lx)
2945 real(kind=
rp) :: ws(lx,lx,lx)
2946 real(kind=
rp) :: ut(lx,lx,lx)
2947 real(kind=
rp) :: vt(lx,lx,lx)
2948 real(kind=
rp) :: wt(lx,lx,lx)
2949 real(kind=
rp) :: tmp1, tmp2, tmp3
2950 integer :: e, i, j, k, l
2959 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
2960 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
2961 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
2976 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
2977 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
2978 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
2993 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
2994 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
2995 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
3003 do i = 1, lx * lx * lx
3004 grad(1,1,1) = w3(i,1,1) &
3005 * ( drdx(i,1,1,e) * ur(i,1,1) &
3006 + dsdx(i,1,1,e) * us(i,1,1) &
3007 + dtdx(i,1,1,e) * ut(i,1,1) )
3008 grad(1,1,2) = w3(i,1,1) &
3009 * ( dsdy(i,1,1,e) * us(i,1,1) &
3010 + drdy(i,1,1,e) * ur(i,1,1) &
3011 + dtdy(i,1,1,e) * ut(i,1,1) )
3012 grad(1,1,3) = w3(i,1,1) &
3013 * ( dtdz(i,1,1,e) * ut(i,1,1) &
3014 + drdz(i,1,1,e) * ur(i,1,1) &
3015 + dsdz(i,1,1,e) * us(i,1,1) )
3017 grad(1,2,1) = w3(i,1,1) &
3018 * ( drdx(i,1,1,e) * vr(i,1,1) &
3019 + dsdx(i,1,1,e) * vs(i,1,1) &
3020 + dtdx(i,1,1,e) * vt(i,1,1) )
3021 grad(1,2,2) = w3(i,1,1) &
3022 * ( dsdy(i,1,1,e) * vs(i,1,1) &
3023 + drdy(i,1,1,e) * vr(i,1,1) &
3024 + dtdy(i,1,1,e) * vt(i,1,1) )
3025 grad(1,2,3) = w3(i,1,1) &
3026 * ( dtdz(i,1,1,e) * vt(i,1,1) &
3027 + drdz(i,1,1,e) * vr(i,1,1) &
3028 + dsdz(i,1,1,e) * vs(i,1,1) )
3030 grad(1,3,1) = w3(i,1,1) &
3031 * ( drdx(i,1,1,e) * wr(i,1,1) &
3032 + dsdx(i,1,1,e) * ws(i,1,1) &
3033 + dtdx(i,1,1,e) * wt(i,1,1) )
3034 grad(1,3,2) = w3(i,1,1) &
3035 * ( dsdy(i,1,1,e) * ws(i,1,1) &
3036 + drdy(i,1,1,e) * wr(i,1,1) &
3037 + dtdy(i,1,1,e) * wt(i,1,1) )
3038 grad(1,3,3) = w3(i,1,1) &
3039 * ( dtdz(i,1,1,e) * wt(i,1,1) &
3040 + drdz(i,1,1,e) * wr(i,1,1) &
3041 + dsdz(i,1,1,e) * ws(i,1,1) )
3045 do i = 1, lx * lx * lx
3051 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
3052 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
3053 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
3055 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
3056 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
3057 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
3059 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
3060 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
3061 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
3063 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
3064 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
3065 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
3068 b = -(a11 + a22 + a33)
3069 c = -(a12*a12 + a13*a13 + a23*a23 &
3070 - a11 * a22 - a11 * a33 - a22 * a33)
3071 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
3072 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
3075 q = (3.0 * c - b*b) / 9.0
3076 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
3077 theta = acos( r / sqrt(-q*q*q) )
3079 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
3080 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
3081 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
3083 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
3084 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
3085 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
3086 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
3087 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
3088 .le. eigen(2) .and. eigen(2) .le. eigen(1))
3089 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
3090 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
3091 .le. eigen(3) .and. eigen(3) .le. eigen(1))
3093 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
3095 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
3101 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
3102 integer,
parameter :: lx = 2
3103 integer,
intent(in) :: n
3104 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(inout) ::
lambda2
3105 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: u
3106 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: v
3107 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: w
3108 real(kind=
rp),
dimension(lx,lx),
intent(in) :: dx, dy, dz
3109 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdx, dsdx, dtdx
3110 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdy, dsdy, dtdy
3111 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: drdz, dsdz, dtdz
3112 real(kind=
rp),
dimension(lx,lx,lx,n),
intent(in) :: cb
3113 real(kind=
rp),
dimension(lx,lx,lx),
intent(in) :: w3
3114 real(kind=
rp) :: grad(lx*lx*lx,3,3)
3115 integer :: temp_indices(9), ind_sort(3)
3116 real(kind=
rp) :: eigen(3), b, c, d, q, r, theta, l2
3117 real(kind=
rp) :: s11, s22, s33, s12, s13, s23, o12, o13, o23
3118 real(kind=
rp) :: a11, a22, a33, a12, a13, a23
3119 real(kind=
rp) :: msk1, msk2, msk3
3120 real(kind=
rp) :: ur(lx,lx,lx)
3121 real(kind=
rp) :: vr(lx,lx,lx)
3122 real(kind=
rp) :: wr(lx,lx,lx)
3123 real(kind=
rp) :: us(lx,lx,lx)
3124 real(kind=
rp) :: vs(lx,lx,lx)
3125 real(kind=
rp) :: ws(lx,lx,lx)
3126 real(kind=
rp) :: ut(lx,lx,lx)
3127 real(kind=
rp) :: vt(lx,lx,lx)
3128 real(kind=
rp) :: wt(lx,lx,lx)
3129 real(kind=
rp) :: tmp1, tmp2, tmp3
3130 integer :: e, i, j, k, l
3139 tmp1 = tmp1 + dx(i,k) * u(k,j,1,e)
3140 tmp2 = tmp2 + dx(i,k) * v(k,j,1,e)
3141 tmp3 = tmp3 + dx(i,k) * w(k,j,1,e)
3156 tmp1 = tmp1 + dy(j,l) * u(i,l,k,e)
3157 tmp2 = tmp2 + dy(j,l) * v(i,l,k,e)
3158 tmp3 = tmp3 + dy(j,l) * w(i,l,k,e)
3173 tmp1 = tmp1 + dz(k,l) * u(i,1,l,e)
3174 tmp2 = tmp2 + dz(k,l) * v(i,1,l,e)
3175 tmp3 = tmp3 + dz(k,l) * w(i,1,l,e)
3183 do i = 1, lx * lx * lx
3184 grad(1,1,1) = w3(i,1,1) &
3185 * ( drdx(i,1,1,e) * ur(i,1,1) &
3186 + dsdx(i,1,1,e) * us(i,1,1) &
3187 + dtdx(i,1,1,e) * ut(i,1,1) )
3188 grad(1,1,2) = w3(i,1,1) &
3189 * ( dsdy(i,1,1,e) * us(i,1,1) &
3190 + drdy(i,1,1,e) * ur(i,1,1) &
3191 + dtdy(i,1,1,e) * ut(i,1,1) )
3192 grad(1,1,3) = w3(i,1,1) &
3193 * ( dtdz(i,1,1,e) * ut(i,1,1) &
3194 + drdz(i,1,1,e) * ur(i,1,1) &
3195 + dsdz(i,1,1,e) * us(i,1,1) )
3197 grad(1,2,1) = w3(i,1,1) &
3198 * ( drdx(i,1,1,e) * vr(i,1,1) &
3199 + dsdx(i,1,1,e) * vs(i,1,1) &
3200 + dtdx(i,1,1,e) * vt(i,1,1) )
3201 grad(1,2,2) = w3(i,1,1) &
3202 * ( dsdy(i,1,1,e) * vs(i,1,1) &
3203 + drdy(i,1,1,e) * vr(i,1,1) &
3204 + dtdy(i,1,1,e) * vt(i,1,1) )
3205 grad(1,2,3) = w3(i,1,1) &
3206 * ( dtdz(i,1,1,e) * vt(i,1,1) &
3207 + drdz(i,1,1,e) * vr(i,1,1) &
3208 + dsdz(i,1,1,e) * vs(i,1,1) )
3210 grad(1,3,1) = w3(i,1,1) &
3211 * ( drdx(i,1,1,e) * wr(i,1,1) &
3212 + dsdx(i,1,1,e) * ws(i,1,1) &
3213 + dtdx(i,1,1,e) * wt(i,1,1) )
3214 grad(1,3,2) = w3(i,1,1) &
3215 * ( dsdy(i,1,1,e) * ws(i,1,1) &
3216 + drdy(i,1,1,e) * wr(i,1,1) &
3217 + dtdy(i,1,1,e) * wt(i,1,1) )
3218 grad(1,3,3) = w3(i,1,1) &
3219 * ( dtdz(i,1,1,e) * wt(i,1,1) &
3220 + drdz(i,1,1,e) * wr(i,1,1) &
3221 + dsdz(i,1,1,e) * ws(i,1,1) )
3225 do i = 1, lx * lx * lx
3231 s12 = 0.5*(grad(i,1,2) + grad(i,2,1))
3232 s13 = 0.5*(grad(i,1,3) + grad(i,3,1))
3233 s23 = 0.5*(grad(i,2,3) + grad(i,3,2))
3235 o12 = 0.5*(grad(i,1,2) - grad(i,2,1))
3236 o13 = 0.5*(grad(i,1,3) - grad(i,3,1))
3237 o23 = 0.5*(grad(i,2,3) - grad(i,3,2))
3239 a11 = s11*s11 + s12*s12 + s13*s13 - o12*o12 - o13*o13
3240 a12 = s11 * s12 + s12 * s22 + s13 * s23 - o13 * o23
3241 a13 = s11 * s13 + s12 * s23 + s13 * s33 + o12 * o23
3243 a22 = s12*s12 + s22*s22 + s23*s23 - o12*o12 - o23*o23
3244 a23 = s12 * s13 + s22 * s23 + s23 * s33 - o12 * o13
3245 a33 = s13*s13 + s23*s23 + s33*s33 - o13*o13 - o23*o23
3248 b = -(a11 + a22 + a33)
3249 c = -(a12*a12 + a13*a13 + a23*a23 &
3250 - a11 * a22 - a11 * a33 - a22 * a33)
3251 d = -(2.0 * a12 * a13 * a23 - a11 * a23*a23 &
3252 - a22 * a13*a13 - a33 * a12*a12 + a11 * a22 * a33)
3255 q = (3.0 * c - b*b) / 9.0
3256 r = (9.0 * c * b - 27.0 * d - 2.0 * b*b*b) / 54.0
3257 theta = acos( r / sqrt(-q*q*q) )
3259 eigen(1) = 2.0 * sqrt(-q) * cos(theta / 3.0) - b / 3.0
3260 eigen(2) = 2.0 * sqrt(-q) * cos((theta + 2.0 *
pi) / 3.0) - b / 3.0
3261 eigen(3) = 2.0 * sqrt(-q) * cos((theta + 4.0 *
pi) / 3.0) - b / 3.0
3263 msk1 = merge(1.0_rp, 0.0_rp, eigen(2) .le. eigen(1) &
3264 .and. eigen(1) .le. eigen(3) .or. eigen(3) &
3265 .le. eigen(1) .and. eigen(1) .le. eigen(2) )
3266 msk2 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(2) &
3267 .and. eigen(2) .le. eigen(3) .or. eigen(3) &
3268 .le. eigen(2) .and. eigen(2) .le. eigen(1))
3269 msk3 = merge(1.0_rp, 0.0_rp, eigen(1) .le. eigen(3) &
3270 .and. eigen(3) .le. eigen(2) .or. eigen(2) &
3271 .le. eigen(3) .and. eigen(3) .le. eigen(1))
3273 l2 = msk1 * eigen(1) + msk2 * eigen(2) + msk3 * eigen(3)
3275 lambda2(i,1,1,e) = l2/(cb(i,1,1,e)**2)
A simulation component that computes lambda2 The values are stored in the field registry under the na...
real(kind=rp), parameter, public pi
integer, parameter, public rp
Global precision used in computations.
Lambda2 kernels for SX-Aurora.
subroutine sx_lambda2_lx10(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx2(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx9(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx4(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx16(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx7(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx11(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx17(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx15(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx14(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx6(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n, lx)
subroutine sx_lambda2_lx3(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx5(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx18(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx8(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx13(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)
subroutine sx_lambda2_lx12(lambda2, u, v, w, dx, dy, dz, drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, w3, cB, n)