Neko 1.99.9
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
ax_helm_full_cpu.f90
Go to the documentation of this file.
1! Copyright (c) 2023-2026, The Neko Authors
2! All rights reserved.
3!
4! Redistribution and use in source and binary forms, with or without
5! modification, are permitted provided that the following conditions
6! are met:
7!
8! * Redistributions of source code must retain the above copyright
9! notice, this list of conditions and the following disclaimer.
10!
11! * Redistributions in binary form must reproduce the above
12! copyright notice, this list of conditions and the following
13! disclaimer in the documentation and/or other materials provided
14! with the distribution.
15!
16! * Neither the name of the authors nor the names of its
17! contributors may be used to endorse or promote products derived
18! from this software without specific prior written permission.
19!
20! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21! "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22! LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23! FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24! COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25! INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26! BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27! LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28! CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29! LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30! ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31! POSSIBILITY OF SUCH DAMAGE.
32!
35 use num_types, only : rp
36 use coefs, only : coef_t
37 use space, only : space_t
38 use mesh, only : mesh_t
39 implicit none
40 private
41
43 type, public, extends(ax_helm_full_t) :: ax_helm_full_cpu_t
44 contains
46 procedure, pass(this) :: compute_vector => ax_helm_full_compute_vector
47 end type ax_helm_full_cpu_t
48
49contains
50
64 subroutine ax_helm_full_compute_vector(this, au, av, aw, u, v, w, coef, msh, &
65 Xh)
66 class(ax_helm_full_cpu_t), intent(in) :: this
67 type(mesh_t), intent(in) :: msh
68 type(space_t), intent(in) :: Xh
69 type(coef_t), intent(in) :: coef
70 real(kind=rp), intent(in) :: u(xh%lx, xh%ly, xh%lz, msh%nelv)
71 real(kind=rp), intent(in) :: v(xh%lx, xh%ly, xh%lz, msh%nelv)
72 real(kind=rp), intent(in) :: w(xh%lx, xh%ly, xh%lz, msh%nelv)
73 real(kind=rp), intent(inout) :: au(xh%lx, xh%ly, xh%lz, msh%nelv)
74 real(kind=rp), intent(inout) :: av(xh%lx, xh%ly, xh%lz, msh%nelv)
75 real(kind=rp), intent(inout) :: aw(xh%lx, xh%ly, xh%lz, msh%nelv)
76
77 !$omp parallel
78 select case (xh%lx)
79 case (14)
80 call ax_helm_stress_lx14(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
81 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
82 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
83 coef%dtdx, coef%dtdy, coef%dtdz, &
84 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
85 case (13)
86 call ax_helm_stress_lx13(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
87 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
88 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
89 coef%dtdx, coef%dtdy, coef%dtdz, &
90 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
91 case (12)
92 call ax_helm_stress_lx12(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
93 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
94 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
95 coef%dtdx, coef%dtdy, coef%dtdz, &
96 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
97 case (11)
98 call ax_helm_stress_lx11(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
99 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
100 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
101 coef%dtdx, coef%dtdy, coef%dtdz, &
102 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
103 case (10)
104 call ax_helm_stress_lx10(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
105 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
106 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
107 coef%dtdx, coef%dtdy, coef%dtdz, &
108 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
109 case (9)
110 call ax_helm_stress_lx9(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
111 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
112 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
113 coef%dtdx, coef%dtdy, coef%dtdz, &
114 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
115 case (8)
116 call ax_helm_stress_lx8(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
117 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
118 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
119 coef%dtdx, coef%dtdy, coef%dtdz, &
120 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
121 case (7)
122 call ax_helm_stress_lx7(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
123 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
124 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
125 coef%dtdx, coef%dtdy, coef%dtdz, &
126 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
127 case (6)
128 call ax_helm_stress_lx6(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
129 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
130 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
131 coef%dtdx, coef%dtdy, coef%dtdz, &
132 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
133 case (5)
134 call ax_helm_stress_lx5(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
135 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
136 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
137 coef%dtdx, coef%dtdy, coef%dtdz, &
138 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
139 case (4)
140 call ax_helm_stress_lx4(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
141 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
142 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
143 coef%dtdx, coef%dtdy, coef%dtdz, &
144 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
145 case (3)
146 call ax_helm_stress_lx3(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
147 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
148 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
149 coef%dtdx, coef%dtdy, coef%dtdz, &
150 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
151 case (2)
152 call ax_helm_stress_lx2(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
153 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
154 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
155 coef%dtdx, coef%dtdy, coef%dtdz, &
156 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv)
157 case default
158 call ax_helm_stress_lx(au, av, aw, u, v, w, xh%dx, xh%dy, xh%dz, &
159 xh%dxt, xh%dyt, xh%dzt, coef%h1, coef%h2, &
160 coef%drdx, coef%drdy, coef%drdz, coef%dsdx, coef%dsdy, coef%dsdz, &
161 coef%dtdx, coef%dtdy, coef%dtdz, &
162 coef%B, coef%ifh2, coef%jacinv, xh%w3, msh%nelv, xh%lx)
163 end select
164 !$omp end parallel
165
166 end subroutine ax_helm_full_compute_vector
167
168 subroutine ax_helm_stress_lx(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, Dzt, &
169 h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
170 B, ifh2, jacinv, weights3, n, lx)
171
172 integer, intent(in) :: n, lx
173 logical, intent(in) :: ifh2
174 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
175 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
176 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
177 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
178 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
179 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
180 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
181 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
182 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
183 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
184 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
185 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
186 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
187 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
188 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
189 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
190 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
191 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
192 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
193 real(kind=rp), intent(in) :: dx(lx, lx)
194 real(kind=rp), intent(in) :: dy(lx, lx)
195 real(kind=rp), intent(in) :: dz(lx, lx)
196 real(kind=rp), intent(in) :: dxt(lx, lx)
197 real(kind=rp), intent(in) :: dyt(lx, lx)
198 real(kind=rp), intent(in) :: dzt(lx, lx)
199 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
200
201 real(kind=rp) :: wur(lx, lx, lx)
202 real(kind=rp) :: wus(lx, lx, lx)
203 real(kind=rp) :: wut(lx, lx, lx)
204 real(kind=rp) :: wvr(lx, lx, lx)
205 real(kind=rp) :: wvs(lx, lx, lx)
206 real(kind=rp) :: wvt(lx, lx, lx)
207 real(kind=rp) :: wwr(lx, lx, lx)
208 real(kind=rp) :: wws(lx, lx, lx)
209 real(kind=rp) :: wwt(lx, lx, lx)
210
211 integer :: e, i, j, k, l
212 real(kind=rp) :: dj, t1, t2, t3
213 real(kind=rp) :: s11, s22, s33, s12, s13, s23
214 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
215
216 !$omp do private(e,i,j,k,l)
217 do e = 1, n
218
219 do j = 1, lx * lx
220 do i = 1, lx
221 t1 = 0.0_rp
222 t2 = 0.0_rp
223 t3 = 0.0_rp
224 do k = 1, lx
225 t1 = t1 + dx(i,k) * u(k,j,1,e)
226 t2 = t2 + dx(i,k) * v(k,j,1,e)
227 t3 = t3 + dx(i,k) * w(k,j,1,e)
228 end do
229 wur(i,j,1) = t1
230 wvr(i,j,1) = t2
231 wwr(i,j,1) = t3
232 end do
233 end do
234
235 do k = 1, lx
236 do j = 1, lx
237 do i = 1, lx
238 t1 = 0.0_rp
239 t2 = 0.0_rp
240 t3 = 0.0_rp
241 do l = 1, lx
242 t1 = t1 + dy(j,l) * u(i,l,k,e)
243 t2 = t2 + dy(j,l) * v(i,l,k,e)
244 t3 = t3 + dy(j,l) * w(i,l,k,e)
245 end do
246 wus(i,j,k) = t1
247 wvs(i,j,k) = t2
248 wws(i,j,k) = t3
249 end do
250 end do
251 end do
252
253 do k = 1, lx
254 do i = 1, lx*lx
255 t1 = 0.0_rp
256 t2 = 0.0_rp
257 t3 = 0.0_rp
258 do l = 1, lx
259 t1 = t1 + dz(k,l) * u(i,1,l,e)
260 t2 = t2 + dz(k,l) * v(i,1,l,e)
261 t3 = t3 + dz(k,l) * w(i,1,l,e)
262 end do
263 wut(i,1,k) = t1
264 wvt(i,1,k) = t2
265 wwt(i,1,k) = t3
266 end do
267 end do
268
269 do i = 1, lx*lx*lx
270
271 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
272 + wut(i,1,1) * dtdx(i,1,1,e)
273 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
274 + wut(i,1,1) * dtdy(i,1,1,e)
275 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
276 + wut(i,1,1) * dtdz(i,1,1,e)
277
278 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
279 + wvt(i,1,1) * dtdx(i,1,1,e)
280 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
281 + wvt(i,1,1) * dtdy(i,1,1,e)
282 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
283 + wvt(i,1,1) * dtdz(i,1,1,e)
284
285 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
286 + wwt(i,1,1) * dtdx(i,1,1,e)
287 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
288 + wwt(i,1,1) * dtdy(i,1,1,e)
289 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
290 + wwt(i,1,1) * dtdz(i,1,1,e)
291
292 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
293 s11 = dj*(u1 + u1)
294 s22 = dj*(v2 + v2)
295 s33 = dj*(w3 + w3)
296 s12 = dj*(u2 + v1)
297 s13 = dj*(u3 + w1)
298 s23 = dj*(v3 + w2)
299
300 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
301 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
302 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
303
304 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
305 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
306 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
307
308 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
309 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
310 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
311 end do
312
313 do j = 1, lx*lx
314 do i = 1, lx
315 t1 = 0.0_rp
316 t2 = 0.0_rp
317 t3 = 0.0_rp
318 do k = 1, lx
319 t1 = t1 + dxt(i,k) * wur(k,j,1)
320 t2 = t2 + dxt(i,k) * wvr(k,j,1)
321 t3 = t3 + dxt(i,k) * wwr(k,j,1)
322 end do
323 au(i,j,1,e) = t1
324 av(i,j,1,e) = t2
325 aw(i,j,1,e) = t3
326 end do
327 end do
328
329 do k = 1, lx
330 do j = 1, lx
331 do i = 1, lx
332 t1 = 0.0_rp
333 t2 = 0.0_rp
334 t3 = 0.0_rp
335 do l = 1, lx
336 t1 = t1 + dyt(j,l) * wus(i,l,k)
337 t2 = t2 + dyt(j,l) * wvs(i,l,k)
338 t3 = t3 + dyt(j,l) * wws(i,l,k)
339 end do
340 au(i,j,k,e) = au(i,j,k,e) + t1
341 av(i,j,k,e) = av(i,j,k,e) + t2
342 aw(i,j,k,e) = aw(i,j,k,e) + t3
343 end do
344 end do
345 end do
346
347 if (ifh2) then
348 do k = 1, lx
349 do i = 1, lx*lx
350 t1 = 0.0_rp
351 t2 = 0.0_rp
352 t3 = 0.0_rp
353 do l = 1, lx
354 t1 = t1 + dzt(k,l) * wut(i,1,l)
355 t2 = t2 + dzt(k,l) * wvt(i,1,l)
356 t3 = t3 + dzt(k,l) * wwt(i,1,l)
357 end do
358 au(i,1,k,e) = au(i,1,k,e) + t1 &
359 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
360 av(i,1,k,e) = av(i,1,k,e) + t2 &
361 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
362 aw(i,1,k,e) = aw(i,1,k,e) + t3 &
363 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
364 end do
365 end do
366 else
367 do k = 1, lx
368 do i = 1, lx*lx
369 t1 = 0.0_rp
370 t2 = 0.0_rp
371 t3 = 0.0_rp
372 do l = 1, lx
373 t1 = t1 + dzt(k,l) * wut(i,1,l)
374 t2 = t2 + dzt(k,l) * wvt(i,1,l)
375 t3 = t3 + dzt(k,l) * wwt(i,1,l)
376 end do
377 au(i,1,k,e) = au(i,1,k,e) + t1
378 av(i,1,k,e) = av(i,1,k,e) + t2
379 aw(i,1,k,e) = aw(i,1,k,e) + t3
380 end do
381 end do
382 end if
383 end do
384 !$omp end do
385 end subroutine ax_helm_stress_lx
386
387 subroutine ax_helm_stress_lx14(au, av, aw, u, v, w, Dx, Dy, Dz, &
388 Dxt, Dyt, Dzt, &
389 h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
390 B, ifh2, jacinv, weights3, n)
391 integer, parameter :: lx = 14
392 integer, intent(in) :: n
393 logical, intent(in) :: ifh2
394 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
395 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
396 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
397 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
398 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
399 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
400 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
401 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
402 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
403 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
404 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
405 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
406 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
407 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
408 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
409 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
410 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
411 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
412 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
413 real(kind=rp), intent(in) :: dx(lx, lx)
414 real(kind=rp), intent(in) :: dy(lx, lx)
415 real(kind=rp), intent(in) :: dz(lx, lx)
416 real(kind=rp), intent(in) :: dxt(lx, lx)
417 real(kind=rp), intent(in) :: dyt(lx, lx)
418 real(kind=rp), intent(in) :: dzt(lx, lx)
419 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
420
421 real(kind=rp) :: wur(lx, lx, lx)
422 real(kind=rp) :: wus(lx, lx, lx)
423 real(kind=rp) :: wut(lx, lx, lx)
424 real(kind=rp) :: wvr(lx, lx, lx)
425 real(kind=rp) :: wvs(lx, lx, lx)
426 real(kind=rp) :: wvt(lx, lx, lx)
427 real(kind=rp) :: wwr(lx, lx, lx)
428 real(kind=rp) :: wws(lx, lx, lx)
429 real(kind=rp) :: wwt(lx, lx, lx)
430
431 integer :: e, i, j, k, l
432 real(kind=rp) :: dj
433 real(kind=rp) :: s11, s22, s33, s12, s13, s23
434 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
435
436 !$omp do
437 do e = 1, n
438
439 do j = 1, lx * lx
440 do i = 1, lx
441 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
442 + dx(i,2) * u(2,j,1,e) &
443 + dx(i,3) * u(3,j,1,e) &
444 + dx(i,4) * u(4,j,1,e) &
445 + dx(i,5) * u(5,j,1,e) &
446 + dx(i,6) * u(6,j,1,e) &
447 + dx(i,7) * u(7,j,1,e) &
448 + dx(i,8) * u(8,j,1,e) &
449 + dx(i,9) * u(9,j,1,e) &
450 + dx(i,10) * u(10,j,1,e) &
451 + dx(i,11) * u(11,j,1,e) &
452 + dx(i,12) * u(12,j,1,e) &
453 + dx(i,13) * u(13,j,1,e) &
454 + dx(i,14) * u(14,j,1,e)
455
456 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
457 + dx(i,2) * v(2,j,1,e) &
458 + dx(i,3) * v(3,j,1,e) &
459 + dx(i,4) * v(4,j,1,e) &
460 + dx(i,5) * v(5,j,1,e) &
461 + dx(i,6) * v(6,j,1,e) &
462 + dx(i,7) * v(7,j,1,e) &
463 + dx(i,8) * v(8,j,1,e) &
464 + dx(i,9) * v(9,j,1,e) &
465 + dx(i,10) * v(10,j,1,e) &
466 + dx(i,11) * v(11,j,1,e) &
467 + dx(i,12) * v(12,j,1,e) &
468 + dx(i,13) * v(13,j,1,e) &
469 + dx(i,14) * v(14,j,1,e)
470
471 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
472 + dx(i,2) * w(2,j,1,e) &
473 + dx(i,3) * w(3,j,1,e) &
474 + dx(i,4) * w(4,j,1,e) &
475 + dx(i,5) * w(5,j,1,e) &
476 + dx(i,6) * w(6,j,1,e) &
477 + dx(i,7) * w(7,j,1,e) &
478 + dx(i,8) * w(8,j,1,e) &
479 + dx(i,9) * w(9,j,1,e) &
480 + dx(i,10) * w(10,j,1,e) &
481 + dx(i,11) * w(11,j,1,e) &
482 + dx(i,12) * w(12,j,1,e) &
483 + dx(i,13) * w(13,j,1,e) &
484 + dx(i,14) * w(14,j,1,e)
485 end do
486 end do
487
488 do k = 1, lx
489 do j = 1, lx
490 do i = 1, lx
491 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
492 + dy(j,2) * u(i,2,k,e) &
493 + dy(j,3) * u(i,3,k,e) &
494 + dy(j,4) * u(i,4,k,e) &
495 + dy(j,5) * u(i,5,k,e) &
496 + dy(j,6) * u(i,6,k,e) &
497 + dy(j,7) * u(i,7,k,e) &
498 + dy(j,8) * u(i,8,k,e) &
499 + dy(j,9) * u(i,9,k,e) &
500 + dy(j,10) * u(i,10,k,e) &
501 + dy(j,11) * u(i,11,k,e) &
502 + dy(j,12) * u(i,12,k,e) &
503 + dy(j,13) * u(i,13,k,e) &
504 + dy(j,14) * u(i,14,k,e)
505
506
507 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
508 + dy(j,2) * v(i,2,k,e) &
509 + dy(j,3) * v(i,3,k,e) &
510 + dy(j,4) * v(i,4,k,e) &
511 + dy(j,5) * v(i,5,k,e) &
512 + dy(j,6) * v(i,6,k,e) &
513 + dy(j,7) * v(i,7,k,e) &
514 + dy(j,8) * v(i,8,k,e) &
515 + dy(j,9) * v(i,9,k,e) &
516 + dy(j,10) * v(i,10,k,e) &
517 + dy(j,11) * v(i,11,k,e) &
518 + dy(j,12) * v(i,12,k,e) &
519 + dy(j,13) * v(i,13,k,e) &
520 + dy(j,14) * v(i,14,k,e)
521
522 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
523 + dy(j,2) * w(i,2,k,e) &
524 + dy(j,3) * w(i,3,k,e) &
525 + dy(j,4) * w(i,4,k,e) &
526 + dy(j,5) * w(i,5,k,e) &
527 + dy(j,6) * w(i,6,k,e) &
528 + dy(j,7) * w(i,7,k,e) &
529 + dy(j,8) * w(i,8,k,e) &
530 + dy(j,9) * w(i,9,k,e) &
531 + dy(j,10) * w(i,10,k,e) &
532 + dy(j,11) * w(i,11,k,e) &
533 + dy(j,12) * w(i,12,k,e) &
534 + dy(j,13) * w(i,13,k,e) &
535 + dy(j,14) * w(i,14,k,e)
536 end do
537 end do
538 end do
539
540 do k = 1, lx
541 do i = 1, lx*lx
542 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
543 + dz(k,2) * u(i,1,2,e) &
544 + dz(k,3) * u(i,1,3,e) &
545 + dz(k,4) * u(i,1,4,e) &
546 + dz(k,5) * u(i,1,5,e) &
547 + dz(k,6) * u(i,1,6,e) &
548 + dz(k,7) * u(i,1,7,e) &
549 + dz(k,8) * u(i,1,8,e) &
550 + dz(k,9) * u(i,1,9,e) &
551 + dz(k,10) * u(i,1,10,e) &
552 + dz(k,11) * u(i,1,11,e) &
553 + dz(k,12) * u(i,1,12,e) &
554 + dz(k,13) * u(i,1,13,e) &
555 + dz(k,14) * u(i,1,14,e)
556
557 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
558 + dz(k,2) * v(i,1,2,e) &
559 + dz(k,3) * v(i,1,3,e) &
560 + dz(k,4) * v(i,1,4,e) &
561 + dz(k,5) * v(i,1,5,e) &
562 + dz(k,6) * v(i,1,6,e) &
563 + dz(k,7) * v(i,1,7,e) &
564 + dz(k,8) * v(i,1,8,e) &
565 + dz(k,9) * v(i,1,9,e) &
566 + dz(k,10) * v(i,1,10,e) &
567 + dz(k,11) * v(i,1,11,e) &
568 + dz(k,12) * v(i,1,12,e) &
569 + dz(k,13) * v(i,1,13,e) &
570 + dz(k,14) * v(i,1,14,e)
571
572 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
573 + dz(k,2) * w(i,1,2,e) &
574 + dz(k,3) * w(i,1,3,e) &
575 + dz(k,4) * w(i,1,4,e) &
576 + dz(k,5) * w(i,1,5,e) &
577 + dz(k,6) * w(i,1,6,e) &
578 + dz(k,7) * w(i,1,7,e) &
579 + dz(k,8) * w(i,1,8,e) &
580 + dz(k,9) * w(i,1,9,e) &
581 + dz(k,10) * w(i,1,10,e) &
582 + dz(k,11) * w(i,1,11,e) &
583 + dz(k,12) * w(i,1,12,e) &
584 + dz(k,13) * w(i,1,13,e) &
585 + dz(k,14) * w(i,1,14,e)
586 end do
587 end do
588
589 do i = 1, lx*lx*lx
590
591 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
592 + wut(i,1,1) * dtdx(i,1,1,e)
593 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
594 + wut(i,1,1) * dtdy(i,1,1,e)
595 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
596 + wut(i,1,1) * dtdz(i,1,1,e)
597
598 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
599 + wvt(i,1,1) * dtdx(i,1,1,e)
600 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
601 + wvt(i,1,1) * dtdy(i,1,1,e)
602 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
603 + wvt(i,1,1) * dtdz(i,1,1,e)
604
605 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
606 + wwt(i,1,1) * dtdx(i,1,1,e)
607 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
608 + wwt(i,1,1) * dtdy(i,1,1,e)
609 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
610 + wwt(i,1,1) * dtdz(i,1,1,e)
611
612 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
613 s11 = dj*(u1 + u1)
614 s22 = dj*(v2 + v2)
615 s33 = dj*(w3 + w3)
616 s12 = dj*(u2 + v1)
617 s13 = dj*(u3 + w1)
618 s23 = dj*(v3 + w2)
619
620 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
621 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
622 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
623
624 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
625 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
626 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
627
628 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
629 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
630 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
631 end do
632
633 do j = 1, lx*lx
634 do i = 1, lx
635 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
636 + dxt(i,2) * wur(2,j,1) &
637 + dxt(i,3) * wur(3,j,1) &
638 + dxt(i,4) * wur(4,j,1) &
639 + dxt(i,5) * wur(5,j,1) &
640 + dxt(i,6) * wur(6,j,1) &
641 + dxt(i,7) * wur(7,j,1) &
642 + dxt(i,8) * wur(8,j,1) &
643 + dxt(i,9) * wur(9,j,1) &
644 + dxt(i,10) * wur(10,j,1) &
645 + dxt(i,11) * wur(11,j,1) &
646 + dxt(i,12) * wur(12,j,1) &
647 + dxt(i,13) * wur(13,j,1) &
648 + dxt(i,14) * wur(14,j,1)
649
650 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
651 + dxt(i,2) * wvr(2,j,1) &
652 + dxt(i,3) * wvr(3,j,1) &
653 + dxt(i,4) * wvr(4,j,1) &
654 + dxt(i,5) * wvr(5,j,1) &
655 + dxt(i,6) * wvr(6,j,1) &
656 + dxt(i,7) * wvr(7,j,1) &
657 + dxt(i,8) * wvr(8,j,1) &
658 + dxt(i,9) * wvr(9,j,1) &
659 + dxt(i,10) * wvr(10,j,1) &
660 + dxt(i,11) * wvr(11,j,1) &
661 + dxt(i,12) * wvr(12,j,1) &
662 + dxt(i,13) * wvr(13,j,1) &
663 + dxt(i,14) * wvr(14,j,1)
664
665 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
666 + dxt(i,2) * wwr(2,j,1) &
667 + dxt(i,3) * wwr(3,j,1) &
668 + dxt(i,4) * wwr(4,j,1) &
669 + dxt(i,5) * wwr(5,j,1) &
670 + dxt(i,6) * wwr(6,j,1) &
671 + dxt(i,7) * wwr(7,j,1) &
672 + dxt(i,8) * wwr(8,j,1) &
673 + dxt(i,9) * wwr(9,j,1) &
674 + dxt(i,10) * wwr(10,j,1) &
675 + dxt(i,11) * wwr(11,j,1) &
676 + dxt(i,12) * wwr(12,j,1) &
677 + dxt(i,13) * wwr(13,j,1) &
678 + dxt(i,14) * wwr(14,j,1)
679
680 end do
681 end do
682
683 do k = 1, lx
684 do j = 1, lx
685 do i = 1, lx
686 au(i,j,k,e) = au(i,j,k,e) &
687 + dyt(j,1) * wus(i,1,k) &
688 + dyt(j,2) * wus(i,2,k) &
689 + dyt(j,3) * wus(i,3,k) &
690 + dyt(j,4) * wus(i,4,k) &
691 + dyt(j,5) * wus(i,5,k) &
692 + dyt(j,6) * wus(i,6,k) &
693 + dyt(j,7) * wus(i,7,k) &
694 + dyt(j,8) * wus(i,8,k) &
695 + dyt(j,9) * wus(i,9,k) &
696 + dyt(j,10) * wus(i,10,k) &
697 + dyt(j,11) * wus(i,11,k) &
698 + dyt(j,12) * wus(i,12,k) &
699 + dyt(j,13) * wus(i,13,k) &
700 + dyt(j,14) * wus(i,14,k)
701
702 av(i,j,k,e) = av(i,j,k,e) &
703 + dyt(j,1) * wvs(i,1,k) &
704 + dyt(j,2) * wvs(i,2,k) &
705 + dyt(j,3) * wvs(i,3,k) &
706 + dyt(j,4) * wvs(i,4,k) &
707 + dyt(j,5) * wvs(i,5,k) &
708 + dyt(j,6) * wvs(i,6,k) &
709 + dyt(j,7) * wvs(i,7,k) &
710 + dyt(j,8) * wvs(i,8,k) &
711 + dyt(j,9) * wvs(i,9,k) &
712 + dyt(j,10) * wvs(i,10,k) &
713 + dyt(j,11) * wvs(i,11,k) &
714 + dyt(j,12) * wvs(i,12,k) &
715 + dyt(j,13) * wvs(i,13,k) &
716 + dyt(j,14) * wvs(i,14,k)
717
718 aw(i,j,k,e) = aw(i,j,k,e) &
719 + dyt(j,1) * wws(i,1,k) &
720 + dyt(j,2) * wws(i,2,k) &
721 + dyt(j,3) * wws(i,3,k) &
722 + dyt(j,4) * wws(i,4,k) &
723 + dyt(j,5) * wws(i,5,k) &
724 + dyt(j,6) * wws(i,6,k) &
725 + dyt(j,7) * wws(i,7,k) &
726 + dyt(j,8) * wws(i,8,k) &
727 + dyt(j,9) * wws(i,9,k) &
728 + dyt(j,10) * wws(i,10,k) &
729 + dyt(j,11) * wws(i,11,k) &
730 + dyt(j,12) * wws(i,12,k) &
731 + dyt(j,13) * wws(i,13,k) &
732 + dyt(j,14) * wws(i,14,k)
733 end do
734 end do
735 end do
736
737 if (ifh2) then
738 do k = 1, lx
739 do i = 1, lx*lx
740 au(i,1,k,e) = au(i,1,k,e) &
741 + dzt(k,1) * wut(i,1,1) &
742 + dzt(k,2) * wut(i,1,2) &
743 + dzt(k,3) * wut(i,1,3) &
744 + dzt(k,4) * wut(i,1,4) &
745 + dzt(k,5) * wut(i,1,5) &
746 + dzt(k,6) * wut(i,1,6) &
747 + dzt(k,7) * wut(i,1,7) &
748 + dzt(k,8) * wut(i,1,8) &
749 + dzt(k,9) * wut(i,1,9) &
750 + dzt(k,10) * wut(i,1,10) &
751 + dzt(k,11) * wut(i,1,11) &
752 + dzt(k,12) * wut(i,1,12) &
753 + dzt(k,13) * wut(i,1,13) &
754 + dzt(k,14) * wut(i,1,14) &
755 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
756
757 av(i,1,k,e) = av(i,1,k,e) &
758 + dzt(k,1) * wvt(i,1,1) &
759 + dzt(k,2) * wvt(i,1,2) &
760 + dzt(k,3) * wvt(i,1,3) &
761 + dzt(k,4) * wvt(i,1,4) &
762 + dzt(k,5) * wvt(i,1,5) &
763 + dzt(k,6) * wvt(i,1,6) &
764 + dzt(k,7) * wvt(i,1,7) &
765 + dzt(k,8) * wvt(i,1,8) &
766 + dzt(k,9) * wvt(i,1,9) &
767 + dzt(k,10) * wvt(i,1,10) &
768 + dzt(k,11) * wvt(i,1,11) &
769 + dzt(k,12) * wvt(i,1,12) &
770 + dzt(k,13) * wvt(i,1,13) &
771 + dzt(k,14) * wvt(i,1,14) &
772 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
773
774 aw(i,1,k,e) = aw(i,1,k,e) &
775 + dzt(k,1) * wwt(i,1,1) &
776 + dzt(k,2) * wwt(i,1,2) &
777 + dzt(k,3) * wwt(i,1,3) &
778 + dzt(k,4) * wwt(i,1,4) &
779 + dzt(k,5) * wwt(i,1,5) &
780 + dzt(k,6) * wwt(i,1,6) &
781 + dzt(k,7) * wwt(i,1,7) &
782 + dzt(k,8) * wwt(i,1,8) &
783 + dzt(k,9) * wwt(i,1,9) &
784 + dzt(k,10) * wwt(i,1,10) &
785 + dzt(k,11) * wwt(i,1,11) &
786 + dzt(k,12) * wwt(i,1,12) &
787 + dzt(k,13) * wwt(i,1,13) &
788 + dzt(k,14) * wwt(i,1,14) &
789 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
790 end do
791 end do
792 else
793 do k = 1, lx
794 do i = 1, lx*lx
795 au(i,1,k,e) = au(i,1,k,e) &
796 + dzt(k,1) * wut(i,1,1) &
797 + dzt(k,2) * wut(i,1,2) &
798 + dzt(k,3) * wut(i,1,3) &
799 + dzt(k,4) * wut(i,1,4) &
800 + dzt(k,5) * wut(i,1,5) &
801 + dzt(k,6) * wut(i,1,6) &
802 + dzt(k,7) * wut(i,1,7) &
803 + dzt(k,8) * wut(i,1,8) &
804 + dzt(k,9) * wut(i,1,9) &
805 + dzt(k,10) * wut(i,1,10) &
806 + dzt(k,11) * wut(i,1,11) &
807 + dzt(k,12) * wut(i,1,12) &
808 + dzt(k,13) * wut(i,1,13) &
809 + dzt(k,14) * wut(i,1,14)
810
811 av(i,1,k,e) = av(i,1,k,e) &
812 + dzt(k,1) * wvt(i,1,1) &
813 + dzt(k,2) * wvt(i,1,2) &
814 + dzt(k,3) * wvt(i,1,3) &
815 + dzt(k,4) * wvt(i,1,4) &
816 + dzt(k,5) * wvt(i,1,5) &
817 + dzt(k,6) * wvt(i,1,6) &
818 + dzt(k,7) * wvt(i,1,7) &
819 + dzt(k,8) * wvt(i,1,8) &
820 + dzt(k,9) * wvt(i,1,9) &
821 + dzt(k,10) * wvt(i,1,10) &
822 + dzt(k,11) * wvt(i,1,11) &
823 + dzt(k,12) * wvt(i,1,12) &
824 + dzt(k,13) * wvt(i,1,13) &
825 + dzt(k,14) * wvt(i,1,14)
826
827 aw(i,1,k,e) = aw(i,1,k,e) &
828 + dzt(k,1) * wwt(i,1,1) &
829 + dzt(k,2) * wwt(i,1,2) &
830 + dzt(k,3) * wwt(i,1,3) &
831 + dzt(k,4) * wwt(i,1,4) &
832 + dzt(k,5) * wwt(i,1,5) &
833 + dzt(k,6) * wwt(i,1,6) &
834 + dzt(k,7) * wwt(i,1,7) &
835 + dzt(k,8) * wwt(i,1,8) &
836 + dzt(k,9) * wwt(i,1,9) &
837 + dzt(k,10) * wwt(i,1,10) &
838 + dzt(k,11) * wwt(i,1,11) &
839 + dzt(k,12) * wwt(i,1,12) &
840 + dzt(k,13) * wwt(i,1,13) &
841 + dzt(k,14) * wwt(i,1,14)
842 end do
843 end do
844 end if
845
846 end do
847 !$omp end do
848 end subroutine ax_helm_stress_lx14
849
850 subroutine ax_helm_stress_lx13(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
851 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
852 B, ifh2, jacinv, weights3, n)
853 integer, parameter :: lx = 13
854 integer, intent(in) :: n
855 logical, intent(in) :: ifh2
856 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
857 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
858 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
859 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
860 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
861 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
862 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
863 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
864 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
865 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
866 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
867 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
868 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
869 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
870 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
871 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
872 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
873 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
874 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
875 real(kind=rp), intent(in) :: dx(lx, lx)
876 real(kind=rp), intent(in) :: dy(lx, lx)
877 real(kind=rp), intent(in) :: dz(lx, lx)
878 real(kind=rp), intent(in) :: dxt(lx, lx)
879 real(kind=rp), intent(in) :: dyt(lx, lx)
880 real(kind=rp), intent(in) :: dzt(lx, lx)
881 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
882
883 real(kind=rp) :: wur(lx, lx, lx)
884 real(kind=rp) :: wus(lx, lx, lx)
885 real(kind=rp) :: wut(lx, lx, lx)
886 real(kind=rp) :: wvr(lx, lx, lx)
887 real(kind=rp) :: wvs(lx, lx, lx)
888 real(kind=rp) :: wvt(lx, lx, lx)
889 real(kind=rp) :: wwr(lx, lx, lx)
890 real(kind=rp) :: wws(lx, lx, lx)
891 real(kind=rp) :: wwt(lx, lx, lx)
892
893 integer :: e, i, j, k, l
894 real(kind=rp) :: dj
895 real(kind=rp) :: s11, s22, s33, s12, s13, s23
896 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
897
898 !$omp do
899 do e = 1, n
900
901 do j = 1, lx * lx
902 do i = 1, lx
903 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
904 + dx(i,2) * u(2,j,1,e) &
905 + dx(i,3) * u(3,j,1,e) &
906 + dx(i,4) * u(4,j,1,e) &
907 + dx(i,5) * u(5,j,1,e) &
908 + dx(i,6) * u(6,j,1,e) &
909 + dx(i,7) * u(7,j,1,e) &
910 + dx(i,8) * u(8,j,1,e) &
911 + dx(i,9) * u(9,j,1,e) &
912 + dx(i,10) * u(10,j,1,e) &
913 + dx(i,11) * u(11,j,1,e) &
914 + dx(i,12) * u(12,j,1,e) &
915 + dx(i,13) * u(13,j,1,e)
916
917 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
918 + dx(i,2) * v(2,j,1,e) &
919 + dx(i,3) * v(3,j,1,e) &
920 + dx(i,4) * v(4,j,1,e) &
921 + dx(i,5) * v(5,j,1,e) &
922 + dx(i,6) * v(6,j,1,e) &
923 + dx(i,7) * v(7,j,1,e) &
924 + dx(i,8) * v(8,j,1,e) &
925 + dx(i,9) * v(9,j,1,e) &
926 + dx(i,10) * v(10,j,1,e) &
927 + dx(i,11) * v(11,j,1,e) &
928 + dx(i,12) * v(12,j,1,e) &
929 + dx(i,13) * v(13,j,1,e)
930
931 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
932 + dx(i,2) * w(2,j,1,e) &
933 + dx(i,3) * w(3,j,1,e) &
934 + dx(i,4) * w(4,j,1,e) &
935 + dx(i,5) * w(5,j,1,e) &
936 + dx(i,6) * w(6,j,1,e) &
937 + dx(i,7) * w(7,j,1,e) &
938 + dx(i,8) * w(8,j,1,e) &
939 + dx(i,9) * w(9,j,1,e) &
940 + dx(i,10) * w(10,j,1,e) &
941 + dx(i,11) * w(11,j,1,e) &
942 + dx(i,12) * w(12,j,1,e) &
943 + dx(i,13) * w(13,j,1,e)
944 end do
945 end do
946
947 do k = 1, lx
948 do j = 1, lx
949 do i = 1, lx
950 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
951 + dy(j,2) * u(i,2,k,e) &
952 + dy(j,3) * u(i,3,k,e) &
953 + dy(j,4) * u(i,4,k,e) &
954 + dy(j,5) * u(i,5,k,e) &
955 + dy(j,6) * u(i,6,k,e) &
956 + dy(j,7) * u(i,7,k,e) &
957 + dy(j,8) * u(i,8,k,e) &
958 + dy(j,9) * u(i,9,k,e) &
959 + dy(j,10) * u(i,10,k,e) &
960 + dy(j,11) * u(i,11,k,e) &
961 + dy(j,12) * u(i,12,k,e) &
962 + dy(j,13) * u(i,13,k,e)
963
964
965 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
966 + dy(j,2) * v(i,2,k,e) &
967 + dy(j,3) * v(i,3,k,e) &
968 + dy(j,4) * v(i,4,k,e) &
969 + dy(j,5) * v(i,5,k,e) &
970 + dy(j,6) * v(i,6,k,e) &
971 + dy(j,7) * v(i,7,k,e) &
972 + dy(j,8) * v(i,8,k,e) &
973 + dy(j,9) * v(i,9,k,e) &
974 + dy(j,10) * v(i,10,k,e) &
975 + dy(j,11) * v(i,11,k,e) &
976 + dy(j,12) * v(i,12,k,e) &
977 + dy(j,13) * v(i,13,k,e)
978
979 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
980 + dy(j,2) * w(i,2,k,e) &
981 + dy(j,3) * w(i,3,k,e) &
982 + dy(j,4) * w(i,4,k,e) &
983 + dy(j,5) * w(i,5,k,e) &
984 + dy(j,6) * w(i,6,k,e) &
985 + dy(j,7) * w(i,7,k,e) &
986 + dy(j,8) * w(i,8,k,e) &
987 + dy(j,9) * w(i,9,k,e) &
988 + dy(j,10) * w(i,10,k,e) &
989 + dy(j,11) * w(i,11,k,e) &
990 + dy(j,12) * w(i,12,k,e) &
991 + dy(j,13) * w(i,13,k,e)
992 end do
993 end do
994 end do
995
996 do k = 1, lx
997 do i = 1, lx*lx
998 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
999 + dz(k,2) * u(i,1,2,e) &
1000 + dz(k,3) * u(i,1,3,e) &
1001 + dz(k,4) * u(i,1,4,e) &
1002 + dz(k,5) * u(i,1,5,e) &
1003 + dz(k,6) * u(i,1,6,e) &
1004 + dz(k,7) * u(i,1,7,e) &
1005 + dz(k,8) * u(i,1,8,e) &
1006 + dz(k,9) * u(i,1,9,e) &
1007 + dz(k,10) * u(i,1,10,e) &
1008 + dz(k,11) * u(i,1,11,e) &
1009 + dz(k,12) * u(i,1,12,e) &
1010 + dz(k,13) * u(i,1,13,e)
1011
1012 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
1013 + dz(k,2) * v(i,1,2,e) &
1014 + dz(k,3) * v(i,1,3,e) &
1015 + dz(k,4) * v(i,1,4,e) &
1016 + dz(k,5) * v(i,1,5,e) &
1017 + dz(k,6) * v(i,1,6,e) &
1018 + dz(k,7) * v(i,1,7,e) &
1019 + dz(k,8) * v(i,1,8,e) &
1020 + dz(k,9) * v(i,1,9,e) &
1021 + dz(k,10) * v(i,1,10,e) &
1022 + dz(k,11) * v(i,1,11,e) &
1023 + dz(k,12) * v(i,1,12,e) &
1024 + dz(k,13) * v(i,1,13,e)
1025
1026 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
1027 + dz(k,2) * w(i,1,2,e) &
1028 + dz(k,3) * w(i,1,3,e) &
1029 + dz(k,4) * w(i,1,4,e) &
1030 + dz(k,5) * w(i,1,5,e) &
1031 + dz(k,6) * w(i,1,6,e) &
1032 + dz(k,7) * w(i,1,7,e) &
1033 + dz(k,8) * w(i,1,8,e) &
1034 + dz(k,9) * w(i,1,9,e) &
1035 + dz(k,10) * w(i,1,10,e) &
1036 + dz(k,11) * w(i,1,11,e) &
1037 + dz(k,12) * w(i,1,12,e) &
1038 + dz(k,13) * w(i,1,13,e)
1039 end do
1040 end do
1041
1042 do i = 1, lx*lx*lx
1043
1044 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
1045 + wut(i,1,1) * dtdx(i,1,1,e)
1046 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
1047 + wut(i,1,1) * dtdy(i,1,1,e)
1048 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
1049 + wut(i,1,1) * dtdz(i,1,1,e)
1050
1051 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
1052 + wvt(i,1,1) * dtdx(i,1,1,e)
1053 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
1054 + wvt(i,1,1) * dtdy(i,1,1,e)
1055 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
1056 + wvt(i,1,1) * dtdz(i,1,1,e)
1057
1058 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
1059 + wwt(i,1,1) * dtdx(i,1,1,e)
1060 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
1061 + wwt(i,1,1) * dtdy(i,1,1,e)
1062 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
1063 + wwt(i,1,1) * dtdz(i,1,1,e)
1064
1065 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
1066 s11 = dj*(u1 + u1)
1067 s22 = dj*(v2 + v2)
1068 s33 = dj*(w3 + w3)
1069 s12 = dj*(u2 + v1)
1070 s13 = dj*(u3 + w1)
1071 s23 = dj*(v3 + w2)
1072
1073 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
1074 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
1075 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
1076
1077 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
1078 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
1079 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
1080
1081 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
1082 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
1083 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
1084 end do
1085
1086 do j = 1, lx*lx
1087 do i = 1, lx
1088 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
1089 + dxt(i,2) * wur(2,j,1) &
1090 + dxt(i,3) * wur(3,j,1) &
1091 + dxt(i,4) * wur(4,j,1) &
1092 + dxt(i,5) * wur(5,j,1) &
1093 + dxt(i,6) * wur(6,j,1) &
1094 + dxt(i,7) * wur(7,j,1) &
1095 + dxt(i,8) * wur(8,j,1) &
1096 + dxt(i,9) * wur(9,j,1) &
1097 + dxt(i,10) * wur(10,j,1) &
1098 + dxt(i,11) * wur(11,j,1) &
1099 + dxt(i,12) * wur(12,j,1) &
1100 + dxt(i,13) * wur(13,j,1)
1101
1102 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
1103 + dxt(i,2) * wvr(2,j,1) &
1104 + dxt(i,3) * wvr(3,j,1) &
1105 + dxt(i,4) * wvr(4,j,1) &
1106 + dxt(i,5) * wvr(5,j,1) &
1107 + dxt(i,6) * wvr(6,j,1) &
1108 + dxt(i,7) * wvr(7,j,1) &
1109 + dxt(i,8) * wvr(8,j,1) &
1110 + dxt(i,9) * wvr(9,j,1) &
1111 + dxt(i,10) * wvr(10,j,1) &
1112 + dxt(i,11) * wvr(11,j,1) &
1113 + dxt(i,12) * wvr(12,j,1) &
1114 + dxt(i,13) * wvr(13,j,1)
1115
1116 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
1117 + dxt(i,2) * wwr(2,j,1) &
1118 + dxt(i,3) * wwr(3,j,1) &
1119 + dxt(i,4) * wwr(4,j,1) &
1120 + dxt(i,5) * wwr(5,j,1) &
1121 + dxt(i,6) * wwr(6,j,1) &
1122 + dxt(i,7) * wwr(7,j,1) &
1123 + dxt(i,8) * wwr(8,j,1) &
1124 + dxt(i,9) * wwr(9,j,1) &
1125 + dxt(i,10) * wwr(10,j,1) &
1126 + dxt(i,11) * wwr(11,j,1) &
1127 + dxt(i,12) * wwr(12,j,1) &
1128 + dxt(i,13) * wwr(13,j,1)
1129 end do
1130 end do
1131
1132 do k = 1, lx
1133 do j = 1, lx
1134 do i = 1, lx
1135 au(i,j,k,e) = au(i,j,k,e) &
1136 + dyt(j,1) * wus(i,1,k) &
1137 + dyt(j,2) * wus(i,2,k) &
1138 + dyt(j,3) * wus(i,3,k) &
1139 + dyt(j,4) * wus(i,4,k) &
1140 + dyt(j,5) * wus(i,5,k) &
1141 + dyt(j,6) * wus(i,6,k) &
1142 + dyt(j,7) * wus(i,7,k) &
1143 + dyt(j,8) * wus(i,8,k) &
1144 + dyt(j,9) * wus(i,9,k) &
1145 + dyt(j,10) * wus(i,10,k) &
1146 + dyt(j,11) * wus(i,11,k) &
1147 + dyt(j,12) * wus(i,12,k) &
1148 + dyt(j,13) * wus(i,13,k)
1149
1150 av(i,j,k,e) = av(i,j,k,e) &
1151 + dyt(j,1) * wvs(i,1,k) &
1152 + dyt(j,2) * wvs(i,2,k) &
1153 + dyt(j,3) * wvs(i,3,k) &
1154 + dyt(j,4) * wvs(i,4,k) &
1155 + dyt(j,5) * wvs(i,5,k) &
1156 + dyt(j,6) * wvs(i,6,k) &
1157 + dyt(j,7) * wvs(i,7,k) &
1158 + dyt(j,8) * wvs(i,8,k) &
1159 + dyt(j,9) * wvs(i,9,k) &
1160 + dyt(j,10) * wvs(i,10,k) &
1161 + dyt(j,11) * wvs(i,11,k) &
1162 + dyt(j,12) * wvs(i,12,k) &
1163 + dyt(j,13) * wvs(i,13,k)
1164
1165 aw(i,j,k,e) = aw(i,j,k,e) &
1166 + dyt(j,1) * wws(i,1,k) &
1167 + dyt(j,2) * wws(i,2,k) &
1168 + dyt(j,3) * wws(i,3,k) &
1169 + dyt(j,4) * wws(i,4,k) &
1170 + dyt(j,5) * wws(i,5,k) &
1171 + dyt(j,6) * wws(i,6,k) &
1172 + dyt(j,7) * wws(i,7,k) &
1173 + dyt(j,8) * wws(i,8,k) &
1174 + dyt(j,9) * wws(i,9,k) &
1175 + dyt(j,10) * wws(i,10,k) &
1176 + dyt(j,11) * wws(i,11,k) &
1177 + dyt(j,12) * wws(i,12,k) &
1178 + dyt(j,13) * wws(i,13,k)
1179 end do
1180 end do
1181 end do
1182
1183 if (ifh2) then
1184 do k = 1, lx
1185 do i = 1, lx*lx
1186 au(i,1,k,e) = au(i,1,k,e) &
1187 + dzt(k,1) * wut(i,1,1) &
1188 + dzt(k,2) * wut(i,1,2) &
1189 + dzt(k,3) * wut(i,1,3) &
1190 + dzt(k,4) * wut(i,1,4) &
1191 + dzt(k,5) * wut(i,1,5) &
1192 + dzt(k,6) * wut(i,1,6) &
1193 + dzt(k,7) * wut(i,1,7) &
1194 + dzt(k,8) * wut(i,1,8) &
1195 + dzt(k,9) * wut(i,1,9) &
1196 + dzt(k,10) * wut(i,1,10) &
1197 + dzt(k,11) * wut(i,1,11) &
1198 + dzt(k,12) * wut(i,1,12) &
1199 + dzt(k,13) * wut(i,1,13) &
1200 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
1201
1202 av(i,1,k,e) = av(i,1,k,e) &
1203 + dzt(k,1) * wvt(i,1,1) &
1204 + dzt(k,2) * wvt(i,1,2) &
1205 + dzt(k,3) * wvt(i,1,3) &
1206 + dzt(k,4) * wvt(i,1,4) &
1207 + dzt(k,5) * wvt(i,1,5) &
1208 + dzt(k,6) * wvt(i,1,6) &
1209 + dzt(k,7) * wvt(i,1,7) &
1210 + dzt(k,8) * wvt(i,1,8) &
1211 + dzt(k,9) * wvt(i,1,9) &
1212 + dzt(k,10) * wvt(i,1,10) &
1213 + dzt(k,11) * wvt(i,1,11) &
1214 + dzt(k,12) * wvt(i,1,12) &
1215 + dzt(k,13) * wvt(i,1,13) &
1216 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
1217
1218 aw(i,1,k,e) = aw(i,1,k,e) &
1219 + dzt(k,1) * wwt(i,1,1) &
1220 + dzt(k,2) * wwt(i,1,2) &
1221 + dzt(k,3) * wwt(i,1,3) &
1222 + dzt(k,4) * wwt(i,1,4) &
1223 + dzt(k,5) * wwt(i,1,5) &
1224 + dzt(k,6) * wwt(i,1,6) &
1225 + dzt(k,7) * wwt(i,1,7) &
1226 + dzt(k,8) * wwt(i,1,8) &
1227 + dzt(k,9) * wwt(i,1,9) &
1228 + dzt(k,10) * wwt(i,1,10) &
1229 + dzt(k,11) * wwt(i,1,11) &
1230 + dzt(k,12) * wwt(i,1,12) &
1231 + dzt(k,13) * wwt(i,1,13) &
1232 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
1233 end do
1234 end do
1235 else
1236 do k = 1, lx
1237 do i = 1, lx*lx
1238 au(i,1,k,e) = au(i,1,k,e) &
1239 + dzt(k,1) * wut(i,1,1) &
1240 + dzt(k,2) * wut(i,1,2) &
1241 + dzt(k,3) * wut(i,1,3) &
1242 + dzt(k,4) * wut(i,1,4) &
1243 + dzt(k,5) * wut(i,1,5) &
1244 + dzt(k,6) * wut(i,1,6) &
1245 + dzt(k,7) * wut(i,1,7) &
1246 + dzt(k,8) * wut(i,1,8) &
1247 + dzt(k,9) * wut(i,1,9) &
1248 + dzt(k,10) * wut(i,1,10) &
1249 + dzt(k,11) * wut(i,1,11) &
1250 + dzt(k,12) * wut(i,1,12) &
1251 + dzt(k,13) * wut(i,1,13)
1252
1253 av(i,1,k,e) = av(i,1,k,e) &
1254 + dzt(k,1) * wvt(i,1,1) &
1255 + dzt(k,2) * wvt(i,1,2) &
1256 + dzt(k,3) * wvt(i,1,3) &
1257 + dzt(k,4) * wvt(i,1,4) &
1258 + dzt(k,5) * wvt(i,1,5) &
1259 + dzt(k,6) * wvt(i,1,6) &
1260 + dzt(k,7) * wvt(i,1,7) &
1261 + dzt(k,8) * wvt(i,1,8) &
1262 + dzt(k,9) * wvt(i,1,9) &
1263 + dzt(k,10) * wvt(i,1,10) &
1264 + dzt(k,11) * wvt(i,1,11) &
1265 + dzt(k,12) * wvt(i,1,12) &
1266 + dzt(k,13) * wvt(i,1,13)
1267
1268 aw(i,1,k,e) = aw(i,1,k,e) &
1269 + dzt(k,1) * wwt(i,1,1) &
1270 + dzt(k,2) * wwt(i,1,2) &
1271 + dzt(k,3) * wwt(i,1,3) &
1272 + dzt(k,4) * wwt(i,1,4) &
1273 + dzt(k,5) * wwt(i,1,5) &
1274 + dzt(k,6) * wwt(i,1,6) &
1275 + dzt(k,7) * wwt(i,1,7) &
1276 + dzt(k,8) * wwt(i,1,8) &
1277 + dzt(k,9) * wwt(i,1,9) &
1278 + dzt(k,10) * wwt(i,1,10) &
1279 + dzt(k,11) * wwt(i,1,11) &
1280 + dzt(k,12) * wwt(i,1,12) &
1281 + dzt(k,13) * wwt(i,1,13)
1282 end do
1283 end do
1284 end if
1285
1286 end do
1287 !$omp end do
1288 end subroutine ax_helm_stress_lx13
1289
1290 subroutine ax_helm_stress_lx12(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
1291 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
1292 B, ifh2, jacinv, weights3, n)
1293 integer, parameter :: lx = 12
1294 integer, intent(in) :: n
1295 logical, intent(in) :: ifh2
1296 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
1297 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
1298 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
1299 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
1300 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
1301 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
1302 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
1303 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
1304 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
1305 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
1306 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
1307 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
1308 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
1309 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
1310 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
1311 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
1312 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
1313 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
1314 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
1315 real(kind=rp), intent(in) :: dx(lx, lx)
1316 real(kind=rp), intent(in) :: dy(lx, lx)
1317 real(kind=rp), intent(in) :: dz(lx, lx)
1318 real(kind=rp), intent(in) :: dxt(lx, lx)
1319 real(kind=rp), intent(in) :: dyt(lx, lx)
1320 real(kind=rp), intent(in) :: dzt(lx, lx)
1321 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
1322
1323 real(kind=rp) :: wur(lx, lx, lx)
1324 real(kind=rp) :: wus(lx, lx, lx)
1325 real(kind=rp) :: wut(lx, lx, lx)
1326 real(kind=rp) :: wvr(lx, lx, lx)
1327 real(kind=rp) :: wvs(lx, lx, lx)
1328 real(kind=rp) :: wvt(lx, lx, lx)
1329 real(kind=rp) :: wwr(lx, lx, lx)
1330 real(kind=rp) :: wws(lx, lx, lx)
1331 real(kind=rp) :: wwt(lx, lx, lx)
1332
1333 integer :: e, i, j, k, l
1334 real(kind=rp) :: dj
1335 real(kind=rp) :: s11, s22, s33, s12, s13, s23
1336 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
1337
1338 !$omp do
1339 do e = 1, n
1340
1341 do j = 1, lx * lx
1342 do i = 1, lx
1343 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
1344 + dx(i,2) * u(2,j,1,e) &
1345 + dx(i,3) * u(3,j,1,e) &
1346 + dx(i,4) * u(4,j,1,e) &
1347 + dx(i,5) * u(5,j,1,e) &
1348 + dx(i,6) * u(6,j,1,e) &
1349 + dx(i,7) * u(7,j,1,e) &
1350 + dx(i,8) * u(8,j,1,e) &
1351 + dx(i,9) * u(9,j,1,e) &
1352 + dx(i,10) * u(10,j,1,e) &
1353 + dx(i,11) * u(11,j,1,e) &
1354 + dx(i,12) * u(12,j,1,e)
1355
1356 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
1357 + dx(i,2) * v(2,j,1,e) &
1358 + dx(i,3) * v(3,j,1,e) &
1359 + dx(i,4) * v(4,j,1,e) &
1360 + dx(i,5) * v(5,j,1,e) &
1361 + dx(i,6) * v(6,j,1,e) &
1362 + dx(i,7) * v(7,j,1,e) &
1363 + dx(i,8) * v(8,j,1,e) &
1364 + dx(i,9) * v(9,j,1,e) &
1365 + dx(i,10) * v(10,j,1,e) &
1366 + dx(i,11) * v(11,j,1,e) &
1367 + dx(i,12) * v(12,j,1,e)
1368
1369 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
1370 + dx(i,2) * w(2,j,1,e) &
1371 + dx(i,3) * w(3,j,1,e) &
1372 + dx(i,4) * w(4,j,1,e) &
1373 + dx(i,5) * w(5,j,1,e) &
1374 + dx(i,6) * w(6,j,1,e) &
1375 + dx(i,7) * w(7,j,1,e) &
1376 + dx(i,8) * w(8,j,1,e) &
1377 + dx(i,9) * w(9,j,1,e) &
1378 + dx(i,10) * w(10,j,1,e) &
1379 + dx(i,11) * w(11,j,1,e) &
1380 + dx(i,12) * w(12,j,1,e)
1381 end do
1382 end do
1383
1384 do k = 1, lx
1385 do j = 1, lx
1386 do i = 1, lx
1387 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
1388 + dy(j,2) * u(i,2,k,e) &
1389 + dy(j,3) * u(i,3,k,e) &
1390 + dy(j,4) * u(i,4,k,e) &
1391 + dy(j,5) * u(i,5,k,e) &
1392 + dy(j,6) * u(i,6,k,e) &
1393 + dy(j,7) * u(i,7,k,e) &
1394 + dy(j,8) * u(i,8,k,e) &
1395 + dy(j,9) * u(i,9,k,e) &
1396 + dy(j,10) * u(i,10,k,e) &
1397 + dy(j,11) * u(i,11,k,e) &
1398 + dy(j,12) * u(i,12,k,e)
1399
1400
1401 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
1402 + dy(j,2) * v(i,2,k,e) &
1403 + dy(j,3) * v(i,3,k,e) &
1404 + dy(j,4) * v(i,4,k,e) &
1405 + dy(j,5) * v(i,5,k,e) &
1406 + dy(j,6) * v(i,6,k,e) &
1407 + dy(j,7) * v(i,7,k,e) &
1408 + dy(j,8) * v(i,8,k,e) &
1409 + dy(j,9) * v(i,9,k,e) &
1410 + dy(j,10) * v(i,10,k,e) &
1411 + dy(j,11) * v(i,11,k,e) &
1412 + dy(j,12) * v(i,12,k,e)
1413
1414 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
1415 + dy(j,2) * w(i,2,k,e) &
1416 + dy(j,3) * w(i,3,k,e) &
1417 + dy(j,4) * w(i,4,k,e) &
1418 + dy(j,5) * w(i,5,k,e) &
1419 + dy(j,6) * w(i,6,k,e) &
1420 + dy(j,7) * w(i,7,k,e) &
1421 + dy(j,8) * w(i,8,k,e) &
1422 + dy(j,9) * w(i,9,k,e) &
1423 + dy(j,10) * w(i,10,k,e) &
1424 + dy(j,11) * w(i,11,k,e) &
1425 + dy(j,12) * w(i,12,k,e)
1426 end do
1427 end do
1428 end do
1429
1430 do k = 1, lx
1431 do i = 1, lx*lx
1432 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
1433 + dz(k,2) * u(i,1,2,e) &
1434 + dz(k,3) * u(i,1,3,e) &
1435 + dz(k,4) * u(i,1,4,e) &
1436 + dz(k,5) * u(i,1,5,e) &
1437 + dz(k,6) * u(i,1,6,e) &
1438 + dz(k,7) * u(i,1,7,e) &
1439 + dz(k,8) * u(i,1,8,e) &
1440 + dz(k,9) * u(i,1,9,e) &
1441 + dz(k,10) * u(i,1,10,e) &
1442 + dz(k,11) * u(i,1,11,e) &
1443 + dz(k,12) * u(i,1,12,e)
1444
1445 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
1446 + dz(k,2) * v(i,1,2,e) &
1447 + dz(k,3) * v(i,1,3,e) &
1448 + dz(k,4) * v(i,1,4,e) &
1449 + dz(k,5) * v(i,1,5,e) &
1450 + dz(k,6) * v(i,1,6,e) &
1451 + dz(k,7) * v(i,1,7,e) &
1452 + dz(k,8) * v(i,1,8,e) &
1453 + dz(k,9) * v(i,1,9,e) &
1454 + dz(k,10) * v(i,1,10,e) &
1455 + dz(k,11) * v(i,1,11,e) &
1456 + dz(k,12) * v(i,1,12,e)
1457
1458 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
1459 + dz(k,2) * w(i,1,2,e) &
1460 + dz(k,3) * w(i,1,3,e) &
1461 + dz(k,4) * w(i,1,4,e) &
1462 + dz(k,5) * w(i,1,5,e) &
1463 + dz(k,6) * w(i,1,6,e) &
1464 + dz(k,7) * w(i,1,7,e) &
1465 + dz(k,8) * w(i,1,8,e) &
1466 + dz(k,9) * w(i,1,9,e) &
1467 + dz(k,10) * w(i,1,10,e) &
1468 + dz(k,11) * w(i,1,11,e) &
1469 + dz(k,12) * w(i,1,12,e)
1470 end do
1471 end do
1472
1473 do i = 1, lx*lx*lx
1474
1475 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
1476 + wut(i,1,1) * dtdx(i,1,1,e)
1477 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
1478 + wut(i,1,1) * dtdy(i,1,1,e)
1479 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
1480 + wut(i,1,1) * dtdz(i,1,1,e)
1481
1482 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
1483 + wvt(i,1,1) * dtdx(i,1,1,e)
1484 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
1485 + wvt(i,1,1) * dtdy(i,1,1,e)
1486 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
1487 + wvt(i,1,1) * dtdz(i,1,1,e)
1488
1489 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
1490 + wwt(i,1,1) * dtdx(i,1,1,e)
1491 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
1492 + wwt(i,1,1) * dtdy(i,1,1,e)
1493 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
1494 + wwt(i,1,1) * dtdz(i,1,1,e)
1495
1496 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
1497 s11 = dj*(u1 + u1)
1498 s22 = dj*(v2 + v2)
1499 s33 = dj*(w3 + w3)
1500 s12 = dj*(u2 + v1)
1501 s13 = dj*(u3 + w1)
1502 s23 = dj*(v3 + w2)
1503
1504 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
1505 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
1506 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
1507
1508 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
1509 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
1510 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
1511
1512 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
1513 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
1514 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
1515 end do
1516
1517 do j = 1, lx*lx
1518 do i = 1, lx
1519 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
1520 + dxt(i,2) * wur(2,j,1) &
1521 + dxt(i,3) * wur(3,j,1) &
1522 + dxt(i,4) * wur(4,j,1) &
1523 + dxt(i,5) * wur(5,j,1) &
1524 + dxt(i,6) * wur(6,j,1) &
1525 + dxt(i,7) * wur(7,j,1) &
1526 + dxt(i,8) * wur(8,j,1) &
1527 + dxt(i,9) * wur(9,j,1) &
1528 + dxt(i,10) * wur(10,j,1) &
1529 + dxt(i,11) * wur(11,j,1) &
1530 + dxt(i,12) * wur(12,j,1)
1531
1532 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
1533 + dxt(i,2) * wvr(2,j,1) &
1534 + dxt(i,3) * wvr(3,j,1) &
1535 + dxt(i,4) * wvr(4,j,1) &
1536 + dxt(i,5) * wvr(5,j,1) &
1537 + dxt(i,6) * wvr(6,j,1) &
1538 + dxt(i,7) * wvr(7,j,1) &
1539 + dxt(i,8) * wvr(8,j,1) &
1540 + dxt(i,9) * wvr(9,j,1) &
1541 + dxt(i,10) * wvr(10,j,1) &
1542 + dxt(i,11) * wvr(11,j,1) &
1543 + dxt(i,12) * wvr(12,j,1)
1544
1545 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
1546 + dxt(i,2) * wwr(2,j,1) &
1547 + dxt(i,3) * wwr(3,j,1) &
1548 + dxt(i,4) * wwr(4,j,1) &
1549 + dxt(i,5) * wwr(5,j,1) &
1550 + dxt(i,6) * wwr(6,j,1) &
1551 + dxt(i,7) * wwr(7,j,1) &
1552 + dxt(i,8) * wwr(8,j,1) &
1553 + dxt(i,9) * wwr(9,j,1) &
1554 + dxt(i,10) * wwr(10,j,1) &
1555 + dxt(i,11) * wwr(11,j,1) &
1556 + dxt(i,12) * wwr(12,j,1)
1557 end do
1558 end do
1559
1560 do k = 1, lx
1561 do j = 1, lx
1562 do i = 1, lx
1563 au(i,j,k,e) = au(i,j,k,e) &
1564 + dyt(j,1) * wus(i,1,k) &
1565 + dyt(j,2) * wus(i,2,k) &
1566 + dyt(j,3) * wus(i,3,k) &
1567 + dyt(j,4) * wus(i,4,k) &
1568 + dyt(j,5) * wus(i,5,k) &
1569 + dyt(j,6) * wus(i,6,k) &
1570 + dyt(j,7) * wus(i,7,k) &
1571 + dyt(j,8) * wus(i,8,k) &
1572 + dyt(j,9) * wus(i,9,k) &
1573 + dyt(j,10) * wus(i,10,k) &
1574 + dyt(j,11) * wus(i,11,k) &
1575 + dyt(j,12) * wus(i,12,k)
1576
1577 av(i,j,k,e) = av(i,j,k,e) &
1578 + dyt(j,1) * wvs(i,1,k) &
1579 + dyt(j,2) * wvs(i,2,k) &
1580 + dyt(j,3) * wvs(i,3,k) &
1581 + dyt(j,4) * wvs(i,4,k) &
1582 + dyt(j,5) * wvs(i,5,k) &
1583 + dyt(j,6) * wvs(i,6,k) &
1584 + dyt(j,7) * wvs(i,7,k) &
1585 + dyt(j,8) * wvs(i,8,k) &
1586 + dyt(j,9) * wvs(i,9,k) &
1587 + dyt(j,10) * wvs(i,10,k) &
1588 + dyt(j,11) * wvs(i,11,k) &
1589 + dyt(j,12) * wvs(i,12,k)
1590
1591 aw(i,j,k,e) = aw(i,j,k,e) &
1592 + dyt(j,1) * wws(i,1,k) &
1593 + dyt(j,2) * wws(i,2,k) &
1594 + dyt(j,3) * wws(i,3,k) &
1595 + dyt(j,4) * wws(i,4,k) &
1596 + dyt(j,5) * wws(i,5,k) &
1597 + dyt(j,6) * wws(i,6,k) &
1598 + dyt(j,7) * wws(i,7,k) &
1599 + dyt(j,8) * wws(i,8,k) &
1600 + dyt(j,9) * wws(i,9,k) &
1601 + dyt(j,10) * wws(i,10,k) &
1602 + dyt(j,11) * wws(i,11,k) &
1603 + dyt(j,12) * wws(i,12,k)
1604 end do
1605 end do
1606 end do
1607
1608 if (ifh2) then
1609 do k = 1, lx
1610 do i = 1, lx*lx
1611 au(i,1,k,e) = au(i,1,k,e) &
1612 + dzt(k,1) * wut(i,1,1) &
1613 + dzt(k,2) * wut(i,1,2) &
1614 + dzt(k,3) * wut(i,1,3) &
1615 + dzt(k,4) * wut(i,1,4) &
1616 + dzt(k,5) * wut(i,1,5) &
1617 + dzt(k,6) * wut(i,1,6) &
1618 + dzt(k,7) * wut(i,1,7) &
1619 + dzt(k,8) * wut(i,1,8) &
1620 + dzt(k,9) * wut(i,1,9) &
1621 + dzt(k,10) * wut(i,1,10) &
1622 + dzt(k,11) * wut(i,1,11) &
1623 + dzt(k,12) * wut(i,1,12) &
1624 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
1625
1626 av(i,1,k,e) = av(i,1,k,e) &
1627 + dzt(k,1) * wvt(i,1,1) &
1628 + dzt(k,2) * wvt(i,1,2) &
1629 + dzt(k,3) * wvt(i,1,3) &
1630 + dzt(k,4) * wvt(i,1,4) &
1631 + dzt(k,5) * wvt(i,1,5) &
1632 + dzt(k,6) * wvt(i,1,6) &
1633 + dzt(k,7) * wvt(i,1,7) &
1634 + dzt(k,8) * wvt(i,1,8) &
1635 + dzt(k,9) * wvt(i,1,9) &
1636 + dzt(k,10) * wvt(i,1,10) &
1637 + dzt(k,11) * wvt(i,1,11) &
1638 + dzt(k,12) * wvt(i,1,12) &
1639 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
1640
1641 aw(i,1,k,e) = aw(i,1,k,e) &
1642 + dzt(k,1) * wwt(i,1,1) &
1643 + dzt(k,2) * wwt(i,1,2) &
1644 + dzt(k,3) * wwt(i,1,3) &
1645 + dzt(k,4) * wwt(i,1,4) &
1646 + dzt(k,5) * wwt(i,1,5) &
1647 + dzt(k,6) * wwt(i,1,6) &
1648 + dzt(k,7) * wwt(i,1,7) &
1649 + dzt(k,8) * wwt(i,1,8) &
1650 + dzt(k,9) * wwt(i,1,9) &
1651 + dzt(k,10) * wwt(i,1,10) &
1652 + dzt(k,11) * wwt(i,1,11) &
1653 + dzt(k,12) * wwt(i,1,12) &
1654 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
1655 end do
1656 end do
1657 else
1658 do k = 1, lx
1659 do i = 1, lx*lx
1660 au(i,1,k,e) = au(i,1,k,e) &
1661 + dzt(k,1) * wut(i,1,1) &
1662 + dzt(k,2) * wut(i,1,2) &
1663 + dzt(k,3) * wut(i,1,3) &
1664 + dzt(k,4) * wut(i,1,4) &
1665 + dzt(k,5) * wut(i,1,5) &
1666 + dzt(k,6) * wut(i,1,6) &
1667 + dzt(k,7) * wut(i,1,7) &
1668 + dzt(k,8) * wut(i,1,8) &
1669 + dzt(k,9) * wut(i,1,9) &
1670 + dzt(k,10) * wut(i,1,10) &
1671 + dzt(k,11) * wut(i,1,11) &
1672 + dzt(k,12) * wut(i,1,12)
1673
1674 av(i,1,k,e) = av(i,1,k,e) &
1675 + dzt(k,1) * wvt(i,1,1) &
1676 + dzt(k,2) * wvt(i,1,2) &
1677 + dzt(k,3) * wvt(i,1,3) &
1678 + dzt(k,4) * wvt(i,1,4) &
1679 + dzt(k,5) * wvt(i,1,5) &
1680 + dzt(k,6) * wvt(i,1,6) &
1681 + dzt(k,7) * wvt(i,1,7) &
1682 + dzt(k,8) * wvt(i,1,8) &
1683 + dzt(k,9) * wvt(i,1,9) &
1684 + dzt(k,10) * wvt(i,1,10) &
1685 + dzt(k,11) * wvt(i,1,11) &
1686 + dzt(k,12) * wvt(i,1,12)
1687
1688 aw(i,1,k,e) = aw(i,1,k,e) &
1689 + dzt(k,1) * wwt(i,1,1) &
1690 + dzt(k,2) * wwt(i,1,2) &
1691 + dzt(k,3) * wwt(i,1,3) &
1692 + dzt(k,4) * wwt(i,1,4) &
1693 + dzt(k,5) * wwt(i,1,5) &
1694 + dzt(k,6) * wwt(i,1,6) &
1695 + dzt(k,7) * wwt(i,1,7) &
1696 + dzt(k,8) * wwt(i,1,8) &
1697 + dzt(k,9) * wwt(i,1,9) &
1698 + dzt(k,10) * wwt(i,1,10) &
1699 + dzt(k,11) * wwt(i,1,11) &
1700 + dzt(k,12) * wwt(i,1,12)
1701 end do
1702 end do
1703 end if
1704
1705 end do
1706 !$omp end do
1707 end subroutine ax_helm_stress_lx12
1708
1709 subroutine ax_helm_stress_lx11(au, av, aw, u, v, w, Dx, Dy, Dz, &
1710 Dxt, Dyt, Dzt, &
1711 h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
1712 B, ifh2, jacinv, weights3, n)
1713 integer, parameter :: lx = 11
1714 integer, intent(in) :: n
1715 logical, intent(in) :: ifh2
1716 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
1717 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
1718 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
1719 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
1720 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
1721 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
1722 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
1723 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
1724 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
1725 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
1726 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
1727 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
1728 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
1729 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
1730 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
1731 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
1732 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
1733 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
1734 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
1735 real(kind=rp), intent(in) :: dx(lx, lx)
1736 real(kind=rp), intent(in) :: dy(lx, lx)
1737 real(kind=rp), intent(in) :: dz(lx, lx)
1738 real(kind=rp), intent(in) :: dxt(lx, lx)
1739 real(kind=rp), intent(in) :: dyt(lx, lx)
1740 real(kind=rp), intent(in) :: dzt(lx, lx)
1741 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
1742
1743 real(kind=rp) :: wur(lx, lx, lx)
1744 real(kind=rp) :: wus(lx, lx, lx)
1745 real(kind=rp) :: wut(lx, lx, lx)
1746 real(kind=rp) :: wvr(lx, lx, lx)
1747 real(kind=rp) :: wvs(lx, lx, lx)
1748 real(kind=rp) :: wvt(lx, lx, lx)
1749 real(kind=rp) :: wwr(lx, lx, lx)
1750 real(kind=rp) :: wws(lx, lx, lx)
1751 real(kind=rp) :: wwt(lx, lx, lx)
1752
1753 integer :: e, i, j, k, l
1754 real(kind=rp) :: dj
1755 real(kind=rp) :: s11, s22, s33, s12, s13, s23
1756 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
1757
1758 !$omp do
1759 do e = 1, n
1760
1761 do j = 1, lx * lx
1762 do i = 1, lx
1763 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
1764 + dx(i,2) * u(2,j,1,e) &
1765 + dx(i,3) * u(3,j,1,e) &
1766 + dx(i,4) * u(4,j,1,e) &
1767 + dx(i,5) * u(5,j,1,e) &
1768 + dx(i,6) * u(6,j,1,e) &
1769 + dx(i,7) * u(7,j,1,e) &
1770 + dx(i,8) * u(8,j,1,e) &
1771 + dx(i,9) * u(9,j,1,e) &
1772 + dx(i,10) * u(10,j,1,e) &
1773 + dx(i,11) * u(11,j,1,e)
1774
1775 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
1776 + dx(i,2) * v(2,j,1,e) &
1777 + dx(i,3) * v(3,j,1,e) &
1778 + dx(i,4) * v(4,j,1,e) &
1779 + dx(i,5) * v(5,j,1,e) &
1780 + dx(i,6) * v(6,j,1,e) &
1781 + dx(i,7) * v(7,j,1,e) &
1782 + dx(i,8) * v(8,j,1,e) &
1783 + dx(i,9) * v(9,j,1,e) &
1784 + dx(i,10) * v(10,j,1,e) &
1785 + dx(i,11) * v(11,j,1,e)
1786
1787 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
1788 + dx(i,2) * w(2,j,1,e) &
1789 + dx(i,3) * w(3,j,1,e) &
1790 + dx(i,4) * w(4,j,1,e) &
1791 + dx(i,5) * w(5,j,1,e) &
1792 + dx(i,6) * w(6,j,1,e) &
1793 + dx(i,7) * w(7,j,1,e) &
1794 + dx(i,8) * w(8,j,1,e) &
1795 + dx(i,9) * w(9,j,1,e) &
1796 + dx(i,10) * w(10,j,1,e) &
1797 + dx(i,11) * w(11,j,1,e)
1798 end do
1799 end do
1800
1801 do k = 1, lx
1802 do j = 1, lx
1803 do i = 1, lx
1804 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
1805 + dy(j,2) * u(i,2,k,e) &
1806 + dy(j,3) * u(i,3,k,e) &
1807 + dy(j,4) * u(i,4,k,e) &
1808 + dy(j,5) * u(i,5,k,e) &
1809 + dy(j,6) * u(i,6,k,e) &
1810 + dy(j,7) * u(i,7,k,e) &
1811 + dy(j,8) * u(i,8,k,e) &
1812 + dy(j,9) * u(i,9,k,e) &
1813 + dy(j,10) * u(i,10,k,e) &
1814 + dy(j,11) * u(i,11,k,e)
1815
1816 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
1817 + dy(j,2) * v(i,2,k,e) &
1818 + dy(j,3) * v(i,3,k,e) &
1819 + dy(j,4) * v(i,4,k,e) &
1820 + dy(j,5) * v(i,5,k,e) &
1821 + dy(j,6) * v(i,6,k,e) &
1822 + dy(j,7) * v(i,7,k,e) &
1823 + dy(j,8) * v(i,8,k,e) &
1824 + dy(j,9) * v(i,9,k,e) &
1825 + dy(j,10) * v(i,10,k,e) &
1826 + dy(j,11) * v(i,11,k,e)
1827
1828 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
1829 + dy(j,2) * w(i,2,k,e) &
1830 + dy(j,3) * w(i,3,k,e) &
1831 + dy(j,4) * w(i,4,k,e) &
1832 + dy(j,5) * w(i,5,k,e) &
1833 + dy(j,6) * w(i,6,k,e) &
1834 + dy(j,7) * w(i,7,k,e) &
1835 + dy(j,8) * w(i,8,k,e) &
1836 + dy(j,9) * w(i,9,k,e) &
1837 + dy(j,10) * w(i,10,k,e) &
1838 + dy(j,11) * w(i,11,k,e)
1839 end do
1840 end do
1841 end do
1842
1843 do k = 1, lx
1844 do i = 1, lx*lx
1845 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
1846 + dz(k,2) * u(i,1,2,e) &
1847 + dz(k,3) * u(i,1,3,e) &
1848 + dz(k,4) * u(i,1,4,e) &
1849 + dz(k,5) * u(i,1,5,e) &
1850 + dz(k,6) * u(i,1,6,e) &
1851 + dz(k,7) * u(i,1,7,e) &
1852 + dz(k,8) * u(i,1,8,e) &
1853 + dz(k,9) * u(i,1,9,e) &
1854 + dz(k,10) * u(i,1,10,e) &
1855 + dz(k,11) * u(i,1,11,e)
1856
1857 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
1858 + dz(k,2) * v(i,1,2,e) &
1859 + dz(k,3) * v(i,1,3,e) &
1860 + dz(k,4) * v(i,1,4,e) &
1861 + dz(k,5) * v(i,1,5,e) &
1862 + dz(k,6) * v(i,1,6,e) &
1863 + dz(k,7) * v(i,1,7,e) &
1864 + dz(k,8) * v(i,1,8,e) &
1865 + dz(k,9) * v(i,1,9,e) &
1866 + dz(k,10) * v(i,1,10,e) &
1867 + dz(k,11) * v(i,1,11,e)
1868
1869 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
1870 + dz(k,2) * w(i,1,2,e) &
1871 + dz(k,3) * w(i,1,3,e) &
1872 + dz(k,4) * w(i,1,4,e) &
1873 + dz(k,5) * w(i,1,5,e) &
1874 + dz(k,6) * w(i,1,6,e) &
1875 + dz(k,7) * w(i,1,7,e) &
1876 + dz(k,8) * w(i,1,8,e) &
1877 + dz(k,9) * w(i,1,9,e) &
1878 + dz(k,10) * w(i,1,10,e) &
1879 + dz(k,11) * w(i,1,11,e)
1880 end do
1881 end do
1882
1883 do i = 1, lx*lx*lx
1884
1885 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
1886 + wut(i,1,1) * dtdx(i,1,1,e)
1887 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
1888 + wut(i,1,1) * dtdy(i,1,1,e)
1889 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
1890 + wut(i,1,1) * dtdz(i,1,1,e)
1891
1892 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
1893 + wvt(i,1,1) * dtdx(i,1,1,e)
1894 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
1895 + wvt(i,1,1) * dtdy(i,1,1,e)
1896 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
1897 + wvt(i,1,1) * dtdz(i,1,1,e)
1898
1899 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
1900 + wwt(i,1,1) * dtdx(i,1,1,e)
1901 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
1902 + wwt(i,1,1) * dtdy(i,1,1,e)
1903 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
1904 + wwt(i,1,1) * dtdz(i,1,1,e)
1905
1906 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
1907 s11 = dj*(u1 + u1)
1908 s22 = dj*(v2 + v2)
1909 s33 = dj*(w3 + w3)
1910 s12 = dj*(u2 + v1)
1911 s13 = dj*(u3 + w1)
1912 s23 = dj*(v3 + w2)
1913
1914 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
1915 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
1916 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
1917
1918 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
1919 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
1920 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
1921
1922 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
1923 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
1924 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
1925 end do
1926
1927 do j = 1, lx*lx
1928 do i = 1, lx
1929 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
1930 + dxt(i,2) * wur(2,j,1) &
1931 + dxt(i,3) * wur(3,j,1) &
1932 + dxt(i,4) * wur(4,j,1) &
1933 + dxt(i,5) * wur(5,j,1) &
1934 + dxt(i,6) * wur(6,j,1) &
1935 + dxt(i,7) * wur(7,j,1) &
1936 + dxt(i,8) * wur(8,j,1) &
1937 + dxt(i,9) * wur(9,j,1) &
1938 + dxt(i,10) * wur(10,j,1) &
1939 + dxt(i,11) * wur(11,j,1)
1940
1941 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
1942 + dxt(i,2) * wvr(2,j,1) &
1943 + dxt(i,3) * wvr(3,j,1) &
1944 + dxt(i,4) * wvr(4,j,1) &
1945 + dxt(i,5) * wvr(5,j,1) &
1946 + dxt(i,6) * wvr(6,j,1) &
1947 + dxt(i,7) * wvr(7,j,1) &
1948 + dxt(i,8) * wvr(8,j,1) &
1949 + dxt(i,9) * wvr(9,j,1) &
1950 + dxt(i,10) * wvr(10,j,1) &
1951 + dxt(i,11) * wvr(11,j,1)
1952
1953 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
1954 + dxt(i,2) * wwr(2,j,1) &
1955 + dxt(i,3) * wwr(3,j,1) &
1956 + dxt(i,4) * wwr(4,j,1) &
1957 + dxt(i,5) * wwr(5,j,1) &
1958 + dxt(i,6) * wwr(6,j,1) &
1959 + dxt(i,7) * wwr(7,j,1) &
1960 + dxt(i,8) * wwr(8,j,1) &
1961 + dxt(i,9) * wwr(9,j,1) &
1962 + dxt(i,10) * wwr(10,j,1) &
1963 + dxt(i,11) * wwr(11,j,1)
1964 end do
1965 end do
1966
1967 do k = 1, lx
1968 do j = 1, lx
1969 do i = 1, lx
1970 au(i,j,k,e) = au(i,j,k,e) &
1971 + dyt(j,1) * wus(i,1,k) &
1972 + dyt(j,2) * wus(i,2,k) &
1973 + dyt(j,3) * wus(i,3,k) &
1974 + dyt(j,4) * wus(i,4,k) &
1975 + dyt(j,5) * wus(i,5,k) &
1976 + dyt(j,6) * wus(i,6,k) &
1977 + dyt(j,7) * wus(i,7,k) &
1978 + dyt(j,8) * wus(i,8,k) &
1979 + dyt(j,9) * wus(i,9,k) &
1980 + dyt(j,10) * wus(i,10,k) &
1981 + dyt(j,11) * wus(i,11,k)
1982
1983 av(i,j,k,e) = av(i,j,k,e) &
1984 + dyt(j,1) * wvs(i,1,k) &
1985 + dyt(j,2) * wvs(i,2,k) &
1986 + dyt(j,3) * wvs(i,3,k) &
1987 + dyt(j,4) * wvs(i,4,k) &
1988 + dyt(j,5) * wvs(i,5,k) &
1989 + dyt(j,6) * wvs(i,6,k) &
1990 + dyt(j,7) * wvs(i,7,k) &
1991 + dyt(j,8) * wvs(i,8,k) &
1992 + dyt(j,9) * wvs(i,9,k) &
1993 + dyt(j,10) * wvs(i,10,k) &
1994 + dyt(j,11) * wvs(i,11,k)
1995
1996 aw(i,j,k,e) = aw(i,j,k,e) &
1997 + dyt(j,1) * wws(i,1,k) &
1998 + dyt(j,2) * wws(i,2,k) &
1999 + dyt(j,3) * wws(i,3,k) &
2000 + dyt(j,4) * wws(i,4,k) &
2001 + dyt(j,5) * wws(i,5,k) &
2002 + dyt(j,6) * wws(i,6,k) &
2003 + dyt(j,7) * wws(i,7,k) &
2004 + dyt(j,8) * wws(i,8,k) &
2005 + dyt(j,9) * wws(i,9,k) &
2006 + dyt(j,10) * wws(i,10,k) &
2007 + dyt(j,11) * wws(i,11,k)
2008 end do
2009 end do
2010 end do
2011
2012 if (ifh2) then
2013 do k = 1, lx
2014 do i = 1, lx*lx
2015 au(i,1,k,e) = au(i,1,k,e) &
2016 + dzt(k,1) * wut(i,1,1) &
2017 + dzt(k,2) * wut(i,1,2) &
2018 + dzt(k,3) * wut(i,1,3) &
2019 + dzt(k,4) * wut(i,1,4) &
2020 + dzt(k,5) * wut(i,1,5) &
2021 + dzt(k,6) * wut(i,1,6) &
2022 + dzt(k,7) * wut(i,1,7) &
2023 + dzt(k,8) * wut(i,1,8) &
2024 + dzt(k,9) * wut(i,1,9) &
2025 + dzt(k,10) * wut(i,1,10) &
2026 + dzt(k,11) * wut(i,1,11) &
2027 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
2028
2029 av(i,1,k,e) = av(i,1,k,e) &
2030 + dzt(k,1) * wvt(i,1,1) &
2031 + dzt(k,2) * wvt(i,1,2) &
2032 + dzt(k,3) * wvt(i,1,3) &
2033 + dzt(k,4) * wvt(i,1,4) &
2034 + dzt(k,5) * wvt(i,1,5) &
2035 + dzt(k,6) * wvt(i,1,6) &
2036 + dzt(k,7) * wvt(i,1,7) &
2037 + dzt(k,8) * wvt(i,1,8) &
2038 + dzt(k,9) * wvt(i,1,9) &
2039 + dzt(k,10) * wvt(i,1,10) &
2040 + dzt(k,11) * wvt(i,1,11) &
2041 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
2042
2043 aw(i,1,k,e) = aw(i,1,k,e) &
2044 + dzt(k,1) * wwt(i,1,1) &
2045 + dzt(k,2) * wwt(i,1,2) &
2046 + dzt(k,3) * wwt(i,1,3) &
2047 + dzt(k,4) * wwt(i,1,4) &
2048 + dzt(k,5) * wwt(i,1,5) &
2049 + dzt(k,6) * wwt(i,1,6) &
2050 + dzt(k,7) * wwt(i,1,7) &
2051 + dzt(k,8) * wwt(i,1,8) &
2052 + dzt(k,9) * wwt(i,1,9) &
2053 + dzt(k,10) * wwt(i,1,10) &
2054 + dzt(k,11) * wwt(i,1,11) &
2055 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
2056 end do
2057 end do
2058 else
2059 do k = 1, lx
2060 do i = 1, lx*lx
2061 au(i,1,k,e) = au(i,1,k,e) &
2062 + dzt(k,1) * wut(i,1,1) &
2063 + dzt(k,2) * wut(i,1,2) &
2064 + dzt(k,3) * wut(i,1,3) &
2065 + dzt(k,4) * wut(i,1,4) &
2066 + dzt(k,5) * wut(i,1,5) &
2067 + dzt(k,6) * wut(i,1,6) &
2068 + dzt(k,7) * wut(i,1,7) &
2069 + dzt(k,8) * wut(i,1,8) &
2070 + dzt(k,9) * wut(i,1,9) &
2071 + dzt(k,10) * wut(i,1,10) &
2072 + dzt(k,11) * wut(i,1,11)
2073
2074 av(i,1,k,e) = av(i,1,k,e) &
2075 + dzt(k,1) * wvt(i,1,1) &
2076 + dzt(k,2) * wvt(i,1,2) &
2077 + dzt(k,3) * wvt(i,1,3) &
2078 + dzt(k,4) * wvt(i,1,4) &
2079 + dzt(k,5) * wvt(i,1,5) &
2080 + dzt(k,6) * wvt(i,1,6) &
2081 + dzt(k,7) * wvt(i,1,7) &
2082 + dzt(k,8) * wvt(i,1,8) &
2083 + dzt(k,9) * wvt(i,1,9) &
2084 + dzt(k,10) * wvt(i,1,10) &
2085 + dzt(k,11) * wvt(i,1,11)
2086
2087 aw(i,1,k,e) = aw(i,1,k,e) &
2088 + dzt(k,1) * wwt(i,1,1) &
2089 + dzt(k,2) * wwt(i,1,2) &
2090 + dzt(k,3) * wwt(i,1,3) &
2091 + dzt(k,4) * wwt(i,1,4) &
2092 + dzt(k,5) * wwt(i,1,5) &
2093 + dzt(k,6) * wwt(i,1,6) &
2094 + dzt(k,7) * wwt(i,1,7) &
2095 + dzt(k,8) * wwt(i,1,8) &
2096 + dzt(k,9) * wwt(i,1,9) &
2097 + dzt(k,10) * wwt(i,1,10) &
2098 + dzt(k,11) * wwt(i,1,11)
2099 end do
2100 end do
2101 end if
2102
2103 end do
2104 !$omp end do
2105 end subroutine ax_helm_stress_lx11
2106
2107 subroutine ax_helm_stress_lx10(au, av, aw, u, v, w, Dx, Dy, Dz, &
2108 Dxt, Dyt, Dzt, &
2109 h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
2110 B, ifh2, jacinv, weights3, n)
2111 integer, parameter :: lx = 10
2112 integer, intent(in) :: n
2113 logical, intent(in) :: ifh2
2114 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
2115 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
2116 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
2117 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
2118 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
2119 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
2120 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
2121 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
2122 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
2123 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
2124 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
2125 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
2126 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
2127 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
2128 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
2129 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
2130 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
2131 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
2132 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
2133 real(kind=rp), intent(in) :: dx(lx, lx)
2134 real(kind=rp), intent(in) :: dy(lx, lx)
2135 real(kind=rp), intent(in) :: dz(lx, lx)
2136 real(kind=rp), intent(in) :: dxt(lx, lx)
2137 real(kind=rp), intent(in) :: dyt(lx, lx)
2138 real(kind=rp), intent(in) :: dzt(lx, lx)
2139 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
2140
2141 real(kind=rp) :: wur(lx, lx, lx)
2142 real(kind=rp) :: wus(lx, lx, lx)
2143 real(kind=rp) :: wut(lx, lx, lx)
2144 real(kind=rp) :: wvr(lx, lx, lx)
2145 real(kind=rp) :: wvs(lx, lx, lx)
2146 real(kind=rp) :: wvt(lx, lx, lx)
2147 real(kind=rp) :: wwr(lx, lx, lx)
2148 real(kind=rp) :: wws(lx, lx, lx)
2149 real(kind=rp) :: wwt(lx, lx, lx)
2150
2151 integer :: e, i, j, k, l
2152 real(kind=rp) :: dj
2153 real(kind=rp) :: s11, s22, s33, s12, s13, s23
2154 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
2155
2156 !$omp do
2157 do e = 1, n
2158
2159 do j = 1, lx * lx
2160 do i = 1, lx
2161 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
2162 + dx(i,2) * u(2,j,1,e) &
2163 + dx(i,3) * u(3,j,1,e) &
2164 + dx(i,4) * u(4,j,1,e) &
2165 + dx(i,5) * u(5,j,1,e) &
2166 + dx(i,6) * u(6,j,1,e) &
2167 + dx(i,7) * u(7,j,1,e) &
2168 + dx(i,8) * u(8,j,1,e) &
2169 + dx(i,9) * u(9,j,1,e) &
2170 + dx(i,10) * u(10,j,1,e)
2171
2172 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
2173 + dx(i,2) * v(2,j,1,e) &
2174 + dx(i,3) * v(3,j,1,e) &
2175 + dx(i,4) * v(4,j,1,e) &
2176 + dx(i,5) * v(5,j,1,e) &
2177 + dx(i,6) * v(6,j,1,e) &
2178 + dx(i,7) * v(7,j,1,e) &
2179 + dx(i,8) * v(8,j,1,e) &
2180 + dx(i,9) * v(9,j,1,e) &
2181 + dx(i,10) * v(10,j,1,e)
2182
2183 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
2184 + dx(i,2) * w(2,j,1,e) &
2185 + dx(i,3) * w(3,j,1,e) &
2186 + dx(i,4) * w(4,j,1,e) &
2187 + dx(i,5) * w(5,j,1,e) &
2188 + dx(i,6) * w(6,j,1,e) &
2189 + dx(i,7) * w(7,j,1,e) &
2190 + dx(i,8) * w(8,j,1,e) &
2191 + dx(i,9) * w(9,j,1,e) &
2192 + dx(i,10) * w(10,j,1,e)
2193 end do
2194 end do
2195
2196 do k = 1, lx
2197 do j = 1, lx
2198 do i = 1, lx
2199 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
2200 + dy(j,2) * u(i,2,k,e) &
2201 + dy(j,3) * u(i,3,k,e) &
2202 + dy(j,4) * u(i,4,k,e) &
2203 + dy(j,5) * u(i,5,k,e) &
2204 + dy(j,6) * u(i,6,k,e) &
2205 + dy(j,7) * u(i,7,k,e) &
2206 + dy(j,8) * u(i,8,k,e) &
2207 + dy(j,9) * u(i,9,k,e) &
2208 + dy(j,10) * u(i,10,k,e)
2209
2210 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
2211 + dy(j,2) * v(i,2,k,e) &
2212 + dy(j,3) * v(i,3,k,e) &
2213 + dy(j,4) * v(i,4,k,e) &
2214 + dy(j,5) * v(i,5,k,e) &
2215 + dy(j,6) * v(i,6,k,e) &
2216 + dy(j,7) * v(i,7,k,e) &
2217 + dy(j,8) * v(i,8,k,e) &
2218 + dy(j,9) * v(i,9,k,e) &
2219 + dy(j,10) * v(i,10,k,e)
2220
2221 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
2222 + dy(j,2) * w(i,2,k,e) &
2223 + dy(j,3) * w(i,3,k,e) &
2224 + dy(j,4) * w(i,4,k,e) &
2225 + dy(j,5) * w(i,5,k,e) &
2226 + dy(j,6) * w(i,6,k,e) &
2227 + dy(j,7) * w(i,7,k,e) &
2228 + dy(j,8) * w(i,8,k,e) &
2229 + dy(j,9) * w(i,9,k,e) &
2230 + dy(j,10) * w(i,10,k,e)
2231 end do
2232 end do
2233 end do
2234
2235 do k = 1, lx
2236 do i = 1, lx*lx
2237 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
2238 + dz(k,2) * u(i,1,2,e) &
2239 + dz(k,3) * u(i,1,3,e) &
2240 + dz(k,4) * u(i,1,4,e) &
2241 + dz(k,5) * u(i,1,5,e) &
2242 + dz(k,6) * u(i,1,6,e) &
2243 + dz(k,7) * u(i,1,7,e) &
2244 + dz(k,8) * u(i,1,8,e) &
2245 + dz(k,9) * u(i,1,9,e) &
2246 + dz(k,10) * u(i,1,10,e)
2247
2248 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
2249 + dz(k,2) * v(i,1,2,e) &
2250 + dz(k,3) * v(i,1,3,e) &
2251 + dz(k,4) * v(i,1,4,e) &
2252 + dz(k,5) * v(i,1,5,e) &
2253 + dz(k,6) * v(i,1,6,e) &
2254 + dz(k,7) * v(i,1,7,e) &
2255 + dz(k,8) * v(i,1,8,e) &
2256 + dz(k,9) * v(i,1,9,e) &
2257 + dz(k,10) * v(i,1,10,e)
2258
2259 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
2260 + dz(k,2) * w(i,1,2,e) &
2261 + dz(k,3) * w(i,1,3,e) &
2262 + dz(k,4) * w(i,1,4,e) &
2263 + dz(k,5) * w(i,1,5,e) &
2264 + dz(k,6) * w(i,1,6,e) &
2265 + dz(k,7) * w(i,1,7,e) &
2266 + dz(k,8) * w(i,1,8,e) &
2267 + dz(k,9) * w(i,1,9,e) &
2268 + dz(k,10) * w(i,1,10,e)
2269 end do
2270 end do
2271
2272 do i = 1, lx*lx*lx
2273
2274 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
2275 + wut(i,1,1) * dtdx(i,1,1,e)
2276 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
2277 + wut(i,1,1) * dtdy(i,1,1,e)
2278 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
2279 + wut(i,1,1) * dtdz(i,1,1,e)
2280
2281 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
2282 + wvt(i,1,1) * dtdx(i,1,1,e)
2283 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
2284 + wvt(i,1,1) * dtdy(i,1,1,e)
2285 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
2286 + wvt(i,1,1) * dtdz(i,1,1,e)
2287
2288 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
2289 + wwt(i,1,1) * dtdx(i,1,1,e)
2290 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
2291 + wwt(i,1,1) * dtdy(i,1,1,e)
2292 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
2293 + wwt(i,1,1) * dtdz(i,1,1,e)
2294
2295 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
2296 s11 = dj*(u1 + u1)
2297 s22 = dj*(v2 + v2)
2298 s33 = dj*(w3 + w3)
2299 s12 = dj*(u2 + v1)
2300 s13 = dj*(u3 + w1)
2301 s23 = dj*(v3 + w2)
2302
2303 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
2304 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
2305 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
2306
2307 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
2308 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
2309 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
2310
2311 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
2312 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
2313 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
2314 end do
2315
2316 do j = 1, lx*lx
2317 do i = 1, lx
2318 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
2319 + dxt(i,2) * wur(2,j,1) &
2320 + dxt(i,3) * wur(3,j,1) &
2321 + dxt(i,4) * wur(4,j,1) &
2322 + dxt(i,5) * wur(5,j,1) &
2323 + dxt(i,6) * wur(6,j,1) &
2324 + dxt(i,7) * wur(7,j,1) &
2325 + dxt(i,8) * wur(8,j,1) &
2326 + dxt(i,9) * wur(9,j,1) &
2327 + dxt(i,10) * wur(10,j,1)
2328
2329 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
2330 + dxt(i,2) * wvr(2,j,1) &
2331 + dxt(i,3) * wvr(3,j,1) &
2332 + dxt(i,4) * wvr(4,j,1) &
2333 + dxt(i,5) * wvr(5,j,1) &
2334 + dxt(i,6) * wvr(6,j,1) &
2335 + dxt(i,7) * wvr(7,j,1) &
2336 + dxt(i,8) * wvr(8,j,1) &
2337 + dxt(i,9) * wvr(9,j,1) &
2338 + dxt(i,10) * wvr(10,j,1)
2339
2340 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
2341 + dxt(i,2) * wwr(2,j,1) &
2342 + dxt(i,3) * wwr(3,j,1) &
2343 + dxt(i,4) * wwr(4,j,1) &
2344 + dxt(i,5) * wwr(5,j,1) &
2345 + dxt(i,6) * wwr(6,j,1) &
2346 + dxt(i,7) * wwr(7,j,1) &
2347 + dxt(i,8) * wwr(8,j,1) &
2348 + dxt(i,9) * wwr(9,j,1) &
2349 + dxt(i,10) * wwr(10,j,1)
2350 end do
2351 end do
2352
2353 do k = 1, lx
2354 do j = 1, lx
2355 do i = 1, lx
2356 au(i,j,k,e) = au(i,j,k,e) &
2357 + dyt(j,1) * wus(i,1,k) &
2358 + dyt(j,2) * wus(i,2,k) &
2359 + dyt(j,3) * wus(i,3,k) &
2360 + dyt(j,4) * wus(i,4,k) &
2361 + dyt(j,5) * wus(i,5,k) &
2362 + dyt(j,6) * wus(i,6,k) &
2363 + dyt(j,7) * wus(i,7,k) &
2364 + dyt(j,8) * wus(i,8,k) &
2365 + dyt(j,9) * wus(i,9,k) &
2366 + dyt(j,10) * wus(i,10,k)
2367
2368 av(i,j,k,e) = av(i,j,k,e) &
2369 + dyt(j,1) * wvs(i,1,k) &
2370 + dyt(j,2) * wvs(i,2,k) &
2371 + dyt(j,3) * wvs(i,3,k) &
2372 + dyt(j,4) * wvs(i,4,k) &
2373 + dyt(j,5) * wvs(i,5,k) &
2374 + dyt(j,6) * wvs(i,6,k) &
2375 + dyt(j,7) * wvs(i,7,k) &
2376 + dyt(j,8) * wvs(i,8,k) &
2377 + dyt(j,9) * wvs(i,9,k) &
2378 + dyt(j,10) * wvs(i,10,k)
2379
2380 aw(i,j,k,e) = aw(i,j,k,e) &
2381 + dyt(j,1) * wws(i,1,k) &
2382 + dyt(j,2) * wws(i,2,k) &
2383 + dyt(j,3) * wws(i,3,k) &
2384 + dyt(j,4) * wws(i,4,k) &
2385 + dyt(j,5) * wws(i,5,k) &
2386 + dyt(j,6) * wws(i,6,k) &
2387 + dyt(j,7) * wws(i,7,k) &
2388 + dyt(j,8) * wws(i,8,k) &
2389 + dyt(j,9) * wws(i,9,k) &
2390 + dyt(j,10) * wws(i,10,k)
2391 end do
2392 end do
2393 end do
2394
2395 if (ifh2) then
2396 do k = 1, lx
2397 do i = 1, lx*lx
2398 au(i,1,k,e) = au(i,1,k,e) &
2399 + dzt(k,1) * wut(i,1,1) &
2400 + dzt(k,2) * wut(i,1,2) &
2401 + dzt(k,3) * wut(i,1,3) &
2402 + dzt(k,4) * wut(i,1,4) &
2403 + dzt(k,5) * wut(i,1,5) &
2404 + dzt(k,6) * wut(i,1,6) &
2405 + dzt(k,7) * wut(i,1,7) &
2406 + dzt(k,8) * wut(i,1,8) &
2407 + dzt(k,9) * wut(i,1,9) &
2408 + dzt(k,10) * wut(i,1,10) &
2409 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
2410
2411 av(i,1,k,e) = av(i,1,k,e) &
2412 + dzt(k,1) * wvt(i,1,1) &
2413 + dzt(k,2) * wvt(i,1,2) &
2414 + dzt(k,3) * wvt(i,1,3) &
2415 + dzt(k,4) * wvt(i,1,4) &
2416 + dzt(k,5) * wvt(i,1,5) &
2417 + dzt(k,6) * wvt(i,1,6) &
2418 + dzt(k,7) * wvt(i,1,7) &
2419 + dzt(k,8) * wvt(i,1,8) &
2420 + dzt(k,9) * wvt(i,1,9) &
2421 + dzt(k,10) * wvt(i,1,10) &
2422 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
2423
2424 aw(i,1,k,e) = aw(i,1,k,e) &
2425 + dzt(k,1) * wwt(i,1,1) &
2426 + dzt(k,2) * wwt(i,1,2) &
2427 + dzt(k,3) * wwt(i,1,3) &
2428 + dzt(k,4) * wwt(i,1,4) &
2429 + dzt(k,5) * wwt(i,1,5) &
2430 + dzt(k,6) * wwt(i,1,6) &
2431 + dzt(k,7) * wwt(i,1,7) &
2432 + dzt(k,8) * wwt(i,1,8) &
2433 + dzt(k,9) * wwt(i,1,9) &
2434 + dzt(k,10) * wwt(i,1,10) &
2435 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
2436 end do
2437 end do
2438 else
2439 do k = 1, lx
2440 do i = 1, lx*lx
2441 au(i,1,k,e) = au(i,1,k,e) &
2442 + dzt(k,1) * wut(i,1,1) &
2443 + dzt(k,2) * wut(i,1,2) &
2444 + dzt(k,3) * wut(i,1,3) &
2445 + dzt(k,4) * wut(i,1,4) &
2446 + dzt(k,5) * wut(i,1,5) &
2447 + dzt(k,6) * wut(i,1,6) &
2448 + dzt(k,7) * wut(i,1,7) &
2449 + dzt(k,8) * wut(i,1,8) &
2450 + dzt(k,9) * wut(i,1,9) &
2451 + dzt(k,10) * wut(i,1,10)
2452
2453 av(i,1,k,e) = av(i,1,k,e) &
2454 + dzt(k,1) * wvt(i,1,1) &
2455 + dzt(k,2) * wvt(i,1,2) &
2456 + dzt(k,3) * wvt(i,1,3) &
2457 + dzt(k,4) * wvt(i,1,4) &
2458 + dzt(k,5) * wvt(i,1,5) &
2459 + dzt(k,6) * wvt(i,1,6) &
2460 + dzt(k,7) * wvt(i,1,7) &
2461 + dzt(k,8) * wvt(i,1,8) &
2462 + dzt(k,9) * wvt(i,1,9) &
2463 + dzt(k,10) * wvt(i,1,10)
2464
2465 aw(i,1,k,e) = aw(i,1,k,e) &
2466 + dzt(k,1) * wwt(i,1,1) &
2467 + dzt(k,2) * wwt(i,1,2) &
2468 + dzt(k,3) * wwt(i,1,3) &
2469 + dzt(k,4) * wwt(i,1,4) &
2470 + dzt(k,5) * wwt(i,1,5) &
2471 + dzt(k,6) * wwt(i,1,6) &
2472 + dzt(k,7) * wwt(i,1,7) &
2473 + dzt(k,8) * wwt(i,1,8) &
2474 + dzt(k,9) * wwt(i,1,9) &
2475 + dzt(k,10) * wwt(i,1,10)
2476 end do
2477 end do
2478 end if
2479
2480 end do
2481 !$omp end do
2482 end subroutine ax_helm_stress_lx10
2483
2484 subroutine ax_helm_stress_lx9(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
2485 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
2486 B, ifh2, jacinv, weights3, n)
2487 integer, parameter :: lx = 9
2488 integer, intent(in) :: n
2489 logical, intent(in) :: ifh2
2490 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
2491 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
2492 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
2493 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
2494 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
2495 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
2496 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
2497 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
2498 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
2499 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
2500 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
2501 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
2502 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
2503 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
2504 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
2505 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
2506 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
2507 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
2508 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
2509 real(kind=rp), intent(in) :: dx(lx, lx)
2510 real(kind=rp), intent(in) :: dy(lx, lx)
2511 real(kind=rp), intent(in) :: dz(lx, lx)
2512 real(kind=rp), intent(in) :: dxt(lx, lx)
2513 real(kind=rp), intent(in) :: dyt(lx, lx)
2514 real(kind=rp), intent(in) :: dzt(lx, lx)
2515 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
2516
2517 real(kind=rp) :: wur(lx, lx, lx)
2518 real(kind=rp) :: wus(lx, lx, lx)
2519 real(kind=rp) :: wut(lx, lx, lx)
2520 real(kind=rp) :: wvr(lx, lx, lx)
2521 real(kind=rp) :: wvs(lx, lx, lx)
2522 real(kind=rp) :: wvt(lx, lx, lx)
2523 real(kind=rp) :: wwr(lx, lx, lx)
2524 real(kind=rp) :: wws(lx, lx, lx)
2525 real(kind=rp) :: wwt(lx, lx, lx)
2526
2527 integer :: e, i, j, k, l
2528 real(kind=rp) :: dj
2529 real(kind=rp) :: s11, s22, s33, s12, s13, s23
2530 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
2531
2532 !$omp do
2533 do e = 1, n
2534
2535 do j = 1, lx * lx
2536 do i = 1, lx
2537 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
2538 + dx(i,2) * u(2,j,1,e) &
2539 + dx(i,3) * u(3,j,1,e) &
2540 + dx(i,4) * u(4,j,1,e) &
2541 + dx(i,5) * u(5,j,1,e) &
2542 + dx(i,6) * u(6,j,1,e) &
2543 + dx(i,7) * u(7,j,1,e) &
2544 + dx(i,8) * u(8,j,1,e) &
2545 + dx(i,9) * u(9,j,1,e)
2546
2547 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
2548 + dx(i,2) * v(2,j,1,e) &
2549 + dx(i,3) * v(3,j,1,e) &
2550 + dx(i,4) * v(4,j,1,e) &
2551 + dx(i,5) * v(5,j,1,e) &
2552 + dx(i,6) * v(6,j,1,e) &
2553 + dx(i,7) * v(7,j,1,e) &
2554 + dx(i,8) * v(8,j,1,e) &
2555 + dx(i,9) * v(9,j,1,e)
2556
2557 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
2558 + dx(i,2) * w(2,j,1,e) &
2559 + dx(i,3) * w(3,j,1,e) &
2560 + dx(i,4) * w(4,j,1,e) &
2561 + dx(i,5) * w(5,j,1,e) &
2562 + dx(i,6) * w(6,j,1,e) &
2563 + dx(i,7) * w(7,j,1,e) &
2564 + dx(i,8) * w(8,j,1,e) &
2565 + dx(i,9) * w(9,j,1,e)
2566 end do
2567 end do
2568
2569 do k = 1, lx
2570 do j = 1, lx
2571 do i = 1, lx
2572 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
2573 + dy(j,2) * u(i,2,k,e) &
2574 + dy(j,3) * u(i,3,k,e) &
2575 + dy(j,4) * u(i,4,k,e) &
2576 + dy(j,5) * u(i,5,k,e) &
2577 + dy(j,6) * u(i,6,k,e) &
2578 + dy(j,7) * u(i,7,k,e) &
2579 + dy(j,8) * u(i,8,k,e) &
2580 + dy(j,9) * u(i,9,k,e)
2581
2582 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
2583 + dy(j,2) * v(i,2,k,e) &
2584 + dy(j,3) * v(i,3,k,e) &
2585 + dy(j,4) * v(i,4,k,e) &
2586 + dy(j,5) * v(i,5,k,e) &
2587 + dy(j,6) * v(i,6,k,e) &
2588 + dy(j,7) * v(i,7,k,e) &
2589 + dy(j,8) * v(i,8,k,e) &
2590 + dy(j,9) * v(i,9,k,e)
2591
2592 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
2593 + dy(j,2) * w(i,2,k,e) &
2594 + dy(j,3) * w(i,3,k,e) &
2595 + dy(j,4) * w(i,4,k,e) &
2596 + dy(j,5) * w(i,5,k,e) &
2597 + dy(j,6) * w(i,6,k,e) &
2598 + dy(j,7) * w(i,7,k,e) &
2599 + dy(j,8) * w(i,8,k,e) &
2600 + dy(j,9) * w(i,9,k,e)
2601 end do
2602 end do
2603 end do
2604
2605 do k = 1, lx
2606 do i = 1, lx*lx
2607 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
2608 + dz(k,2) * u(i,1,2,e) &
2609 + dz(k,3) * u(i,1,3,e) &
2610 + dz(k,4) * u(i,1,4,e) &
2611 + dz(k,5) * u(i,1,5,e) &
2612 + dz(k,6) * u(i,1,6,e) &
2613 + dz(k,7) * u(i,1,7,e) &
2614 + dz(k,8) * u(i,1,8,e) &
2615 + dz(k,9) * u(i,1,9,e)
2616
2617 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
2618 + dz(k,2) * v(i,1,2,e) &
2619 + dz(k,3) * v(i,1,3,e) &
2620 + dz(k,4) * v(i,1,4,e) &
2621 + dz(k,5) * v(i,1,5,e) &
2622 + dz(k,6) * v(i,1,6,e) &
2623 + dz(k,7) * v(i,1,7,e) &
2624 + dz(k,8) * v(i,1,8,e) &
2625 + dz(k,9) * v(i,1,9,e)
2626
2627 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
2628 + dz(k,2) * w(i,1,2,e) &
2629 + dz(k,3) * w(i,1,3,e) &
2630 + dz(k,4) * w(i,1,4,e) &
2631 + dz(k,5) * w(i,1,5,e) &
2632 + dz(k,6) * w(i,1,6,e) &
2633 + dz(k,7) * w(i,1,7,e) &
2634 + dz(k,8) * w(i,1,8,e) &
2635 + dz(k,9) * w(i,1,9,e)
2636 end do
2637 end do
2638
2639 do i = 1, lx*lx*lx
2640
2641 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
2642 + wut(i,1,1) * dtdx(i,1,1,e)
2643 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
2644 + wut(i,1,1) * dtdy(i,1,1,e)
2645 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
2646 + wut(i,1,1) * dtdz(i,1,1,e)
2647
2648 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
2649 + wvt(i,1,1) * dtdx(i,1,1,e)
2650 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
2651 + wvt(i,1,1) * dtdy(i,1,1,e)
2652 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
2653 + wvt(i,1,1) * dtdz(i,1,1,e)
2654
2655 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
2656 + wwt(i,1,1) * dtdx(i,1,1,e)
2657 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
2658 + wwt(i,1,1) * dtdy(i,1,1,e)
2659 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
2660 + wwt(i,1,1) * dtdz(i,1,1,e)
2661
2662 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
2663 s11 = dj*(u1 + u1)
2664 s22 = dj*(v2 + v2)
2665 s33 = dj*(w3 + w3)
2666 s12 = dj*(u2 + v1)
2667 s13 = dj*(u3 + w1)
2668 s23 = dj*(v3 + w2)
2669
2670 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
2671 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
2672 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
2673
2674 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
2675 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
2676 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
2677
2678 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
2679 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
2680 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
2681 end do
2682
2683 do j = 1, lx*lx
2684 do i = 1, lx
2685 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
2686 + dxt(i,2) * wur(2,j,1) &
2687 + dxt(i,3) * wur(3,j,1) &
2688 + dxt(i,4) * wur(4,j,1) &
2689 + dxt(i,5) * wur(5,j,1) &
2690 + dxt(i,6) * wur(6,j,1) &
2691 + dxt(i,7) * wur(7,j,1) &
2692 + dxt(i,8) * wur(8,j,1) &
2693 + dxt(i,9) * wur(9,j,1)
2694
2695 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
2696 + dxt(i,2) * wvr(2,j,1) &
2697 + dxt(i,3) * wvr(3,j,1) &
2698 + dxt(i,4) * wvr(4,j,1) &
2699 + dxt(i,5) * wvr(5,j,1) &
2700 + dxt(i,6) * wvr(6,j,1) &
2701 + dxt(i,7) * wvr(7,j,1) &
2702 + dxt(i,8) * wvr(8,j,1) &
2703 + dxt(i,9) * wvr(9,j,1)
2704
2705 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
2706 + dxt(i,2) * wwr(2,j,1) &
2707 + dxt(i,3) * wwr(3,j,1) &
2708 + dxt(i,4) * wwr(4,j,1) &
2709 + dxt(i,5) * wwr(5,j,1) &
2710 + dxt(i,6) * wwr(6,j,1) &
2711 + dxt(i,7) * wwr(7,j,1) &
2712 + dxt(i,8) * wwr(8,j,1) &
2713 + dxt(i,9) * wwr(9,j,1)
2714 end do
2715 end do
2716
2717 do k = 1, lx
2718 do j = 1, lx
2719 do i = 1, lx
2720 au(i,j,k,e) = au(i,j,k,e) &
2721 + dyt(j,1) * wus(i,1,k) &
2722 + dyt(j,2) * wus(i,2,k) &
2723 + dyt(j,3) * wus(i,3,k) &
2724 + dyt(j,4) * wus(i,4,k) &
2725 + dyt(j,5) * wus(i,5,k) &
2726 + dyt(j,6) * wus(i,6,k) &
2727 + dyt(j,7) * wus(i,7,k) &
2728 + dyt(j,8) * wus(i,8,k) &
2729 + dyt(j,9) * wus(i,9,k)
2730
2731 av(i,j,k,e) = av(i,j,k,e) &
2732 + dyt(j,1) * wvs(i,1,k) &
2733 + dyt(j,2) * wvs(i,2,k) &
2734 + dyt(j,3) * wvs(i,3,k) &
2735 + dyt(j,4) * wvs(i,4,k) &
2736 + dyt(j,5) * wvs(i,5,k) &
2737 + dyt(j,6) * wvs(i,6,k) &
2738 + dyt(j,7) * wvs(i,7,k) &
2739 + dyt(j,8) * wvs(i,8,k) &
2740 + dyt(j,9) * wvs(i,9,k)
2741
2742 aw(i,j,k,e) = aw(i,j,k,e) &
2743 + dyt(j,1) * wws(i,1,k) &
2744 + dyt(j,2) * wws(i,2,k) &
2745 + dyt(j,3) * wws(i,3,k) &
2746 + dyt(j,4) * wws(i,4,k) &
2747 + dyt(j,5) * wws(i,5,k) &
2748 + dyt(j,6) * wws(i,6,k) &
2749 + dyt(j,7) * wws(i,7,k) &
2750 + dyt(j,8) * wws(i,8,k) &
2751 + dyt(j,9) * wws(i,9,k)
2752 end do
2753 end do
2754 end do
2755
2756 if (ifh2) then
2757 do k = 1, lx
2758 do i = 1, lx*lx
2759 au(i,1,k,e) = au(i,1,k,e) &
2760 + dzt(k,1) * wut(i,1,1) &
2761 + dzt(k,2) * wut(i,1,2) &
2762 + dzt(k,3) * wut(i,1,3) &
2763 + dzt(k,4) * wut(i,1,4) &
2764 + dzt(k,5) * wut(i,1,5) &
2765 + dzt(k,6) * wut(i,1,6) &
2766 + dzt(k,7) * wut(i,1,7) &
2767 + dzt(k,8) * wut(i,1,8) &
2768 + dzt(k,9) * wut(i,1,9) &
2769 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
2770
2771 av(i,1,k,e) = av(i,1,k,e) &
2772 + dzt(k,1) * wvt(i,1,1) &
2773 + dzt(k,2) * wvt(i,1,2) &
2774 + dzt(k,3) * wvt(i,1,3) &
2775 + dzt(k,4) * wvt(i,1,4) &
2776 + dzt(k,5) * wvt(i,1,5) &
2777 + dzt(k,6) * wvt(i,1,6) &
2778 + dzt(k,7) * wvt(i,1,7) &
2779 + dzt(k,8) * wvt(i,1,8) &
2780 + dzt(k,9) * wvt(i,1,9) &
2781 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
2782
2783 aw(i,1,k,e) = aw(i,1,k,e) &
2784 + dzt(k,1) * wwt(i,1,1) &
2785 + dzt(k,2) * wwt(i,1,2) &
2786 + dzt(k,3) * wwt(i,1,3) &
2787 + dzt(k,4) * wwt(i,1,4) &
2788 + dzt(k,5) * wwt(i,1,5) &
2789 + dzt(k,6) * wwt(i,1,6) &
2790 + dzt(k,7) * wwt(i,1,7) &
2791 + dzt(k,8) * wwt(i,1,8) &
2792 + dzt(k,9) * wwt(i,1,9) &
2793 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
2794 end do
2795 end do
2796 else
2797 do k = 1, lx
2798 do i = 1, lx*lx
2799 au(i,1,k,e) = au(i,1,k,e) &
2800 + dzt(k,1) * wut(i,1,1) &
2801 + dzt(k,2) * wut(i,1,2) &
2802 + dzt(k,3) * wut(i,1,3) &
2803 + dzt(k,4) * wut(i,1,4) &
2804 + dzt(k,5) * wut(i,1,5) &
2805 + dzt(k,6) * wut(i,1,6) &
2806 + dzt(k,7) * wut(i,1,7) &
2807 + dzt(k,8) * wut(i,1,8) &
2808 + dzt(k,9) * wut(i,1,9)
2809
2810 av(i,1,k,e) = av(i,1,k,e) &
2811 + dzt(k,1) * wvt(i,1,1) &
2812 + dzt(k,2) * wvt(i,1,2) &
2813 + dzt(k,3) * wvt(i,1,3) &
2814 + dzt(k,4) * wvt(i,1,4) &
2815 + dzt(k,5) * wvt(i,1,5) &
2816 + dzt(k,6) * wvt(i,1,6) &
2817 + dzt(k,7) * wvt(i,1,7) &
2818 + dzt(k,8) * wvt(i,1,8) &
2819 + dzt(k,9) * wvt(i,1,9)
2820
2821 aw(i,1,k,e) = aw(i,1,k,e) &
2822 + dzt(k,1) * wwt(i,1,1) &
2823 + dzt(k,2) * wwt(i,1,2) &
2824 + dzt(k,3) * wwt(i,1,3) &
2825 + dzt(k,4) * wwt(i,1,4) &
2826 + dzt(k,5) * wwt(i,1,5) &
2827 + dzt(k,6) * wwt(i,1,6) &
2828 + dzt(k,7) * wwt(i,1,7) &
2829 + dzt(k,8) * wwt(i,1,8) &
2830 + dzt(k,9) * wwt(i,1,9)
2831 end do
2832 end do
2833 end if
2834
2835 end do
2836 !$omp end do
2837 end subroutine ax_helm_stress_lx9
2838
2839 subroutine ax_helm_stress_lx8(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
2840 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
2841 B, ifh2, jacinv, weights3, n)
2842 integer, parameter :: lx = 8
2843 integer, intent(in) :: n
2844 logical, intent(in) :: ifh2
2845 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
2846 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
2847 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
2848 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
2849 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
2850 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
2851 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
2852 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
2853 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
2854 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
2855 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
2856 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
2857 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
2858 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
2859 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
2860 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
2861 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
2862 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
2863 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
2864 real(kind=rp), intent(in) :: dx(lx, lx)
2865 real(kind=rp), intent(in) :: dy(lx, lx)
2866 real(kind=rp), intent(in) :: dz(lx, lx)
2867 real(kind=rp), intent(in) :: dxt(lx, lx)
2868 real(kind=rp), intent(in) :: dyt(lx, lx)
2869 real(kind=rp), intent(in) :: dzt(lx, lx)
2870 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
2871
2872 real(kind=rp) :: wur(lx, lx, lx)
2873 real(kind=rp) :: wus(lx, lx, lx)
2874 real(kind=rp) :: wut(lx, lx, lx)
2875 real(kind=rp) :: wvr(lx, lx, lx)
2876 real(kind=rp) :: wvs(lx, lx, lx)
2877 real(kind=rp) :: wvt(lx, lx, lx)
2878 real(kind=rp) :: wwr(lx, lx, lx)
2879 real(kind=rp) :: wws(lx, lx, lx)
2880 real(kind=rp) :: wwt(lx, lx, lx)
2881
2882 integer :: e, i, j, k, l
2883 real(kind=rp) :: dj
2884 real(kind=rp) :: s11, s22, s33, s12, s13, s23
2885 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
2886
2887 !$omp do
2888 do e = 1, n
2889
2890 do j = 1, lx * lx
2891 do i = 1, lx
2892 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
2893 + dx(i,2) * u(2,j,1,e) &
2894 + dx(i,3) * u(3,j,1,e) &
2895 + dx(i,4) * u(4,j,1,e) &
2896 + dx(i,5) * u(5,j,1,e) &
2897 + dx(i,6) * u(6,j,1,e) &
2898 + dx(i,7) * u(7,j,1,e) &
2899 + dx(i,8) * u(8,j,1,e)
2900
2901 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
2902 + dx(i,2) * v(2,j,1,e) &
2903 + dx(i,3) * v(3,j,1,e) &
2904 + dx(i,4) * v(4,j,1,e) &
2905 + dx(i,5) * v(5,j,1,e) &
2906 + dx(i,6) * v(6,j,1,e) &
2907 + dx(i,7) * v(7,j,1,e) &
2908 + dx(i,8) * v(8,j,1,e)
2909
2910 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
2911 + dx(i,2) * w(2,j,1,e) &
2912 + dx(i,3) * w(3,j,1,e) &
2913 + dx(i,4) * w(4,j,1,e) &
2914 + dx(i,5) * w(5,j,1,e) &
2915 + dx(i,6) * w(6,j,1,e) &
2916 + dx(i,7) * w(7,j,1,e) &
2917 + dx(i,8) * w(8,j,1,e)
2918 end do
2919 end do
2920
2921 do k = 1, lx
2922 do j = 1, lx
2923 do i = 1, lx
2924 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
2925 + dy(j,2) * u(i,2,k,e) &
2926 + dy(j,3) * u(i,3,k,e) &
2927 + dy(j,4) * u(i,4,k,e) &
2928 + dy(j,5) * u(i,5,k,e) &
2929 + dy(j,6) * u(i,6,k,e) &
2930 + dy(j,7) * u(i,7,k,e) &
2931 + dy(j,8) * u(i,8,k,e)
2932
2933 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
2934 + dy(j,2) * v(i,2,k,e) &
2935 + dy(j,3) * v(i,3,k,e) &
2936 + dy(j,4) * v(i,4,k,e) &
2937 + dy(j,5) * v(i,5,k,e) &
2938 + dy(j,6) * v(i,6,k,e) &
2939 + dy(j,7) * v(i,7,k,e) &
2940 + dy(j,8) * v(i,8,k,e)
2941
2942 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
2943 + dy(j,2) * w(i,2,k,e) &
2944 + dy(j,3) * w(i,3,k,e) &
2945 + dy(j,4) * w(i,4,k,e) &
2946 + dy(j,5) * w(i,5,k,e) &
2947 + dy(j,6) * w(i,6,k,e) &
2948 + dy(j,7) * w(i,7,k,e) &
2949 + dy(j,8) * w(i,8,k,e)
2950 end do
2951 end do
2952 end do
2953
2954 do k = 1, lx
2955 do i = 1, lx*lx
2956 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
2957 + dz(k,2) * u(i,1,2,e) &
2958 + dz(k,3) * u(i,1,3,e) &
2959 + dz(k,4) * u(i,1,4,e) &
2960 + dz(k,5) * u(i,1,5,e) &
2961 + dz(k,6) * u(i,1,6,e) &
2962 + dz(k,7) * u(i,1,7,e) &
2963 + dz(k,8) * u(i,1,8,e)
2964
2965 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
2966 + dz(k,2) * v(i,1,2,e) &
2967 + dz(k,3) * v(i,1,3,e) &
2968 + dz(k,4) * v(i,1,4,e) &
2969 + dz(k,5) * v(i,1,5,e) &
2970 + dz(k,6) * v(i,1,6,e) &
2971 + dz(k,7) * v(i,1,7,e) &
2972 + dz(k,8) * v(i,1,8,e)
2973
2974 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
2975 + dz(k,2) * w(i,1,2,e) &
2976 + dz(k,3) * w(i,1,3,e) &
2977 + dz(k,4) * w(i,1,4,e) &
2978 + dz(k,5) * w(i,1,5,e) &
2979 + dz(k,6) * w(i,1,6,e) &
2980 + dz(k,7) * w(i,1,7,e) &
2981 + dz(k,8) * w(i,1,8,e)
2982 end do
2983 end do
2984
2985 do i = 1, lx*lx*lx
2986
2987 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
2988 + wut(i,1,1) * dtdx(i,1,1,e)
2989 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
2990 + wut(i,1,1) * dtdy(i,1,1,e)
2991 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
2992 + wut(i,1,1) * dtdz(i,1,1,e)
2993
2994 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
2995 + wvt(i,1,1) * dtdx(i,1,1,e)
2996 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
2997 + wvt(i,1,1) * dtdy(i,1,1,e)
2998 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
2999 + wvt(i,1,1) * dtdz(i,1,1,e)
3000
3001 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
3002 + wwt(i,1,1) * dtdx(i,1,1,e)
3003 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
3004 + wwt(i,1,1) * dtdy(i,1,1,e)
3005 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
3006 + wwt(i,1,1) * dtdz(i,1,1,e)
3007
3008 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
3009 s11 = dj*(u1 + u1)
3010 s22 = dj*(v2 + v2)
3011 s33 = dj*(w3 + w3)
3012 s12 = dj*(u2 + v1)
3013 s13 = dj*(u3 + w1)
3014 s23 = dj*(v3 + w2)
3015
3016 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
3017 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
3018 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
3019
3020 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
3021 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
3022 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
3023
3024 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
3025 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
3026 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
3027 end do
3028
3029 do j = 1, lx*lx
3030 do i = 1, lx
3031 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
3032 + dxt(i,2) * wur(2,j,1) &
3033 + dxt(i,3) * wur(3,j,1) &
3034 + dxt(i,4) * wur(4,j,1) &
3035 + dxt(i,5) * wur(5,j,1) &
3036 + dxt(i,6) * wur(6,j,1) &
3037 + dxt(i,7) * wur(7,j,1) &
3038 + dxt(i,8) * wur(8,j,1)
3039
3040 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
3041 + dxt(i,2) * wvr(2,j,1) &
3042 + dxt(i,3) * wvr(3,j,1) &
3043 + dxt(i,4) * wvr(4,j,1) &
3044 + dxt(i,5) * wvr(5,j,1) &
3045 + dxt(i,6) * wvr(6,j,1) &
3046 + dxt(i,7) * wvr(7,j,1) &
3047 + dxt(i,8) * wvr(8,j,1)
3048
3049 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
3050 + dxt(i,2) * wwr(2,j,1) &
3051 + dxt(i,3) * wwr(3,j,1) &
3052 + dxt(i,4) * wwr(4,j,1) &
3053 + dxt(i,5) * wwr(5,j,1) &
3054 + dxt(i,6) * wwr(6,j,1) &
3055 + dxt(i,7) * wwr(7,j,1) &
3056 + dxt(i,8) * wwr(8,j,1)
3057
3058 end do
3059 end do
3060
3061 do k = 1, lx
3062 do j = 1, lx
3063 do i = 1, lx
3064 au(i,j,k,e) = au(i,j,k,e) &
3065 + dyt(j,1) * wus(i,1,k) &
3066 + dyt(j,2) * wus(i,2,k) &
3067 + dyt(j,3) * wus(i,3,k) &
3068 + dyt(j,4) * wus(i,4,k) &
3069 + dyt(j,5) * wus(i,5,k) &
3070 + dyt(j,6) * wus(i,6,k) &
3071 + dyt(j,7) * wus(i,7,k) &
3072 + dyt(j,8) * wus(i,8,k)
3073
3074 av(i,j,k,e) = av(i,j,k,e) &
3075 + dyt(j,1) * wvs(i,1,k) &
3076 + dyt(j,2) * wvs(i,2,k) &
3077 + dyt(j,3) * wvs(i,3,k) &
3078 + dyt(j,4) * wvs(i,4,k) &
3079 + dyt(j,5) * wvs(i,5,k) &
3080 + dyt(j,6) * wvs(i,6,k) &
3081 + dyt(j,7) * wvs(i,7,k) &
3082 + dyt(j,8) * wvs(i,8,k)
3083
3084 aw(i,j,k,e) = aw(i,j,k,e) &
3085 + dyt(j,1) * wws(i,1,k) &
3086 + dyt(j,2) * wws(i,2,k) &
3087 + dyt(j,3) * wws(i,3,k) &
3088 + dyt(j,4) * wws(i,4,k) &
3089 + dyt(j,5) * wws(i,5,k) &
3090 + dyt(j,6) * wws(i,6,k) &
3091 + dyt(j,7) * wws(i,7,k) &
3092 + dyt(j,8) * wws(i,8,k)
3093 end do
3094 end do
3095 end do
3096
3097 if (ifh2) then
3098 do k = 1, lx
3099 do i = 1, lx*lx
3100 au(i,1,k,e) = au(i,1,k,e) &
3101 + dzt(k,1) * wut(i,1,1) &
3102 + dzt(k,2) * wut(i,1,2) &
3103 + dzt(k,3) * wut(i,1,3) &
3104 + dzt(k,4) * wut(i,1,4) &
3105 + dzt(k,5) * wut(i,1,5) &
3106 + dzt(k,6) * wut(i,1,6) &
3107 + dzt(k,7) * wut(i,1,7) &
3108 + dzt(k,8) * wut(i,1,8) &
3109 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
3110
3111 av(i,1,k,e) = av(i,1,k,e) &
3112 + dzt(k,1) * wvt(i,1,1) &
3113 + dzt(k,2) * wvt(i,1,2) &
3114 + dzt(k,3) * wvt(i,1,3) &
3115 + dzt(k,4) * wvt(i,1,4) &
3116 + dzt(k,5) * wvt(i,1,5) &
3117 + dzt(k,6) * wvt(i,1,6) &
3118 + dzt(k,7) * wvt(i,1,7) &
3119 + dzt(k,8) * wvt(i,1,8) &
3120 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
3121
3122 aw(i,1,k,e) = aw(i,1,k,e) &
3123 + dzt(k,1) * wwt(i,1,1) &
3124 + dzt(k,2) * wwt(i,1,2) &
3125 + dzt(k,3) * wwt(i,1,3) &
3126 + dzt(k,4) * wwt(i,1,4) &
3127 + dzt(k,5) * wwt(i,1,5) &
3128 + dzt(k,6) * wwt(i,1,6) &
3129 + dzt(k,7) * wwt(i,1,7) &
3130 + dzt(k,8) * wwt(i,1,8) &
3131 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
3132 end do
3133 end do
3134 else
3135 do k = 1, lx
3136 do i = 1, lx*lx
3137 au(i,1,k,e) = au(i,1,k,e) &
3138 + dzt(k,1) * wut(i,1,1) &
3139 + dzt(k,2) * wut(i,1,2) &
3140 + dzt(k,3) * wut(i,1,3) &
3141 + dzt(k,4) * wut(i,1,4) &
3142 + dzt(k,5) * wut(i,1,5) &
3143 + dzt(k,6) * wut(i,1,6) &
3144 + dzt(k,7) * wut(i,1,7) &
3145 + dzt(k,8) * wut(i,1,8)
3146
3147 av(i,1,k,e) = av(i,1,k,e) &
3148 + dzt(k,1) * wvt(i,1,1) &
3149 + dzt(k,2) * wvt(i,1,2) &
3150 + dzt(k,3) * wvt(i,1,3) &
3151 + dzt(k,4) * wvt(i,1,4) &
3152 + dzt(k,5) * wvt(i,1,5) &
3153 + dzt(k,6) * wvt(i,1,6) &
3154 + dzt(k,7) * wvt(i,1,7) &
3155 + dzt(k,8) * wvt(i,1,8)
3156
3157 aw(i,1,k,e) = aw(i,1,k,e) &
3158 + dzt(k,1) * wwt(i,1,1) &
3159 + dzt(k,2) * wwt(i,1,2) &
3160 + dzt(k,3) * wwt(i,1,3) &
3161 + dzt(k,4) * wwt(i,1,4) &
3162 + dzt(k,5) * wwt(i,1,5) &
3163 + dzt(k,6) * wwt(i,1,6) &
3164 + dzt(k,7) * wwt(i,1,7) &
3165 + dzt(k,8) * wwt(i,1,8)
3166 end do
3167 end do
3168 end if
3169
3170 end do
3171 !$omp end do
3172 end subroutine ax_helm_stress_lx8
3173
3174 subroutine ax_helm_stress_lx7(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
3175 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
3176 B, ifh2, jacinv, weights3, n)
3177 integer, parameter :: lx = 7
3178 integer, intent(in) :: n
3179 logical, intent(in) :: ifh2
3180 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
3181 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
3182 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
3183 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
3184 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
3185 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
3186 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
3187 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
3188 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
3189 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
3190 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
3191 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
3192 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
3193 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
3194 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
3195 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
3196 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
3197 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
3198 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
3199 real(kind=rp), intent(in) :: dx(lx, lx)
3200 real(kind=rp), intent(in) :: dy(lx, lx)
3201 real(kind=rp), intent(in) :: dz(lx, lx)
3202 real(kind=rp), intent(in) :: dxt(lx, lx)
3203 real(kind=rp), intent(in) :: dyt(lx, lx)
3204 real(kind=rp), intent(in) :: dzt(lx, lx)
3205 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
3206
3207 real(kind=rp) :: wur(lx, lx, lx)
3208 real(kind=rp) :: wus(lx, lx, lx)
3209 real(kind=rp) :: wut(lx, lx, lx)
3210 real(kind=rp) :: wvr(lx, lx, lx)
3211 real(kind=rp) :: wvs(lx, lx, lx)
3212 real(kind=rp) :: wvt(lx, lx, lx)
3213 real(kind=rp) :: wwr(lx, lx, lx)
3214 real(kind=rp) :: wws(lx, lx, lx)
3215 real(kind=rp) :: wwt(lx, lx, lx)
3216
3217 integer :: e, i, j, k, l
3218 real(kind=rp) :: dj
3219 real(kind=rp) :: s11, s22, s33, s12, s13, s23
3220 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
3221
3222 !$omp do
3223 do e = 1, n
3224
3225 do j = 1, lx * lx
3226 do i = 1, lx
3227 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
3228 + dx(i,2) * u(2,j,1,e) &
3229 + dx(i,3) * u(3,j,1,e) &
3230 + dx(i,4) * u(4,j,1,e) &
3231 + dx(i,5) * u(5,j,1,e) &
3232 + dx(i,6) * u(6,j,1,e) &
3233 + dx(i,7) * u(7,j,1,e)
3234
3235 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
3236 + dx(i,2) * v(2,j,1,e) &
3237 + dx(i,3) * v(3,j,1,e) &
3238 + dx(i,4) * v(4,j,1,e) &
3239 + dx(i,5) * v(5,j,1,e) &
3240 + dx(i,6) * v(6,j,1,e) &
3241 + dx(i,7) * v(7,j,1,e)
3242
3243 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
3244 + dx(i,2) * w(2,j,1,e) &
3245 + dx(i,3) * w(3,j,1,e) &
3246 + dx(i,4) * w(4,j,1,e) &
3247 + dx(i,5) * w(5,j,1,e) &
3248 + dx(i,6) * w(6,j,1,e) &
3249 + dx(i,7) * w(7,j,1,e)
3250 end do
3251 end do
3252
3253 do k = 1, lx
3254 do j = 1, lx
3255 do i = 1, lx
3256 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
3257 + dy(j,2) * u(i,2,k,e) &
3258 + dy(j,3) * u(i,3,k,e) &
3259 + dy(j,4) * u(i,4,k,e) &
3260 + dy(j,5) * u(i,5,k,e) &
3261 + dy(j,6) * u(i,6,k,e) &
3262 + dy(j,7) * u(i,7,k,e)
3263
3264 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
3265 + dy(j,2) * v(i,2,k,e) &
3266 + dy(j,3) * v(i,3,k,e) &
3267 + dy(j,4) * v(i,4,k,e) &
3268 + dy(j,5) * v(i,5,k,e) &
3269 + dy(j,6) * v(i,6,k,e) &
3270 + dy(j,7) * v(i,7,k,e)
3271
3272 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
3273 + dy(j,2) * w(i,2,k,e) &
3274 + dy(j,3) * w(i,3,k,e) &
3275 + dy(j,4) * w(i,4,k,e) &
3276 + dy(j,5) * w(i,5,k,e) &
3277 + dy(j,6) * w(i,6,k,e) &
3278 + dy(j,7) * w(i,7,k,e)
3279
3280 end do
3281 end do
3282 end do
3283
3284 do k = 1, lx
3285 do i = 1, lx*lx
3286 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
3287 + dz(k,2) * u(i,1,2,e) &
3288 + dz(k,3) * u(i,1,3,e) &
3289 + dz(k,4) * u(i,1,4,e) &
3290 + dz(k,5) * u(i,1,5,e) &
3291 + dz(k,6) * u(i,1,6,e) &
3292 + dz(k,7) * u(i,1,7,e)
3293
3294 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
3295 + dz(k,2) * v(i,1,2,e) &
3296 + dz(k,3) * v(i,1,3,e) &
3297 + dz(k,4) * v(i,1,4,e) &
3298 + dz(k,5) * v(i,1,5,e) &
3299 + dz(k,6) * v(i,1,6,e) &
3300 + dz(k,7) * v(i,1,7,e)
3301
3302 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
3303 + dz(k,2) * w(i,1,2,e) &
3304 + dz(k,3) * w(i,1,3,e) &
3305 + dz(k,4) * w(i,1,4,e) &
3306 + dz(k,5) * w(i,1,5,e) &
3307 + dz(k,6) * w(i,1,6,e) &
3308 + dz(k,7) * w(i,1,7,e)
3309 end do
3310 end do
3311
3312 do i = 1, lx*lx*lx
3313
3314 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
3315 + wut(i,1,1) * dtdx(i,1,1,e)
3316 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
3317 + wut(i,1,1) * dtdy(i,1,1,e)
3318 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
3319 + wut(i,1,1) * dtdz(i,1,1,e)
3320
3321 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
3322 + wvt(i,1,1) * dtdx(i,1,1,e)
3323 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
3324 + wvt(i,1,1) * dtdy(i,1,1,e)
3325 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
3326 + wvt(i,1,1) * dtdz(i,1,1,e)
3327
3328 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
3329 + wwt(i,1,1) * dtdx(i,1,1,e)
3330 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
3331 + wwt(i,1,1) * dtdy(i,1,1,e)
3332 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
3333 + wwt(i,1,1) * dtdz(i,1,1,e)
3334
3335 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
3336 s11 = dj*(u1 + u1)
3337 s22 = dj*(v2 + v2)
3338 s33 = dj*(w3 + w3)
3339 s12 = dj*(u2 + v1)
3340 s13 = dj*(u3 + w1)
3341 s23 = dj*(v3 + w2)
3342
3343 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
3344 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
3345 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
3346
3347 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
3348 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
3349 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
3350
3351 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
3352 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
3353 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
3354 end do
3355
3356 do j = 1, lx*lx
3357 do i = 1, lx
3358 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
3359 + dxt(i,2) * wur(2,j,1) &
3360 + dxt(i,3) * wur(3,j,1) &
3361 + dxt(i,4) * wur(4,j,1) &
3362 + dxt(i,5) * wur(5,j,1) &
3363 + dxt(i,6) * wur(6,j,1) &
3364 + dxt(i,7) * wur(7,j,1)
3365
3366 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
3367 + dxt(i,2) * wvr(2,j,1) &
3368 + dxt(i,3) * wvr(3,j,1) &
3369 + dxt(i,4) * wvr(4,j,1) &
3370 + dxt(i,5) * wvr(5,j,1) &
3371 + dxt(i,6) * wvr(6,j,1) &
3372 + dxt(i,7) * wvr(7,j,1)
3373
3374 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
3375 + dxt(i,2) * wwr(2,j,1) &
3376 + dxt(i,3) * wwr(3,j,1) &
3377 + dxt(i,4) * wwr(4,j,1) &
3378 + dxt(i,5) * wwr(5,j,1) &
3379 + dxt(i,6) * wwr(6,j,1) &
3380 + dxt(i,7) * wwr(7,j,1)
3381
3382 end do
3383 end do
3384
3385 do k = 1, lx
3386 do j = 1, lx
3387 do i = 1, lx
3388 au(i,j,k,e) = au(i,j,k,e) &
3389 + dyt(j,1) * wus(i,1,k) &
3390 + dyt(j,2) * wus(i,2,k) &
3391 + dyt(j,3) * wus(i,3,k) &
3392 + dyt(j,4) * wus(i,4,k) &
3393 + dyt(j,5) * wus(i,5,k) &
3394 + dyt(j,6) * wus(i,6,k) &
3395 + dyt(j,7) * wus(i,7,k)
3396
3397 av(i,j,k,e) = av(i,j,k,e) &
3398 + dyt(j,1) * wvs(i,1,k) &
3399 + dyt(j,2) * wvs(i,2,k) &
3400 + dyt(j,3) * wvs(i,3,k) &
3401 + dyt(j,4) * wvs(i,4,k) &
3402 + dyt(j,5) * wvs(i,5,k) &
3403 + dyt(j,6) * wvs(i,6,k) &
3404 + dyt(j,7) * wvs(i,7,k)
3405
3406 aw(i,j,k,e) = aw(i,j,k,e) &
3407 + dyt(j,1) * wws(i,1,k) &
3408 + dyt(j,2) * wws(i,2,k) &
3409 + dyt(j,3) * wws(i,3,k) &
3410 + dyt(j,4) * wws(i,4,k) &
3411 + dyt(j,5) * wws(i,5,k) &
3412 + dyt(j,6) * wws(i,6,k) &
3413 + dyt(j,7) * wws(i,7,k)
3414 end do
3415 end do
3416 end do
3417
3418 if (ifh2) then
3419 do k = 1, lx
3420 do i = 1, lx*lx
3421 au(i,1,k,e) = au(i,1,k,e) &
3422 + dzt(k,1) * wut(i,1,1) &
3423 + dzt(k,2) * wut(i,1,2) &
3424 + dzt(k,3) * wut(i,1,3) &
3425 + dzt(k,4) * wut(i,1,4) &
3426 + dzt(k,5) * wut(i,1,5) &
3427 + dzt(k,6) * wut(i,1,6) &
3428 + dzt(k,7) * wut(i,1,7) &
3429 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
3430
3431 av(i,1,k,e) = av(i,1,k,e) &
3432 + dzt(k,1) * wvt(i,1,1) &
3433 + dzt(k,2) * wvt(i,1,2) &
3434 + dzt(k,3) * wvt(i,1,3) &
3435 + dzt(k,4) * wvt(i,1,4) &
3436 + dzt(k,5) * wvt(i,1,5) &
3437 + dzt(k,6) * wvt(i,1,6) &
3438 + dzt(k,7) * wvt(i,1,7) &
3439 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
3440
3441 aw(i,1,k,e) = aw(i,1,k,e) &
3442 + dzt(k,1) * wwt(i,1,1) &
3443 + dzt(k,2) * wwt(i,1,2) &
3444 + dzt(k,3) * wwt(i,1,3) &
3445 + dzt(k,4) * wwt(i,1,4) &
3446 + dzt(k,5) * wwt(i,1,5) &
3447 + dzt(k,6) * wwt(i,1,6) &
3448 + dzt(k,7) * wwt(i,1,7) &
3449 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
3450 end do
3451 end do
3452 else
3453 do k = 1, lx
3454 do i = 1, lx*lx
3455 au(i,1,k,e) = au(i,1,k,e) &
3456 + dzt(k,1) * wut(i,1,1) &
3457 + dzt(k,2) * wut(i,1,2) &
3458 + dzt(k,3) * wut(i,1,3) &
3459 + dzt(k,4) * wut(i,1,4) &
3460 + dzt(k,5) * wut(i,1,5) &
3461 + dzt(k,6) * wut(i,1,6) &
3462 + dzt(k,7) * wut(i,1,7)
3463
3464 av(i,1,k,e) = av(i,1,k,e) &
3465 + dzt(k,1) * wvt(i,1,1) &
3466 + dzt(k,2) * wvt(i,1,2) &
3467 + dzt(k,3) * wvt(i,1,3) &
3468 + dzt(k,4) * wvt(i,1,4) &
3469 + dzt(k,5) * wvt(i,1,5) &
3470 + dzt(k,6) * wvt(i,1,6) &
3471 + dzt(k,7) * wvt(i,1,7)
3472
3473 aw(i,1,k,e) = aw(i,1,k,e) &
3474 + dzt(k,1) * wwt(i,1,1) &
3475 + dzt(k,2) * wwt(i,1,2) &
3476 + dzt(k,3) * wwt(i,1,3) &
3477 + dzt(k,4) * wwt(i,1,4) &
3478 + dzt(k,5) * wwt(i,1,5) &
3479 + dzt(k,6) * wwt(i,1,6) &
3480 + dzt(k,7) * wwt(i,1,7)
3481 end do
3482 end do
3483 end if
3484
3485 end do
3486 !$omp end do
3487 end subroutine ax_helm_stress_lx7
3488
3489 subroutine ax_helm_stress_lx6(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
3490 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
3491 B, ifh2, jacinv, weights3, n)
3492 integer, parameter :: lx = 6
3493 integer, intent(in) :: n
3494 logical, intent(in) :: ifh2
3495 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
3496 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
3497 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
3498 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
3499 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
3500 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
3501 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
3502 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
3503 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
3504 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
3505 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
3506 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
3507 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
3508 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
3509 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
3510 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
3511 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
3512 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
3513 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
3514 real(kind=rp), intent(in) :: dx(lx, lx)
3515 real(kind=rp), intent(in) :: dy(lx, lx)
3516 real(kind=rp), intent(in) :: dz(lx, lx)
3517 real(kind=rp), intent(in) :: dxt(lx, lx)
3518 real(kind=rp), intent(in) :: dyt(lx, lx)
3519 real(kind=rp), intent(in) :: dzt(lx, lx)
3520 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
3521
3522 real(kind=rp) :: wur(lx, lx, lx)
3523 real(kind=rp) :: wus(lx, lx, lx)
3524 real(kind=rp) :: wut(lx, lx, lx)
3525 real(kind=rp) :: wvr(lx, lx, lx)
3526 real(kind=rp) :: wvs(lx, lx, lx)
3527 real(kind=rp) :: wvt(lx, lx, lx)
3528 real(kind=rp) :: wwr(lx, lx, lx)
3529 real(kind=rp) :: wws(lx, lx, lx)
3530 real(kind=rp) :: wwt(lx, lx, lx)
3531
3532 integer :: e, i, j, k, l
3533 real(kind=rp) :: dj
3534 real(kind=rp) :: s11, s22, s33, s12, s13, s23
3535 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
3536
3537 !$omp do
3538 do e = 1, n
3539
3540 do j = 1, lx * lx
3541 do i = 1, lx
3542 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
3543 + dx(i,2) * u(2,j,1,e) &
3544 + dx(i,3) * u(3,j,1,e) &
3545 + dx(i,4) * u(4,j,1,e) &
3546 + dx(i,5) * u(5,j,1,e) &
3547 + dx(i,6) * u(6,j,1,e)
3548
3549 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
3550 + dx(i,2) * v(2,j,1,e) &
3551 + dx(i,3) * v(3,j,1,e) &
3552 + dx(i,4) * v(4,j,1,e) &
3553 + dx(i,5) * v(5,j,1,e) &
3554 + dx(i,6) * v(6,j,1,e)
3555
3556 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
3557 + dx(i,2) * w(2,j,1,e) &
3558 + dx(i,3) * w(3,j,1,e) &
3559 + dx(i,4) * w(4,j,1,e) &
3560 + dx(i,5) * w(5,j,1,e) &
3561 + dx(i,6) * w(6,j,1,e)
3562 end do
3563 end do
3564
3565 do k = 1, lx
3566 do j = 1, lx
3567 do i = 1, lx
3568 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
3569 + dy(j,2) * u(i,2,k,e) &
3570 + dy(j,3) * u(i,3,k,e) &
3571 + dy(j,4) * u(i,4,k,e) &
3572 + dy(j,5) * u(i,5,k,e) &
3573 + dy(j,6) * u(i,6,k,e)
3574
3575 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
3576 + dy(j,2) * v(i,2,k,e) &
3577 + dy(j,3) * v(i,3,k,e) &
3578 + dy(j,4) * v(i,4,k,e) &
3579 + dy(j,5) * v(i,5,k,e) &
3580 + dy(j,6) * v(i,6,k,e)
3581
3582 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
3583 + dy(j,2) * w(i,2,k,e) &
3584 + dy(j,3) * w(i,3,k,e) &
3585 + dy(j,4) * w(i,4,k,e) &
3586 + dy(j,5) * w(i,5,k,e) &
3587 + dy(j,6) * w(i,6,k,e)
3588 end do
3589 end do
3590 end do
3591
3592 do k = 1, lx
3593 do i = 1, lx*lx
3594 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
3595 + dz(k,2) * u(i,1,2,e) &
3596 + dz(k,3) * u(i,1,3,e) &
3597 + dz(k,4) * u(i,1,4,e) &
3598 + dz(k,5) * u(i,1,5,e) &
3599 + dz(k,6) * u(i,1,6,e)
3600
3601 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
3602 + dz(k,2) * v(i,1,2,e) &
3603 + dz(k,3) * v(i,1,3,e) &
3604 + dz(k,4) * v(i,1,4,e) &
3605 + dz(k,5) * v(i,1,5,e) &
3606 + dz(k,6) * v(i,1,6,e)
3607
3608 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
3609 + dz(k,2) * w(i,1,2,e) &
3610 + dz(k,3) * w(i,1,3,e) &
3611 + dz(k,4) * w(i,1,4,e) &
3612 + dz(k,5) * w(i,1,5,e) &
3613 + dz(k,6) * w(i,1,6,e)
3614 end do
3615 end do
3616
3617 do i = 1, lx*lx*lx
3618
3619 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
3620 + wut(i,1,1) * dtdx(i,1,1,e)
3621 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
3622 + wut(i,1,1) * dtdy(i,1,1,e)
3623 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
3624 + wut(i,1,1) * dtdz(i,1,1,e)
3625
3626 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
3627 + wvt(i,1,1) * dtdx(i,1,1,e)
3628 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
3629 + wvt(i,1,1) * dtdy(i,1,1,e)
3630 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
3631 + wvt(i,1,1) * dtdz(i,1,1,e)
3632
3633 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
3634 + wwt(i,1,1) * dtdx(i,1,1,e)
3635 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
3636 + wwt(i,1,1) * dtdy(i,1,1,e)
3637 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
3638 + wwt(i,1,1) * dtdz(i,1,1,e)
3639
3640 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
3641 s11 = dj*(u1 + u1)
3642 s22 = dj*(v2 + v2)
3643 s33 = dj*(w3 + w3)
3644 s12 = dj*(u2 + v1)
3645 s13 = dj*(u3 + w1)
3646 s23 = dj*(v3 + w2)
3647
3648 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
3649 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
3650 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
3651
3652 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
3653 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
3654 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
3655
3656 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
3657 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
3658 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
3659 end do
3660
3661 do j = 1, lx*lx
3662 do i = 1, lx
3663 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
3664 + dxt(i,2) * wur(2,j,1) &
3665 + dxt(i,3) * wur(3,j,1) &
3666 + dxt(i,4) * wur(4,j,1) &
3667 + dxt(i,5) * wur(5,j,1) &
3668 + dxt(i,6) * wur(6,j,1)
3669
3670 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
3671 + dxt(i,2) * wvr(2,j,1) &
3672 + dxt(i,3) * wvr(3,j,1) &
3673 + dxt(i,4) * wvr(4,j,1) &
3674 + dxt(i,5) * wvr(5,j,1) &
3675 + dxt(i,6) * wvr(6,j,1)
3676
3677 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
3678 + dxt(i,2) * wwr(2,j,1) &
3679 + dxt(i,3) * wwr(3,j,1) &
3680 + dxt(i,4) * wwr(4,j,1) &
3681 + dxt(i,5) * wwr(5,j,1) &
3682 + dxt(i,6) * wwr(6,j,1)
3683 end do
3684 end do
3685
3686 do k = 1, lx
3687 do j = 1, lx
3688 do i = 1, lx
3689 au(i,j,k,e) = au(i,j,k,e) &
3690 + dyt(j,1) * wus(i,1,k) &
3691 + dyt(j,2) * wus(i,2,k) &
3692 + dyt(j,3) * wus(i,3,k) &
3693 + dyt(j,4) * wus(i,4,k) &
3694 + dyt(j,5) * wus(i,5,k) &
3695 + dyt(j,6) * wus(i,6,k)
3696
3697 av(i,j,k,e) = av(i,j,k,e) &
3698 + dyt(j,1) * wvs(i,1,k) &
3699 + dyt(j,2) * wvs(i,2,k) &
3700 + dyt(j,3) * wvs(i,3,k) &
3701 + dyt(j,4) * wvs(i,4,k) &
3702 + dyt(j,5) * wvs(i,5,k) &
3703 + dyt(j,6) * wvs(i,6,k)
3704
3705 aw(i,j,k,e) = aw(i,j,k,e) &
3706 + dyt(j,1) * wws(i,1,k) &
3707 + dyt(j,2) * wws(i,2,k) &
3708 + dyt(j,3) * wws(i,3,k) &
3709 + dyt(j,4) * wws(i,4,k) &
3710 + dyt(j,5) * wws(i,5,k) &
3711 + dyt(j,6) * wws(i,6,k)
3712 end do
3713 end do
3714 end do
3715
3716 if (ifh2) then
3717 do k = 1, lx
3718 do i = 1, lx*lx
3719 au(i,1,k,e) = au(i,1,k,e) &
3720 + dzt(k,1) * wut(i,1,1) &
3721 + dzt(k,2) * wut(i,1,2) &
3722 + dzt(k,3) * wut(i,1,3) &
3723 + dzt(k,4) * wut(i,1,4) &
3724 + dzt(k,5) * wut(i,1,5) &
3725 + dzt(k,6) * wut(i,1,6) &
3726 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
3727
3728 av(i,1,k,e) = av(i,1,k,e) &
3729 + dzt(k,1) * wvt(i,1,1) &
3730 + dzt(k,2) * wvt(i,1,2) &
3731 + dzt(k,3) * wvt(i,1,3) &
3732 + dzt(k,4) * wvt(i,1,4) &
3733 + dzt(k,5) * wvt(i,1,5) &
3734 + dzt(k,6) * wvt(i,1,6) &
3735 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
3736
3737 aw(i,1,k,e) = aw(i,1,k,e) &
3738 + dzt(k,1) * wwt(i,1,1) &
3739 + dzt(k,2) * wwt(i,1,2) &
3740 + dzt(k,3) * wwt(i,1,3) &
3741 + dzt(k,4) * wwt(i,1,4) &
3742 + dzt(k,5) * wwt(i,1,5) &
3743 + dzt(k,6) * wwt(i,1,6) &
3744 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
3745 end do
3746 end do
3747 else
3748 do k = 1, lx
3749 do i = 1, lx*lx
3750 au(i,1,k,e) = au(i,1,k,e) &
3751 + dzt(k,1) * wut(i,1,1) &
3752 + dzt(k,2) * wut(i,1,2) &
3753 + dzt(k,3) * wut(i,1,3) &
3754 + dzt(k,4) * wut(i,1,4) &
3755 + dzt(k,5) * wut(i,1,5) &
3756 + dzt(k,6) * wut(i,1,6)
3757
3758 av(i,1,k,e) = av(i,1,k,e) &
3759 + dzt(k,1) * wvt(i,1,1) &
3760 + dzt(k,2) * wvt(i,1,2) &
3761 + dzt(k,3) * wvt(i,1,3) &
3762 + dzt(k,4) * wvt(i,1,4) &
3763 + dzt(k,5) * wvt(i,1,5) &
3764 + dzt(k,6) * wvt(i,1,6)
3765
3766 aw(i,1,k,e) = aw(i,1,k,e) &
3767 + dzt(k,1) * wwt(i,1,1) &
3768 + dzt(k,2) * wwt(i,1,2) &
3769 + dzt(k,3) * wwt(i,1,3) &
3770 + dzt(k,4) * wwt(i,1,4) &
3771 + dzt(k,5) * wwt(i,1,5) &
3772 + dzt(k,6) * wwt(i,1,6)
3773 end do
3774 end do
3775 end if
3776
3777 end do
3778 !$omp end do
3779 end subroutine ax_helm_stress_lx6
3780
3781 subroutine ax_helm_stress_lx5(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
3782 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
3783 B, ifh2, jacinv, weights3, n)
3784 integer, parameter :: lx = 5
3785 integer, intent(in) :: n
3786 logical, intent(in) :: ifh2
3787 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
3788 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
3789 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
3790 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
3791 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
3792 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
3793 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
3794 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
3795 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
3796 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
3797 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
3798 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
3799 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
3800 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
3801 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
3802 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
3803 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
3804 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
3805 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
3806 real(kind=rp), intent(in) :: dx(lx, lx)
3807 real(kind=rp), intent(in) :: dy(lx, lx)
3808 real(kind=rp), intent(in) :: dz(lx, lx)
3809 real(kind=rp), intent(in) :: dxt(lx, lx)
3810 real(kind=rp), intent(in) :: dyt(lx, lx)
3811 real(kind=rp), intent(in) :: dzt(lx, lx)
3812 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
3813
3814 real(kind=rp) :: wur(lx, lx, lx)
3815 real(kind=rp) :: wus(lx, lx, lx)
3816 real(kind=rp) :: wut(lx, lx, lx)
3817 real(kind=rp) :: wvr(lx, lx, lx)
3818 real(kind=rp) :: wvs(lx, lx, lx)
3819 real(kind=rp) :: wvt(lx, lx, lx)
3820 real(kind=rp) :: wwr(lx, lx, lx)
3821 real(kind=rp) :: wws(lx, lx, lx)
3822 real(kind=rp) :: wwt(lx, lx, lx)
3823
3824 integer :: e, i, j, k, l
3825 real(kind=rp) :: dj
3826 real(kind=rp) :: s11, s22, s33, s12, s13, s23
3827 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
3828
3829 !$omp do
3830 do e = 1, n
3831
3832 do j = 1, lx * lx
3833 do i = 1, lx
3834 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
3835 + dx(i,2) * u(2,j,1,e) &
3836 + dx(i,3) * u(3,j,1,e) &
3837 + dx(i,4) * u(4,j,1,e) &
3838 + dx(i,5) * u(5,j,1,e)
3839
3840 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
3841 + dx(i,2) * v(2,j,1,e) &
3842 + dx(i,3) * v(3,j,1,e) &
3843 + dx(i,4) * v(4,j,1,e) &
3844 + dx(i,5) * v(5,j,1,e)
3845
3846 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
3847 + dx(i,2) * w(2,j,1,e) &
3848 + dx(i,3) * w(3,j,1,e) &
3849 + dx(i,4) * w(4,j,1,e) &
3850 + dx(i,5) * w(5,j,1,e)
3851 end do
3852 end do
3853
3854 do k = 1, lx
3855 do j = 1, lx
3856 do i = 1, lx
3857 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
3858 + dy(j,2) * u(i,2,k,e) &
3859 + dy(j,3) * u(i,3,k,e) &
3860 + dy(j,4) * u(i,4,k,e) &
3861 + dy(j,5) * u(i,5,k,e)
3862
3863 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
3864 + dy(j,2) * v(i,2,k,e) &
3865 + dy(j,3) * v(i,3,k,e) &
3866 + dy(j,4) * v(i,4,k,e) &
3867 + dy(j,5) * v(i,5,k,e)
3868
3869 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
3870 + dy(j,2) * w(i,2,k,e) &
3871 + dy(j,3) * w(i,3,k,e) &
3872 + dy(j,4) * w(i,4,k,e) &
3873 + dy(j,5) * w(i,5,k,e)
3874 end do
3875 end do
3876 end do
3877
3878 do k = 1, lx
3879 do i = 1, lx*lx
3880 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
3881 + dz(k,2) * u(i,1,2,e) &
3882 + dz(k,3) * u(i,1,3,e) &
3883 + dz(k,4) * u(i,1,4,e) &
3884 + dz(k,5) * u(i,1,5,e)
3885
3886 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
3887 + dz(k,2) * v(i,1,2,e) &
3888 + dz(k,3) * v(i,1,3,e) &
3889 + dz(k,4) * v(i,1,4,e) &
3890 + dz(k,5) * v(i,1,5,e)
3891
3892 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
3893 + dz(k,2) * w(i,1,2,e) &
3894 + dz(k,3) * w(i,1,3,e) &
3895 + dz(k,4) * w(i,1,4,e) &
3896 + dz(k,5) * w(i,1,5,e)
3897 end do
3898 end do
3899
3900 do i = 1, lx*lx*lx
3901
3902 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
3903 + wut(i,1,1) * dtdx(i,1,1,e)
3904 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
3905 + wut(i,1,1) * dtdy(i,1,1,e)
3906 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
3907 + wut(i,1,1) * dtdz(i,1,1,e)
3908
3909 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
3910 + wvt(i,1,1) * dtdx(i,1,1,e)
3911 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
3912 + wvt(i,1,1) * dtdy(i,1,1,e)
3913 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
3914 + wvt(i,1,1) * dtdz(i,1,1,e)
3915
3916 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
3917 + wwt(i,1,1) * dtdx(i,1,1,e)
3918 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
3919 + wwt(i,1,1) * dtdy(i,1,1,e)
3920 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
3921 + wwt(i,1,1) * dtdz(i,1,1,e)
3922
3923 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
3924 s11 = dj*(u1 + u1)
3925 s22 = dj*(v2 + v2)
3926 s33 = dj*(w3 + w3)
3927 s12 = dj*(u2 + v1)
3928 s13 = dj*(u3 + w1)
3929 s23 = dj*(v3 + w2)
3930
3931 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
3932 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
3933 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
3934
3935 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
3936 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
3937 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
3938
3939 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
3940 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
3941 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
3942 end do
3943
3944 do j = 1, lx*lx
3945 do i = 1, lx
3946 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
3947 + dxt(i,2) * wur(2,j,1) &
3948 + dxt(i,3) * wur(3,j,1) &
3949 + dxt(i,4) * wur(4,j,1) &
3950 + dxt(i,5) * wur(5,j,1)
3951
3952 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
3953 + dxt(i,2) * wvr(2,j,1) &
3954 + dxt(i,3) * wvr(3,j,1) &
3955 + dxt(i,4) * wvr(4,j,1) &
3956 + dxt(i,5) * wvr(5,j,1)
3957
3958 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
3959 + dxt(i,2) * wwr(2,j,1) &
3960 + dxt(i,3) * wwr(3,j,1) &
3961 + dxt(i,4) * wwr(4,j,1) &
3962 + dxt(i,5) * wwr(5,j,1)
3963
3964 end do
3965 end do
3966
3967 do k = 1, lx
3968 do j = 1, lx
3969 do i = 1, lx
3970 au(i,j,k,e) = au(i,j,k,e) &
3971 + dyt(j,1) * wus(i,1,k) &
3972 + dyt(j,2) * wus(i,2,k) &
3973 + dyt(j,3) * wus(i,3,k) &
3974 + dyt(j,4) * wus(i,4,k) &
3975 + dyt(j,5) * wus(i,5,k)
3976
3977 av(i,j,k,e) = av(i,j,k,e) &
3978 + dyt(j,1) * wvs(i,1,k) &
3979 + dyt(j,2) * wvs(i,2,k) &
3980 + dyt(j,3) * wvs(i,3,k) &
3981 + dyt(j,4) * wvs(i,4,k) &
3982 + dyt(j,5) * wvs(i,5,k)
3983
3984 aw(i,j,k,e) = aw(i,j,k,e) &
3985 + dyt(j,1) * wws(i,1,k) &
3986 + dyt(j,2) * wws(i,2,k) &
3987 + dyt(j,3) * wws(i,3,k) &
3988 + dyt(j,4) * wws(i,4,k) &
3989 + dyt(j,5) * wws(i,5,k)
3990 end do
3991 end do
3992 end do
3993
3994 if (ifh2) then
3995 do k = 1, lx
3996 do i = 1, lx*lx
3997 au(i,1,k,e) = au(i,1,k,e) &
3998 + dzt(k,1) * wut(i,1,1) &
3999 + dzt(k,2) * wut(i,1,2) &
4000 + dzt(k,3) * wut(i,1,3) &
4001 + dzt(k,4) * wut(i,1,4) &
4002 + dzt(k,5) * wut(i,1,5) &
4003 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
4004
4005 av(i,1,k,e) = av(i,1,k,e) &
4006 + dzt(k,1) * wvt(i,1,1) &
4007 + dzt(k,2) * wvt(i,1,2) &
4008 + dzt(k,3) * wvt(i,1,3) &
4009 + dzt(k,4) * wvt(i,1,4) &
4010 + dzt(k,5) * wvt(i,1,5) &
4011 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
4012
4013 aw(i,1,k,e) = aw(i,1,k,e) &
4014 + dzt(k,1) * wwt(i,1,1) &
4015 + dzt(k,2) * wwt(i,1,2) &
4016 + dzt(k,3) * wwt(i,1,3) &
4017 + dzt(k,4) * wwt(i,1,4) &
4018 + dzt(k,5) * wwt(i,1,5) &
4019 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
4020 end do
4021 end do
4022 else
4023 do k = 1, lx
4024 do i = 1, lx*lx
4025 au(i,1,k,e) = au(i,1,k,e) &
4026 + dzt(k,1) * wut(i,1,1) &
4027 + dzt(k,2) * wut(i,1,2) &
4028 + dzt(k,3) * wut(i,1,3) &
4029 + dzt(k,4) * wut(i,1,4) &
4030 + dzt(k,5) * wut(i,1,5)
4031
4032 av(i,1,k,e) = av(i,1,k,e) &
4033 + dzt(k,1) * wvt(i,1,1) &
4034 + dzt(k,2) * wvt(i,1,2) &
4035 + dzt(k,3) * wvt(i,1,3) &
4036 + dzt(k,4) * wvt(i,1,4) &
4037 + dzt(k,5) * wvt(i,1,5)
4038
4039 aw(i,1,k,e) = aw(i,1,k,e) &
4040 + dzt(k,1) * wwt(i,1,1) &
4041 + dzt(k,2) * wwt(i,1,2) &
4042 + dzt(k,3) * wwt(i,1,3) &
4043 + dzt(k,4) * wwt(i,1,4) &
4044 + dzt(k,5) * wwt(i,1,5)
4045 end do
4046 end do
4047 end if
4048
4049 end do
4050 !$omp end do
4051 end subroutine ax_helm_stress_lx5
4052
4053 subroutine ax_helm_stress_lx4(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
4054 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
4055 B, ifh2, jacinv, weights3, n)
4056 integer, parameter :: lx = 4
4057 integer, intent(in) :: n
4058 logical, intent(in) :: ifh2
4059 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
4060 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
4061 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
4062 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
4063 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
4064 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
4065 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
4066 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
4067 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
4068 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
4069 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
4070 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
4071 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
4072 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
4073 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
4074 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
4075 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
4076 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
4077 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
4078 real(kind=rp), intent(in) :: dx(lx, lx)
4079 real(kind=rp), intent(in) :: dy(lx, lx)
4080 real(kind=rp), intent(in) :: dz(lx, lx)
4081 real(kind=rp), intent(in) :: dxt(lx, lx)
4082 real(kind=rp), intent(in) :: dyt(lx, lx)
4083 real(kind=rp), intent(in) :: dzt(lx, lx)
4084 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
4085
4086 real(kind=rp) :: wur(lx, lx, lx)
4087 real(kind=rp) :: wus(lx, lx, lx)
4088 real(kind=rp) :: wut(lx, lx, lx)
4089 real(kind=rp) :: wvr(lx, lx, lx)
4090 real(kind=rp) :: wvs(lx, lx, lx)
4091 real(kind=rp) :: wvt(lx, lx, lx)
4092 real(kind=rp) :: wwr(lx, lx, lx)
4093 real(kind=rp) :: wws(lx, lx, lx)
4094 real(kind=rp) :: wwt(lx, lx, lx)
4095
4096 integer :: e, i, j, k, l
4097 real(kind=rp) :: dj
4098 real(kind=rp) :: s11, s22, s33, s12, s13, s23
4099 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
4100
4101 !$omp do
4102 do e = 1, n
4103
4104 do j = 1, lx * lx
4105 do i = 1, lx
4106 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
4107 + dx(i,2) * u(2,j,1,e) &
4108 + dx(i,3) * u(3,j,1,e) &
4109 + dx(i,4) * u(4,j,1,e)
4110
4111 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
4112 + dx(i,2) * v(2,j,1,e) &
4113 + dx(i,3) * v(3,j,1,e) &
4114 + dx(i,4) * v(4,j,1,e)
4115
4116 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
4117 + dx(i,2) * w(2,j,1,e) &
4118 + dx(i,3) * w(3,j,1,e) &
4119 + dx(i,4) * w(4,j,1,e)
4120 end do
4121 end do
4122
4123 do k = 1, lx
4124 do j = 1, lx
4125 do i = 1, lx
4126 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
4127 + dy(j,2) * u(i,2,k,e) &
4128 + dy(j,3) * u(i,3,k,e) &
4129 + dy(j,4) * u(i,4,k,e)
4130
4131 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
4132 + dy(j,2) * v(i,2,k,e) &
4133 + dy(j,3) * v(i,3,k,e) &
4134 + dy(j,4) * v(i,4,k,e)
4135
4136 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
4137 + dy(j,2) * w(i,2,k,e) &
4138 + dy(j,3) * w(i,3,k,e) &
4139 + dy(j,4) * w(i,4,k,e)
4140 end do
4141 end do
4142 end do
4143
4144 do k = 1, lx
4145 do i = 1, lx*lx
4146 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
4147 + dz(k,2) * u(i,1,2,e) &
4148 + dz(k,3) * u(i,1,3,e) &
4149 + dz(k,4) * u(i,1,4,e)
4150
4151 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
4152 + dz(k,2) * v(i,1,2,e) &
4153 + dz(k,3) * v(i,1,3,e) &
4154 + dz(k,4) * v(i,1,4,e)
4155
4156 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
4157 + dz(k,2) * w(i,1,2,e) &
4158 + dz(k,3) * w(i,1,3,e) &
4159 + dz(k,4) * w(i,1,4,e)
4160 end do
4161 end do
4162
4163 do i = 1, lx*lx*lx
4164
4165 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
4166 + wut(i,1,1) * dtdx(i,1,1,e)
4167 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
4168 + wut(i,1,1) * dtdy(i,1,1,e)
4169 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
4170 + wut(i,1,1) * dtdz(i,1,1,e)
4171
4172 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
4173 + wvt(i,1,1) * dtdx(i,1,1,e)
4174 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
4175 + wvt(i,1,1) * dtdy(i,1,1,e)
4176 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
4177 + wvt(i,1,1) * dtdz(i,1,1,e)
4178
4179 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
4180 + wwt(i,1,1) * dtdx(i,1,1,e)
4181 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
4182 + wwt(i,1,1) * dtdy(i,1,1,e)
4183 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
4184 + wwt(i,1,1) * dtdz(i,1,1,e)
4185
4186 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
4187 s11 = dj*(u1 + u1)
4188 s22 = dj*(v2 + v2)
4189 s33 = dj*(w3 + w3)
4190 s12 = dj*(u2 + v1)
4191 s13 = dj*(u3 + w1)
4192 s23 = dj*(v3 + w2)
4193
4194 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
4195 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
4196 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
4197
4198 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
4199 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
4200 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
4201
4202 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
4203 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
4204 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
4205 end do
4206
4207 do j = 1, lx*lx
4208 do i = 1, lx
4209 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
4210 + dxt(i,2) * wur(2,j,1) &
4211 + dxt(i,3) * wur(3,j,1) &
4212 + dxt(i,4) * wur(4,j,1)
4213
4214 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
4215 + dxt(i,2) * wvr(2,j,1) &
4216 + dxt(i,3) * wvr(3,j,1) &
4217 + dxt(i,4) * wvr(4,j,1)
4218
4219 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
4220 + dxt(i,2) * wwr(2,j,1) &
4221 + dxt(i,3) * wwr(3,j,1) &
4222 + dxt(i,4) * wwr(4,j,1)
4223 end do
4224 end do
4225
4226 do k = 1, lx
4227 do j = 1, lx
4228 do i = 1, lx
4229 au(i,j,k,e) = au(i,j,k,e) &
4230 + dyt(j,1) * wus(i,1,k) &
4231 + dyt(j,2) * wus(i,2,k) &
4232 + dyt(j,3) * wus(i,3,k) &
4233 + dyt(j,4) * wus(i,4,k)
4234
4235 av(i,j,k,e) = av(i,j,k,e) &
4236 + dyt(j,1) * wvs(i,1,k) &
4237 + dyt(j,2) * wvs(i,2,k) &
4238 + dyt(j,3) * wvs(i,3,k) &
4239 + dyt(j,4) * wvs(i,4,k)
4240
4241 aw(i,j,k,e) = aw(i,j,k,e) &
4242 + dyt(j,1) * wws(i,1,k) &
4243 + dyt(j,2) * wws(i,2,k) &
4244 + dyt(j,3) * wws(i,3,k) &
4245 + dyt(j,4) * wws(i,4,k)
4246 end do
4247 end do
4248 end do
4249
4250 if (ifh2) then
4251 do k = 1, lx
4252 do i = 1, lx*lx
4253 au(i,1,k,e) = au(i,1,k,e) &
4254 + dzt(k,1) * wut(i,1,1) &
4255 + dzt(k,2) * wut(i,1,2) &
4256 + dzt(k,3) * wut(i,1,3) &
4257 + dzt(k,4) * wut(i,1,4) &
4258 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
4259
4260 av(i,1,k,e) = av(i,1,k,e) &
4261 + dzt(k,1) * wvt(i,1,1) &
4262 + dzt(k,2) * wvt(i,1,2) &
4263 + dzt(k,3) * wvt(i,1,3) &
4264 + dzt(k,4) * wvt(i,1,4) &
4265 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
4266
4267 aw(i,1,k,e) = aw(i,1,k,e) &
4268 + dzt(k,1) * wwt(i,1,1) &
4269 + dzt(k,2) * wwt(i,1,2) &
4270 + dzt(k,3) * wwt(i,1,3) &
4271 + dzt(k,4) * wwt(i,1,4) &
4272 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
4273 end do
4274 end do
4275 else
4276 do k = 1, lx
4277 do i = 1, lx*lx
4278 au(i,1,k,e) = au(i,1,k,e) &
4279 + dzt(k,1) * wut(i,1,1) &
4280 + dzt(k,2) * wut(i,1,2) &
4281 + dzt(k,3) * wut(i,1,3) &
4282 + dzt(k,4) * wut(i,1,4)
4283
4284 av(i,1,k,e) = av(i,1,k,e) &
4285 + dzt(k,1) * wvt(i,1,1) &
4286 + dzt(k,2) * wvt(i,1,2) &
4287 + dzt(k,3) * wvt(i,1,3) &
4288 + dzt(k,4) * wvt(i,1,4)
4289
4290 aw(i,1,k,e) = aw(i,1,k,e) &
4291 + dzt(k,1) * wwt(i,1,1) &
4292 + dzt(k,2) * wwt(i,1,2) &
4293 + dzt(k,3) * wwt(i,1,3) &
4294 + dzt(k,4) * wwt(i,1,4)
4295 end do
4296 end do
4297 end if
4298
4299 end do
4300 !$omp end do
4301 end subroutine ax_helm_stress_lx4
4302
4303 subroutine ax_helm_stress_lx3(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
4304 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
4305 B, ifh2, jacinv, weights3, n)
4306 integer, parameter :: lx = 3
4307 integer, intent(in) :: n
4308 logical, intent(in) :: ifh2
4309 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
4310 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
4311 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
4312 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
4313 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
4314 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
4315 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
4316 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
4317 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
4318 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
4319 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
4320 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
4321 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
4322 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
4323 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
4324 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
4325 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
4326 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
4327 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
4328 real(kind=rp), intent(in) :: dx(lx, lx)
4329 real(kind=rp), intent(in) :: dy(lx, lx)
4330 real(kind=rp), intent(in) :: dz(lx, lx)
4331 real(kind=rp), intent(in) :: dxt(lx, lx)
4332 real(kind=rp), intent(in) :: dyt(lx, lx)
4333 real(kind=rp), intent(in) :: dzt(lx, lx)
4334 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
4335
4336 real(kind=rp) :: wur(lx, lx, lx)
4337 real(kind=rp) :: wus(lx, lx, lx)
4338 real(kind=rp) :: wut(lx, lx, lx)
4339 real(kind=rp) :: wvr(lx, lx, lx)
4340 real(kind=rp) :: wvs(lx, lx, lx)
4341 real(kind=rp) :: wvt(lx, lx, lx)
4342 real(kind=rp) :: wwr(lx, lx, lx)
4343 real(kind=rp) :: wws(lx, lx, lx)
4344 real(kind=rp) :: wwt(lx, lx, lx)
4345
4346 integer :: e, i, j, k, l
4347 real(kind=rp) :: dj
4348 real(kind=rp) :: s11, s22, s33, s12, s13, s23
4349 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
4350
4351 !$omp do
4352 do e = 1, n
4353
4354 do j = 1, lx * lx
4355 do i = 1, lx
4356 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
4357 + dx(i,2) * u(2,j,1,e) &
4358 + dx(i,3) * u(3,j,1,e)
4359
4360 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
4361 + dx(i,2) * v(2,j,1,e) &
4362 + dx(i,3) * v(3,j,1,e)
4363
4364 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
4365 + dx(i,2) * w(2,j,1,e) &
4366 + dx(i,3) * w(3,j,1,e)
4367 end do
4368 end do
4369
4370 do k = 1, lx
4371 do j = 1, lx
4372 do i = 1, lx
4373 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
4374 + dy(j,2) * u(i,2,k,e) &
4375 + dy(j,3) * u(i,3,k,e)
4376
4377 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
4378 + dy(j,2) * v(i,2,k,e) &
4379 + dy(j,3) * v(i,3,k,e)
4380
4381 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
4382 + dy(j,2) * w(i,2,k,e) &
4383 + dy(j,3) * w(i,3,k,e)
4384 end do
4385 end do
4386 end do
4387
4388 do k = 1, lx
4389 do i = 1, lx*lx
4390 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
4391 + dz(k,2) * u(i,1,2,e) &
4392 + dz(k,3) * u(i,1,3,e)
4393
4394 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
4395 + dz(k,2) * v(i,1,2,e) &
4396 + dz(k,3) * v(i,1,3,e)
4397
4398 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
4399 + dz(k,2) * w(i,1,2,e) &
4400 + dz(k,3) * w(i,1,3,e)
4401 end do
4402 end do
4403
4404 do i = 1, lx*lx*lx
4405
4406 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
4407 + wut(i,1,1) * dtdx(i,1,1,e)
4408 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
4409 + wut(i,1,1) * dtdy(i,1,1,e)
4410 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
4411 + wut(i,1,1) * dtdz(i,1,1,e)
4412
4413 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
4414 + wvt(i,1,1) * dtdx(i,1,1,e)
4415 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
4416 + wvt(i,1,1) * dtdy(i,1,1,e)
4417 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
4418 + wvt(i,1,1) * dtdz(i,1,1,e)
4419
4420 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
4421 + wwt(i,1,1) * dtdx(i,1,1,e)
4422 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
4423 + wwt(i,1,1) * dtdy(i,1,1,e)
4424 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
4425 + wwt(i,1,1) * dtdz(i,1,1,e)
4426
4427 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
4428 s11 = dj*(u1 + u1)
4429 s22 = dj*(v2 + v2)
4430 s33 = dj*(w3 + w3)
4431 s12 = dj*(u2 + v1)
4432 s13 = dj*(u3 + w1)
4433 s23 = dj*(v3 + w2)
4434
4435 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
4436 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
4437 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
4438
4439 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
4440 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
4441 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
4442
4443 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
4444 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
4445 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
4446 end do
4447
4448 do j = 1, lx*lx
4449 do i = 1, lx
4450 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
4451 + dxt(i,2) * wur(2,j,1) &
4452 + dxt(i,3) * wur(3,j,1)
4453
4454 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
4455 + dxt(i,2) * wvr(2,j,1) &
4456 + dxt(i,3) * wvr(3,j,1)
4457
4458 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
4459 + dxt(i,2) * wwr(2,j,1) &
4460 + dxt(i,3) * wwr(3,j,1)
4461 end do
4462 end do
4463
4464 do k = 1, lx
4465 do j = 1, lx
4466 do i = 1, lx
4467 au(i,j,k,e) = au(i,j,k,e) &
4468 + dyt(j,1) * wus(i,1,k) &
4469 + dyt(j,2) * wus(i,2,k) &
4470 + dyt(j,3) * wus(i,3,k)
4471
4472 av(i,j,k,e) = av(i,j,k,e) &
4473 + dyt(j,1) * wvs(i,1,k) &
4474 + dyt(j,2) * wvs(i,2,k) &
4475 + dyt(j,3) * wvs(i,3,k)
4476
4477 aw(i,j,k,e) = aw(i,j,k,e) &
4478 + dyt(j,1) * wws(i,1,k) &
4479 + dyt(j,2) * wws(i,2,k) &
4480 + dyt(j,3) * wws(i,3,k)
4481 end do
4482 end do
4483 end do
4484
4485 if (ifh2) then
4486 do k = 1, lx
4487 do i = 1, lx*lx
4488 au(i,1,k,e) = au(i,1,k,e) &
4489 + dzt(k,1) * wut(i,1,1) &
4490 + dzt(k,2) * wut(i,1,2) &
4491 + dzt(k,3) * wut(i,1,3) &
4492 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
4493
4494 av(i,1,k,e) = av(i,1,k,e) &
4495 + dzt(k,1) * wvt(i,1,1) &
4496 + dzt(k,2) * wvt(i,1,2) &
4497 + dzt(k,3) * wvt(i,1,3) &
4498 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
4499
4500 aw(i,1,k,e) = aw(i,1,k,e) &
4501 + dzt(k,1) * wwt(i,1,1) &
4502 + dzt(k,2) * wwt(i,1,2) &
4503 + dzt(k,3) * wwt(i,1,3) &
4504 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
4505 end do
4506 end do
4507 else
4508 do k = 1, lx
4509 do i = 1, lx*lx
4510 au(i,1,k,e) = au(i,1,k,e) &
4511 + dzt(k,1) * wut(i,1,1) &
4512 + dzt(k,2) * wut(i,1,2) &
4513 + dzt(k,3) * wut(i,1,3)
4514
4515 av(i,1,k,e) = av(i,1,k,e) &
4516 + dzt(k,1) * wvt(i,1,1) &
4517 + dzt(k,2) * wvt(i,1,2) &
4518 + dzt(k,3) * wvt(i,1,3)
4519
4520 aw(i,1,k,e) = aw(i,1,k,e) &
4521 + dzt(k,1) * wwt(i,1,1) &
4522 + dzt(k,2) * wwt(i,1,2) &
4523 + dzt(k,3) * wwt(i,1,3)
4524 end do
4525 end do
4526 end if
4527
4528 end do
4529 !$omp end do
4530 end subroutine ax_helm_stress_lx3
4531
4532 subroutine ax_helm_stress_lx2(au, av, aw, u, v, w, Dx, Dy, Dz, Dxt, Dyt, &
4533 Dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
4534 B, ifh2, jacinv, weights3, n)
4535 integer, parameter :: lx = 2
4536 integer, intent(in) :: n
4537 logical, intent(in) :: ifh2
4538 real(kind=rp), intent(in) :: u(lx, lx, lx, n)
4539 real(kind=rp), intent(in) :: v(lx, lx, lx, n)
4540 real(kind=rp), intent(in) :: w(lx, lx, lx, n)
4541 real(kind=rp), intent(inout) :: au(lx, lx, lx, n)
4542 real(kind=rp), intent(inout) :: av(lx, lx, lx, n)
4543 real(kind=rp), intent(inout) :: aw(lx, lx, lx, n)
4544 real(kind=rp), intent(in) :: h1(lx, lx, lx, n)
4545 real(kind=rp), intent(in) :: h2(lx, lx, lx, n)
4546 real(kind=rp), intent(in) :: b(lx, lx, lx, n)
4547 real(kind=rp), intent(in) :: drdx(lx, lx, lx, n)
4548 real(kind=rp), intent(in) :: drdy(lx, lx, lx, n)
4549 real(kind=rp), intent(in) :: drdz(lx, lx, lx, n)
4550 real(kind=rp), intent(in) :: dsdx(lx, lx, lx, n)
4551 real(kind=rp), intent(in) :: dsdy(lx, lx, lx, n)
4552 real(kind=rp), intent(in) :: dsdz(lx, lx, lx, n)
4553 real(kind=rp), intent(in) :: dtdx(lx, lx, lx, n)
4554 real(kind=rp), intent(in) :: dtdy(lx, lx, lx, n)
4555 real(kind=rp), intent(in) :: dtdz(lx, lx, lx, n)
4556 real(kind=rp), intent(in) :: jacinv(lx, lx, lx, n)
4557 real(kind=rp), intent(in) :: dx(lx, lx)
4558 real(kind=rp), intent(in) :: dy(lx, lx)
4559 real(kind=rp), intent(in) :: dz(lx, lx)
4560 real(kind=rp), intent(in) :: dxt(lx, lx)
4561 real(kind=rp), intent(in) :: dyt(lx, lx)
4562 real(kind=rp), intent(in) :: dzt(lx, lx)
4563 real(kind=rp), intent(in) :: weights3(lx, lx, lx)
4564
4565 real(kind=rp) :: wur(lx, lx, lx)
4566 real(kind=rp) :: wus(lx, lx, lx)
4567 real(kind=rp) :: wut(lx, lx, lx)
4568 real(kind=rp) :: wvr(lx, lx, lx)
4569 real(kind=rp) :: wvs(lx, lx, lx)
4570 real(kind=rp) :: wvt(lx, lx, lx)
4571 real(kind=rp) :: wwr(lx, lx, lx)
4572 real(kind=rp) :: wws(lx, lx, lx)
4573 real(kind=rp) :: wwt(lx, lx, lx)
4574
4575 integer :: e, i, j, k
4576 real(kind=rp) :: dj
4577 real(kind=rp) :: s11, s22, s33, s12, s13, s23
4578 real(kind=rp) :: u1, u2, u3, v1, v2, v3, w1, w2, w3
4579
4580 !$omp do
4581 do e = 1, n
4582
4583 do j = 1, lx * lx
4584 do i = 1, lx
4585 wur(i,j,1) = dx(i,1) * u(1,j,1,e) &
4586 + dx(i,2) * u(2,j,1,e)
4587
4588 wvr(i,j,1) = dx(i,1) * v(1,j,1,e) &
4589 + dx(i,2) * v(2,j,1,e)
4590
4591 wwr(i,j,1) = dx(i,1) * w(1,j,1,e) &
4592 + dx(i,2) * w(2,j,1,e)
4593 end do
4594 end do
4595
4596 do k = 1, lx
4597 do j = 1, lx
4598 do i = 1, lx
4599 wus(i,j,k) = dy(j,1) * u(i,1,k,e) &
4600 + dy(j,2) * u(i,2,k,e)
4601
4602 wvs(i,j,k) = dy(j,1) * v(i,1,k,e) &
4603 + dy(j,2) * v(i,2,k,e)
4604
4605 wws(i,j,k) = dy(j,1) * w(i,1,k,e) &
4606 + dy(j,2) * w(i,2,k,e)
4607 end do
4608 end do
4609 end do
4610
4611 do k = 1, lx
4612 do i = 1, lx*lx
4613 wut(i,1,k) = dz(k,1) * u(i,1,1,e) &
4614 + dz(k,2) * u(i,1,2,e)
4615
4616 wvt(i,1,k) = dz(k,1) * v(i,1,1,e) &
4617 + dz(k,2) * v(i,1,2,e)
4618
4619 wwt(i,1,k) = dz(k,1) * w(i,1,1,e) &
4620 + dz(k,2) * w(i,1,2,e)
4621 end do
4622 end do
4623
4624 do i = 1, lx*lx*lx
4625
4626 u1 = wur(i,1,1) * drdx(i,1,1,e) + wus(i,1,1) * dsdx(i,1,1,e) &
4627 + wut(i,1,1) * dtdx(i,1,1,e)
4628 u2 = wur(i,1,1) * drdy(i,1,1,e) + wus(i,1,1) * dsdy(i,1,1,e) &
4629 + wut(i,1,1) * dtdy(i,1,1,e)
4630 u3 = wur(i,1,1) * drdz(i,1,1,e) + wus(i,1,1) * dsdz(i,1,1,e) &
4631 + wut(i,1,1) * dtdz(i,1,1,e)
4632
4633 v1 = wvr(i,1,1) * drdx(i,1,1,e) + wvs(i,1,1) * dsdx(i,1,1,e) &
4634 + wvt(i,1,1) * dtdx(i,1,1,e)
4635 v2 = wvr(i,1,1) * drdy(i,1,1,e) + wvs(i,1,1) * dsdy(i,1,1,e) &
4636 + wvt(i,1,1) * dtdy(i,1,1,e)
4637 v3 = wvr(i,1,1) * drdz(i,1,1,e) + wvs(i,1,1) * dsdz(i,1,1,e) &
4638 + wvt(i,1,1) * dtdz(i,1,1,e)
4639
4640 w1 = wwr(i,1,1) * drdx(i,1,1,e) + wws(i,1,1) * dsdx(i,1,1,e) &
4641 + wwt(i,1,1) * dtdx(i,1,1,e)
4642 w2 = wwr(i,1,1) * drdy(i,1,1,e) + wws(i,1,1) * dsdy(i,1,1,e) &
4643 + wwt(i,1,1) * dtdy(i,1,1,e)
4644 w3 = wwr(i,1,1) * drdz(i,1,1,e) + wws(i,1,1) * dsdz(i,1,1,e) &
4645 + wwt(i,1,1) * dtdz(i,1,1,e)
4646
4647 dj = h1(i,1,1,e) * weights3(i,1,1) * jacinv(i,1,1,e)
4648 s11 = dj*(u1 + u1)
4649 s22 = dj*(v2 + v2)
4650 s33 = dj*(w3 + w3)
4651 s12 = dj*(u2 + v1)
4652 s13 = dj*(u3 + w1)
4653 s23 = dj*(v3 + w2)
4654
4655 wur(i,1,1) = drdx(i,1,1,e)*s11 + drdy(i,1,1,e)*s12 + drdz(i,1,1,e)*s13
4656 wus(i,1,1) = dsdx(i,1,1,e)*s11 + dsdy(i,1,1,e)*s12 + dsdz(i,1,1,e)*s13
4657 wut(i,1,1) = dtdx(i,1,1,e)*s11 + dtdy(i,1,1,e)*s12 + dtdz(i,1,1,e)*s13
4658
4659 wvr(i,1,1) = drdx(i,1,1,e)*s12 + drdy(i,1,1,e)*s22 + drdz(i,1,1,e)*s23
4660 wvs(i,1,1) = dsdx(i,1,1,e)*s12 + dsdy(i,1,1,e)*s22 + dsdz(i,1,1,e)*s23
4661 wvt(i,1,1) = dtdx(i,1,1,e)*s12 + dtdy(i,1,1,e)*s22 + dtdz(i,1,1,e)*s23
4662
4663 wwr(i,1,1) = drdx(i,1,1,e)*s13 + drdy(i,1,1,e)*s23 + drdz(i,1,1,e)*s33
4664 wws(i,1,1) = dsdx(i,1,1,e)*s13 + dsdy(i,1,1,e)*s23 + dsdz(i,1,1,e)*s33
4665 wwt(i,1,1) = dtdx(i,1,1,e)*s13 + dtdy(i,1,1,e)*s23 + dtdz(i,1,1,e)*s33
4666 end do
4667
4668 do j = 1, lx*lx
4669 do i = 1, lx
4670 au(i,j,1,e) = dxt(i,1) * wur(1,j,1) &
4671 + dxt(i,2) * wur(2,j,1)
4672
4673 av(i,j,1,e) = dxt(i,1) * wvr(1,j,1) &
4674 + dxt(i,2) * wvr(2,j,1)
4675
4676 aw(i,j,1,e) = dxt(i,1) * wwr(1,j,1) &
4677 + dxt(i,2) * wwr(2,j,1)
4678 end do
4679 end do
4680
4681 do k = 1, lx
4682 do j = 1, lx
4683 do i = 1, lx
4684 au(i,j,k,e) = au(i,j,k,e) &
4685 + dyt(j,1) * wus(i,1,k) &
4686 + dyt(j,2) * wus(i,2,k)
4687
4688 av(i,j,k,e) = av(i,j,k,e) &
4689 + dyt(j,1) * wvs(i,1,k) &
4690 + dyt(j,2) * wvs(i,2,k)
4691
4692 aw(i,j,k,e) = aw(i,j,k,e) &
4693 + dyt(j,1) * wws(i,1,k) &
4694 + dyt(j,2) * wws(i,2,k)
4695 end do
4696 end do
4697 end do
4698
4699 if (ifh2) then
4700 do k = 1, lx
4701 do i = 1, lx*lx
4702 au(i,1,k,e) = au(i,1,k,e) &
4703 + dzt(k,1) * wut(i,1,1) &
4704 + dzt(k,2) * wut(i,1,2) &
4705 + h2(i,1,k,e) * b(i,1,k,e) * u(i,1,k,e)
4706
4707 av(i,1,k,e) = av(i,1,k,e) &
4708 + dzt(k,1) * wvt(i,1,1) &
4709 + dzt(k,2) * wvt(i,1,2) &
4710 + h2(i,1,k,e) * b(i,1,k,e) * v(i,1,k,e)
4711
4712 aw(i,1,k,e) = aw(i,1,k,e) &
4713 + dzt(k,1) * wwt(i,1,1) &
4714 + dzt(k,2) * wwt(i,1,2) &
4715 + h2(i,1,k,e) * b(i,1,k,e) * w(i,1,k,e)
4716 end do
4717 end do
4718 else
4719 do k = 1, lx
4720 do i = 1, lx*lx
4721 au(i,1,k,e) = au(i,1,k,e) &
4722 + dzt(k,1) * wut(i,1,1) &
4723 + dzt(k,2) * wut(i,1,2)
4724
4725 av(i,1,k,e) = av(i,1,k,e) &
4726 + dzt(k,1) * wvt(i,1,1) &
4727 + dzt(k,2) * wvt(i,1,2)
4728
4729 aw(i,1,k,e) = aw(i,1,k,e) &
4730 + dzt(k,1) * wwt(i,1,1) &
4731 + dzt(k,2) * wwt(i,1,2)
4732 end do
4733 end do
4734 end if
4735
4736 end do
4737 !$omp end do
4738 end subroutine ax_helm_stress_lx2
4739
4740end module ax_helm_full_cpu
subroutine ax_helm_full_compute_vector(this, au, av, aw, u, v, w, coef, msh, xh)
Compute inside a Krylov method, taking 3 components of a vector field in a coupled manner.
subroutine ax_helm_stress_lx10(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx4(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx11(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx5(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx2(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx7(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n, lx)
subroutine ax_helm_stress_lx6(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx12(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx9(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx3(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx8(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx13(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
subroutine ax_helm_stress_lx14(au, av, aw, u, v, w, dx, dy, dz, dxt, dyt, dzt, h1, h2, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, b, ifh2, jacinv, weights3, n)
Coefficients.
Definition coef.f90:34
Defines a mesh.
Definition mesh.f90:34
integer, parameter, public rp
Global precision used in computations.
Definition num_types.f90:14
Defines a function space.
Definition space.f90:34
Matrix-vector product for a Helmholtz problem.
CPU matrix-vector product for a Helmholtz problem with full stress tensor.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
Definition coef.f90:135
The function space for the SEM solution fields.
Definition space.f90:64