15#include "scaleFElib.h"
44 procedure(elementoperationtensorprod3d_final),
deferred,
public :: final
55 subroutine elementoperationtensorprod3d_final( this )
58 end subroutine elementoperationtensorprod3d_final
65 real(rp) :: d1d_tr(2,2)
66 real(rp) :: lift_mat(2,2,2,6)
67 real(rp) :: intrpmat_vpordm1_tr(2,2)
69 real(rp) :: mfilter_h1d(2,2)
70 real(rp) :: mfilter_h1d_tr(2,2)
71 real(rp) :: mfilter_v1d_tr(2,2)
73 real(rp) :: mfilter_tracer_h1d(2,2)
74 real(rp) :: mfilter_tracer_h1d_tr(2,2)
75 real(rp) :: mfilter_tracer_v1d_tr(2,2)
77 procedure,
public :: init => element_operation_tensorprod3d_init_p1
78 procedure,
public :: final => element_operation_tensorprod3d_final_p1
79 procedure,
public :: dx => element_operation_tensorprod3d_dx_p1
80 procedure,
public :: dy => element_operation_tensorprod3d_dy_p1
81 procedure,
public :: dz => element_operation_tensorprod3d_dz_p1
82 procedure,
public :: lift => element_operation_tensorprod3d_lift_p1
83 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p1
84 procedure,
public :: div => element_operation_tensorprod3d_div_p1
85 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p1
86 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p1
88 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p1
89 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p1
90 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p1
91 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p1
95 real(rp) :: d1d_tr(3,3)
96 real(rp) :: lift_mat(3,3,3,6)
97 real(rp) :: intrpmat_vpordm1_tr(3,3)
99 real(rp) :: mfilter_h1d(3,3)
100 real(rp) :: mfilter_h1d_tr(3,3)
101 real(rp) :: mfilter_v1d_tr(3,3)
103 real(rp) :: mfilter_tracer_h1d(3,3)
104 real(rp) :: mfilter_tracer_h1d_tr(3,3)
105 real(rp) :: mfilter_tracer_v1d_tr(3,3)
107 procedure,
public :: init => element_operation_tensorprod3d_init_p2
108 procedure,
public :: final => element_operation_tensorprod3d_final_p2
109 procedure,
public :: dx => element_operation_tensorprod3d_dx_p2
110 procedure,
public :: dy => element_operation_tensorprod3d_dy_p2
111 procedure,
public :: dz => element_operation_tensorprod3d_dz_p2
112 procedure,
public :: lift => element_operation_tensorprod3d_lift_p2
113 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p2
114 procedure,
public :: div => element_operation_tensorprod3d_div_p2
115 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p2
116 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p2
118 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p2
119 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p2
120 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p2
121 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p2
125 real(rp) :: d1d_tr(4,4)
126 real(rp) :: lift_mat(4,4,4,6)
127 real(rp) :: intrpmat_vpordm1_tr(4,4)
129 real(rp) :: mfilter_h1d(4,4)
130 real(rp) :: mfilter_h1d_tr(4,4)
131 real(rp) :: mfilter_v1d_tr(4,4)
133 real(rp) :: mfilter_tracer_h1d(4,4)
134 real(rp) :: mfilter_tracer_h1d_tr(4,4)
135 real(rp) :: mfilter_tracer_v1d_tr(4,4)
137 procedure,
public :: init => element_operation_tensorprod3d_init_p3
138 procedure,
public :: final => element_operation_tensorprod3d_final_p3
139 procedure,
public :: dx => element_operation_tensorprod3d_dx_p3
140 procedure,
public :: dy => element_operation_tensorprod3d_dy_p3
141 procedure,
public :: dz => element_operation_tensorprod3d_dz_p3
142 procedure,
public :: lift => element_operation_tensorprod3d_lift_p3
143 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p3
144 procedure,
public :: div => element_operation_tensorprod3d_div_p3
145 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p3
146 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p3
148 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p3
149 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p3
150 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p3
151 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p3
155 real(rp) :: d1d_tr(5,5)
156 real(rp) :: lift_mat(5,5,5,6)
157 real(rp) :: intrpmat_vpordm1_tr(5,5)
159 real(rp) :: mfilter_h1d(5,5)
160 real(rp) :: mfilter_h1d_tr(5,5)
161 real(rp) :: mfilter_v1d_tr(5,5)
163 real(rp) :: mfilter_tracer_h1d(5,5)
164 real(rp) :: mfilter_tracer_h1d_tr(5,5)
165 real(rp) :: mfilter_tracer_v1d_tr(5,5)
167 procedure,
public :: init => element_operation_tensorprod3d_init_p4
168 procedure,
public :: final => element_operation_tensorprod3d_final_p4
169 procedure,
public :: dx => element_operation_tensorprod3d_dx_p4
170 procedure,
public :: dy => element_operation_tensorprod3d_dy_p4
171 procedure,
public :: dz => element_operation_tensorprod3d_dz_p4
172 procedure,
public :: lift => element_operation_tensorprod3d_lift_p4
173 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p4
174 procedure,
public :: div => element_operation_tensorprod3d_div_p4
175 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p4
176 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p4
178 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p4
179 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p4
180 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p4
181 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p4
185 real(rp) :: d1d_tr(6,6)
186 real(rp) :: lift_mat(6,6,6,6)
187 real(rp) :: intrpmat_vpordm1_tr(6,6)
189 real(rp) :: mfilter_h1d(6,6)
190 real(rp) :: mfilter_h1d_tr(6,6)
191 real(rp) :: mfilter_v1d_tr(6,6)
193 real(rp) :: mfilter_tracer_h1d(6,6)
194 real(rp) :: mfilter_tracer_h1d_tr(6,6)
195 real(rp) :: mfilter_tracer_v1d_tr(6,6)
197 procedure,
public :: init => element_operation_tensorprod3d_init_p5
198 procedure,
public :: final => element_operation_tensorprod3d_final_p5
199 procedure,
public :: dx => element_operation_tensorprod3d_dx_p5
200 procedure,
public :: dy => element_operation_tensorprod3d_dy_p5
201 procedure,
public :: dz => element_operation_tensorprod3d_dz_p5
202 procedure,
public :: lift => element_operation_tensorprod3d_lift_p5
203 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p5
204 procedure,
public :: div => element_operation_tensorprod3d_div_p5
205 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p5
206 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p5
208 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p5
209 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p5
210 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p5
211 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p5
215 real(rp) :: d1d_tr(7,7)
216 real(rp) :: lift_mat(7,7,7,6)
217 real(rp) :: intrpmat_vpordm1_tr(7,7)
219 real(rp) :: mfilter_h1d(7,7)
220 real(rp) :: mfilter_h1d_tr(7,7)
221 real(rp) :: mfilter_v1d_tr(7,7)
223 real(rp) :: mfilter_tracer_h1d(7,7)
224 real(rp) :: mfilter_tracer_h1d_tr(7,7)
225 real(rp) :: mfilter_tracer_v1d_tr(7,7)
227 procedure,
public :: init => element_operation_tensorprod3d_init_p6
228 procedure,
public :: final => element_operation_tensorprod3d_final_p6
229 procedure,
public :: dx => element_operation_tensorprod3d_dx_p6
230 procedure,
public :: dy => element_operation_tensorprod3d_dy_p6
231 procedure,
public :: dz => element_operation_tensorprod3d_dz_p6
232 procedure,
public :: lift => element_operation_tensorprod3d_lift_p6
233 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p6
234 procedure,
public :: div => element_operation_tensorprod3d_div_p6
235 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p6
236 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p6
238 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p6
239 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p6
240 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p6
241 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p6
245 real(rp) :: d1d_tr(8,8)
246 real(rp) :: lift_mat(8,8,8,6)
247 real(rp) :: intrpmat_vpordm1_tr(8,8)
249 real(rp) :: mfilter_h1d(8,8)
250 real(rp) :: mfilter_h1d_tr(8,8)
251 real(rp) :: mfilter_v1d_tr(8,8)
253 real(rp) :: mfilter_tracer_h1d(8,8)
254 real(rp) :: mfilter_tracer_h1d_tr(8,8)
255 real(rp) :: mfilter_tracer_v1d_tr(8,8)
257 procedure,
public :: init => element_operation_tensorprod3d_init_p7
258 procedure,
public :: final => element_operation_tensorprod3d_final_p7
259 procedure,
public :: dx => element_operation_tensorprod3d_dx_p7
260 procedure,
public :: dy => element_operation_tensorprod3d_dy_p7
261 procedure,
public :: dz => element_operation_tensorprod3d_dz_p7
262 procedure,
public :: lift => element_operation_tensorprod3d_lift_p7
263 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p7
264 procedure,
public :: div => element_operation_tensorprod3d_div_p7
265 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p7
266 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p7
268 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p7
269 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p7
270 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p7
271 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p7
275 real(rp) :: d1d_tr(9,9)
276 real(rp) :: lift_mat(9,9,9,6)
277 real(rp) :: intrpmat_vpordm1_tr(9,9)
279 real(rp) :: mfilter_h1d(9,9)
280 real(rp) :: mfilter_h1d_tr(9,9)
281 real(rp) :: mfilter_v1d_tr(9,9)
283 real(rp) :: mfilter_tracer_h1d(9,9)
284 real(rp) :: mfilter_tracer_h1d_tr(9,9)
285 real(rp) :: mfilter_tracer_v1d_tr(9,9)
287 procedure,
public :: init => element_operation_tensorprod3d_init_p8
288 procedure,
public :: final => element_operation_tensorprod3d_final_p8
289 procedure,
public :: dx => element_operation_tensorprod3d_dx_p8
290 procedure,
public :: dy => element_operation_tensorprod3d_dy_p8
291 procedure,
public :: dz => element_operation_tensorprod3d_dz_p8
292 procedure,
public :: lift => element_operation_tensorprod3d_lift_p8
293 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p8
294 procedure,
public :: div => element_operation_tensorprod3d_div_p8
295 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p8
296 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p8
298 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p8
299 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p8
300 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p8
301 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p8
304 real(rp) :: d1d(10,10)
305 real(rp) :: d1d_tr(10,10)
306 real(rp) :: lift_mat(10,10,10,6)
307 real(rp) :: intrpmat_vpordm1_tr(10,10)
309 real(rp) :: mfilter_h1d(10,10)
310 real(rp) :: mfilter_h1d_tr(10,10)
311 real(rp) :: mfilter_v1d_tr(10,10)
313 real(rp) :: mfilter_tracer_h1d(10,10)
314 real(rp) :: mfilter_tracer_h1d_tr(10,10)
315 real(rp) :: mfilter_tracer_v1d_tr(10,10)
317 procedure,
public :: init => element_operation_tensorprod3d_init_p9
318 procedure,
public :: final => element_operation_tensorprod3d_final_p9
319 procedure,
public :: dx => element_operation_tensorprod3d_dx_p9
320 procedure,
public :: dy => element_operation_tensorprod3d_dy_p9
321 procedure,
public :: dz => element_operation_tensorprod3d_dz_p9
322 procedure,
public :: lift => element_operation_tensorprod3d_lift_p9
323 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p9
324 procedure,
public :: div => element_operation_tensorprod3d_div_p9
325 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p9
326 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p9
328 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p9
329 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p9
330 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p9
331 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p9
334 real(rp) :: d1d(11,11)
335 real(rp) :: d1d_tr(11,11)
336 real(rp) :: lift_mat(11,11,11,6)
337 real(rp) :: intrpmat_vpordm1_tr(11,11)
339 real(rp) :: mfilter_h1d(11,11)
340 real(rp) :: mfilter_h1d_tr(11,11)
341 real(rp) :: mfilter_v1d_tr(11,11)
343 real(rp) :: mfilter_tracer_h1d(11,11)
344 real(rp) :: mfilter_tracer_h1d_tr(11,11)
345 real(rp) :: mfilter_tracer_v1d_tr(11,11)
347 procedure,
public :: init => element_operation_tensorprod3d_init_p10
348 procedure,
public :: final => element_operation_tensorprod3d_final_p10
349 procedure,
public :: dx => element_operation_tensorprod3d_dx_p10
350 procedure,
public :: dy => element_operation_tensorprod3d_dy_p10
351 procedure,
public :: dz => element_operation_tensorprod3d_dz_p10
352 procedure,
public :: lift => element_operation_tensorprod3d_lift_p10
353 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p10
354 procedure,
public :: div => element_operation_tensorprod3d_div_p10
355 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p10
356 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p10
358 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p10
359 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p10
360 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p10
361 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p10
364 real(rp) :: d1d(12,12)
365 real(rp) :: d1d_tr(12,12)
366 real(rp) :: lift_mat(12,12,12,6)
367 real(rp) :: intrpmat_vpordm1_tr(12,12)
369 real(rp) :: mfilter_h1d(12,12)
370 real(rp) :: mfilter_h1d_tr(12,12)
371 real(rp) :: mfilter_v1d_tr(12,12)
373 real(rp) :: mfilter_tracer_h1d(12,12)
374 real(rp) :: mfilter_tracer_h1d_tr(12,12)
375 real(rp) :: mfilter_tracer_v1d_tr(12,12)
377 procedure,
public :: init => element_operation_tensorprod3d_init_p11
378 procedure,
public :: final => element_operation_tensorprod3d_final_p11
379 procedure,
public :: dx => element_operation_tensorprod3d_dx_p11
380 procedure,
public :: dy => element_operation_tensorprod3d_dy_p11
381 procedure,
public :: dz => element_operation_tensorprod3d_dz_p11
382 procedure,
public :: lift => element_operation_tensorprod3d_lift_p11
383 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p11
384 procedure,
public :: div => element_operation_tensorprod3d_div_p11
385 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p11
386 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p11
388 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p11
389 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p11
390 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p11
391 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p11
394 real(rp) :: d1d(13,13)
395 real(rp) :: d1d_tr(13,13)
396 real(rp) :: lift_mat(13,13,13,6)
397 real(rp) :: intrpmat_vpordm1_tr(13,13)
399 real(rp) :: mfilter_h1d(13,13)
400 real(rp) :: mfilter_h1d_tr(13,13)
401 real(rp) :: mfilter_v1d_tr(13,13)
403 real(rp) :: mfilter_tracer_h1d(13,13)
404 real(rp) :: mfilter_tracer_h1d_tr(13,13)
405 real(rp) :: mfilter_tracer_v1d_tr(13,13)
407 procedure,
public :: init => element_operation_tensorprod3d_init_p12
408 procedure,
public :: final => element_operation_tensorprod3d_final_p12
409 procedure,
public :: dx => element_operation_tensorprod3d_dx_p12
410 procedure,
public :: dy => element_operation_tensorprod3d_dy_p12
411 procedure,
public :: dz => element_operation_tensorprod3d_dz_p12
412 procedure,
public :: lift => element_operation_tensorprod3d_lift_p12
413 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p12
414 procedure,
public :: div => element_operation_tensorprod3d_div_p12
415 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p12
416 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p12
418 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p12
419 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p12
420 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p12
421 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p12
424 real(rp) :: d1d(14,14)
425 real(rp) :: d1d_tr(14,14)
426 real(rp) :: lift_mat(14,14,14,6)
427 real(rp) :: intrpmat_vpordm1_tr(14,14)
429 real(rp) :: mfilter_h1d(14,14)
430 real(rp) :: mfilter_h1d_tr(14,14)
431 real(rp) :: mfilter_v1d_tr(14,14)
433 real(rp) :: mfilter_tracer_h1d(14,14)
434 real(rp) :: mfilter_tracer_h1d_tr(14,14)
435 real(rp) :: mfilter_tracer_v1d_tr(14,14)
437 procedure,
public :: init => element_operation_tensorprod3d_init_p13
438 procedure,
public :: final => element_operation_tensorprod3d_final_p13
439 procedure,
public :: dx => element_operation_tensorprod3d_dx_p13
440 procedure,
public :: dy => element_operation_tensorprod3d_dy_p13
441 procedure,
public :: dz => element_operation_tensorprod3d_dz_p13
442 procedure,
public :: lift => element_operation_tensorprod3d_lift_p13
443 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p13
444 procedure,
public :: div => element_operation_tensorprod3d_div_p13
445 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p13
446 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p13
448 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p13
449 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p13
450 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p13
451 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p13
454 real(rp) :: d1d(15,15)
455 real(rp) :: d1d_tr(15,15)
456 real(rp) :: lift_mat(15,15,15,6)
457 real(rp) :: intrpmat_vpordm1_tr(15,15)
459 real(rp) :: mfilter_h1d(15,15)
460 real(rp) :: mfilter_h1d_tr(15,15)
461 real(rp) :: mfilter_v1d_tr(15,15)
463 real(rp) :: mfilter_tracer_h1d(15,15)
464 real(rp) :: mfilter_tracer_h1d_tr(15,15)
465 real(rp) :: mfilter_tracer_v1d_tr(15,15)
467 procedure,
public :: init => element_operation_tensorprod3d_init_p14
468 procedure,
public :: final => element_operation_tensorprod3d_final_p14
469 procedure,
public :: dx => element_operation_tensorprod3d_dx_p14
470 procedure,
public :: dy => element_operation_tensorprod3d_dy_p14
471 procedure,
public :: dz => element_operation_tensorprod3d_dz_p14
472 procedure,
public :: lift => element_operation_tensorprod3d_lift_p14
473 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p14
474 procedure,
public :: div => element_operation_tensorprod3d_div_p14
475 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p14
476 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p14
478 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p14
479 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p14
480 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p14
481 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p14
484 real(rp) :: d1d(16,16)
485 real(rp) :: d1d_tr(16,16)
486 real(rp) :: lift_mat(16,16,16,6)
487 real(rp) :: intrpmat_vpordm1_tr(16,16)
489 real(rp) :: mfilter_h1d(16,16)
490 real(rp) :: mfilter_h1d_tr(16,16)
491 real(rp) :: mfilter_v1d_tr(16,16)
493 real(rp) :: mfilter_tracer_h1d(16,16)
494 real(rp) :: mfilter_tracer_h1d_tr(16,16)
495 real(rp) :: mfilter_tracer_v1d_tr(16,16)
497 procedure,
public :: init => element_operation_tensorprod3d_init_p15
498 procedure,
public :: final => element_operation_tensorprod3d_final_p15
499 procedure,
public :: dx => element_operation_tensorprod3d_dx_p15
500 procedure,
public :: dy => element_operation_tensorprod3d_dy_p15
501 procedure,
public :: dz => element_operation_tensorprod3d_dz_p15
502 procedure,
public :: lift => element_operation_tensorprod3d_lift_p15
503 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p15
504 procedure,
public :: div => element_operation_tensorprod3d_div_p15
505 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p15
506 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p15
508 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p15
509 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p15
510 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p15
511 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p15
517 use scale_prc,
only: prc_abort
523 if ( elem3d%PolyOrder_h /= elem3d%PolyOrder_v )
then
524 log_info(
'ElemenetOperationTensorprod3D_create',*)
'PolyOrder_h and PolyOrder_v should be same in this module. ElemenetOperationGeneral should be used!'
528 select case( elem3d%PolyOrder_h )
560 log_info(
'ElemenetOperationTensorprod3D_create',*)
'The specified polynomial order execceds 15 and is not supported in this module. ElemenetOperationGeneral should be used!'
563 call obj%Init( elem3d )
574 subroutine element_operation_tensorprod3d_init_p1( this, elem3D )
580 this%elem3D => elem3d
582 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
585 end subroutine element_operation_tensorprod3d_init_p1
590 subroutine element_operation_tensorprod3d_setup_modalfilter_p1( this, &
591 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
592 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
597 real(rp),
intent(in) :: mf_etac_h
598 real(rp),
intent(in) :: mf_alpha_h
599 integer,
intent(in) :: mf_order_h
600 real(rp),
intent(in) :: mf_etac_v
601 real(rp),
intent(in) :: mf_alpha_v
602 integer,
intent(in) :: mf_order_v
605 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
606 mf_etac_h, mf_alpha_h, mf_order_h, &
607 mf_etac_v, mf_alpha_v, mf_order_v, &
608 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
611 end subroutine element_operation_tensorprod3d_setup_modalfilter_p1
616 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p1( this, &
617 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
618 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
623 real(rp),
intent(in) :: mf_etac_h
624 real(rp),
intent(in) :: mf_alpha_h
625 integer,
intent(in) :: mf_order_h
626 real(rp),
intent(in) :: mf_etac_v
627 real(rp),
intent(in) :: mf_alpha_v
628 integer,
intent(in) :: mf_order_v
631 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
632 mf_etac_h, mf_alpha_h, mf_order_h, &
633 mf_etac_v, mf_alpha_v, mf_order_v, &
634 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
637 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p1
642 subroutine element_operation_tensorprod3d_final_p1( this )
646 nullify( this%elem3D )
648 end subroutine element_operation_tensorprod3d_final_p1
653 subroutine element_operation_tensorprod3d_dx_p1( this, vec_in, vec_out )
657 real(rp),
intent(in) :: vec_in(this%elem3d%np)
658 real(rp),
intent(out) :: vec_out(this%elem3d%np)
662 end subroutine element_operation_tensorprod3d_dx_p1
667 subroutine element_operation_tensorprod3d_dy_p1( this, vec_in, vec_out )
671 real(rp),
intent(in) :: vec_in(this%elem3d%np)
672 real(rp),
intent(out) :: vec_out(this%elem3d%np)
676 end subroutine element_operation_tensorprod3d_dy_p1
681 subroutine element_operation_tensorprod3d_dz_p1( this, vec_in, vec_out )
685 real(rp),
intent(in) :: vec_in(this%elem3d%np)
686 real(rp),
intent(out) :: vec_out(this%elem3d%np)
690 end subroutine element_operation_tensorprod3d_dz_p1
695 subroutine element_operation_tensorprod3d_lift_p1( this, vec_in, vec_out )
699 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
700 real(rp),
intent(out) :: vec_out(this%elem3d%np)
704 end subroutine element_operation_tensorprod3d_lift_p1
709 subroutine element_operation_tensorprod3d_dxdydzlift_p1( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
715 real(rp),
intent(in) :: vec_in(this%elem3d%np)
716 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
717 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
718 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
719 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
720 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
723 vec_out_dx, vec_out_dy, vec_out_dz )
728 end subroutine element_operation_tensorprod3d_dxdydzlift_p1
733 subroutine element_operation_tensorprod3d_div_p1( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
734 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
740 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
741 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
742 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
743 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
744 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
745 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
746 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
747 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
754 vec_out_dx, vec_out_dy, vec_out_dz )
756 end subroutine element_operation_tensorprod3d_div_p1
761 subroutine element_operation_tensorprod3d_div_var5_p1( this, vec_in, vec_in_lift, &
768 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
769 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
770 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
780 call element_operation_kernel_matvec_divlike_dirxyz_p1( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
781 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
784 end subroutine element_operation_tensorprod3d_div_var5_p1
787 subroutine element_operation_tensorprod3d_vfilterpm1_p1( this, vec_in, vec_out )
791 real(rp),
intent(in) :: vec_in(this%elem3d%np)
792 real(rp),
intent(out) :: vec_out(this%elem3d%np)
798 end subroutine element_operation_tensorprod3d_vfilterpm1_p1
801 subroutine element_operation_tensorprod3d_modalfilter_tracer_p1( this, vec_in, vec_work, vec_out )
807 real(rp),
intent(in) :: vec_in(this%elem3d%np)
808 real(rp),
intent(out) :: vec_work(this%elem3d%np)
809 real(rp),
intent(out) :: vec_out(this%elem3d%np)
816 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p1
819 subroutine element_operation_tensorprod3d_modalfilter_var5_p1( this, vec_in, vec_work, vec_out )
825 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
826 real(rp),
intent(out) :: vec_work(this%elem3d%np)
827 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
837 end subroutine element_operation_tensorprod3d_modalfilter_var5_p1
845 subroutine element_operation_tensorprod3d_init_p2( this, elem3D )
851 this%elem3D => elem3d
853 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
856 end subroutine element_operation_tensorprod3d_init_p2
861 subroutine element_operation_tensorprod3d_setup_modalfilter_p2( this, &
862 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
863 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
868 real(rp),
intent(in) :: mf_etac_h
869 real(rp),
intent(in) :: mf_alpha_h
870 integer,
intent(in) :: mf_order_h
871 real(rp),
intent(in) :: mf_etac_v
872 real(rp),
intent(in) :: mf_alpha_v
873 integer,
intent(in) :: mf_order_v
876 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
877 mf_etac_h, mf_alpha_h, mf_order_h, &
878 mf_etac_v, mf_alpha_v, mf_order_v, &
879 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
882 end subroutine element_operation_tensorprod3d_setup_modalfilter_p2
887 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p2( this, &
888 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
889 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
894 real(rp),
intent(in) :: mf_etac_h
895 real(rp),
intent(in) :: mf_alpha_h
896 integer,
intent(in) :: mf_order_h
897 real(rp),
intent(in) :: mf_etac_v
898 real(rp),
intent(in) :: mf_alpha_v
899 integer,
intent(in) :: mf_order_v
902 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
903 mf_etac_h, mf_alpha_h, mf_order_h, &
904 mf_etac_v, mf_alpha_v, mf_order_v, &
905 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
908 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p2
913 subroutine element_operation_tensorprod3d_final_p2( this )
917 nullify( this%elem3D )
919 end subroutine element_operation_tensorprod3d_final_p2
924 subroutine element_operation_tensorprod3d_dx_p2( this, vec_in, vec_out )
928 real(rp),
intent(in) :: vec_in(this%elem3d%np)
929 real(rp),
intent(out) :: vec_out(this%elem3d%np)
933 end subroutine element_operation_tensorprod3d_dx_p2
938 subroutine element_operation_tensorprod3d_dy_p2( this, vec_in, vec_out )
942 real(rp),
intent(in) :: vec_in(this%elem3d%np)
943 real(rp),
intent(out) :: vec_out(this%elem3d%np)
947 end subroutine element_operation_tensorprod3d_dy_p2
952 subroutine element_operation_tensorprod3d_dz_p2( this, vec_in, vec_out )
956 real(rp),
intent(in) :: vec_in(this%elem3d%np)
957 real(rp),
intent(out) :: vec_out(this%elem3d%np)
961 end subroutine element_operation_tensorprod3d_dz_p2
966 subroutine element_operation_tensorprod3d_lift_p2( this, vec_in, vec_out )
970 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
971 real(rp),
intent(out) :: vec_out(this%elem3d%np)
975 end subroutine element_operation_tensorprod3d_lift_p2
980 subroutine element_operation_tensorprod3d_dxdydzlift_p2( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
986 real(rp),
intent(in) :: vec_in(this%elem3d%np)
987 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
988 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
989 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
990 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
991 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
994 vec_out_dx, vec_out_dy, vec_out_dz )
999 end subroutine element_operation_tensorprod3d_dxdydzlift_p2
1004 subroutine element_operation_tensorprod3d_div_p2( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
1005 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1011 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
1012 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
1013 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
1014 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1015 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1016 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1017 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1018 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1025 vec_out_dx, vec_out_dy, vec_out_dz )
1027 end subroutine element_operation_tensorprod3d_div_p2
1032 subroutine element_operation_tensorprod3d_div_var5_p2( this, vec_in, vec_in_lift, &
1039 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1040 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1041 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1051 call element_operation_kernel_matvec_divlike_dirxyz_p2( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
1052 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1055 end subroutine element_operation_tensorprod3d_div_var5_p2
1058 subroutine element_operation_tensorprod3d_vfilterpm1_p2( this, vec_in, vec_out )
1062 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1063 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1069 end subroutine element_operation_tensorprod3d_vfilterpm1_p2
1072 subroutine element_operation_tensorprod3d_modalfilter_tracer_p2( this, vec_in, vec_work, vec_out )
1078 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1079 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1080 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1087 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p2
1090 subroutine element_operation_tensorprod3d_modalfilter_var5_p2( this, vec_in, vec_work, vec_out )
1096 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1097 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1098 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1108 end subroutine element_operation_tensorprod3d_modalfilter_var5_p2
1116 subroutine element_operation_tensorprod3d_init_p3( this, elem3D )
1122 this%elem3D => elem3d
1124 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
1127 end subroutine element_operation_tensorprod3d_init_p3
1132 subroutine element_operation_tensorprod3d_setup_modalfilter_p3( this, &
1133 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1134 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1139 real(rp),
intent(in) :: mf_etac_h
1140 real(rp),
intent(in) :: mf_alpha_h
1141 integer,
intent(in) :: mf_order_h
1142 real(rp),
intent(in) :: mf_etac_v
1143 real(rp),
intent(in) :: mf_alpha_v
1144 integer,
intent(in) :: mf_order_v
1147 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1148 mf_etac_h, mf_alpha_h, mf_order_h, &
1149 mf_etac_v, mf_alpha_v, mf_order_v, &
1150 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1153 end subroutine element_operation_tensorprod3d_setup_modalfilter_p3
1158 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p3( this, &
1159 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1160 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1165 real(rp),
intent(in) :: mf_etac_h
1166 real(rp),
intent(in) :: mf_alpha_h
1167 integer,
intent(in) :: mf_order_h
1168 real(rp),
intent(in) :: mf_etac_v
1169 real(rp),
intent(in) :: mf_alpha_v
1170 integer,
intent(in) :: mf_order_v
1173 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1174 mf_etac_h, mf_alpha_h, mf_order_h, &
1175 mf_etac_v, mf_alpha_v, mf_order_v, &
1176 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1179 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p3
1184 subroutine element_operation_tensorprod3d_final_p3( this )
1188 nullify( this%elem3D )
1190 end subroutine element_operation_tensorprod3d_final_p3
1195 subroutine element_operation_tensorprod3d_dx_p3( this, vec_in, vec_out )
1199 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1200 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1204 end subroutine element_operation_tensorprod3d_dx_p3
1209 subroutine element_operation_tensorprod3d_dy_p3( this, vec_in, vec_out )
1213 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1214 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1218 end subroutine element_operation_tensorprod3d_dy_p3
1223 subroutine element_operation_tensorprod3d_dz_p3( this, vec_in, vec_out )
1227 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1228 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1232 end subroutine element_operation_tensorprod3d_dz_p3
1237 subroutine element_operation_tensorprod3d_lift_p3( this, vec_in, vec_out )
1241 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1242 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1246 end subroutine element_operation_tensorprod3d_lift_p3
1251 subroutine element_operation_tensorprod3d_dxdydzlift_p3( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1257 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1258 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1259 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1260 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1261 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1262 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1265 vec_out_dx, vec_out_dy, vec_out_dz )
1270 end subroutine element_operation_tensorprod3d_dxdydzlift_p3
1275 subroutine element_operation_tensorprod3d_div_p3( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
1276 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1282 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
1283 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
1284 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
1285 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1286 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1287 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1288 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1289 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1296 vec_out_dx, vec_out_dy, vec_out_dz )
1298 end subroutine element_operation_tensorprod3d_div_p3
1303 subroutine element_operation_tensorprod3d_div_var5_p3( this, vec_in, vec_in_lift, &
1310 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1311 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1312 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1322 call element_operation_kernel_matvec_divlike_dirxyz_p3( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
1323 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1326 end subroutine element_operation_tensorprod3d_div_var5_p3
1329 subroutine element_operation_tensorprod3d_vfilterpm1_p3( this, vec_in, vec_out )
1333 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1334 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1340 end subroutine element_operation_tensorprod3d_vfilterpm1_p3
1343 subroutine element_operation_tensorprod3d_modalfilter_tracer_p3( this, vec_in, vec_work, vec_out )
1349 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1350 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1351 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1358 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p3
1361 subroutine element_operation_tensorprod3d_modalfilter_var5_p3( this, vec_in, vec_work, vec_out )
1367 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1368 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1369 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1379 end subroutine element_operation_tensorprod3d_modalfilter_var5_p3
1387 subroutine element_operation_tensorprod3d_init_p4( this, elem3D )
1393 this%elem3D => elem3d
1395 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
1398 end subroutine element_operation_tensorprod3d_init_p4
1403 subroutine element_operation_tensorprod3d_setup_modalfilter_p4( this, &
1404 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1405 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1410 real(rp),
intent(in) :: mf_etac_h
1411 real(rp),
intent(in) :: mf_alpha_h
1412 integer,
intent(in) :: mf_order_h
1413 real(rp),
intent(in) :: mf_etac_v
1414 real(rp),
intent(in) :: mf_alpha_v
1415 integer,
intent(in) :: mf_order_v
1418 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1419 mf_etac_h, mf_alpha_h, mf_order_h, &
1420 mf_etac_v, mf_alpha_v, mf_order_v, &
1421 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1424 end subroutine element_operation_tensorprod3d_setup_modalfilter_p4
1429 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p4( this, &
1430 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1431 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1436 real(rp),
intent(in) :: mf_etac_h
1437 real(rp),
intent(in) :: mf_alpha_h
1438 integer,
intent(in) :: mf_order_h
1439 real(rp),
intent(in) :: mf_etac_v
1440 real(rp),
intent(in) :: mf_alpha_v
1441 integer,
intent(in) :: mf_order_v
1444 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1445 mf_etac_h, mf_alpha_h, mf_order_h, &
1446 mf_etac_v, mf_alpha_v, mf_order_v, &
1447 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1450 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p4
1455 subroutine element_operation_tensorprod3d_final_p4( this )
1459 nullify( this%elem3D )
1461 end subroutine element_operation_tensorprod3d_final_p4
1466 subroutine element_operation_tensorprod3d_dx_p4( this, vec_in, vec_out )
1470 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1471 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1475 end subroutine element_operation_tensorprod3d_dx_p4
1480 subroutine element_operation_tensorprod3d_dy_p4( this, vec_in, vec_out )
1484 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1485 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1489 end subroutine element_operation_tensorprod3d_dy_p4
1494 subroutine element_operation_tensorprod3d_dz_p4( this, vec_in, vec_out )
1498 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1499 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1503 end subroutine element_operation_tensorprod3d_dz_p4
1508 subroutine element_operation_tensorprod3d_lift_p4( this, vec_in, vec_out )
1512 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1513 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1517 end subroutine element_operation_tensorprod3d_lift_p4
1522 subroutine element_operation_tensorprod3d_dxdydzlift_p4( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1528 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1529 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1530 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1531 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1532 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1533 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1536 vec_out_dx, vec_out_dy, vec_out_dz )
1541 end subroutine element_operation_tensorprod3d_dxdydzlift_p4
1546 subroutine element_operation_tensorprod3d_div_p4( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
1547 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1553 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
1554 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
1555 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
1556 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1557 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1558 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1559 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1560 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1567 vec_out_dx, vec_out_dy, vec_out_dz )
1569 end subroutine element_operation_tensorprod3d_div_p4
1574 subroutine element_operation_tensorprod3d_div_var5_p4( this, vec_in, vec_in_lift, &
1581 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1582 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1583 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1593 call element_operation_kernel_matvec_divlike_dirxyz_p4( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
1594 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1597 end subroutine element_operation_tensorprod3d_div_var5_p4
1600 subroutine element_operation_tensorprod3d_vfilterpm1_p4( this, vec_in, vec_out )
1604 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1605 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1611 end subroutine element_operation_tensorprod3d_vfilterpm1_p4
1614 subroutine element_operation_tensorprod3d_modalfilter_tracer_p4( this, vec_in, vec_work, vec_out )
1620 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1621 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1622 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1629 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p4
1632 subroutine element_operation_tensorprod3d_modalfilter_var5_p4( this, vec_in, vec_work, vec_out )
1638 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1639 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1640 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1650 end subroutine element_operation_tensorprod3d_modalfilter_var5_p4
1658 subroutine element_operation_tensorprod3d_init_p5( this, elem3D )
1664 this%elem3D => elem3d
1666 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
1669 end subroutine element_operation_tensorprod3d_init_p5
1674 subroutine element_operation_tensorprod3d_setup_modalfilter_p5( this, &
1675 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1676 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1681 real(rp),
intent(in) :: mf_etac_h
1682 real(rp),
intent(in) :: mf_alpha_h
1683 integer,
intent(in) :: mf_order_h
1684 real(rp),
intent(in) :: mf_etac_v
1685 real(rp),
intent(in) :: mf_alpha_v
1686 integer,
intent(in) :: mf_order_v
1689 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1690 mf_etac_h, mf_alpha_h, mf_order_h, &
1691 mf_etac_v, mf_alpha_v, mf_order_v, &
1692 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1695 end subroutine element_operation_tensorprod3d_setup_modalfilter_p5
1700 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p5( this, &
1701 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1702 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1707 real(rp),
intent(in) :: mf_etac_h
1708 real(rp),
intent(in) :: mf_alpha_h
1709 integer,
intent(in) :: mf_order_h
1710 real(rp),
intent(in) :: mf_etac_v
1711 real(rp),
intent(in) :: mf_alpha_v
1712 integer,
intent(in) :: mf_order_v
1715 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1716 mf_etac_h, mf_alpha_h, mf_order_h, &
1717 mf_etac_v, mf_alpha_v, mf_order_v, &
1718 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1721 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p5
1726 subroutine element_operation_tensorprod3d_final_p5( this )
1730 nullify( this%elem3D )
1732 end subroutine element_operation_tensorprod3d_final_p5
1737 subroutine element_operation_tensorprod3d_dx_p5( this, vec_in, vec_out )
1741 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1742 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1746 end subroutine element_operation_tensorprod3d_dx_p5
1751 subroutine element_operation_tensorprod3d_dy_p5( this, vec_in, vec_out )
1755 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1756 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1760 end subroutine element_operation_tensorprod3d_dy_p5
1765 subroutine element_operation_tensorprod3d_dz_p5( this, vec_in, vec_out )
1769 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1770 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1774 end subroutine element_operation_tensorprod3d_dz_p5
1779 subroutine element_operation_tensorprod3d_lift_p5( this, vec_in, vec_out )
1783 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1784 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1788 end subroutine element_operation_tensorprod3d_lift_p5
1793 subroutine element_operation_tensorprod3d_dxdydzlift_p5( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1799 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1800 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1801 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1802 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1803 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1804 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1807 vec_out_dx, vec_out_dy, vec_out_dz )
1812 end subroutine element_operation_tensorprod3d_dxdydzlift_p5
1817 subroutine element_operation_tensorprod3d_div_p5( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
1818 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1824 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
1825 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
1826 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
1827 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1828 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1829 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1830 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1831 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1838 vec_out_dx, vec_out_dy, vec_out_dz )
1840 end subroutine element_operation_tensorprod3d_div_p5
1845 subroutine element_operation_tensorprod3d_div_var5_p5( this, vec_in, vec_in_lift, &
1852 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1853 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1854 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1864 call element_operation_kernel_matvec_divlike_dirxyz_p5( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
1865 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1868 end subroutine element_operation_tensorprod3d_div_var5_p5
1871 subroutine element_operation_tensorprod3d_vfilterpm1_p5( this, vec_in, vec_out )
1875 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1876 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1882 end subroutine element_operation_tensorprod3d_vfilterpm1_p5
1885 subroutine element_operation_tensorprod3d_modalfilter_tracer_p5( this, vec_in, vec_work, vec_out )
1891 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1892 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1893 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1900 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p5
1903 subroutine element_operation_tensorprod3d_modalfilter_var5_p5( this, vec_in, vec_work, vec_out )
1909 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1910 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1911 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1921 end subroutine element_operation_tensorprod3d_modalfilter_var5_p5
1929 subroutine element_operation_tensorprod3d_init_p6( this, elem3D )
1935 this%elem3D => elem3d
1937 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
1940 end subroutine element_operation_tensorprod3d_init_p6
1945 subroutine element_operation_tensorprod3d_setup_modalfilter_p6( this, &
1946 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1947 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1952 real(rp),
intent(in) :: mf_etac_h
1953 real(rp),
intent(in) :: mf_alpha_h
1954 integer,
intent(in) :: mf_order_h
1955 real(rp),
intent(in) :: mf_etac_v
1956 real(rp),
intent(in) :: mf_alpha_v
1957 integer,
intent(in) :: mf_order_v
1960 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1961 mf_etac_h, mf_alpha_h, mf_order_h, &
1962 mf_etac_v, mf_alpha_v, mf_order_v, &
1963 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1966 end subroutine element_operation_tensorprod3d_setup_modalfilter_p6
1971 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p6( this, &
1972 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1973 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1978 real(rp),
intent(in) :: mf_etac_h
1979 real(rp),
intent(in) :: mf_alpha_h
1980 integer,
intent(in) :: mf_order_h
1981 real(rp),
intent(in) :: mf_etac_v
1982 real(rp),
intent(in) :: mf_alpha_v
1983 integer,
intent(in) :: mf_order_v
1986 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1987 mf_etac_h, mf_alpha_h, mf_order_h, &
1988 mf_etac_v, mf_alpha_v, mf_order_v, &
1989 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1992 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p6
1997 subroutine element_operation_tensorprod3d_final_p6( this )
2001 nullify( this%elem3D )
2003 end subroutine element_operation_tensorprod3d_final_p6
2008 subroutine element_operation_tensorprod3d_dx_p6( this, vec_in, vec_out )
2012 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2013 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2017 end subroutine element_operation_tensorprod3d_dx_p6
2022 subroutine element_operation_tensorprod3d_dy_p6( this, vec_in, vec_out )
2026 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2027 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2031 end subroutine element_operation_tensorprod3d_dy_p6
2036 subroutine element_operation_tensorprod3d_dz_p6( this, vec_in, vec_out )
2040 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2041 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2045 end subroutine element_operation_tensorprod3d_dz_p6
2050 subroutine element_operation_tensorprod3d_lift_p6( this, vec_in, vec_out )
2054 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2055 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2059 end subroutine element_operation_tensorprod3d_lift_p6
2064 subroutine element_operation_tensorprod3d_dxdydzlift_p6( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2070 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2071 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2072 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2073 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2074 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2075 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2078 vec_out_dx, vec_out_dy, vec_out_dz )
2083 end subroutine element_operation_tensorprod3d_dxdydzlift_p6
2088 subroutine element_operation_tensorprod3d_div_p6( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
2089 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2095 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
2096 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
2097 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
2098 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2099 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2100 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2101 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2102 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2109 vec_out_dx, vec_out_dy, vec_out_dz )
2111 end subroutine element_operation_tensorprod3d_div_p6
2116 subroutine element_operation_tensorprod3d_div_var5_p6( this, vec_in, vec_in_lift, &
2123 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2124 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2125 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2135 call element_operation_kernel_matvec_divlike_dirxyz_p6( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
2136 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2139 end subroutine element_operation_tensorprod3d_div_var5_p6
2142 subroutine element_operation_tensorprod3d_vfilterpm1_p6( this, vec_in, vec_out )
2146 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2147 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2153 end subroutine element_operation_tensorprod3d_vfilterpm1_p6
2156 subroutine element_operation_tensorprod3d_modalfilter_tracer_p6( this, vec_in, vec_work, vec_out )
2162 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2163 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2164 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2171 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p6
2174 subroutine element_operation_tensorprod3d_modalfilter_var5_p6( this, vec_in, vec_work, vec_out )
2180 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2181 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2182 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2192 end subroutine element_operation_tensorprod3d_modalfilter_var5_p6
2200 subroutine element_operation_tensorprod3d_init_p7( this, elem3D )
2206 this%elem3D => elem3d
2208 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
2211 end subroutine element_operation_tensorprod3d_init_p7
2216 subroutine element_operation_tensorprod3d_setup_modalfilter_p7( this, &
2217 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2218 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2223 real(rp),
intent(in) :: mf_etac_h
2224 real(rp),
intent(in) :: mf_alpha_h
2225 integer,
intent(in) :: mf_order_h
2226 real(rp),
intent(in) :: mf_etac_v
2227 real(rp),
intent(in) :: mf_alpha_v
2228 integer,
intent(in) :: mf_order_v
2231 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2232 mf_etac_h, mf_alpha_h, mf_order_h, &
2233 mf_etac_v, mf_alpha_v, mf_order_v, &
2234 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2237 end subroutine element_operation_tensorprod3d_setup_modalfilter_p7
2242 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p7( this, &
2243 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2244 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2249 real(rp),
intent(in) :: mf_etac_h
2250 real(rp),
intent(in) :: mf_alpha_h
2251 integer,
intent(in) :: mf_order_h
2252 real(rp),
intent(in) :: mf_etac_v
2253 real(rp),
intent(in) :: mf_alpha_v
2254 integer,
intent(in) :: mf_order_v
2257 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2258 mf_etac_h, mf_alpha_h, mf_order_h, &
2259 mf_etac_v, mf_alpha_v, mf_order_v, &
2260 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2263 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p7
2268 subroutine element_operation_tensorprod3d_final_p7( this )
2272 nullify( this%elem3D )
2274 end subroutine element_operation_tensorprod3d_final_p7
2279 subroutine element_operation_tensorprod3d_dx_p7( this, vec_in, vec_out )
2283 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2284 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2288 end subroutine element_operation_tensorprod3d_dx_p7
2293 subroutine element_operation_tensorprod3d_dy_p7( this, vec_in, vec_out )
2297 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2298 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2302 end subroutine element_operation_tensorprod3d_dy_p7
2307 subroutine element_operation_tensorprod3d_dz_p7( this, vec_in, vec_out )
2311 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2312 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2316 end subroutine element_operation_tensorprod3d_dz_p7
2321 subroutine element_operation_tensorprod3d_lift_p7( this, vec_in, vec_out )
2325 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2326 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2330 end subroutine element_operation_tensorprod3d_lift_p7
2335 subroutine element_operation_tensorprod3d_dxdydzlift_p7( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2341 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2342 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2343 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2344 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2345 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2346 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2349 vec_out_dx, vec_out_dy, vec_out_dz )
2354 end subroutine element_operation_tensorprod3d_dxdydzlift_p7
2359 subroutine element_operation_tensorprod3d_div_p7( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
2360 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2366 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
2367 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
2368 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
2369 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2370 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2371 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2372 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2373 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2380 vec_out_dx, vec_out_dy, vec_out_dz )
2382 end subroutine element_operation_tensorprod3d_div_p7
2387 subroutine element_operation_tensorprod3d_div_var5_p7( this, vec_in, vec_in_lift, &
2394 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2395 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2396 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2406 call element_operation_kernel_matvec_divlike_dirxyz_p7( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
2407 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2410 end subroutine element_operation_tensorprod3d_div_var5_p7
2413 subroutine element_operation_tensorprod3d_vfilterpm1_p7( this, vec_in, vec_out )
2417 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2418 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2424 end subroutine element_operation_tensorprod3d_vfilterpm1_p7
2427 subroutine element_operation_tensorprod3d_modalfilter_tracer_p7( this, vec_in, vec_work, vec_out )
2433 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2434 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2435 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2442 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p7
2445 subroutine element_operation_tensorprod3d_modalfilter_var5_p7( this, vec_in, vec_work, vec_out )
2451 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2452 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2453 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2463 end subroutine element_operation_tensorprod3d_modalfilter_var5_p7
2471 subroutine element_operation_tensorprod3d_init_p8( this, elem3D )
2477 this%elem3D => elem3d
2479 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
2482 end subroutine element_operation_tensorprod3d_init_p8
2487 subroutine element_operation_tensorprod3d_setup_modalfilter_p8( this, &
2488 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2489 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2494 real(rp),
intent(in) :: mf_etac_h
2495 real(rp),
intent(in) :: mf_alpha_h
2496 integer,
intent(in) :: mf_order_h
2497 real(rp),
intent(in) :: mf_etac_v
2498 real(rp),
intent(in) :: mf_alpha_v
2499 integer,
intent(in) :: mf_order_v
2502 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2503 mf_etac_h, mf_alpha_h, mf_order_h, &
2504 mf_etac_v, mf_alpha_v, mf_order_v, &
2505 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2508 end subroutine element_operation_tensorprod3d_setup_modalfilter_p8
2513 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p8( this, &
2514 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2515 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2520 real(rp),
intent(in) :: mf_etac_h
2521 real(rp),
intent(in) :: mf_alpha_h
2522 integer,
intent(in) :: mf_order_h
2523 real(rp),
intent(in) :: mf_etac_v
2524 real(rp),
intent(in) :: mf_alpha_v
2525 integer,
intent(in) :: mf_order_v
2528 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2529 mf_etac_h, mf_alpha_h, mf_order_h, &
2530 mf_etac_v, mf_alpha_v, mf_order_v, &
2531 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2534 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p8
2539 subroutine element_operation_tensorprod3d_final_p8( this )
2543 nullify( this%elem3D )
2545 end subroutine element_operation_tensorprod3d_final_p8
2550 subroutine element_operation_tensorprod3d_dx_p8( this, vec_in, vec_out )
2554 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2555 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2559 end subroutine element_operation_tensorprod3d_dx_p8
2564 subroutine element_operation_tensorprod3d_dy_p8( this, vec_in, vec_out )
2568 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2569 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2573 end subroutine element_operation_tensorprod3d_dy_p8
2578 subroutine element_operation_tensorprod3d_dz_p8( this, vec_in, vec_out )
2582 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2583 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2587 end subroutine element_operation_tensorprod3d_dz_p8
2592 subroutine element_operation_tensorprod3d_lift_p8( this, vec_in, vec_out )
2596 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2597 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2601 end subroutine element_operation_tensorprod3d_lift_p8
2606 subroutine element_operation_tensorprod3d_dxdydzlift_p8( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2612 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2613 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2614 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2615 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2616 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2617 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2620 vec_out_dx, vec_out_dy, vec_out_dz )
2625 end subroutine element_operation_tensorprod3d_dxdydzlift_p8
2630 subroutine element_operation_tensorprod3d_div_p8( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
2631 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2637 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
2638 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
2639 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
2640 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2641 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2642 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2643 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2644 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2651 vec_out_dx, vec_out_dy, vec_out_dz )
2653 end subroutine element_operation_tensorprod3d_div_p8
2658 subroutine element_operation_tensorprod3d_div_var5_p8( this, vec_in, vec_in_lift, &
2665 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2666 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2667 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2677 call element_operation_kernel_matvec_divlike_dirxyz_p8( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
2678 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2681 end subroutine element_operation_tensorprod3d_div_var5_p8
2684 subroutine element_operation_tensorprod3d_vfilterpm1_p8( this, vec_in, vec_out )
2688 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2689 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2695 end subroutine element_operation_tensorprod3d_vfilterpm1_p8
2698 subroutine element_operation_tensorprod3d_modalfilter_tracer_p8( this, vec_in, vec_work, vec_out )
2704 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2705 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2706 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2713 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p8
2716 subroutine element_operation_tensorprod3d_modalfilter_var5_p8( this, vec_in, vec_work, vec_out )
2722 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2723 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2724 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2734 end subroutine element_operation_tensorprod3d_modalfilter_var5_p8
2742 subroutine element_operation_tensorprod3d_init_p9( this, elem3D )
2748 this%elem3D => elem3d
2750 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
2753 end subroutine element_operation_tensorprod3d_init_p9
2758 subroutine element_operation_tensorprod3d_setup_modalfilter_p9( this, &
2759 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2760 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2765 real(rp),
intent(in) :: mf_etac_h
2766 real(rp),
intent(in) :: mf_alpha_h
2767 integer,
intent(in) :: mf_order_h
2768 real(rp),
intent(in) :: mf_etac_v
2769 real(rp),
intent(in) :: mf_alpha_v
2770 integer,
intent(in) :: mf_order_v
2773 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2774 mf_etac_h, mf_alpha_h, mf_order_h, &
2775 mf_etac_v, mf_alpha_v, mf_order_v, &
2776 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2779 end subroutine element_operation_tensorprod3d_setup_modalfilter_p9
2784 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p9( this, &
2785 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2786 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2791 real(rp),
intent(in) :: mf_etac_h
2792 real(rp),
intent(in) :: mf_alpha_h
2793 integer,
intent(in) :: mf_order_h
2794 real(rp),
intent(in) :: mf_etac_v
2795 real(rp),
intent(in) :: mf_alpha_v
2796 integer,
intent(in) :: mf_order_v
2799 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2800 mf_etac_h, mf_alpha_h, mf_order_h, &
2801 mf_etac_v, mf_alpha_v, mf_order_v, &
2802 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2805 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p9
2810 subroutine element_operation_tensorprod3d_final_p9( this )
2814 nullify( this%elem3D )
2816 end subroutine element_operation_tensorprod3d_final_p9
2821 subroutine element_operation_tensorprod3d_dx_p9( this, vec_in, vec_out )
2825 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2826 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2830 end subroutine element_operation_tensorprod3d_dx_p9
2835 subroutine element_operation_tensorprod3d_dy_p9( this, vec_in, vec_out )
2839 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2840 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2844 end subroutine element_operation_tensorprod3d_dy_p9
2849 subroutine element_operation_tensorprod3d_dz_p9( this, vec_in, vec_out )
2853 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2854 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2858 end subroutine element_operation_tensorprod3d_dz_p9
2863 subroutine element_operation_tensorprod3d_lift_p9( this, vec_in, vec_out )
2867 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2868 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2872 end subroutine element_operation_tensorprod3d_lift_p9
2877 subroutine element_operation_tensorprod3d_dxdydzlift_p9( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2883 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2884 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2885 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2886 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2887 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2888 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2891 vec_out_dx, vec_out_dy, vec_out_dz )
2896 end subroutine element_operation_tensorprod3d_dxdydzlift_p9
2901 subroutine element_operation_tensorprod3d_div_p9( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
2902 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2908 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
2909 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
2910 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
2911 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2912 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2913 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2914 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2915 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2922 vec_out_dx, vec_out_dy, vec_out_dz )
2924 end subroutine element_operation_tensorprod3d_div_p9
2929 subroutine element_operation_tensorprod3d_div_var5_p9( this, vec_in, vec_in_lift, &
2936 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2937 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2938 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2948 call element_operation_kernel_matvec_divlike_dirxyz_p9( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
2949 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2952 end subroutine element_operation_tensorprod3d_div_var5_p9
2955 subroutine element_operation_tensorprod3d_vfilterpm1_p9( this, vec_in, vec_out )
2959 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2960 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2966 end subroutine element_operation_tensorprod3d_vfilterpm1_p9
2969 subroutine element_operation_tensorprod3d_modalfilter_tracer_p9( this, vec_in, vec_work, vec_out )
2975 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2976 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2977 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2984 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p9
2987 subroutine element_operation_tensorprod3d_modalfilter_var5_p9( this, vec_in, vec_work, vec_out )
2993 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2994 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2995 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3005 end subroutine element_operation_tensorprod3d_modalfilter_var5_p9
3013 subroutine element_operation_tensorprod3d_init_p10( this, elem3D )
3019 this%elem3D => elem3d
3021 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
3024 end subroutine element_operation_tensorprod3d_init_p10
3029 subroutine element_operation_tensorprod3d_setup_modalfilter_p10( this, &
3030 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3031 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3036 real(rp),
intent(in) :: mf_etac_h
3037 real(rp),
intent(in) :: mf_alpha_h
3038 integer,
intent(in) :: mf_order_h
3039 real(rp),
intent(in) :: mf_etac_v
3040 real(rp),
intent(in) :: mf_alpha_v
3041 integer,
intent(in) :: mf_order_v
3044 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3045 mf_etac_h, mf_alpha_h, mf_order_h, &
3046 mf_etac_v, mf_alpha_v, mf_order_v, &
3047 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3050 end subroutine element_operation_tensorprod3d_setup_modalfilter_p10
3055 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p10( this, &
3056 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3057 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3062 real(rp),
intent(in) :: mf_etac_h
3063 real(rp),
intent(in) :: mf_alpha_h
3064 integer,
intent(in) :: mf_order_h
3065 real(rp),
intent(in) :: mf_etac_v
3066 real(rp),
intent(in) :: mf_alpha_v
3067 integer,
intent(in) :: mf_order_v
3070 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3071 mf_etac_h, mf_alpha_h, mf_order_h, &
3072 mf_etac_v, mf_alpha_v, mf_order_v, &
3073 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3076 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p10
3081 subroutine element_operation_tensorprod3d_final_p10( this )
3085 nullify( this%elem3D )
3087 end subroutine element_operation_tensorprod3d_final_p10
3092 subroutine element_operation_tensorprod3d_dx_p10( this, vec_in, vec_out )
3096 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3097 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3101 end subroutine element_operation_tensorprod3d_dx_p10
3106 subroutine element_operation_tensorprod3d_dy_p10( this, vec_in, vec_out )
3110 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3111 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3115 end subroutine element_operation_tensorprod3d_dy_p10
3120 subroutine element_operation_tensorprod3d_dz_p10( this, vec_in, vec_out )
3124 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3125 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3129 end subroutine element_operation_tensorprod3d_dz_p10
3134 subroutine element_operation_tensorprod3d_lift_p10( this, vec_in, vec_out )
3138 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3139 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3143 end subroutine element_operation_tensorprod3d_lift_p10
3148 subroutine element_operation_tensorprod3d_dxdydzlift_p10( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3154 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3155 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3156 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3157 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3158 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3159 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3162 vec_out_dx, vec_out_dy, vec_out_dz )
3167 end subroutine element_operation_tensorprod3d_dxdydzlift_p10
3172 subroutine element_operation_tensorprod3d_div_p10( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
3173 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3179 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
3180 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
3181 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
3182 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3183 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3184 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3185 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3186 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3193 vec_out_dx, vec_out_dy, vec_out_dz )
3195 end subroutine element_operation_tensorprod3d_div_p10
3200 subroutine element_operation_tensorprod3d_div_var5_p10( this, vec_in, vec_in_lift, &
3207 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3208 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3209 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3219 call element_operation_kernel_matvec_divlike_dirxyz_p10( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
3220 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3223 end subroutine element_operation_tensorprod3d_div_var5_p10
3226 subroutine element_operation_tensorprod3d_vfilterpm1_p10( this, vec_in, vec_out )
3230 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3231 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3237 end subroutine element_operation_tensorprod3d_vfilterpm1_p10
3240 subroutine element_operation_tensorprod3d_modalfilter_tracer_p10( this, vec_in, vec_work, vec_out )
3246 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3247 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3248 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3255 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p10
3258 subroutine element_operation_tensorprod3d_modalfilter_var5_p10( this, vec_in, vec_work, vec_out )
3264 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3265 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3266 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3276 end subroutine element_operation_tensorprod3d_modalfilter_var5_p10
3284 subroutine element_operation_tensorprod3d_init_p11( this, elem3D )
3290 this%elem3D => elem3d
3292 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
3295 end subroutine element_operation_tensorprod3d_init_p11
3300 subroutine element_operation_tensorprod3d_setup_modalfilter_p11( this, &
3301 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3302 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3307 real(rp),
intent(in) :: mf_etac_h
3308 real(rp),
intent(in) :: mf_alpha_h
3309 integer,
intent(in) :: mf_order_h
3310 real(rp),
intent(in) :: mf_etac_v
3311 real(rp),
intent(in) :: mf_alpha_v
3312 integer,
intent(in) :: mf_order_v
3315 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3316 mf_etac_h, mf_alpha_h, mf_order_h, &
3317 mf_etac_v, mf_alpha_v, mf_order_v, &
3318 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3321 end subroutine element_operation_tensorprod3d_setup_modalfilter_p11
3326 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p11( this, &
3327 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3328 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3333 real(rp),
intent(in) :: mf_etac_h
3334 real(rp),
intent(in) :: mf_alpha_h
3335 integer,
intent(in) :: mf_order_h
3336 real(rp),
intent(in) :: mf_etac_v
3337 real(rp),
intent(in) :: mf_alpha_v
3338 integer,
intent(in) :: mf_order_v
3341 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3342 mf_etac_h, mf_alpha_h, mf_order_h, &
3343 mf_etac_v, mf_alpha_v, mf_order_v, &
3344 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3347 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p11
3352 subroutine element_operation_tensorprod3d_final_p11( this )
3356 nullify( this%elem3D )
3358 end subroutine element_operation_tensorprod3d_final_p11
3363 subroutine element_operation_tensorprod3d_dx_p11( this, vec_in, vec_out )
3367 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3368 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3372 end subroutine element_operation_tensorprod3d_dx_p11
3377 subroutine element_operation_tensorprod3d_dy_p11( this, vec_in, vec_out )
3381 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3382 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3386 end subroutine element_operation_tensorprod3d_dy_p11
3391 subroutine element_operation_tensorprod3d_dz_p11( this, vec_in, vec_out )
3395 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3396 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3400 end subroutine element_operation_tensorprod3d_dz_p11
3405 subroutine element_operation_tensorprod3d_lift_p11( this, vec_in, vec_out )
3409 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3410 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3414 end subroutine element_operation_tensorprod3d_lift_p11
3419 subroutine element_operation_tensorprod3d_dxdydzlift_p11( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3425 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3426 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3427 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3428 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3429 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3430 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3433 vec_out_dx, vec_out_dy, vec_out_dz )
3438 end subroutine element_operation_tensorprod3d_dxdydzlift_p11
3443 subroutine element_operation_tensorprod3d_div_p11( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
3444 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3450 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
3451 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
3452 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
3453 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3454 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3455 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3456 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3457 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3464 vec_out_dx, vec_out_dy, vec_out_dz )
3466 end subroutine element_operation_tensorprod3d_div_p11
3471 subroutine element_operation_tensorprod3d_div_var5_p11( this, vec_in, vec_in_lift, &
3478 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3479 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3480 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3490 call element_operation_kernel_matvec_divlike_dirxyz_p11( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
3491 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3494 end subroutine element_operation_tensorprod3d_div_var5_p11
3497 subroutine element_operation_tensorprod3d_vfilterpm1_p11( this, vec_in, vec_out )
3501 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3502 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3508 end subroutine element_operation_tensorprod3d_vfilterpm1_p11
3511 subroutine element_operation_tensorprod3d_modalfilter_tracer_p11( this, vec_in, vec_work, vec_out )
3517 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3518 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3519 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3526 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p11
3529 subroutine element_operation_tensorprod3d_modalfilter_var5_p11( this, vec_in, vec_work, vec_out )
3535 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3536 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3537 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3547 end subroutine element_operation_tensorprod3d_modalfilter_var5_p11
3555 subroutine element_operation_tensorprod3d_init_p12( this, elem3D )
3561 this%elem3D => elem3d
3563 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
3566 end subroutine element_operation_tensorprod3d_init_p12
3571 subroutine element_operation_tensorprod3d_setup_modalfilter_p12( this, &
3572 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3573 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3578 real(rp),
intent(in) :: mf_etac_h
3579 real(rp),
intent(in) :: mf_alpha_h
3580 integer,
intent(in) :: mf_order_h
3581 real(rp),
intent(in) :: mf_etac_v
3582 real(rp),
intent(in) :: mf_alpha_v
3583 integer,
intent(in) :: mf_order_v
3586 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3587 mf_etac_h, mf_alpha_h, mf_order_h, &
3588 mf_etac_v, mf_alpha_v, mf_order_v, &
3589 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3592 end subroutine element_operation_tensorprod3d_setup_modalfilter_p12
3597 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p12( this, &
3598 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3599 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3604 real(rp),
intent(in) :: mf_etac_h
3605 real(rp),
intent(in) :: mf_alpha_h
3606 integer,
intent(in) :: mf_order_h
3607 real(rp),
intent(in) :: mf_etac_v
3608 real(rp),
intent(in) :: mf_alpha_v
3609 integer,
intent(in) :: mf_order_v
3612 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3613 mf_etac_h, mf_alpha_h, mf_order_h, &
3614 mf_etac_v, mf_alpha_v, mf_order_v, &
3615 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3618 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p12
3623 subroutine element_operation_tensorprod3d_final_p12( this )
3627 nullify( this%elem3D )
3629 end subroutine element_operation_tensorprod3d_final_p12
3634 subroutine element_operation_tensorprod3d_dx_p12( this, vec_in, vec_out )
3638 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3639 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3643 end subroutine element_operation_tensorprod3d_dx_p12
3648 subroutine element_operation_tensorprod3d_dy_p12( this, vec_in, vec_out )
3652 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3653 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3657 end subroutine element_operation_tensorprod3d_dy_p12
3662 subroutine element_operation_tensorprod3d_dz_p12( this, vec_in, vec_out )
3666 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3667 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3671 end subroutine element_operation_tensorprod3d_dz_p12
3676 subroutine element_operation_tensorprod3d_lift_p12( this, vec_in, vec_out )
3680 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3681 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3685 end subroutine element_operation_tensorprod3d_lift_p12
3690 subroutine element_operation_tensorprod3d_dxdydzlift_p12( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3696 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3697 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3698 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3699 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3700 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3701 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3704 vec_out_dx, vec_out_dy, vec_out_dz )
3709 end subroutine element_operation_tensorprod3d_dxdydzlift_p12
3714 subroutine element_operation_tensorprod3d_div_p12( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
3715 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3721 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
3722 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
3723 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
3724 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3725 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3726 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3727 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3728 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3735 vec_out_dx, vec_out_dy, vec_out_dz )
3737 end subroutine element_operation_tensorprod3d_div_p12
3742 subroutine element_operation_tensorprod3d_div_var5_p12( this, vec_in, vec_in_lift, &
3749 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3750 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3751 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3761 call element_operation_kernel_matvec_divlike_dirxyz_p12( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
3762 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3765 end subroutine element_operation_tensorprod3d_div_var5_p12
3768 subroutine element_operation_tensorprod3d_vfilterpm1_p12( this, vec_in, vec_out )
3772 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3773 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3779 end subroutine element_operation_tensorprod3d_vfilterpm1_p12
3782 subroutine element_operation_tensorprod3d_modalfilter_tracer_p12( this, vec_in, vec_work, vec_out )
3788 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3789 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3790 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3797 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p12
3800 subroutine element_operation_tensorprod3d_modalfilter_var5_p12( this, vec_in, vec_work, vec_out )
3806 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3807 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3808 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3818 end subroutine element_operation_tensorprod3d_modalfilter_var5_p12
3826 subroutine element_operation_tensorprod3d_init_p13( this, elem3D )
3832 this%elem3D => elem3d
3834 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
3837 end subroutine element_operation_tensorprod3d_init_p13
3842 subroutine element_operation_tensorprod3d_setup_modalfilter_p13( this, &
3843 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3844 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3849 real(rp),
intent(in) :: mf_etac_h
3850 real(rp),
intent(in) :: mf_alpha_h
3851 integer,
intent(in) :: mf_order_h
3852 real(rp),
intent(in) :: mf_etac_v
3853 real(rp),
intent(in) :: mf_alpha_v
3854 integer,
intent(in) :: mf_order_v
3857 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3858 mf_etac_h, mf_alpha_h, mf_order_h, &
3859 mf_etac_v, mf_alpha_v, mf_order_v, &
3860 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3863 end subroutine element_operation_tensorprod3d_setup_modalfilter_p13
3868 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p13( this, &
3869 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3870 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3875 real(rp),
intent(in) :: mf_etac_h
3876 real(rp),
intent(in) :: mf_alpha_h
3877 integer,
intent(in) :: mf_order_h
3878 real(rp),
intent(in) :: mf_etac_v
3879 real(rp),
intent(in) :: mf_alpha_v
3880 integer,
intent(in) :: mf_order_v
3883 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3884 mf_etac_h, mf_alpha_h, mf_order_h, &
3885 mf_etac_v, mf_alpha_v, mf_order_v, &
3886 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3889 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p13
3894 subroutine element_operation_tensorprod3d_final_p13( this )
3898 nullify( this%elem3D )
3900 end subroutine element_operation_tensorprod3d_final_p13
3905 subroutine element_operation_tensorprod3d_dx_p13( this, vec_in, vec_out )
3909 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3910 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3914 end subroutine element_operation_tensorprod3d_dx_p13
3919 subroutine element_operation_tensorprod3d_dy_p13( this, vec_in, vec_out )
3923 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3924 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3928 end subroutine element_operation_tensorprod3d_dy_p13
3933 subroutine element_operation_tensorprod3d_dz_p13( this, vec_in, vec_out )
3937 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3938 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3942 end subroutine element_operation_tensorprod3d_dz_p13
3947 subroutine element_operation_tensorprod3d_lift_p13( this, vec_in, vec_out )
3951 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3952 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3956 end subroutine element_operation_tensorprod3d_lift_p13
3961 subroutine element_operation_tensorprod3d_dxdydzlift_p13( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3967 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3968 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3969 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3970 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3971 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3972 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3975 vec_out_dx, vec_out_dy, vec_out_dz )
3980 end subroutine element_operation_tensorprod3d_dxdydzlift_p13
3985 subroutine element_operation_tensorprod3d_div_p13( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
3986 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3992 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
3993 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
3994 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
3995 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3996 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3997 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3998 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3999 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4006 vec_out_dx, vec_out_dy, vec_out_dz )
4008 end subroutine element_operation_tensorprod3d_div_p13
4013 subroutine element_operation_tensorprod3d_div_var5_p13( this, vec_in, vec_in_lift, &
4020 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4021 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4022 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4032 call element_operation_kernel_matvec_divlike_dirxyz_p13( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
4033 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4036 end subroutine element_operation_tensorprod3d_div_var5_p13
4039 subroutine element_operation_tensorprod3d_vfilterpm1_p13( this, vec_in, vec_out )
4043 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4044 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4050 end subroutine element_operation_tensorprod3d_vfilterpm1_p13
4053 subroutine element_operation_tensorprod3d_modalfilter_tracer_p13( this, vec_in, vec_work, vec_out )
4059 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4060 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4061 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4068 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p13
4071 subroutine element_operation_tensorprod3d_modalfilter_var5_p13( this, vec_in, vec_work, vec_out )
4077 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4078 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4079 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4089 end subroutine element_operation_tensorprod3d_modalfilter_var5_p13
4097 subroutine element_operation_tensorprod3d_init_p14( this, elem3D )
4103 this%elem3D => elem3d
4105 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
4108 end subroutine element_operation_tensorprod3d_init_p14
4113 subroutine element_operation_tensorprod3d_setup_modalfilter_p14( this, &
4114 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4115 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4120 real(rp),
intent(in) :: mf_etac_h
4121 real(rp),
intent(in) :: mf_alpha_h
4122 integer,
intent(in) :: mf_order_h
4123 real(rp),
intent(in) :: mf_etac_v
4124 real(rp),
intent(in) :: mf_alpha_v
4125 integer,
intent(in) :: mf_order_v
4128 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
4129 mf_etac_h, mf_alpha_h, mf_order_h, &
4130 mf_etac_v, mf_alpha_v, mf_order_v, &
4131 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4134 end subroutine element_operation_tensorprod3d_setup_modalfilter_p14
4139 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p14( this, &
4140 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4141 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4146 real(rp),
intent(in) :: mf_etac_h
4147 real(rp),
intent(in) :: mf_alpha_h
4148 integer,
intent(in) :: mf_order_h
4149 real(rp),
intent(in) :: mf_etac_v
4150 real(rp),
intent(in) :: mf_alpha_v
4151 integer,
intent(in) :: mf_order_v
4154 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
4155 mf_etac_h, mf_alpha_h, mf_order_h, &
4156 mf_etac_v, mf_alpha_v, mf_order_v, &
4157 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4160 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p14
4165 subroutine element_operation_tensorprod3d_final_p14( this )
4169 nullify( this%elem3D )
4171 end subroutine element_operation_tensorprod3d_final_p14
4176 subroutine element_operation_tensorprod3d_dx_p14( this, vec_in, vec_out )
4180 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4181 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4185 end subroutine element_operation_tensorprod3d_dx_p14
4190 subroutine element_operation_tensorprod3d_dy_p14( this, vec_in, vec_out )
4194 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4195 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4199 end subroutine element_operation_tensorprod3d_dy_p14
4204 subroutine element_operation_tensorprod3d_dz_p14( this, vec_in, vec_out )
4208 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4209 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4213 end subroutine element_operation_tensorprod3d_dz_p14
4218 subroutine element_operation_tensorprod3d_lift_p14( this, vec_in, vec_out )
4222 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
4223 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4227 end subroutine element_operation_tensorprod3d_lift_p14
4232 subroutine element_operation_tensorprod3d_dxdydzlift_p14( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4238 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4239 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4240 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4241 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4242 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4243 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4246 vec_out_dx, vec_out_dy, vec_out_dz )
4251 end subroutine element_operation_tensorprod3d_dxdydzlift_p14
4256 subroutine element_operation_tensorprod3d_div_p14( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
4257 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4263 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
4264 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
4265 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
4266 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4267 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4268 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4269 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4270 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4277 vec_out_dx, vec_out_dy, vec_out_dz )
4279 end subroutine element_operation_tensorprod3d_div_p14
4284 subroutine element_operation_tensorprod3d_div_var5_p14( this, vec_in, vec_in_lift, &
4291 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4292 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4293 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4303 call element_operation_kernel_matvec_divlike_dirxyz_p14( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
4304 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4307 end subroutine element_operation_tensorprod3d_div_var5_p14
4310 subroutine element_operation_tensorprod3d_vfilterpm1_p14( this, vec_in, vec_out )
4314 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4315 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4321 end subroutine element_operation_tensorprod3d_vfilterpm1_p14
4324 subroutine element_operation_tensorprod3d_modalfilter_tracer_p14( this, vec_in, vec_work, vec_out )
4330 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4331 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4332 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4339 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p14
4342 subroutine element_operation_tensorprod3d_modalfilter_var5_p14( this, vec_in, vec_work, vec_out )
4348 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4349 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4350 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4360 end subroutine element_operation_tensorprod3d_modalfilter_var5_p14
4368 subroutine element_operation_tensorprod3d_init_p15( this, elem3D )
4374 this%elem3D => elem3d
4376 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
4379 end subroutine element_operation_tensorprod3d_init_p15
4384 subroutine element_operation_tensorprod3d_setup_modalfilter_p15( this, &
4385 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4386 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4391 real(rp),
intent(in) :: mf_etac_h
4392 real(rp),
intent(in) :: mf_alpha_h
4393 integer,
intent(in) :: mf_order_h
4394 real(rp),
intent(in) :: mf_etac_v
4395 real(rp),
intent(in) :: mf_alpha_v
4396 integer,
intent(in) :: mf_order_v
4399 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
4400 mf_etac_h, mf_alpha_h, mf_order_h, &
4401 mf_etac_v, mf_alpha_v, mf_order_v, &
4402 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4405 end subroutine element_operation_tensorprod3d_setup_modalfilter_p15
4410 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p15( this, &
4411 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4412 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4417 real(rp),
intent(in) :: mf_etac_h
4418 real(rp),
intent(in) :: mf_alpha_h
4419 integer,
intent(in) :: mf_order_h
4420 real(rp),
intent(in) :: mf_etac_v
4421 real(rp),
intent(in) :: mf_alpha_v
4422 integer,
intent(in) :: mf_order_v
4425 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
4426 mf_etac_h, mf_alpha_h, mf_order_h, &
4427 mf_etac_v, mf_alpha_v, mf_order_v, &
4428 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4431 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p15
4436 subroutine element_operation_tensorprod3d_final_p15( this )
4440 nullify( this%elem3D )
4442 end subroutine element_operation_tensorprod3d_final_p15
4447 subroutine element_operation_tensorprod3d_dx_p15( this, vec_in, vec_out )
4451 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4452 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4456 end subroutine element_operation_tensorprod3d_dx_p15
4461 subroutine element_operation_tensorprod3d_dy_p15( this, vec_in, vec_out )
4465 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4466 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4470 end subroutine element_operation_tensorprod3d_dy_p15
4475 subroutine element_operation_tensorprod3d_dz_p15( this, vec_in, vec_out )
4479 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4480 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4484 end subroutine element_operation_tensorprod3d_dz_p15
4489 subroutine element_operation_tensorprod3d_lift_p15( this, vec_in, vec_out )
4493 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
4494 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4498 end subroutine element_operation_tensorprod3d_lift_p15
4503 subroutine element_operation_tensorprod3d_dxdydzlift_p15( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4509 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4510 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4511 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4512 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4513 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4514 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4517 vec_out_dx, vec_out_dy, vec_out_dz )
4522 end subroutine element_operation_tensorprod3d_dxdydzlift_p15
4527 subroutine element_operation_tensorprod3d_div_p15( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
4528 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4534 real(rp),
intent(in) :: vec_in_x(this%elem3d%np)
4535 real(rp),
intent(in) :: vec_in_y(this%elem3d%np)
4536 real(rp),
intent(in) :: vec_in_z(this%elem3d%np)
4537 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4538 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4539 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4540 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4541 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4548 vec_out_dx, vec_out_dy, vec_out_dz )
4550 end subroutine element_operation_tensorprod3d_div_p15
4555 subroutine element_operation_tensorprod3d_div_var5_p15( this, vec_in, vec_in_lift, &
4562 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4563 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4564 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4574 call element_operation_kernel_matvec_divlike_dirxyz_p15( this%D1D, this%D1D_tr, vec_in(:,1,iv), vec_in(:,2,iv), vec_in(:,3,iv), &
4575 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4578 end subroutine element_operation_tensorprod3d_div_var5_p15
4581 subroutine element_operation_tensorprod3d_vfilterpm1_p15( this, vec_in, vec_out )
4585 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4586 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4592 end subroutine element_operation_tensorprod3d_vfilterpm1_p15
4595 subroutine element_operation_tensorprod3d_modalfilter_tracer_p15( this, vec_in, vec_work, vec_out )
4601 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4602 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4603 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4610 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p15
4613 subroutine element_operation_tensorprod3d_modalfilter_var5_p15( this, vec_in, vec_work, vec_out )
4619 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4620 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4621 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4631 end subroutine element_operation_tensorprod3d_modalfilter_var5_p15
4637 subroutine setup_modalfilter( MFilter_h1D, MFilter_h1D_tr, MFilter_v1D_tr, &
4638 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4639 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v, &
4640 PolyOrder_h, PolyOrder_v )
4645 real(rp),
intent(inout) :: mfilter_h1d(:,:)
4646 real(rp),
intent(inout) :: mfilter_h1d_tr(:,:)
4647 real(rp),
intent(inout) :: mfilter_v1d_tr(:,:)
4648 real(rp),
intent(in) :: mf_etac_h
4649 real(rp),
intent(in) :: mf_alpha_h
4650 integer,
intent(in) :: mf_order_h
4651 real(rp),
intent(in) :: mf_etac_v
4652 real(rp),
intent(in) :: mf_alpha_v
4653 integer,
intent(in) :: mf_order_v
4654 integer,
intent(in) :: polyorder_h
4655 integer,
intent(in) :: polyorder_v
4661 call elem1d%Init( polyorder_h, .false. )
4663 call mfilter1d%Init( elem1d, &
4664 mf_etac_h, mf_alpha_h, mf_order_h )
4665 mfilter_h1d(:,:) = mfilter1d%FilterMat(:,:)
4666 mfilter_h1d_tr(:,:) = transpose(mfilter_h1d(:,:))
4668 call mfilter1d%Final()
4672 call elem1d%Init( polyorder_v, .false. )
4674 call mfilter1d%Init( elem1d, &
4675 mf_etac_v, mf_alpha_v, mf_order_v )
4676 mfilter_v1d_tr(:,:) = transpose(mfilter1d%FilterMat(:,:))
4678 call mfilter1d%Final()
4682 end subroutine setup_modalfilter
4685 subroutine setup_elem_operator( D1D, D1D_tr, Lift_mat, IntrpMat_VPOrdM1_tr, &
4690 integer,
intent(in) :: np
4692 real(rp),
intent(out) :: d1d(np,np)
4693 real(rp),
intent(out) :: d1d_tr(np,np)
4694 real(rp),
intent(out) :: lift_mat(np,np,np,6)
4695 real(rp),
intent(out) :: intrpmat_vpordm1_tr(np,np)
4699 integer :: p1, p2, p_
4700 real(rp) :: invv_vpordm1(np,np)
4701 real(rp) :: intrpmat_vpordm1(np,np)
4708 call elem1d%Init( np-1, .false. )
4709 d1d(:,:) = elem1d%Dx1(:,:)
4710 d1d_tr(:,:) = transpose(d1d)
4712 call lift_sm%Init( elem3d%Lift, storage_format=
'ELL' )
4716 p1 = i + (j-1)*np + (k-1)*np**2
4717 lift_mat(i,j,k,1:6) = &
4718 (/ elem3d%Lift(p1,i+(k-1)*np), &
4719 elem3d%Lift(p1,j+(k-1)*np+(2-1)*np**2), &
4720 elem3d%Lift(p1,i+(k-1)*np+(3-1)*np**2), &
4721 elem3d%Lift(p1,j+(k-1)*np+(4-1)*np**2), &
4722 elem3d%Lift(p1,i+(j-1)*np+(5-1)*np**2), &
4723 elem3d%Lift(p1,i+(j-1)*np+(6-1)*np**2) /)
4727 call lift_sm%Final()
4731 invv_vpordm1(:,:) = elem1d%invV(:,:)
4732 invv_vpordm1(np,:) = 0.0_rp
4733 intrpmat_vpordm1(:,:) = matmul(elem1d%V, invv_vpordm1)
4734 intrpmat_vpordm1_tr(:,:) = transpose(intrpmat_vpordm1)
4740 end subroutine setup_elem_operator
4742end module scale_element_operation_tensorprod3D
module FElib / Element / Base
subroutine, public elementbase3d_init(elem, lumpedmat_flag)
subroutine, public elementbase3d_final(elem)
module FElib / Element / hexahedron
module FElib / Element / line
module FElib / element/ ModalFilter
module FElib / Element / Operation / Base
module FElib / Element / Operation with 3D tensor product elements
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p14(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_modalfilter_p15(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=15.
subroutine, public element_operation_kernel_matvec_dirz_p15(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirz_p3(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p1(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_modalfilter_p13(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=13.
subroutine, public element_operation_kernel_matvec_modalfilter_p8(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=8.
subroutine, public element_operation_kernel_matvec_dirx_p4(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p3(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_dirx_p3(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p5(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p6(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p6(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_diry_p12(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_dirx_p12(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_modalfilter_p14(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=14.
subroutine, public element_operation_kernel_matvec_dirz_p6(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_modalfilter_p4(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=4.
subroutine, public element_operation_kernel_matvec_dirz_p8(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_diry_p5(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p13(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p14(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_modalfilter_p6(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=6.
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p12(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_modalfilter_p10(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=10.
subroutine, public element_operation_kernel_matvec_dirz_p12(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_diry_p15(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_dirz_p4(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_diry_p3(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_diry_p14(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_modalfilter_p2(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=2.
subroutine, public element_operation_kernel_matvec_diry_p10(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p2(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_diry_p9(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p4(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_modalfilter_p7(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=7.
subroutine, public element_operation_kernel_matvec_modalfilter_p9(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=9.
subroutine, public element_operation_kernel_matvec_diry_p6(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p5(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p12(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_diry_p1(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_modalfilter_p11(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=11.
subroutine, public element_operation_kernel_matvec_dirx_p9(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p14(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_dirx_p10(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p15(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p10(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_modalfilter_p12(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=12.
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p2(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_dirx_p14(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p2(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_diry_p7(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_dirx_p1(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p7(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_diry_p2(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p8(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p3(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_dirx_p7(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p15(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p10(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_modalfilter_p1(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=1.
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p13(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_dirx_p15(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_dirz_p1(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p7(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p1(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_dirx_p5(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_dirx_p8(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_diry_p11(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p9(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_diry_p4(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_modalfilter_p3(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=3.
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p11(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_dirz_p7(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p3(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_dirx_p13(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p8(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p1(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p10(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p13(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_diry_p8(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p9(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_modalfilter_p5(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=5.
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p8(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p7(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p4(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_dirz_p10(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirz_p5(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p4(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_dirx_p11(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_dirz_p9(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirx_p2(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_dirx_p6(mat_x, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the x direction (...
subroutine, public element_operation_kernel_matvec_dirz_p11(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p15(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p5(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_diry_p13(mat_y_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the y direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p11(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_divlike_dirxyz_p12(mat, mat_tr, vec_in_x, vec_in_y, vec_in_z, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_dirz_p14(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p9(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
subroutine, public element_operation_kernel_matvec_dirz_p13(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_lift_hexahedral_p6(lift, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with Lift operations with hexahedral element of p...
subroutine, public element_operation_kernel_matvec_dirz_p2(mat_z_tr, vec_in, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_gradlike_dirxyz_p11(mat, mat_tr, vec_in, vec_in_, vec_out_x, vec_out_y, vec_out_z)
Calculate a matrix-vector multiplication associated with mathematical operations in the x,...
module FElib / Element / Operation with 3D tensor product elements
subroutine, public elementoperationtensorprod3d_create(elem3d, obj)
module common / sparsemat