15#include "scaleFElib.h"
45 procedure(elementoperationtensorprod3d_final),
deferred,
public :: final
56 subroutine elementoperationtensorprod3d_final( this )
59 end subroutine elementoperationtensorprod3d_final
67 real(rp) :: d1d_tr(2,2)
68 real(rp) :: lift_mat(2,2,2,6)
69 real(rp) :: lift_mat_tr(2,2,2,6)
70 real(rp) :: intrpmat_vpordm1_tr(2,2)
72 real(rp) :: mfilter_h1d(2,2)
73 real(rp) :: mfilter_h1d_tr(2,2)
74 real(rp) :: mfilter_v1d_tr(2,2)
76 real(rp) :: mfilter_tracer_h1d(2,2)
77 real(rp) :: mfilter_tracer_h1d_tr(2,2)
78 real(rp) :: mfilter_tracer_v1d_tr(2,2)
80 procedure,
public :: init => element_operation_tensorprod3d_init_p1
81 procedure,
public :: final => element_operation_tensorprod3d_final_p1
82 procedure,
public :: dx => element_operation_tensorprod3d_dx_p1
83 procedure,
public :: dy => element_operation_tensorprod3d_dy_p1
84 procedure,
public :: dz => element_operation_tensorprod3d_dz_p1
85 procedure,
public :: lift => element_operation_tensorprod3d_lift_p1
86 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p1
87 procedure,
public :: div => element_operation_tensorprod3d_div_p1
88 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p1
89 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p1
90 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p1
91 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p1
93 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p1
94 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p1
95 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p1
96 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p1
101 real(rp) :: d1d_tr(3,3)
102 real(rp) :: lift_mat(3,3,3,6)
103 real(rp) :: lift_mat_tr(3,3,3,6)
104 real(rp) :: intrpmat_vpordm1_tr(3,3)
106 real(rp) :: mfilter_h1d(3,3)
107 real(rp) :: mfilter_h1d_tr(3,3)
108 real(rp) :: mfilter_v1d_tr(3,3)
110 real(rp) :: mfilter_tracer_h1d(3,3)
111 real(rp) :: mfilter_tracer_h1d_tr(3,3)
112 real(rp) :: mfilter_tracer_v1d_tr(3,3)
114 procedure,
public :: init => element_operation_tensorprod3d_init_p2
115 procedure,
public :: final => element_operation_tensorprod3d_final_p2
116 procedure,
public :: dx => element_operation_tensorprod3d_dx_p2
117 procedure,
public :: dy => element_operation_tensorprod3d_dy_p2
118 procedure,
public :: dz => element_operation_tensorprod3d_dz_p2
119 procedure,
public :: lift => element_operation_tensorprod3d_lift_p2
120 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p2
121 procedure,
public :: div => element_operation_tensorprod3d_div_p2
122 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p2
123 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p2
124 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p2
125 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p2
127 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p2
128 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p2
129 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p2
130 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p2
135 real(rp) :: d1d_tr(4,4)
136 real(rp) :: lift_mat(4,4,4,6)
137 real(rp) :: lift_mat_tr(4,4,4,6)
138 real(rp) :: intrpmat_vpordm1_tr(4,4)
140 real(rp) :: mfilter_h1d(4,4)
141 real(rp) :: mfilter_h1d_tr(4,4)
142 real(rp) :: mfilter_v1d_tr(4,4)
144 real(rp) :: mfilter_tracer_h1d(4,4)
145 real(rp) :: mfilter_tracer_h1d_tr(4,4)
146 real(rp) :: mfilter_tracer_v1d_tr(4,4)
148 procedure,
public :: init => element_operation_tensorprod3d_init_p3
149 procedure,
public :: final => element_operation_tensorprod3d_final_p3
150 procedure,
public :: dx => element_operation_tensorprod3d_dx_p3
151 procedure,
public :: dy => element_operation_tensorprod3d_dy_p3
152 procedure,
public :: dz => element_operation_tensorprod3d_dz_p3
153 procedure,
public :: lift => element_operation_tensorprod3d_lift_p3
154 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p3
155 procedure,
public :: div => element_operation_tensorprod3d_div_p3
156 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p3
157 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p3
158 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p3
159 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p3
161 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p3
162 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p3
163 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p3
164 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p3
169 real(rp) :: d1d_tr(5,5)
170 real(rp) :: lift_mat(5,5,5,6)
171 real(rp) :: lift_mat_tr(5,5,5,6)
172 real(rp) :: intrpmat_vpordm1_tr(5,5)
174 real(rp) :: mfilter_h1d(5,5)
175 real(rp) :: mfilter_h1d_tr(5,5)
176 real(rp) :: mfilter_v1d_tr(5,5)
178 real(rp) :: mfilter_tracer_h1d(5,5)
179 real(rp) :: mfilter_tracer_h1d_tr(5,5)
180 real(rp) :: mfilter_tracer_v1d_tr(5,5)
182 procedure,
public :: init => element_operation_tensorprod3d_init_p4
183 procedure,
public :: final => element_operation_tensorprod3d_final_p4
184 procedure,
public :: dx => element_operation_tensorprod3d_dx_p4
185 procedure,
public :: dy => element_operation_tensorprod3d_dy_p4
186 procedure,
public :: dz => element_operation_tensorprod3d_dz_p4
187 procedure,
public :: lift => element_operation_tensorprod3d_lift_p4
188 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p4
189 procedure,
public :: div => element_operation_tensorprod3d_div_p4
190 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p4
191 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p4
192 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p4
193 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p4
195 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p4
196 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p4
197 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p4
198 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p4
203 real(rp) :: d1d_tr(6,6)
204 real(rp) :: lift_mat(6,6,6,6)
205 real(rp) :: lift_mat_tr(6,6,6,6)
206 real(rp) :: intrpmat_vpordm1_tr(6,6)
208 real(rp) :: mfilter_h1d(6,6)
209 real(rp) :: mfilter_h1d_tr(6,6)
210 real(rp) :: mfilter_v1d_tr(6,6)
212 real(rp) :: mfilter_tracer_h1d(6,6)
213 real(rp) :: mfilter_tracer_h1d_tr(6,6)
214 real(rp) :: mfilter_tracer_v1d_tr(6,6)
216 procedure,
public :: init => element_operation_tensorprod3d_init_p5
217 procedure,
public :: final => element_operation_tensorprod3d_final_p5
218 procedure,
public :: dx => element_operation_tensorprod3d_dx_p5
219 procedure,
public :: dy => element_operation_tensorprod3d_dy_p5
220 procedure,
public :: dz => element_operation_tensorprod3d_dz_p5
221 procedure,
public :: lift => element_operation_tensorprod3d_lift_p5
222 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p5
223 procedure,
public :: div => element_operation_tensorprod3d_div_p5
224 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p5
225 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p5
226 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p5
227 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p5
229 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p5
230 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p5
231 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p5
232 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p5
237 real(rp) :: d1d_tr(7,7)
238 real(rp) :: lift_mat(7,7,7,6)
239 real(rp) :: lift_mat_tr(7,7,7,6)
240 real(rp) :: intrpmat_vpordm1_tr(7,7)
242 real(rp) :: mfilter_h1d(7,7)
243 real(rp) :: mfilter_h1d_tr(7,7)
244 real(rp) :: mfilter_v1d_tr(7,7)
246 real(rp) :: mfilter_tracer_h1d(7,7)
247 real(rp) :: mfilter_tracer_h1d_tr(7,7)
248 real(rp) :: mfilter_tracer_v1d_tr(7,7)
250 procedure,
public :: init => element_operation_tensorprod3d_init_p6
251 procedure,
public :: final => element_operation_tensorprod3d_final_p6
252 procedure,
public :: dx => element_operation_tensorprod3d_dx_p6
253 procedure,
public :: dy => element_operation_tensorprod3d_dy_p6
254 procedure,
public :: dz => element_operation_tensorprod3d_dz_p6
255 procedure,
public :: lift => element_operation_tensorprod3d_lift_p6
256 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p6
257 procedure,
public :: div => element_operation_tensorprod3d_div_p6
258 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p6
259 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p6
260 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p6
261 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p6
263 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p6
264 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p6
265 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p6
266 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p6
271 real(rp) :: d1d_tr(8,8)
272 real(rp) :: lift_mat(8,8,8,6)
273 real(rp) :: lift_mat_tr(8,8,8,6)
274 real(rp) :: intrpmat_vpordm1_tr(8,8)
276 real(rp) :: mfilter_h1d(8,8)
277 real(rp) :: mfilter_h1d_tr(8,8)
278 real(rp) :: mfilter_v1d_tr(8,8)
280 real(rp) :: mfilter_tracer_h1d(8,8)
281 real(rp) :: mfilter_tracer_h1d_tr(8,8)
282 real(rp) :: mfilter_tracer_v1d_tr(8,8)
284 procedure,
public :: init => element_operation_tensorprod3d_init_p7
285 procedure,
public :: final => element_operation_tensorprod3d_final_p7
286 procedure,
public :: dx => element_operation_tensorprod3d_dx_p7
287 procedure,
public :: dy => element_operation_tensorprod3d_dy_p7
288 procedure,
public :: dz => element_operation_tensorprod3d_dz_p7
289 procedure,
public :: lift => element_operation_tensorprod3d_lift_p7
290 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p7
291 procedure,
public :: div => element_operation_tensorprod3d_div_p7
292 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p7
293 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p7
294 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p7
295 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p7
297 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p7
298 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p7
299 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p7
300 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p7
305 real(rp) :: d1d_tr(9,9)
306 real(rp) :: lift_mat(9,9,9,6)
307 real(rp) :: lift_mat_tr(9,9,9,6)
308 real(rp) :: intrpmat_vpordm1_tr(9,9)
310 real(rp) :: mfilter_h1d(9,9)
311 real(rp) :: mfilter_h1d_tr(9,9)
312 real(rp) :: mfilter_v1d_tr(9,9)
314 real(rp) :: mfilter_tracer_h1d(9,9)
315 real(rp) :: mfilter_tracer_h1d_tr(9,9)
316 real(rp) :: mfilter_tracer_v1d_tr(9,9)
318 procedure,
public :: init => element_operation_tensorprod3d_init_p8
319 procedure,
public :: final => element_operation_tensorprod3d_final_p8
320 procedure,
public :: dx => element_operation_tensorprod3d_dx_p8
321 procedure,
public :: dy => element_operation_tensorprod3d_dy_p8
322 procedure,
public :: dz => element_operation_tensorprod3d_dz_p8
323 procedure,
public :: lift => element_operation_tensorprod3d_lift_p8
324 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p8
325 procedure,
public :: div => element_operation_tensorprod3d_div_p8
326 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p8
327 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p8
328 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p8
329 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p8
331 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p8
332 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p8
333 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p8
334 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p8
338 real(rp) :: d1d(10,10)
339 real(rp) :: d1d_tr(10,10)
340 real(rp) :: lift_mat(10,10,10,6)
341 real(rp) :: lift_mat_tr(10,10,10,6)
342 real(rp) :: intrpmat_vpordm1_tr(10,10)
344 real(rp) :: mfilter_h1d(10,10)
345 real(rp) :: mfilter_h1d_tr(10,10)
346 real(rp) :: mfilter_v1d_tr(10,10)
348 real(rp) :: mfilter_tracer_h1d(10,10)
349 real(rp) :: mfilter_tracer_h1d_tr(10,10)
350 real(rp) :: mfilter_tracer_v1d_tr(10,10)
352 procedure,
public :: init => element_operation_tensorprod3d_init_p9
353 procedure,
public :: final => element_operation_tensorprod3d_final_p9
354 procedure,
public :: dx => element_operation_tensorprod3d_dx_p9
355 procedure,
public :: dy => element_operation_tensorprod3d_dy_p9
356 procedure,
public :: dz => element_operation_tensorprod3d_dz_p9
357 procedure,
public :: lift => element_operation_tensorprod3d_lift_p9
358 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p9
359 procedure,
public :: div => element_operation_tensorprod3d_div_p9
360 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p9
361 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p9
362 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p9
363 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p9
365 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p9
366 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p9
367 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p9
368 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p9
372 real(rp) :: d1d(11,11)
373 real(rp) :: d1d_tr(11,11)
374 real(rp) :: lift_mat(11,11,11,6)
375 real(rp) :: lift_mat_tr(11,11,11,6)
376 real(rp) :: intrpmat_vpordm1_tr(11,11)
378 real(rp) :: mfilter_h1d(11,11)
379 real(rp) :: mfilter_h1d_tr(11,11)
380 real(rp) :: mfilter_v1d_tr(11,11)
382 real(rp) :: mfilter_tracer_h1d(11,11)
383 real(rp) :: mfilter_tracer_h1d_tr(11,11)
384 real(rp) :: mfilter_tracer_v1d_tr(11,11)
386 procedure,
public :: init => element_operation_tensorprod3d_init_p10
387 procedure,
public :: final => element_operation_tensorprod3d_final_p10
388 procedure,
public :: dx => element_operation_tensorprod3d_dx_p10
389 procedure,
public :: dy => element_operation_tensorprod3d_dy_p10
390 procedure,
public :: dz => element_operation_tensorprod3d_dz_p10
391 procedure,
public :: lift => element_operation_tensorprod3d_lift_p10
392 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p10
393 procedure,
public :: div => element_operation_tensorprod3d_div_p10
394 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p10
395 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p10
396 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p10
397 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p10
399 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p10
400 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p10
401 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p10
402 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p10
406 real(rp) :: d1d(12,12)
407 real(rp) :: d1d_tr(12,12)
408 real(rp) :: lift_mat(12,12,12,6)
409 real(rp) :: lift_mat_tr(12,12,12,6)
410 real(rp) :: intrpmat_vpordm1_tr(12,12)
412 real(rp) :: mfilter_h1d(12,12)
413 real(rp) :: mfilter_h1d_tr(12,12)
414 real(rp) :: mfilter_v1d_tr(12,12)
416 real(rp) :: mfilter_tracer_h1d(12,12)
417 real(rp) :: mfilter_tracer_h1d_tr(12,12)
418 real(rp) :: mfilter_tracer_v1d_tr(12,12)
420 procedure,
public :: init => element_operation_tensorprod3d_init_p11
421 procedure,
public :: final => element_operation_tensorprod3d_final_p11
422 procedure,
public :: dx => element_operation_tensorprod3d_dx_p11
423 procedure,
public :: dy => element_operation_tensorprod3d_dy_p11
424 procedure,
public :: dz => element_operation_tensorprod3d_dz_p11
425 procedure,
public :: lift => element_operation_tensorprod3d_lift_p11
426 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p11
427 procedure,
public :: div => element_operation_tensorprod3d_div_p11
428 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p11
429 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p11
430 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p11
431 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p11
433 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p11
434 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p11
435 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p11
436 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p11
440 real(rp) :: d1d(13,13)
441 real(rp) :: d1d_tr(13,13)
442 real(rp) :: lift_mat(13,13,13,6)
443 real(rp) :: lift_mat_tr(13,13,13,6)
444 real(rp) :: intrpmat_vpordm1_tr(13,13)
446 real(rp) :: mfilter_h1d(13,13)
447 real(rp) :: mfilter_h1d_tr(13,13)
448 real(rp) :: mfilter_v1d_tr(13,13)
450 real(rp) :: mfilter_tracer_h1d(13,13)
451 real(rp) :: mfilter_tracer_h1d_tr(13,13)
452 real(rp) :: mfilter_tracer_v1d_tr(13,13)
454 procedure,
public :: init => element_operation_tensorprod3d_init_p12
455 procedure,
public :: final => element_operation_tensorprod3d_final_p12
456 procedure,
public :: dx => element_operation_tensorprod3d_dx_p12
457 procedure,
public :: dy => element_operation_tensorprod3d_dy_p12
458 procedure,
public :: dz => element_operation_tensorprod3d_dz_p12
459 procedure,
public :: lift => element_operation_tensorprod3d_lift_p12
460 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p12
461 procedure,
public :: div => element_operation_tensorprod3d_div_p12
462 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p12
463 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p12
464 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p12
465 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p12
467 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p12
468 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p12
469 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p12
470 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p12
474 real(rp) :: d1d(14,14)
475 real(rp) :: d1d_tr(14,14)
476 real(rp) :: lift_mat(14,14,14,6)
477 real(rp) :: lift_mat_tr(14,14,14,6)
478 real(rp) :: intrpmat_vpordm1_tr(14,14)
480 real(rp) :: mfilter_h1d(14,14)
481 real(rp) :: mfilter_h1d_tr(14,14)
482 real(rp) :: mfilter_v1d_tr(14,14)
484 real(rp) :: mfilter_tracer_h1d(14,14)
485 real(rp) :: mfilter_tracer_h1d_tr(14,14)
486 real(rp) :: mfilter_tracer_v1d_tr(14,14)
488 procedure,
public :: init => element_operation_tensorprod3d_init_p13
489 procedure,
public :: final => element_operation_tensorprod3d_final_p13
490 procedure,
public :: dx => element_operation_tensorprod3d_dx_p13
491 procedure,
public :: dy => element_operation_tensorprod3d_dy_p13
492 procedure,
public :: dz => element_operation_tensorprod3d_dz_p13
493 procedure,
public :: lift => element_operation_tensorprod3d_lift_p13
494 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p13
495 procedure,
public :: div => element_operation_tensorprod3d_div_p13
496 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p13
497 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p13
498 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p13
499 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p13
501 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p13
502 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p13
503 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p13
504 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p13
508 real(rp) :: d1d(15,15)
509 real(rp) :: d1d_tr(15,15)
510 real(rp) :: lift_mat(15,15,15,6)
511 real(rp) :: lift_mat_tr(15,15,15,6)
512 real(rp) :: intrpmat_vpordm1_tr(15,15)
514 real(rp) :: mfilter_h1d(15,15)
515 real(rp) :: mfilter_h1d_tr(15,15)
516 real(rp) :: mfilter_v1d_tr(15,15)
518 real(rp) :: mfilter_tracer_h1d(15,15)
519 real(rp) :: mfilter_tracer_h1d_tr(15,15)
520 real(rp) :: mfilter_tracer_v1d_tr(15,15)
522 procedure,
public :: init => element_operation_tensorprod3d_init_p14
523 procedure,
public :: final => element_operation_tensorprod3d_final_p14
524 procedure,
public :: dx => element_operation_tensorprod3d_dx_p14
525 procedure,
public :: dy => element_operation_tensorprod3d_dy_p14
526 procedure,
public :: dz => element_operation_tensorprod3d_dz_p14
527 procedure,
public :: lift => element_operation_tensorprod3d_lift_p14
528 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p14
529 procedure,
public :: div => element_operation_tensorprod3d_div_p14
530 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p14
531 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p14
532 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p14
533 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p14
535 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p14
536 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p14
537 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p14
538 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p14
542 real(rp) :: d1d(16,16)
543 real(rp) :: d1d_tr(16,16)
544 real(rp) :: lift_mat(16,16,16,6)
545 real(rp) :: lift_mat_tr(16,16,16,6)
546 real(rp) :: intrpmat_vpordm1_tr(16,16)
548 real(rp) :: mfilter_h1d(16,16)
549 real(rp) :: mfilter_h1d_tr(16,16)
550 real(rp) :: mfilter_v1d_tr(16,16)
552 real(rp) :: mfilter_tracer_h1d(16,16)
553 real(rp) :: mfilter_tracer_h1d_tr(16,16)
554 real(rp) :: mfilter_tracer_v1d_tr(16,16)
556 procedure,
public :: init => element_operation_tensorprod3d_init_p15
557 procedure,
public :: final => element_operation_tensorprod3d_final_p15
558 procedure,
public :: dx => element_operation_tensorprod3d_dx_p15
559 procedure,
public :: dy => element_operation_tensorprod3d_dy_p15
560 procedure,
public :: dz => element_operation_tensorprod3d_dz_p15
561 procedure,
public :: lift => element_operation_tensorprod3d_lift_p15
562 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p15
563 procedure,
public :: div => element_operation_tensorprod3d_div_p15
564 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p15
565 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p15
566 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p15
567 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p15
569 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p15
570 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p15
571 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p15
572 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p15
579 use scale_prc,
only: prc_abort
585 if ( elem3d%PolyOrder_h /= elem3d%PolyOrder_v )
then
586 log_info(
'ElemenetOperationTensorprod3D_create',*)
'PolyOrder_h and PolyOrder_v should be same in this module. ElemenetOperationGeneral should be used!'
590 select case( elem3d%PolyOrder_h )
622 log_info(
'ElemenetOperationTensorprod3D_create',*)
'The specified polynomial order execceds 15 and is not supported in this module. ElemenetOperationGeneral should be used!'
625 call obj%Init( elem3d )
636 subroutine element_operation_tensorprod3d_init_p1( this, elem3D )
643 this%elem3D => elem3d
646 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
652 end subroutine element_operation_tensorprod3d_init_p1
657 subroutine element_operation_tensorprod3d_setup_modalfilter_p1( this, &
658 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
659 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
664 real(rp),
intent(in) :: mf_etac_h
665 real(rp),
intent(in) :: mf_alpha_h
666 integer,
intent(in) :: mf_order_h
667 real(rp),
intent(in) :: mf_etac_v
668 real(rp),
intent(in) :: mf_alpha_v
669 integer,
intent(in) :: mf_order_v
672 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
673 mf_etac_h, mf_alpha_h, mf_order_h, &
674 mf_etac_v, mf_alpha_v, mf_order_v, &
675 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
678 end subroutine element_operation_tensorprod3d_setup_modalfilter_p1
683 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p1( this, &
684 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
685 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
690 real(rp),
intent(in) :: mf_etac_h
691 real(rp),
intent(in) :: mf_alpha_h
692 integer,
intent(in) :: mf_order_h
693 real(rp),
intent(in) :: mf_etac_v
694 real(rp),
intent(in) :: mf_alpha_v
695 integer,
intent(in) :: mf_order_v
698 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
699 mf_etac_h, mf_alpha_h, mf_order_h, &
700 mf_etac_v, mf_alpha_v, mf_order_v, &
701 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
704 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p1
709 subroutine element_operation_tensorprod3d_final_p1( this )
713 nullify( this%elem3D )
716 end subroutine element_operation_tensorprod3d_final_p1
721 subroutine element_operation_tensorprod3d_dx_p1( this, vec_in, vec_out )
725 real(rp),
intent(in) :: vec_in(this%elem3d%np)
726 real(rp),
intent(out) :: vec_out(this%elem3d%np)
730 end subroutine element_operation_tensorprod3d_dx_p1
735 subroutine element_operation_tensorprod3d_dy_p1( this, vec_in, vec_out )
739 real(rp),
intent(in) :: vec_in(this%elem3d%np)
740 real(rp),
intent(out) :: vec_out(this%elem3d%np)
744 end subroutine element_operation_tensorprod3d_dy_p1
749 subroutine element_operation_tensorprod3d_dz_p1( this, vec_in, vec_out )
753 real(rp),
intent(in) :: vec_in(this%elem3d%np)
754 real(rp),
intent(out) :: vec_out(this%elem3d%np)
758 end subroutine element_operation_tensorprod3d_dz_p1
763 subroutine element_operation_tensorprod3d_lift_p1( this, vec_in, vec_out )
767 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
768 real(rp),
intent(out) :: vec_out(this%elem3d%np)
772 end subroutine element_operation_tensorprod3d_lift_p1
777 subroutine element_operation_tensorprod3d_dxdydzlift_p1( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
783 real(rp),
intent(in) :: vec_in(this%elem3d%np)
784 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
785 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
786 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
787 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
788 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
791 vec_out_dx, vec_out_dy, vec_out_dz )
796 end subroutine element_operation_tensorprod3d_dxdydzlift_p1
805 subroutine element_operation_tensorprod3d_div_p1( this, vec_in, vec_in_lift, &
812 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
813 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
814 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
821 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
823 end subroutine element_operation_tensorprod3d_div_p1
828 subroutine element_operation_tensorprod3d_div_var5_p1( this, vec_in, vec_in_lift, &
835 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
836 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
837 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
847 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), &
848 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
851 end subroutine element_operation_tensorprod3d_div_var5_p1
856 subroutine element_operation_tensorprod3d_div_var5_2_p1( this, vec_in, &
862 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
863 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
869 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), &
870 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
873 end subroutine element_operation_tensorprod3d_div_var5_2_p1
878 subroutine element_operation_tensorprod3d_lift_var5_p1( this, vec_in, vec_out )
882 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
883 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
891 end subroutine element_operation_tensorprod3d_lift_var5_p1
896 subroutine element_operation_tensorprod3d_vfilterpm1_p1( this, vec_in, vec_out )
900 real(rp),
intent(in) :: vec_in(this%elem3d%np)
901 real(rp),
intent(out) :: vec_out(this%elem3d%np)
907 end subroutine element_operation_tensorprod3d_vfilterpm1_p1
912 subroutine element_operation_tensorprod3d_modalfilter_tracer_p1( this, vec_in, vec_work, vec_out )
918 real(rp),
intent(in) :: vec_in(this%elem3d%np)
919 real(rp),
intent(out) :: vec_work(this%elem3d%np)
920 real(rp),
intent(out) :: vec_out(this%elem3d%np)
927 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p1
932 subroutine element_operation_tensorprod3d_modalfilter_var5_p1( this, vec_in, vec_work, vec_out )
938 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
939 real(rp),
intent(out) :: vec_work(this%elem3d%np)
940 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
950 end subroutine element_operation_tensorprod3d_modalfilter_var5_p1
958 subroutine element_operation_tensorprod3d_init_p2( this, elem3D )
965 this%elem3D => elem3d
968 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
974 end subroutine element_operation_tensorprod3d_init_p2
979 subroutine element_operation_tensorprod3d_setup_modalfilter_p2( this, &
980 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
981 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
986 real(rp),
intent(in) :: mf_etac_h
987 real(rp),
intent(in) :: mf_alpha_h
988 integer,
intent(in) :: mf_order_h
989 real(rp),
intent(in) :: mf_etac_v
990 real(rp),
intent(in) :: mf_alpha_v
991 integer,
intent(in) :: mf_order_v
994 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
995 mf_etac_h, mf_alpha_h, mf_order_h, &
996 mf_etac_v, mf_alpha_v, mf_order_v, &
997 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1000 end subroutine element_operation_tensorprod3d_setup_modalfilter_p2
1005 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p2( this, &
1006 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1007 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1012 real(rp),
intent(in) :: mf_etac_h
1013 real(rp),
intent(in) :: mf_alpha_h
1014 integer,
intent(in) :: mf_order_h
1015 real(rp),
intent(in) :: mf_etac_v
1016 real(rp),
intent(in) :: mf_alpha_v
1017 integer,
intent(in) :: mf_order_v
1020 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1021 mf_etac_h, mf_alpha_h, mf_order_h, &
1022 mf_etac_v, mf_alpha_v, mf_order_v, &
1023 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1026 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p2
1031 subroutine element_operation_tensorprod3d_final_p2( this )
1035 nullify( this%elem3D )
1038 end subroutine element_operation_tensorprod3d_final_p2
1043 subroutine element_operation_tensorprod3d_dx_p2( this, vec_in, vec_out )
1047 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1048 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1052 end subroutine element_operation_tensorprod3d_dx_p2
1057 subroutine element_operation_tensorprod3d_dy_p2( this, vec_in, vec_out )
1061 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1062 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1066 end subroutine element_operation_tensorprod3d_dy_p2
1071 subroutine element_operation_tensorprod3d_dz_p2( this, vec_in, vec_out )
1075 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1076 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1080 end subroutine element_operation_tensorprod3d_dz_p2
1085 subroutine element_operation_tensorprod3d_lift_p2( this, vec_in, vec_out )
1089 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1090 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1094 end subroutine element_operation_tensorprod3d_lift_p2
1099 subroutine element_operation_tensorprod3d_dxdydzlift_p2( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1105 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1106 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1107 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1108 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1109 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1110 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1113 vec_out_dx, vec_out_dy, vec_out_dz )
1118 end subroutine element_operation_tensorprod3d_dxdydzlift_p2
1127 subroutine element_operation_tensorprod3d_div_p2( this, vec_in, vec_in_lift, &
1134 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
1135 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1136 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
1143 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
1145 end subroutine element_operation_tensorprod3d_div_p2
1150 subroutine element_operation_tensorprod3d_div_var5_p2( this, vec_in, vec_in_lift, &
1157 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1158 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1159 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1169 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), &
1170 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1173 end subroutine element_operation_tensorprod3d_div_var5_p2
1178 subroutine element_operation_tensorprod3d_div_var5_2_p2( this, vec_in, &
1184 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1185 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
1191 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), &
1192 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1195 end subroutine element_operation_tensorprod3d_div_var5_2_p2
1200 subroutine element_operation_tensorprod3d_lift_var5_p2( this, vec_in, vec_out )
1204 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
1205 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1213 end subroutine element_operation_tensorprod3d_lift_var5_p2
1218 subroutine element_operation_tensorprod3d_vfilterpm1_p2( this, vec_in, vec_out )
1222 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1223 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1229 end subroutine element_operation_tensorprod3d_vfilterpm1_p2
1234 subroutine element_operation_tensorprod3d_modalfilter_tracer_p2( this, vec_in, vec_work, vec_out )
1240 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1241 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1242 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1249 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p2
1254 subroutine element_operation_tensorprod3d_modalfilter_var5_p2( this, vec_in, vec_work, vec_out )
1260 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1261 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1262 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1272 end subroutine element_operation_tensorprod3d_modalfilter_var5_p2
1280 subroutine element_operation_tensorprod3d_init_p3( this, elem3D )
1287 this%elem3D => elem3d
1290 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
1296 end subroutine element_operation_tensorprod3d_init_p3
1301 subroutine element_operation_tensorprod3d_setup_modalfilter_p3( this, &
1302 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1303 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1308 real(rp),
intent(in) :: mf_etac_h
1309 real(rp),
intent(in) :: mf_alpha_h
1310 integer,
intent(in) :: mf_order_h
1311 real(rp),
intent(in) :: mf_etac_v
1312 real(rp),
intent(in) :: mf_alpha_v
1313 integer,
intent(in) :: mf_order_v
1316 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1317 mf_etac_h, mf_alpha_h, mf_order_h, &
1318 mf_etac_v, mf_alpha_v, mf_order_v, &
1319 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1322 end subroutine element_operation_tensorprod3d_setup_modalfilter_p3
1327 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p3( this, &
1328 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1329 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1334 real(rp),
intent(in) :: mf_etac_h
1335 real(rp),
intent(in) :: mf_alpha_h
1336 integer,
intent(in) :: mf_order_h
1337 real(rp),
intent(in) :: mf_etac_v
1338 real(rp),
intent(in) :: mf_alpha_v
1339 integer,
intent(in) :: mf_order_v
1342 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1343 mf_etac_h, mf_alpha_h, mf_order_h, &
1344 mf_etac_v, mf_alpha_v, mf_order_v, &
1345 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1348 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p3
1353 subroutine element_operation_tensorprod3d_final_p3( this )
1357 nullify( this%elem3D )
1360 end subroutine element_operation_tensorprod3d_final_p3
1365 subroutine element_operation_tensorprod3d_dx_p3( this, vec_in, vec_out )
1369 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1370 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1374 end subroutine element_operation_tensorprod3d_dx_p3
1379 subroutine element_operation_tensorprod3d_dy_p3( this, vec_in, vec_out )
1383 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1384 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1388 end subroutine element_operation_tensorprod3d_dy_p3
1393 subroutine element_operation_tensorprod3d_dz_p3( this, vec_in, vec_out )
1397 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1398 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1402 end subroutine element_operation_tensorprod3d_dz_p3
1407 subroutine element_operation_tensorprod3d_lift_p3( this, vec_in, vec_out )
1411 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1412 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1416 end subroutine element_operation_tensorprod3d_lift_p3
1421 subroutine element_operation_tensorprod3d_dxdydzlift_p3( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1427 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1428 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1429 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1430 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1431 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1432 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1435 vec_out_dx, vec_out_dy, vec_out_dz )
1440 end subroutine element_operation_tensorprod3d_dxdydzlift_p3
1449 subroutine element_operation_tensorprod3d_div_p3( this, vec_in, vec_in_lift, &
1456 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
1457 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1458 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
1465 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
1467 end subroutine element_operation_tensorprod3d_div_p3
1472 subroutine element_operation_tensorprod3d_div_var5_p3( this, vec_in, vec_in_lift, &
1479 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1480 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1481 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1491 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), &
1492 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1495 end subroutine element_operation_tensorprod3d_div_var5_p3
1500 subroutine element_operation_tensorprod3d_div_var5_2_p3( this, vec_in, &
1506 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1507 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
1513 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), &
1514 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1517 end subroutine element_operation_tensorprod3d_div_var5_2_p3
1522 subroutine element_operation_tensorprod3d_lift_var5_p3( this, vec_in, vec_out )
1526 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
1527 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1535 end subroutine element_operation_tensorprod3d_lift_var5_p3
1540 subroutine element_operation_tensorprod3d_vfilterpm1_p3( this, vec_in, vec_out )
1544 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1545 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1551 end subroutine element_operation_tensorprod3d_vfilterpm1_p3
1556 subroutine element_operation_tensorprod3d_modalfilter_tracer_p3( this, vec_in, vec_work, vec_out )
1562 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1563 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1564 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1571 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p3
1576 subroutine element_operation_tensorprod3d_modalfilter_var5_p3( this, vec_in, vec_work, vec_out )
1582 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1583 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1584 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1594 end subroutine element_operation_tensorprod3d_modalfilter_var5_p3
1602 subroutine element_operation_tensorprod3d_init_p4( this, elem3D )
1609 this%elem3D => elem3d
1612 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
1618 end subroutine element_operation_tensorprod3d_init_p4
1623 subroutine element_operation_tensorprod3d_setup_modalfilter_p4( this, &
1624 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1625 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1630 real(rp),
intent(in) :: mf_etac_h
1631 real(rp),
intent(in) :: mf_alpha_h
1632 integer,
intent(in) :: mf_order_h
1633 real(rp),
intent(in) :: mf_etac_v
1634 real(rp),
intent(in) :: mf_alpha_v
1635 integer,
intent(in) :: mf_order_v
1638 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1639 mf_etac_h, mf_alpha_h, mf_order_h, &
1640 mf_etac_v, mf_alpha_v, mf_order_v, &
1641 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1644 end subroutine element_operation_tensorprod3d_setup_modalfilter_p4
1649 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p4( this, &
1650 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1651 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1656 real(rp),
intent(in) :: mf_etac_h
1657 real(rp),
intent(in) :: mf_alpha_h
1658 integer,
intent(in) :: mf_order_h
1659 real(rp),
intent(in) :: mf_etac_v
1660 real(rp),
intent(in) :: mf_alpha_v
1661 integer,
intent(in) :: mf_order_v
1664 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1665 mf_etac_h, mf_alpha_h, mf_order_h, &
1666 mf_etac_v, mf_alpha_v, mf_order_v, &
1667 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1670 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p4
1675 subroutine element_operation_tensorprod3d_final_p4( this )
1679 nullify( this%elem3D )
1682 end subroutine element_operation_tensorprod3d_final_p4
1687 subroutine element_operation_tensorprod3d_dx_p4( this, vec_in, vec_out )
1691 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1692 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1696 end subroutine element_operation_tensorprod3d_dx_p4
1701 subroutine element_operation_tensorprod3d_dy_p4( this, vec_in, vec_out )
1705 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1706 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1710 end subroutine element_operation_tensorprod3d_dy_p4
1715 subroutine element_operation_tensorprod3d_dz_p4( this, vec_in, vec_out )
1719 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1720 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1724 end subroutine element_operation_tensorprod3d_dz_p4
1729 subroutine element_operation_tensorprod3d_lift_p4( this, vec_in, vec_out )
1733 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1734 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1738 end subroutine element_operation_tensorprod3d_lift_p4
1743 subroutine element_operation_tensorprod3d_dxdydzlift_p4( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1749 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1750 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1751 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1752 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1753 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1754 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1757 vec_out_dx, vec_out_dy, vec_out_dz )
1762 end subroutine element_operation_tensorprod3d_dxdydzlift_p4
1771 subroutine element_operation_tensorprod3d_div_p4( this, vec_in, vec_in_lift, &
1778 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
1779 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1780 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
1787 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
1789 end subroutine element_operation_tensorprod3d_div_p4
1794 subroutine element_operation_tensorprod3d_div_var5_p4( this, vec_in, vec_in_lift, &
1801 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1802 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1803 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1813 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), &
1814 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1817 end subroutine element_operation_tensorprod3d_div_var5_p4
1822 subroutine element_operation_tensorprod3d_div_var5_2_p4( this, vec_in, &
1828 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1829 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
1835 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), &
1836 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1839 end subroutine element_operation_tensorprod3d_div_var5_2_p4
1844 subroutine element_operation_tensorprod3d_lift_var5_p4( this, vec_in, vec_out )
1848 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
1849 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1857 end subroutine element_operation_tensorprod3d_lift_var5_p4
1862 subroutine element_operation_tensorprod3d_vfilterpm1_p4( this, vec_in, vec_out )
1866 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1867 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1873 end subroutine element_operation_tensorprod3d_vfilterpm1_p4
1878 subroutine element_operation_tensorprod3d_modalfilter_tracer_p4( this, vec_in, vec_work, vec_out )
1884 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1885 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1886 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1893 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p4
1898 subroutine element_operation_tensorprod3d_modalfilter_var5_p4( this, vec_in, vec_work, vec_out )
1904 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1905 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1906 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1916 end subroutine element_operation_tensorprod3d_modalfilter_var5_p4
1924 subroutine element_operation_tensorprod3d_init_p5( this, elem3D )
1931 this%elem3D => elem3d
1934 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
1940 end subroutine element_operation_tensorprod3d_init_p5
1945 subroutine element_operation_tensorprod3d_setup_modalfilter_p5( 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_p5
1971 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p5( 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_p5
1997 subroutine element_operation_tensorprod3d_final_p5( this )
2001 nullify( this%elem3D )
2004 end subroutine element_operation_tensorprod3d_final_p5
2009 subroutine element_operation_tensorprod3d_dx_p5( this, vec_in, vec_out )
2013 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2014 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2018 end subroutine element_operation_tensorprod3d_dx_p5
2023 subroutine element_operation_tensorprod3d_dy_p5( this, vec_in, vec_out )
2027 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2028 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2032 end subroutine element_operation_tensorprod3d_dy_p5
2037 subroutine element_operation_tensorprod3d_dz_p5( this, vec_in, vec_out )
2041 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2042 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2046 end subroutine element_operation_tensorprod3d_dz_p5
2051 subroutine element_operation_tensorprod3d_lift_p5( this, vec_in, vec_out )
2055 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2056 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2060 end subroutine element_operation_tensorprod3d_lift_p5
2065 subroutine element_operation_tensorprod3d_dxdydzlift_p5( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2071 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2072 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2073 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2074 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2075 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2076 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2079 vec_out_dx, vec_out_dy, vec_out_dz )
2084 end subroutine element_operation_tensorprod3d_dxdydzlift_p5
2093 subroutine element_operation_tensorprod3d_div_p5( this, vec_in, vec_in_lift, &
2100 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
2101 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2102 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
2109 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
2111 end subroutine element_operation_tensorprod3d_div_p5
2116 subroutine element_operation_tensorprod3d_div_var5_p5( 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_p5( 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_p5
2144 subroutine element_operation_tensorprod3d_div_var5_2_p5( this, vec_in, &
2150 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2151 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
2157 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), &
2158 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2161 end subroutine element_operation_tensorprod3d_div_var5_2_p5
2166 subroutine element_operation_tensorprod3d_lift_var5_p5( this, vec_in, vec_out )
2170 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
2171 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2179 end subroutine element_operation_tensorprod3d_lift_var5_p5
2184 subroutine element_operation_tensorprod3d_vfilterpm1_p5( this, vec_in, vec_out )
2188 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2189 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2195 end subroutine element_operation_tensorprod3d_vfilterpm1_p5
2200 subroutine element_operation_tensorprod3d_modalfilter_tracer_p5( this, vec_in, vec_work, vec_out )
2206 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2207 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2208 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2215 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p5
2220 subroutine element_operation_tensorprod3d_modalfilter_var5_p5( this, vec_in, vec_work, vec_out )
2226 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2227 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2228 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2238 end subroutine element_operation_tensorprod3d_modalfilter_var5_p5
2246 subroutine element_operation_tensorprod3d_init_p6( this, elem3D )
2253 this%elem3D => elem3d
2256 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
2262 end subroutine element_operation_tensorprod3d_init_p6
2267 subroutine element_operation_tensorprod3d_setup_modalfilter_p6( this, &
2268 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2269 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2274 real(rp),
intent(in) :: mf_etac_h
2275 real(rp),
intent(in) :: mf_alpha_h
2276 integer,
intent(in) :: mf_order_h
2277 real(rp),
intent(in) :: mf_etac_v
2278 real(rp),
intent(in) :: mf_alpha_v
2279 integer,
intent(in) :: mf_order_v
2282 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2283 mf_etac_h, mf_alpha_h, mf_order_h, &
2284 mf_etac_v, mf_alpha_v, mf_order_v, &
2285 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2288 end subroutine element_operation_tensorprod3d_setup_modalfilter_p6
2293 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p6( this, &
2294 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2295 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2300 real(rp),
intent(in) :: mf_etac_h
2301 real(rp),
intent(in) :: mf_alpha_h
2302 integer,
intent(in) :: mf_order_h
2303 real(rp),
intent(in) :: mf_etac_v
2304 real(rp),
intent(in) :: mf_alpha_v
2305 integer,
intent(in) :: mf_order_v
2308 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2309 mf_etac_h, mf_alpha_h, mf_order_h, &
2310 mf_etac_v, mf_alpha_v, mf_order_v, &
2311 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2314 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p6
2319 subroutine element_operation_tensorprod3d_final_p6( this )
2323 nullify( this%elem3D )
2326 end subroutine element_operation_tensorprod3d_final_p6
2331 subroutine element_operation_tensorprod3d_dx_p6( this, vec_in, vec_out )
2335 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2336 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2340 end subroutine element_operation_tensorprod3d_dx_p6
2345 subroutine element_operation_tensorprod3d_dy_p6( this, vec_in, vec_out )
2349 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2350 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2354 end subroutine element_operation_tensorprod3d_dy_p6
2359 subroutine element_operation_tensorprod3d_dz_p6( this, vec_in, vec_out )
2363 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2364 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2368 end subroutine element_operation_tensorprod3d_dz_p6
2373 subroutine element_operation_tensorprod3d_lift_p6( this, vec_in, vec_out )
2377 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2378 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2382 end subroutine element_operation_tensorprod3d_lift_p6
2387 subroutine element_operation_tensorprod3d_dxdydzlift_p6( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2393 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2394 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2395 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2396 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2397 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2398 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2401 vec_out_dx, vec_out_dy, vec_out_dz )
2406 end subroutine element_operation_tensorprod3d_dxdydzlift_p6
2415 subroutine element_operation_tensorprod3d_div_p6( this, vec_in, vec_in_lift, &
2422 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
2423 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2424 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
2431 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
2433 end subroutine element_operation_tensorprod3d_div_p6
2438 subroutine element_operation_tensorprod3d_div_var5_p6( this, vec_in, vec_in_lift, &
2445 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2446 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2447 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2457 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), &
2458 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2461 end subroutine element_operation_tensorprod3d_div_var5_p6
2466 subroutine element_operation_tensorprod3d_div_var5_2_p6( this, vec_in, &
2472 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2473 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
2479 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), &
2480 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2483 end subroutine element_operation_tensorprod3d_div_var5_2_p6
2488 subroutine element_operation_tensorprod3d_lift_var5_p6( this, vec_in, vec_out )
2492 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
2493 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2501 end subroutine element_operation_tensorprod3d_lift_var5_p6
2506 subroutine element_operation_tensorprod3d_vfilterpm1_p6( this, vec_in, vec_out )
2510 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2511 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2517 end subroutine element_operation_tensorprod3d_vfilterpm1_p6
2522 subroutine element_operation_tensorprod3d_modalfilter_tracer_p6( this, vec_in, vec_work, vec_out )
2528 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2529 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2530 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2537 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p6
2542 subroutine element_operation_tensorprod3d_modalfilter_var5_p6( this, vec_in, vec_work, vec_out )
2548 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2549 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2550 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2560 end subroutine element_operation_tensorprod3d_modalfilter_var5_p6
2568 subroutine element_operation_tensorprod3d_init_p7( this, elem3D )
2575 this%elem3D => elem3d
2578 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
2584 end subroutine element_operation_tensorprod3d_init_p7
2589 subroutine element_operation_tensorprod3d_setup_modalfilter_p7( this, &
2590 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2591 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2596 real(rp),
intent(in) :: mf_etac_h
2597 real(rp),
intent(in) :: mf_alpha_h
2598 integer,
intent(in) :: mf_order_h
2599 real(rp),
intent(in) :: mf_etac_v
2600 real(rp),
intent(in) :: mf_alpha_v
2601 integer,
intent(in) :: mf_order_v
2604 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2605 mf_etac_h, mf_alpha_h, mf_order_h, &
2606 mf_etac_v, mf_alpha_v, mf_order_v, &
2607 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2610 end subroutine element_operation_tensorprod3d_setup_modalfilter_p7
2615 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p7( this, &
2616 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2617 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2622 real(rp),
intent(in) :: mf_etac_h
2623 real(rp),
intent(in) :: mf_alpha_h
2624 integer,
intent(in) :: mf_order_h
2625 real(rp),
intent(in) :: mf_etac_v
2626 real(rp),
intent(in) :: mf_alpha_v
2627 integer,
intent(in) :: mf_order_v
2630 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2631 mf_etac_h, mf_alpha_h, mf_order_h, &
2632 mf_etac_v, mf_alpha_v, mf_order_v, &
2633 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2636 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p7
2641 subroutine element_operation_tensorprod3d_final_p7( this )
2645 nullify( this%elem3D )
2648 end subroutine element_operation_tensorprod3d_final_p7
2653 subroutine element_operation_tensorprod3d_dx_p7( this, vec_in, vec_out )
2657 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2658 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2662 end subroutine element_operation_tensorprod3d_dx_p7
2667 subroutine element_operation_tensorprod3d_dy_p7( this, vec_in, vec_out )
2671 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2672 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2676 end subroutine element_operation_tensorprod3d_dy_p7
2681 subroutine element_operation_tensorprod3d_dz_p7( this, vec_in, vec_out )
2685 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2686 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2690 end subroutine element_operation_tensorprod3d_dz_p7
2695 subroutine element_operation_tensorprod3d_lift_p7( this, vec_in, vec_out )
2699 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2700 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2704 end subroutine element_operation_tensorprod3d_lift_p7
2709 subroutine element_operation_tensorprod3d_dxdydzlift_p7( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2715 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2716 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2717 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2718 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2719 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2720 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2723 vec_out_dx, vec_out_dy, vec_out_dz )
2728 end subroutine element_operation_tensorprod3d_dxdydzlift_p7
2737 subroutine element_operation_tensorprod3d_div_p7( this, vec_in, vec_in_lift, &
2744 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
2745 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2746 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
2753 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
2755 end subroutine element_operation_tensorprod3d_div_p7
2760 subroutine element_operation_tensorprod3d_div_var5_p7( this, vec_in, vec_in_lift, &
2767 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2768 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2769 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2779 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), &
2780 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2783 end subroutine element_operation_tensorprod3d_div_var5_p7
2788 subroutine element_operation_tensorprod3d_div_var5_2_p7( this, vec_in, &
2794 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2795 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
2801 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), &
2802 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2805 end subroutine element_operation_tensorprod3d_div_var5_2_p7
2810 subroutine element_operation_tensorprod3d_lift_var5_p7( this, vec_in, vec_out )
2814 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
2815 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2823 end subroutine element_operation_tensorprod3d_lift_var5_p7
2828 subroutine element_operation_tensorprod3d_vfilterpm1_p7( this, vec_in, vec_out )
2832 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2833 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2839 end subroutine element_operation_tensorprod3d_vfilterpm1_p7
2844 subroutine element_operation_tensorprod3d_modalfilter_tracer_p7( this, vec_in, vec_work, vec_out )
2850 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2851 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2852 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2859 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p7
2864 subroutine element_operation_tensorprod3d_modalfilter_var5_p7( this, vec_in, vec_work, vec_out )
2870 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2871 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2872 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2882 end subroutine element_operation_tensorprod3d_modalfilter_var5_p7
2890 subroutine element_operation_tensorprod3d_init_p8( this, elem3D )
2897 this%elem3D => elem3d
2900 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
2906 end subroutine element_operation_tensorprod3d_init_p8
2911 subroutine element_operation_tensorprod3d_setup_modalfilter_p8( this, &
2912 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2913 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2918 real(rp),
intent(in) :: mf_etac_h
2919 real(rp),
intent(in) :: mf_alpha_h
2920 integer,
intent(in) :: mf_order_h
2921 real(rp),
intent(in) :: mf_etac_v
2922 real(rp),
intent(in) :: mf_alpha_v
2923 integer,
intent(in) :: mf_order_v
2926 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2927 mf_etac_h, mf_alpha_h, mf_order_h, &
2928 mf_etac_v, mf_alpha_v, mf_order_v, &
2929 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2932 end subroutine element_operation_tensorprod3d_setup_modalfilter_p8
2937 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p8( this, &
2938 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2939 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2944 real(rp),
intent(in) :: mf_etac_h
2945 real(rp),
intent(in) :: mf_alpha_h
2946 integer,
intent(in) :: mf_order_h
2947 real(rp),
intent(in) :: mf_etac_v
2948 real(rp),
intent(in) :: mf_alpha_v
2949 integer,
intent(in) :: mf_order_v
2952 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2953 mf_etac_h, mf_alpha_h, mf_order_h, &
2954 mf_etac_v, mf_alpha_v, mf_order_v, &
2955 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2958 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p8
2963 subroutine element_operation_tensorprod3d_final_p8( this )
2967 nullify( this%elem3D )
2970 end subroutine element_operation_tensorprod3d_final_p8
2975 subroutine element_operation_tensorprod3d_dx_p8( this, vec_in, vec_out )
2979 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2980 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2984 end subroutine element_operation_tensorprod3d_dx_p8
2989 subroutine element_operation_tensorprod3d_dy_p8( this, vec_in, vec_out )
2993 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2994 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2998 end subroutine element_operation_tensorprod3d_dy_p8
3003 subroutine element_operation_tensorprod3d_dz_p8( this, vec_in, vec_out )
3007 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3008 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3012 end subroutine element_operation_tensorprod3d_dz_p8
3017 subroutine element_operation_tensorprod3d_lift_p8( this, vec_in, vec_out )
3021 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3022 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3026 end subroutine element_operation_tensorprod3d_lift_p8
3031 subroutine element_operation_tensorprod3d_dxdydzlift_p8( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3037 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3038 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3039 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3040 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3041 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3042 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3045 vec_out_dx, vec_out_dy, vec_out_dz )
3050 end subroutine element_operation_tensorprod3d_dxdydzlift_p8
3059 subroutine element_operation_tensorprod3d_div_p8( this, vec_in, vec_in_lift, &
3066 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
3067 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3068 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
3075 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
3077 end subroutine element_operation_tensorprod3d_div_p8
3082 subroutine element_operation_tensorprod3d_div_var5_p8( this, vec_in, vec_in_lift, &
3089 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3090 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3091 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3101 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), &
3102 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3105 end subroutine element_operation_tensorprod3d_div_var5_p8
3110 subroutine element_operation_tensorprod3d_div_var5_2_p8( this, vec_in, &
3116 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3117 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
3123 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), &
3124 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3127 end subroutine element_operation_tensorprod3d_div_var5_2_p8
3132 subroutine element_operation_tensorprod3d_lift_var5_p8( this, vec_in, vec_out )
3136 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
3137 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3145 end subroutine element_operation_tensorprod3d_lift_var5_p8
3150 subroutine element_operation_tensorprod3d_vfilterpm1_p8( this, vec_in, vec_out )
3154 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3155 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3161 end subroutine element_operation_tensorprod3d_vfilterpm1_p8
3166 subroutine element_operation_tensorprod3d_modalfilter_tracer_p8( this, vec_in, vec_work, vec_out )
3172 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3173 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3174 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3181 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p8
3186 subroutine element_operation_tensorprod3d_modalfilter_var5_p8( this, vec_in, vec_work, vec_out )
3192 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3193 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3194 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3204 end subroutine element_operation_tensorprod3d_modalfilter_var5_p8
3212 subroutine element_operation_tensorprod3d_init_p9( this, elem3D )
3219 this%elem3D => elem3d
3222 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
3228 end subroutine element_operation_tensorprod3d_init_p9
3233 subroutine element_operation_tensorprod3d_setup_modalfilter_p9( this, &
3234 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3235 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3240 real(rp),
intent(in) :: mf_etac_h
3241 real(rp),
intent(in) :: mf_alpha_h
3242 integer,
intent(in) :: mf_order_h
3243 real(rp),
intent(in) :: mf_etac_v
3244 real(rp),
intent(in) :: mf_alpha_v
3245 integer,
intent(in) :: mf_order_v
3248 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3249 mf_etac_h, mf_alpha_h, mf_order_h, &
3250 mf_etac_v, mf_alpha_v, mf_order_v, &
3251 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3254 end subroutine element_operation_tensorprod3d_setup_modalfilter_p9
3259 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p9( this, &
3260 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3261 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3266 real(rp),
intent(in) :: mf_etac_h
3267 real(rp),
intent(in) :: mf_alpha_h
3268 integer,
intent(in) :: mf_order_h
3269 real(rp),
intent(in) :: mf_etac_v
3270 real(rp),
intent(in) :: mf_alpha_v
3271 integer,
intent(in) :: mf_order_v
3274 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3275 mf_etac_h, mf_alpha_h, mf_order_h, &
3276 mf_etac_v, mf_alpha_v, mf_order_v, &
3277 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3280 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p9
3285 subroutine element_operation_tensorprod3d_final_p9( this )
3289 nullify( this%elem3D )
3292 end subroutine element_operation_tensorprod3d_final_p9
3297 subroutine element_operation_tensorprod3d_dx_p9( this, vec_in, vec_out )
3301 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3302 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3306 end subroutine element_operation_tensorprod3d_dx_p9
3311 subroutine element_operation_tensorprod3d_dy_p9( this, vec_in, vec_out )
3315 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3316 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3320 end subroutine element_operation_tensorprod3d_dy_p9
3325 subroutine element_operation_tensorprod3d_dz_p9( this, vec_in, vec_out )
3329 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3330 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3334 end subroutine element_operation_tensorprod3d_dz_p9
3339 subroutine element_operation_tensorprod3d_lift_p9( this, vec_in, vec_out )
3343 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3344 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3348 end subroutine element_operation_tensorprod3d_lift_p9
3353 subroutine element_operation_tensorprod3d_dxdydzlift_p9( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3359 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3360 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3361 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3362 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3363 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3364 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3367 vec_out_dx, vec_out_dy, vec_out_dz )
3372 end subroutine element_operation_tensorprod3d_dxdydzlift_p9
3381 subroutine element_operation_tensorprod3d_div_p9( this, vec_in, vec_in_lift, &
3388 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
3389 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3390 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
3397 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
3399 end subroutine element_operation_tensorprod3d_div_p9
3404 subroutine element_operation_tensorprod3d_div_var5_p9( this, vec_in, vec_in_lift, &
3411 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3412 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3413 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3423 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), &
3424 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3427 end subroutine element_operation_tensorprod3d_div_var5_p9
3432 subroutine element_operation_tensorprod3d_div_var5_2_p9( this, vec_in, &
3438 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3439 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
3445 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), &
3446 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3449 end subroutine element_operation_tensorprod3d_div_var5_2_p9
3454 subroutine element_operation_tensorprod3d_lift_var5_p9( this, vec_in, vec_out )
3458 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
3459 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3467 end subroutine element_operation_tensorprod3d_lift_var5_p9
3472 subroutine element_operation_tensorprod3d_vfilterpm1_p9( this, vec_in, vec_out )
3476 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3477 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3483 end subroutine element_operation_tensorprod3d_vfilterpm1_p9
3488 subroutine element_operation_tensorprod3d_modalfilter_tracer_p9( this, vec_in, vec_work, vec_out )
3494 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3495 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3496 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3503 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p9
3508 subroutine element_operation_tensorprod3d_modalfilter_var5_p9( this, vec_in, vec_work, vec_out )
3514 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3515 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3516 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3526 end subroutine element_operation_tensorprod3d_modalfilter_var5_p9
3534 subroutine element_operation_tensorprod3d_init_p10( this, elem3D )
3541 this%elem3D => elem3d
3544 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
3550 end subroutine element_operation_tensorprod3d_init_p10
3555 subroutine element_operation_tensorprod3d_setup_modalfilter_p10( this, &
3556 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3557 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3562 real(rp),
intent(in) :: mf_etac_h
3563 real(rp),
intent(in) :: mf_alpha_h
3564 integer,
intent(in) :: mf_order_h
3565 real(rp),
intent(in) :: mf_etac_v
3566 real(rp),
intent(in) :: mf_alpha_v
3567 integer,
intent(in) :: mf_order_v
3570 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3571 mf_etac_h, mf_alpha_h, mf_order_h, &
3572 mf_etac_v, mf_alpha_v, mf_order_v, &
3573 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3576 end subroutine element_operation_tensorprod3d_setup_modalfilter_p10
3581 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p10( this, &
3582 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3583 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3588 real(rp),
intent(in) :: mf_etac_h
3589 real(rp),
intent(in) :: mf_alpha_h
3590 integer,
intent(in) :: mf_order_h
3591 real(rp),
intent(in) :: mf_etac_v
3592 real(rp),
intent(in) :: mf_alpha_v
3593 integer,
intent(in) :: mf_order_v
3596 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3597 mf_etac_h, mf_alpha_h, mf_order_h, &
3598 mf_etac_v, mf_alpha_v, mf_order_v, &
3599 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3602 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p10
3607 subroutine element_operation_tensorprod3d_final_p10( this )
3611 nullify( this%elem3D )
3614 end subroutine element_operation_tensorprod3d_final_p10
3619 subroutine element_operation_tensorprod3d_dx_p10( this, vec_in, vec_out )
3623 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3624 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3628 end subroutine element_operation_tensorprod3d_dx_p10
3633 subroutine element_operation_tensorprod3d_dy_p10( this, vec_in, vec_out )
3637 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3638 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3642 end subroutine element_operation_tensorprod3d_dy_p10
3647 subroutine element_operation_tensorprod3d_dz_p10( this, vec_in, vec_out )
3651 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3652 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3656 end subroutine element_operation_tensorprod3d_dz_p10
3661 subroutine element_operation_tensorprod3d_lift_p10( this, vec_in, vec_out )
3665 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3666 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3670 end subroutine element_operation_tensorprod3d_lift_p10
3675 subroutine element_operation_tensorprod3d_dxdydzlift_p10( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3681 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3682 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3683 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3684 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3685 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3686 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3689 vec_out_dx, vec_out_dy, vec_out_dz )
3694 end subroutine element_operation_tensorprod3d_dxdydzlift_p10
3703 subroutine element_operation_tensorprod3d_div_p10( this, vec_in, vec_in_lift, &
3710 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
3711 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3712 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
3719 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
3721 end subroutine element_operation_tensorprod3d_div_p10
3726 subroutine element_operation_tensorprod3d_div_var5_p10( this, vec_in, vec_in_lift, &
3733 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3734 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3735 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3745 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), &
3746 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3749 end subroutine element_operation_tensorprod3d_div_var5_p10
3754 subroutine element_operation_tensorprod3d_div_var5_2_p10( this, vec_in, &
3760 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3761 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
3767 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), &
3768 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3771 end subroutine element_operation_tensorprod3d_div_var5_2_p10
3776 subroutine element_operation_tensorprod3d_lift_var5_p10( this, vec_in, vec_out )
3780 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
3781 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3789 end subroutine element_operation_tensorprod3d_lift_var5_p10
3794 subroutine element_operation_tensorprod3d_vfilterpm1_p10( this, vec_in, vec_out )
3798 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3799 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3805 end subroutine element_operation_tensorprod3d_vfilterpm1_p10
3810 subroutine element_operation_tensorprod3d_modalfilter_tracer_p10( this, vec_in, vec_work, vec_out )
3816 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3817 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3818 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3825 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p10
3830 subroutine element_operation_tensorprod3d_modalfilter_var5_p10( this, vec_in, vec_work, vec_out )
3836 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3837 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3838 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3848 end subroutine element_operation_tensorprod3d_modalfilter_var5_p10
3856 subroutine element_operation_tensorprod3d_init_p11( this, elem3D )
3863 this%elem3D => elem3d
3866 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
3872 end subroutine element_operation_tensorprod3d_init_p11
3877 subroutine element_operation_tensorprod3d_setup_modalfilter_p11( this, &
3878 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3879 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3884 real(rp),
intent(in) :: mf_etac_h
3885 real(rp),
intent(in) :: mf_alpha_h
3886 integer,
intent(in) :: mf_order_h
3887 real(rp),
intent(in) :: mf_etac_v
3888 real(rp),
intent(in) :: mf_alpha_v
3889 integer,
intent(in) :: mf_order_v
3892 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3893 mf_etac_h, mf_alpha_h, mf_order_h, &
3894 mf_etac_v, mf_alpha_v, mf_order_v, &
3895 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3898 end subroutine element_operation_tensorprod3d_setup_modalfilter_p11
3903 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p11( this, &
3904 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3905 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3910 real(rp),
intent(in) :: mf_etac_h
3911 real(rp),
intent(in) :: mf_alpha_h
3912 integer,
intent(in) :: mf_order_h
3913 real(rp),
intent(in) :: mf_etac_v
3914 real(rp),
intent(in) :: mf_alpha_v
3915 integer,
intent(in) :: mf_order_v
3918 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3919 mf_etac_h, mf_alpha_h, mf_order_h, &
3920 mf_etac_v, mf_alpha_v, mf_order_v, &
3921 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3924 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p11
3929 subroutine element_operation_tensorprod3d_final_p11( this )
3933 nullify( this%elem3D )
3936 end subroutine element_operation_tensorprod3d_final_p11
3941 subroutine element_operation_tensorprod3d_dx_p11( this, vec_in, vec_out )
3945 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3946 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3950 end subroutine element_operation_tensorprod3d_dx_p11
3955 subroutine element_operation_tensorprod3d_dy_p11( this, vec_in, vec_out )
3959 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3960 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3964 end subroutine element_operation_tensorprod3d_dy_p11
3969 subroutine element_operation_tensorprod3d_dz_p11( this, vec_in, vec_out )
3973 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3974 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3978 end subroutine element_operation_tensorprod3d_dz_p11
3983 subroutine element_operation_tensorprod3d_lift_p11( this, vec_in, vec_out )
3987 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3988 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3992 end subroutine element_operation_tensorprod3d_lift_p11
3997 subroutine element_operation_tensorprod3d_dxdydzlift_p11( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4003 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4004 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4005 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4006 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4007 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4008 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4011 vec_out_dx, vec_out_dy, vec_out_dz )
4016 end subroutine element_operation_tensorprod3d_dxdydzlift_p11
4025 subroutine element_operation_tensorprod3d_div_p11( this, vec_in, vec_in_lift, &
4032 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
4033 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4034 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
4041 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
4043 end subroutine element_operation_tensorprod3d_div_p11
4048 subroutine element_operation_tensorprod3d_div_var5_p11( this, vec_in, vec_in_lift, &
4055 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4056 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4057 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4067 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), &
4068 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4071 end subroutine element_operation_tensorprod3d_div_var5_p11
4076 subroutine element_operation_tensorprod3d_div_var5_2_p11( this, vec_in, &
4082 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4083 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
4089 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), &
4090 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4093 end subroutine element_operation_tensorprod3d_div_var5_2_p11
4098 subroutine element_operation_tensorprod3d_lift_var5_p11( this, vec_in, vec_out )
4102 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
4103 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4111 end subroutine element_operation_tensorprod3d_lift_var5_p11
4116 subroutine element_operation_tensorprod3d_vfilterpm1_p11( this, vec_in, vec_out )
4120 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4121 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4127 end subroutine element_operation_tensorprod3d_vfilterpm1_p11
4132 subroutine element_operation_tensorprod3d_modalfilter_tracer_p11( this, vec_in, vec_work, vec_out )
4138 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4139 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4140 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4147 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p11
4152 subroutine element_operation_tensorprod3d_modalfilter_var5_p11( this, vec_in, vec_work, vec_out )
4158 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4159 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4160 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4170 end subroutine element_operation_tensorprod3d_modalfilter_var5_p11
4178 subroutine element_operation_tensorprod3d_init_p12( this, elem3D )
4185 this%elem3D => elem3d
4188 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
4194 end subroutine element_operation_tensorprod3d_init_p12
4199 subroutine element_operation_tensorprod3d_setup_modalfilter_p12( this, &
4200 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4201 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4206 real(rp),
intent(in) :: mf_etac_h
4207 real(rp),
intent(in) :: mf_alpha_h
4208 integer,
intent(in) :: mf_order_h
4209 real(rp),
intent(in) :: mf_etac_v
4210 real(rp),
intent(in) :: mf_alpha_v
4211 integer,
intent(in) :: mf_order_v
4214 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
4215 mf_etac_h, mf_alpha_h, mf_order_h, &
4216 mf_etac_v, mf_alpha_v, mf_order_v, &
4217 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4220 end subroutine element_operation_tensorprod3d_setup_modalfilter_p12
4225 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p12( this, &
4226 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4227 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4232 real(rp),
intent(in) :: mf_etac_h
4233 real(rp),
intent(in) :: mf_alpha_h
4234 integer,
intent(in) :: mf_order_h
4235 real(rp),
intent(in) :: mf_etac_v
4236 real(rp),
intent(in) :: mf_alpha_v
4237 integer,
intent(in) :: mf_order_v
4240 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
4241 mf_etac_h, mf_alpha_h, mf_order_h, &
4242 mf_etac_v, mf_alpha_v, mf_order_v, &
4243 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4246 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p12
4251 subroutine element_operation_tensorprod3d_final_p12( this )
4255 nullify( this%elem3D )
4258 end subroutine element_operation_tensorprod3d_final_p12
4263 subroutine element_operation_tensorprod3d_dx_p12( this, vec_in, vec_out )
4267 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4268 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4272 end subroutine element_operation_tensorprod3d_dx_p12
4277 subroutine element_operation_tensorprod3d_dy_p12( this, vec_in, vec_out )
4281 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4282 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4286 end subroutine element_operation_tensorprod3d_dy_p12
4291 subroutine element_operation_tensorprod3d_dz_p12( this, vec_in, vec_out )
4295 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4296 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4300 end subroutine element_operation_tensorprod3d_dz_p12
4305 subroutine element_operation_tensorprod3d_lift_p12( this, vec_in, vec_out )
4309 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
4310 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4314 end subroutine element_operation_tensorprod3d_lift_p12
4319 subroutine element_operation_tensorprod3d_dxdydzlift_p12( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4325 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4326 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4327 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4328 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4329 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4330 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4333 vec_out_dx, vec_out_dy, vec_out_dz )
4338 end subroutine element_operation_tensorprod3d_dxdydzlift_p12
4347 subroutine element_operation_tensorprod3d_div_p12( this, vec_in, vec_in_lift, &
4354 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
4355 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4356 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
4363 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
4365 end subroutine element_operation_tensorprod3d_div_p12
4370 subroutine element_operation_tensorprod3d_div_var5_p12( this, vec_in, vec_in_lift, &
4377 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4378 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4379 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4389 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), &
4390 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4393 end subroutine element_operation_tensorprod3d_div_var5_p12
4398 subroutine element_operation_tensorprod3d_div_var5_2_p12( this, vec_in, &
4404 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4405 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
4411 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), &
4412 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4415 end subroutine element_operation_tensorprod3d_div_var5_2_p12
4420 subroutine element_operation_tensorprod3d_lift_var5_p12( this, vec_in, vec_out )
4424 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
4425 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4433 end subroutine element_operation_tensorprod3d_lift_var5_p12
4438 subroutine element_operation_tensorprod3d_vfilterpm1_p12( this, vec_in, vec_out )
4442 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4443 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4449 end subroutine element_operation_tensorprod3d_vfilterpm1_p12
4454 subroutine element_operation_tensorprod3d_modalfilter_tracer_p12( this, vec_in, vec_work, vec_out )
4460 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4461 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4462 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4469 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p12
4474 subroutine element_operation_tensorprod3d_modalfilter_var5_p12( this, vec_in, vec_work, vec_out )
4480 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4481 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4482 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4492 end subroutine element_operation_tensorprod3d_modalfilter_var5_p12
4500 subroutine element_operation_tensorprod3d_init_p13( this, elem3D )
4507 this%elem3D => elem3d
4510 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
4516 end subroutine element_operation_tensorprod3d_init_p13
4521 subroutine element_operation_tensorprod3d_setup_modalfilter_p13( this, &
4522 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4523 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4528 real(rp),
intent(in) :: mf_etac_h
4529 real(rp),
intent(in) :: mf_alpha_h
4530 integer,
intent(in) :: mf_order_h
4531 real(rp),
intent(in) :: mf_etac_v
4532 real(rp),
intent(in) :: mf_alpha_v
4533 integer,
intent(in) :: mf_order_v
4536 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
4537 mf_etac_h, mf_alpha_h, mf_order_h, &
4538 mf_etac_v, mf_alpha_v, mf_order_v, &
4539 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4542 end subroutine element_operation_tensorprod3d_setup_modalfilter_p13
4547 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p13( this, &
4548 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4549 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4554 real(rp),
intent(in) :: mf_etac_h
4555 real(rp),
intent(in) :: mf_alpha_h
4556 integer,
intent(in) :: mf_order_h
4557 real(rp),
intent(in) :: mf_etac_v
4558 real(rp),
intent(in) :: mf_alpha_v
4559 integer,
intent(in) :: mf_order_v
4562 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
4563 mf_etac_h, mf_alpha_h, mf_order_h, &
4564 mf_etac_v, mf_alpha_v, mf_order_v, &
4565 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4568 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p13
4573 subroutine element_operation_tensorprod3d_final_p13( this )
4577 nullify( this%elem3D )
4580 end subroutine element_operation_tensorprod3d_final_p13
4585 subroutine element_operation_tensorprod3d_dx_p13( this, vec_in, vec_out )
4589 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4590 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4594 end subroutine element_operation_tensorprod3d_dx_p13
4599 subroutine element_operation_tensorprod3d_dy_p13( this, vec_in, vec_out )
4603 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4604 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4608 end subroutine element_operation_tensorprod3d_dy_p13
4613 subroutine element_operation_tensorprod3d_dz_p13( this, vec_in, vec_out )
4617 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4618 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4622 end subroutine element_operation_tensorprod3d_dz_p13
4627 subroutine element_operation_tensorprod3d_lift_p13( this, vec_in, vec_out )
4631 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
4632 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4636 end subroutine element_operation_tensorprod3d_lift_p13
4641 subroutine element_operation_tensorprod3d_dxdydzlift_p13( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4647 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4648 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4649 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4650 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4651 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4652 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4655 vec_out_dx, vec_out_dy, vec_out_dz )
4660 end subroutine element_operation_tensorprod3d_dxdydzlift_p13
4669 subroutine element_operation_tensorprod3d_div_p13( this, vec_in, vec_in_lift, &
4676 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
4677 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4678 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
4685 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
4687 end subroutine element_operation_tensorprod3d_div_p13
4692 subroutine element_operation_tensorprod3d_div_var5_p13( this, vec_in, vec_in_lift, &
4699 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4700 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4701 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4711 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), &
4712 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4715 end subroutine element_operation_tensorprod3d_div_var5_p13
4720 subroutine element_operation_tensorprod3d_div_var5_2_p13( this, vec_in, &
4726 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4727 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
4733 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), &
4734 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4737 end subroutine element_operation_tensorprod3d_div_var5_2_p13
4742 subroutine element_operation_tensorprod3d_lift_var5_p13( this, vec_in, vec_out )
4746 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
4747 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4755 end subroutine element_operation_tensorprod3d_lift_var5_p13
4760 subroutine element_operation_tensorprod3d_vfilterpm1_p13( this, vec_in, vec_out )
4764 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4765 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4771 end subroutine element_operation_tensorprod3d_vfilterpm1_p13
4776 subroutine element_operation_tensorprod3d_modalfilter_tracer_p13( this, vec_in, vec_work, vec_out )
4782 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4783 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4784 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4791 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p13
4796 subroutine element_operation_tensorprod3d_modalfilter_var5_p13( this, vec_in, vec_work, vec_out )
4802 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4803 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4804 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4814 end subroutine element_operation_tensorprod3d_modalfilter_var5_p13
4822 subroutine element_operation_tensorprod3d_init_p14( this, elem3D )
4829 this%elem3D => elem3d
4832 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
4838 end subroutine element_operation_tensorprod3d_init_p14
4843 subroutine element_operation_tensorprod3d_setup_modalfilter_p14( this, &
4844 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4845 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4850 real(rp),
intent(in) :: mf_etac_h
4851 real(rp),
intent(in) :: mf_alpha_h
4852 integer,
intent(in) :: mf_order_h
4853 real(rp),
intent(in) :: mf_etac_v
4854 real(rp),
intent(in) :: mf_alpha_v
4855 integer,
intent(in) :: mf_order_v
4858 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
4859 mf_etac_h, mf_alpha_h, mf_order_h, &
4860 mf_etac_v, mf_alpha_v, mf_order_v, &
4861 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4864 end subroutine element_operation_tensorprod3d_setup_modalfilter_p14
4869 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p14( this, &
4870 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4871 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4876 real(rp),
intent(in) :: mf_etac_h
4877 real(rp),
intent(in) :: mf_alpha_h
4878 integer,
intent(in) :: mf_order_h
4879 real(rp),
intent(in) :: mf_etac_v
4880 real(rp),
intent(in) :: mf_alpha_v
4881 integer,
intent(in) :: mf_order_v
4884 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
4885 mf_etac_h, mf_alpha_h, mf_order_h, &
4886 mf_etac_v, mf_alpha_v, mf_order_v, &
4887 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4890 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p14
4895 subroutine element_operation_tensorprod3d_final_p14( this )
4899 nullify( this%elem3D )
4902 end subroutine element_operation_tensorprod3d_final_p14
4907 subroutine element_operation_tensorprod3d_dx_p14( this, vec_in, vec_out )
4911 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4912 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4916 end subroutine element_operation_tensorprod3d_dx_p14
4921 subroutine element_operation_tensorprod3d_dy_p14( this, vec_in, vec_out )
4925 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4926 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4930 end subroutine element_operation_tensorprod3d_dy_p14
4935 subroutine element_operation_tensorprod3d_dz_p14( this, vec_in, vec_out )
4939 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4940 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4944 end subroutine element_operation_tensorprod3d_dz_p14
4949 subroutine element_operation_tensorprod3d_lift_p14( this, vec_in, vec_out )
4953 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
4954 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4958 end subroutine element_operation_tensorprod3d_lift_p14
4963 subroutine element_operation_tensorprod3d_dxdydzlift_p14( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4969 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4970 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4971 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4972 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4973 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4974 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4977 vec_out_dx, vec_out_dy, vec_out_dz )
4982 end subroutine element_operation_tensorprod3d_dxdydzlift_p14
4991 subroutine element_operation_tensorprod3d_div_p14( this, vec_in, vec_in_lift, &
4998 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
4999 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
5000 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
5007 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
5009 end subroutine element_operation_tensorprod3d_div_p14
5014 subroutine element_operation_tensorprod3d_div_var5_p14( this, vec_in, vec_in_lift, &
5021 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
5022 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
5023 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
5033 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), &
5034 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
5037 end subroutine element_operation_tensorprod3d_div_var5_p14
5042 subroutine element_operation_tensorprod3d_div_var5_2_p14( this, vec_in, &
5048 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
5049 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
5055 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), &
5056 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
5059 end subroutine element_operation_tensorprod3d_div_var5_2_p14
5064 subroutine element_operation_tensorprod3d_lift_var5_p14( this, vec_in, vec_out )
5068 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
5069 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
5077 end subroutine element_operation_tensorprod3d_lift_var5_p14
5082 subroutine element_operation_tensorprod3d_vfilterpm1_p14( this, vec_in, vec_out )
5086 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5087 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5093 end subroutine element_operation_tensorprod3d_vfilterpm1_p14
5098 subroutine element_operation_tensorprod3d_modalfilter_tracer_p14( this, vec_in, vec_work, vec_out )
5104 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5105 real(rp),
intent(out) :: vec_work(this%elem3d%np)
5106 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5113 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p14
5118 subroutine element_operation_tensorprod3d_modalfilter_var5_p14( this, vec_in, vec_work, vec_out )
5124 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
5125 real(rp),
intent(out) :: vec_work(this%elem3d%np)
5126 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
5136 end subroutine element_operation_tensorprod3d_modalfilter_var5_p14
5144 subroutine element_operation_tensorprod3d_init_p15( this, elem3D )
5151 this%elem3D => elem3d
5154 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%Lift_mat_tr, this%IntrpMat_VPOrdM1_tr, &
5160 end subroutine element_operation_tensorprod3d_init_p15
5165 subroutine element_operation_tensorprod3d_setup_modalfilter_p15( this, &
5166 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
5167 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
5172 real(rp),
intent(in) :: mf_etac_h
5173 real(rp),
intent(in) :: mf_alpha_h
5174 integer,
intent(in) :: mf_order_h
5175 real(rp),
intent(in) :: mf_etac_v
5176 real(rp),
intent(in) :: mf_alpha_v
5177 integer,
intent(in) :: mf_order_v
5180 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
5181 mf_etac_h, mf_alpha_h, mf_order_h, &
5182 mf_etac_v, mf_alpha_v, mf_order_v, &
5183 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
5186 end subroutine element_operation_tensorprod3d_setup_modalfilter_p15
5191 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p15( this, &
5192 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
5193 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
5198 real(rp),
intent(in) :: mf_etac_h
5199 real(rp),
intent(in) :: mf_alpha_h
5200 integer,
intent(in) :: mf_order_h
5201 real(rp),
intent(in) :: mf_etac_v
5202 real(rp),
intent(in) :: mf_alpha_v
5203 integer,
intent(in) :: mf_order_v
5206 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
5207 mf_etac_h, mf_alpha_h, mf_order_h, &
5208 mf_etac_v, mf_alpha_v, mf_order_v, &
5209 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
5212 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p15
5217 subroutine element_operation_tensorprod3d_final_p15( this )
5221 nullify( this%elem3D )
5224 end subroutine element_operation_tensorprod3d_final_p15
5229 subroutine element_operation_tensorprod3d_dx_p15( this, vec_in, vec_out )
5233 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5234 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5238 end subroutine element_operation_tensorprod3d_dx_p15
5243 subroutine element_operation_tensorprod3d_dy_p15( this, vec_in, vec_out )
5247 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5248 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5252 end subroutine element_operation_tensorprod3d_dy_p15
5257 subroutine element_operation_tensorprod3d_dz_p15( this, vec_in, vec_out )
5261 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5262 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5266 end subroutine element_operation_tensorprod3d_dz_p15
5271 subroutine element_operation_tensorprod3d_lift_p15( this, vec_in, vec_out )
5275 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
5276 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5280 end subroutine element_operation_tensorprod3d_lift_p15
5285 subroutine element_operation_tensorprod3d_dxdydzlift_p15( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
5291 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5292 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
5293 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
5294 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
5295 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
5296 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
5299 vec_out_dx, vec_out_dy, vec_out_dz )
5304 end subroutine element_operation_tensorprod3d_dxdydzlift_p15
5313 subroutine element_operation_tensorprod3d_div_p15( this, vec_in, vec_in_lift, &
5320 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
5321 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
5322 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
5329 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
5331 end subroutine element_operation_tensorprod3d_div_p15
5336 subroutine element_operation_tensorprod3d_div_var5_p15( this, vec_in, vec_in_lift, &
5343 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
5344 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
5345 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
5355 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), &
5356 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
5359 end subroutine element_operation_tensorprod3d_div_var5_p15
5364 subroutine element_operation_tensorprod3d_div_var5_2_p15( this, vec_in, &
5370 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
5371 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
5377 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), &
5378 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
5381 end subroutine element_operation_tensorprod3d_div_var5_2_p15
5386 subroutine element_operation_tensorprod3d_lift_var5_p15( this, vec_in, vec_out )
5390 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
5391 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
5399 end subroutine element_operation_tensorprod3d_lift_var5_p15
5404 subroutine element_operation_tensorprod3d_vfilterpm1_p15( this, vec_in, vec_out )
5408 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5409 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5415 end subroutine element_operation_tensorprod3d_vfilterpm1_p15
5420 subroutine element_operation_tensorprod3d_modalfilter_tracer_p15( this, vec_in, vec_work, vec_out )
5426 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5427 real(rp),
intent(out) :: vec_work(this%elem3d%np)
5428 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5435 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p15
5440 subroutine element_operation_tensorprod3d_modalfilter_var5_p15( this, vec_in, vec_work, vec_out )
5446 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
5447 real(rp),
intent(out) :: vec_work(this%elem3d%np)
5448 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
5458 end subroutine element_operation_tensorprod3d_modalfilter_var5_p15
5464 subroutine setup_modalfilter( MFilter_h1D, MFilter_h1D_tr, MFilter_v1D_tr, &
5465 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
5466 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v, &
5467 PolyOrder_h, PolyOrder_v )
5472 real(rp),
intent(inout) :: mfilter_h1d(:,:)
5473 real(rp),
intent(inout) :: mfilter_h1d_tr(:,:)
5474 real(rp),
intent(inout) :: mfilter_v1d_tr(:,:)
5475 real(rp),
intent(in) :: mf_etac_h
5476 real(rp),
intent(in) :: mf_alpha_h
5477 integer,
intent(in) :: mf_order_h
5478 real(rp),
intent(in) :: mf_etac_v
5479 real(rp),
intent(in) :: mf_alpha_v
5480 integer,
intent(in) :: mf_order_v
5481 integer,
intent(in) :: polyorder_h
5482 integer,
intent(in) :: polyorder_v
5488 call elem1d%Init( polyorder_h, .false. )
5490 call mfilter1d%Init( elem1d, &
5491 mf_etac_h, mf_alpha_h, mf_order_h )
5492 mfilter_h1d(:,:) = mfilter1d%FilterMat(:,:)
5493 mfilter_h1d_tr(:,:) = transpose(mfilter_h1d(:,:))
5495 call mfilter1d%Final()
5499 call elem1d%Init( polyorder_v, .false. )
5501 call mfilter1d%Init( elem1d, &
5502 mf_etac_v, mf_alpha_v, mf_order_v )
5503 mfilter_v1d_tr(:,:) = transpose(mfilter1d%FilterMat(:,:))
5505 call mfilter1d%Final()
5509 end subroutine setup_modalfilter
5512 subroutine setup_elem_operator( D1D, D1D_tr, Lift_mat, Lift_mat_tr, IntrpMat_VPOrdM1_tr, &
5517 integer,
intent(in) :: np
5519 real(rp),
intent(out) :: d1d(np,np)
5520 real(rp),
intent(out) :: d1d_tr(np,np)
5521 real(rp),
intent(out) :: lift_mat(np,np,np,6)
5522 real(rp),
intent(out) :: lift_mat_tr(6,np,np,np)
5523 real(rp),
intent(out) :: intrpmat_vpordm1_tr(np,np)
5527 integer :: p1, p2, p_
5528 real(rp) :: invv_vpordm1(np,np)
5529 real(rp) :: intrpmat_vpordm1(np,np)
5536 call elem1d%Init( np-1, .false. )
5537 d1d(:,:) = elem1d%Dx1(:,:)
5538 d1d_tr(:,:) = transpose(d1d)
5540 call lift_sm%Init( elem3d%Lift, storage_format=
'ELL' )
5544 p1 = i + (j-1)*np + (k-1)*np**2
5545 lift_mat_tr(1:6,i,j,k) = &
5546 (/ elem3d%Lift(p1,i+(k-1)*np), &
5547 elem3d%Lift(p1,j+(k-1)*np+(2-1)*np**2), &
5548 elem3d%Lift(p1,i+(k-1)*np+(3-1)*np**2), &
5549 elem3d%Lift(p1,j+(k-1)*np+(4-1)*np**2), &
5550 elem3d%Lift(p1,i+(j-1)*np+(5-1)*np**2), &
5551 elem3d%Lift(p1,i+(j-1)*np+(6-1)*np**2) /)
5552 lift_mat(i,j,k,1:6) = lift_mat_tr(1:6,i,j,k)
5556 call lift_sm%Final()
5560 invv_vpordm1(:,:) = elem1d%invV(:,:)
5561 invv_vpordm1(np,:) = 0.0_rp
5562 intrpmat_vpordm1(:,:) = matmul(elem1d%V, invv_vpordm1)
5563 intrpmat_vpordm1_tr(:,:) = transpose(intrpmat_vpordm1)
5569 end subroutine setup_elem_operator
module FElib / Element / Base
subroutine, public elementbase3d_init(elem, lumpedmat_flag)
Initialize an object to manage a 3D reference element.
subroutine, public elementbase3d_final(elem)
Finalize an object to manage a 3D reference element.
module FElib / Element / hexahedron
module FElib / Element / line
module FElib / Element/ ModalFilter
module FElib / Element / Operation / Base
integer, public element_operator_type_tensorprod3d
Type ID of tensor-product operator for 3D elements.
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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 with lifting operations for a hexahedral element of order 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 for GPU
subroutine, public elementoperationtensorprod3d_create(elem3d, obj)
Factory subroutine to create an object of ElementOperationTensorProd3D.
Module common / sparsemat.
Derived type representing a 3D reference element.
Derived type representing a hexahedral element.
Derived type representing a line element.
Derived type representing a modal filter.
Base type for elementwise operations.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=10.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=11.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=12.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=13.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=14.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=15.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=1.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=2.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=3.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=4.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=5.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=6.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=7.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=8.
Derived type for elementwise operations with 3D tensor product elements with polynomial order p=9.
Derived type for elementwise operations with 3D tensor product elements.
Derived type to manage a sparse matrix.