15#include "scaleFElib.h"
44 procedure(elementoperationtensorprod3d_final),
deferred,
public :: final
55 subroutine elementoperationtensorprod3d_final( this )
58 end subroutine elementoperationtensorprod3d_final
65 real(rp) :: d1d_tr(2,2)
66 real(rp) :: lift_mat(2,2,2,6)
67 real(rp) :: intrpmat_vpordm1_tr(2,2)
69 real(rp) :: mfilter_h1d(2,2)
70 real(rp) :: mfilter_h1d_tr(2,2)
71 real(rp) :: mfilter_v1d_tr(2,2)
73 real(rp) :: mfilter_tracer_h1d(2,2)
74 real(rp) :: mfilter_tracer_h1d_tr(2,2)
75 real(rp) :: mfilter_tracer_v1d_tr(2,2)
77 procedure,
public :: init => element_operation_tensorprod3d_init_p1
78 procedure,
public :: final => element_operation_tensorprod3d_final_p1
79 procedure,
public :: dx => element_operation_tensorprod3d_dx_p1
80 procedure,
public :: dy => element_operation_tensorprod3d_dy_p1
81 procedure,
public :: dz => element_operation_tensorprod3d_dz_p1
82 procedure,
public :: lift => element_operation_tensorprod3d_lift_p1
83 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p1
84 procedure,
public :: div => element_operation_tensorprod3d_div_p1
85 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p1
86 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p1
87 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p1
88 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p1
90 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p1
91 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p1
92 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p1
93 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p1
97 real(rp) :: d1d_tr(3,3)
98 real(rp) :: lift_mat(3,3,3,6)
99 real(rp) :: intrpmat_vpordm1_tr(3,3)
101 real(rp) :: mfilter_h1d(3,3)
102 real(rp) :: mfilter_h1d_tr(3,3)
103 real(rp) :: mfilter_v1d_tr(3,3)
105 real(rp) :: mfilter_tracer_h1d(3,3)
106 real(rp) :: mfilter_tracer_h1d_tr(3,3)
107 real(rp) :: mfilter_tracer_v1d_tr(3,3)
109 procedure,
public :: init => element_operation_tensorprod3d_init_p2
110 procedure,
public :: final => element_operation_tensorprod3d_final_p2
111 procedure,
public :: dx => element_operation_tensorprod3d_dx_p2
112 procedure,
public :: dy => element_operation_tensorprod3d_dy_p2
113 procedure,
public :: dz => element_operation_tensorprod3d_dz_p2
114 procedure,
public :: lift => element_operation_tensorprod3d_lift_p2
115 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p2
116 procedure,
public :: div => element_operation_tensorprod3d_div_p2
117 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p2
118 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p2
119 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p2
120 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p2
122 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p2
123 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p2
124 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p2
125 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p2
129 real(rp) :: d1d_tr(4,4)
130 real(rp) :: lift_mat(4,4,4,6)
131 real(rp) :: intrpmat_vpordm1_tr(4,4)
133 real(rp) :: mfilter_h1d(4,4)
134 real(rp) :: mfilter_h1d_tr(4,4)
135 real(rp) :: mfilter_v1d_tr(4,4)
137 real(rp) :: mfilter_tracer_h1d(4,4)
138 real(rp) :: mfilter_tracer_h1d_tr(4,4)
139 real(rp) :: mfilter_tracer_v1d_tr(4,4)
141 procedure,
public :: init => element_operation_tensorprod3d_init_p3
142 procedure,
public :: final => element_operation_tensorprod3d_final_p3
143 procedure,
public :: dx => element_operation_tensorprod3d_dx_p3
144 procedure,
public :: dy => element_operation_tensorprod3d_dy_p3
145 procedure,
public :: dz => element_operation_tensorprod3d_dz_p3
146 procedure,
public :: lift => element_operation_tensorprod3d_lift_p3
147 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p3
148 procedure,
public :: div => element_operation_tensorprod3d_div_p3
149 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p3
150 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p3
151 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p3
152 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p3
154 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p3
155 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p3
156 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p3
157 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p3
161 real(rp) :: d1d_tr(5,5)
162 real(rp) :: lift_mat(5,5,5,6)
163 real(rp) :: intrpmat_vpordm1_tr(5,5)
165 real(rp) :: mfilter_h1d(5,5)
166 real(rp) :: mfilter_h1d_tr(5,5)
167 real(rp) :: mfilter_v1d_tr(5,5)
169 real(rp) :: mfilter_tracer_h1d(5,5)
170 real(rp) :: mfilter_tracer_h1d_tr(5,5)
171 real(rp) :: mfilter_tracer_v1d_tr(5,5)
173 procedure,
public :: init => element_operation_tensorprod3d_init_p4
174 procedure,
public :: final => element_operation_tensorprod3d_final_p4
175 procedure,
public :: dx => element_operation_tensorprod3d_dx_p4
176 procedure,
public :: dy => element_operation_tensorprod3d_dy_p4
177 procedure,
public :: dz => element_operation_tensorprod3d_dz_p4
178 procedure,
public :: lift => element_operation_tensorprod3d_lift_p4
179 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p4
180 procedure,
public :: div => element_operation_tensorprod3d_div_p4
181 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p4
182 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p4
183 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p4
184 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p4
186 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p4
187 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p4
188 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p4
189 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p4
193 real(rp) :: d1d_tr(6,6)
194 real(rp) :: lift_mat(6,6,6,6)
195 real(rp) :: intrpmat_vpordm1_tr(6,6)
197 real(rp) :: mfilter_h1d(6,6)
198 real(rp) :: mfilter_h1d_tr(6,6)
199 real(rp) :: mfilter_v1d_tr(6,6)
201 real(rp) :: mfilter_tracer_h1d(6,6)
202 real(rp) :: mfilter_tracer_h1d_tr(6,6)
203 real(rp) :: mfilter_tracer_v1d_tr(6,6)
205 procedure,
public :: init => element_operation_tensorprod3d_init_p5
206 procedure,
public :: final => element_operation_tensorprod3d_final_p5
207 procedure,
public :: dx => element_operation_tensorprod3d_dx_p5
208 procedure,
public :: dy => element_operation_tensorprod3d_dy_p5
209 procedure,
public :: dz => element_operation_tensorprod3d_dz_p5
210 procedure,
public :: lift => element_operation_tensorprod3d_lift_p5
211 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p5
212 procedure,
public :: div => element_operation_tensorprod3d_div_p5
213 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p5
214 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p5
215 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p5
216 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p5
218 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p5
219 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p5
220 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p5
221 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p5
225 real(rp) :: d1d_tr(7,7)
226 real(rp) :: lift_mat(7,7,7,6)
227 real(rp) :: intrpmat_vpordm1_tr(7,7)
229 real(rp) :: mfilter_h1d(7,7)
230 real(rp) :: mfilter_h1d_tr(7,7)
231 real(rp) :: mfilter_v1d_tr(7,7)
233 real(rp) :: mfilter_tracer_h1d(7,7)
234 real(rp) :: mfilter_tracer_h1d_tr(7,7)
235 real(rp) :: mfilter_tracer_v1d_tr(7,7)
237 procedure,
public :: init => element_operation_tensorprod3d_init_p6
238 procedure,
public :: final => element_operation_tensorprod3d_final_p6
239 procedure,
public :: dx => element_operation_tensorprod3d_dx_p6
240 procedure,
public :: dy => element_operation_tensorprod3d_dy_p6
241 procedure,
public :: dz => element_operation_tensorprod3d_dz_p6
242 procedure,
public :: lift => element_operation_tensorprod3d_lift_p6
243 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p6
244 procedure,
public :: div => element_operation_tensorprod3d_div_p6
245 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p6
246 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p6
247 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p6
248 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p6
250 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p6
251 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p6
252 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p6
253 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p6
257 real(rp) :: d1d_tr(8,8)
258 real(rp) :: lift_mat(8,8,8,6)
259 real(rp) :: intrpmat_vpordm1_tr(8,8)
261 real(rp) :: mfilter_h1d(8,8)
262 real(rp) :: mfilter_h1d_tr(8,8)
263 real(rp) :: mfilter_v1d_tr(8,8)
265 real(rp) :: mfilter_tracer_h1d(8,8)
266 real(rp) :: mfilter_tracer_h1d_tr(8,8)
267 real(rp) :: mfilter_tracer_v1d_tr(8,8)
269 procedure,
public :: init => element_operation_tensorprod3d_init_p7
270 procedure,
public :: final => element_operation_tensorprod3d_final_p7
271 procedure,
public :: dx => element_operation_tensorprod3d_dx_p7
272 procedure,
public :: dy => element_operation_tensorprod3d_dy_p7
273 procedure,
public :: dz => element_operation_tensorprod3d_dz_p7
274 procedure,
public :: lift => element_operation_tensorprod3d_lift_p7
275 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p7
276 procedure,
public :: div => element_operation_tensorprod3d_div_p7
277 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p7
278 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p7
279 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p7
280 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p7
282 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p7
283 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p7
284 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p7
285 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p7
289 real(rp) :: d1d_tr(9,9)
290 real(rp) :: lift_mat(9,9,9,6)
291 real(rp) :: intrpmat_vpordm1_tr(9,9)
293 real(rp) :: mfilter_h1d(9,9)
294 real(rp) :: mfilter_h1d_tr(9,9)
295 real(rp) :: mfilter_v1d_tr(9,9)
297 real(rp) :: mfilter_tracer_h1d(9,9)
298 real(rp) :: mfilter_tracer_h1d_tr(9,9)
299 real(rp) :: mfilter_tracer_v1d_tr(9,9)
301 procedure,
public :: init => element_operation_tensorprod3d_init_p8
302 procedure,
public :: final => element_operation_tensorprod3d_final_p8
303 procedure,
public :: dx => element_operation_tensorprod3d_dx_p8
304 procedure,
public :: dy => element_operation_tensorprod3d_dy_p8
305 procedure,
public :: dz => element_operation_tensorprod3d_dz_p8
306 procedure,
public :: lift => element_operation_tensorprod3d_lift_p8
307 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p8
308 procedure,
public :: div => element_operation_tensorprod3d_div_p8
309 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p8
310 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p8
311 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p8
312 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p8
314 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p8
315 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p8
316 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p8
317 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p8
320 real(rp) :: d1d(10,10)
321 real(rp) :: d1d_tr(10,10)
322 real(rp) :: lift_mat(10,10,10,6)
323 real(rp) :: intrpmat_vpordm1_tr(10,10)
325 real(rp) :: mfilter_h1d(10,10)
326 real(rp) :: mfilter_h1d_tr(10,10)
327 real(rp) :: mfilter_v1d_tr(10,10)
329 real(rp) :: mfilter_tracer_h1d(10,10)
330 real(rp) :: mfilter_tracer_h1d_tr(10,10)
331 real(rp) :: mfilter_tracer_v1d_tr(10,10)
333 procedure,
public :: init => element_operation_tensorprod3d_init_p9
334 procedure,
public :: final => element_operation_tensorprod3d_final_p9
335 procedure,
public :: dx => element_operation_tensorprod3d_dx_p9
336 procedure,
public :: dy => element_operation_tensorprod3d_dy_p9
337 procedure,
public :: dz => element_operation_tensorprod3d_dz_p9
338 procedure,
public :: lift => element_operation_tensorprod3d_lift_p9
339 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p9
340 procedure,
public :: div => element_operation_tensorprod3d_div_p9
341 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p9
342 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p9
343 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p9
344 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p9
346 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p9
347 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p9
348 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p9
349 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p9
352 real(rp) :: d1d(11,11)
353 real(rp) :: d1d_tr(11,11)
354 real(rp) :: lift_mat(11,11,11,6)
355 real(rp) :: intrpmat_vpordm1_tr(11,11)
357 real(rp) :: mfilter_h1d(11,11)
358 real(rp) :: mfilter_h1d_tr(11,11)
359 real(rp) :: mfilter_v1d_tr(11,11)
361 real(rp) :: mfilter_tracer_h1d(11,11)
362 real(rp) :: mfilter_tracer_h1d_tr(11,11)
363 real(rp) :: mfilter_tracer_v1d_tr(11,11)
365 procedure,
public :: init => element_operation_tensorprod3d_init_p10
366 procedure,
public :: final => element_operation_tensorprod3d_final_p10
367 procedure,
public :: dx => element_operation_tensorprod3d_dx_p10
368 procedure,
public :: dy => element_operation_tensorprod3d_dy_p10
369 procedure,
public :: dz => element_operation_tensorprod3d_dz_p10
370 procedure,
public :: lift => element_operation_tensorprod3d_lift_p10
371 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p10
372 procedure,
public :: div => element_operation_tensorprod3d_div_p10
373 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p10
374 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p10
375 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p10
376 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p10
378 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p10
379 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p10
380 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p10
381 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p10
384 real(rp) :: d1d(12,12)
385 real(rp) :: d1d_tr(12,12)
386 real(rp) :: lift_mat(12,12,12,6)
387 real(rp) :: intrpmat_vpordm1_tr(12,12)
389 real(rp) :: mfilter_h1d(12,12)
390 real(rp) :: mfilter_h1d_tr(12,12)
391 real(rp) :: mfilter_v1d_tr(12,12)
393 real(rp) :: mfilter_tracer_h1d(12,12)
394 real(rp) :: mfilter_tracer_h1d_tr(12,12)
395 real(rp) :: mfilter_tracer_v1d_tr(12,12)
397 procedure,
public :: init => element_operation_tensorprod3d_init_p11
398 procedure,
public :: final => element_operation_tensorprod3d_final_p11
399 procedure,
public :: dx => element_operation_tensorprod3d_dx_p11
400 procedure,
public :: dy => element_operation_tensorprod3d_dy_p11
401 procedure,
public :: dz => element_operation_tensorprod3d_dz_p11
402 procedure,
public :: lift => element_operation_tensorprod3d_lift_p11
403 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p11
404 procedure,
public :: div => element_operation_tensorprod3d_div_p11
405 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p11
406 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p11
407 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p11
408 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p11
410 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p11
411 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p11
412 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p11
413 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p11
416 real(rp) :: d1d(13,13)
417 real(rp) :: d1d_tr(13,13)
418 real(rp) :: lift_mat(13,13,13,6)
419 real(rp) :: intrpmat_vpordm1_tr(13,13)
421 real(rp) :: mfilter_h1d(13,13)
422 real(rp) :: mfilter_h1d_tr(13,13)
423 real(rp) :: mfilter_v1d_tr(13,13)
425 real(rp) :: mfilter_tracer_h1d(13,13)
426 real(rp) :: mfilter_tracer_h1d_tr(13,13)
427 real(rp) :: mfilter_tracer_v1d_tr(13,13)
429 procedure,
public :: init => element_operation_tensorprod3d_init_p12
430 procedure,
public :: final => element_operation_tensorprod3d_final_p12
431 procedure,
public :: dx => element_operation_tensorprod3d_dx_p12
432 procedure,
public :: dy => element_operation_tensorprod3d_dy_p12
433 procedure,
public :: dz => element_operation_tensorprod3d_dz_p12
434 procedure,
public :: lift => element_operation_tensorprod3d_lift_p12
435 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p12
436 procedure,
public :: div => element_operation_tensorprod3d_div_p12
437 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p12
438 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p12
439 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p12
440 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p12
442 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p12
443 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p12
444 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p12
445 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p12
448 real(rp) :: d1d(14,14)
449 real(rp) :: d1d_tr(14,14)
450 real(rp) :: lift_mat(14,14,14,6)
451 real(rp) :: intrpmat_vpordm1_tr(14,14)
453 real(rp) :: mfilter_h1d(14,14)
454 real(rp) :: mfilter_h1d_tr(14,14)
455 real(rp) :: mfilter_v1d_tr(14,14)
457 real(rp) :: mfilter_tracer_h1d(14,14)
458 real(rp) :: mfilter_tracer_h1d_tr(14,14)
459 real(rp) :: mfilter_tracer_v1d_tr(14,14)
461 procedure,
public :: init => element_operation_tensorprod3d_init_p13
462 procedure,
public :: final => element_operation_tensorprod3d_final_p13
463 procedure,
public :: dx => element_operation_tensorprod3d_dx_p13
464 procedure,
public :: dy => element_operation_tensorprod3d_dy_p13
465 procedure,
public :: dz => element_operation_tensorprod3d_dz_p13
466 procedure,
public :: lift => element_operation_tensorprod3d_lift_p13
467 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p13
468 procedure,
public :: div => element_operation_tensorprod3d_div_p13
469 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p13
470 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p13
471 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p13
472 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p13
474 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p13
475 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p13
476 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p13
477 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p13
480 real(rp) :: d1d(15,15)
481 real(rp) :: d1d_tr(15,15)
482 real(rp) :: lift_mat(15,15,15,6)
483 real(rp) :: intrpmat_vpordm1_tr(15,15)
485 real(rp) :: mfilter_h1d(15,15)
486 real(rp) :: mfilter_h1d_tr(15,15)
487 real(rp) :: mfilter_v1d_tr(15,15)
489 real(rp) :: mfilter_tracer_h1d(15,15)
490 real(rp) :: mfilter_tracer_h1d_tr(15,15)
491 real(rp) :: mfilter_tracer_v1d_tr(15,15)
493 procedure,
public :: init => element_operation_tensorprod3d_init_p14
494 procedure,
public :: final => element_operation_tensorprod3d_final_p14
495 procedure,
public :: dx => element_operation_tensorprod3d_dx_p14
496 procedure,
public :: dy => element_operation_tensorprod3d_dy_p14
497 procedure,
public :: dz => element_operation_tensorprod3d_dz_p14
498 procedure,
public :: lift => element_operation_tensorprod3d_lift_p14
499 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p14
500 procedure,
public :: div => element_operation_tensorprod3d_div_p14
501 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p14
502 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p14
503 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p14
504 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p14
506 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p14
507 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p14
508 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p14
509 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p14
512 real(rp) :: d1d(16,16)
513 real(rp) :: d1d_tr(16,16)
514 real(rp) :: lift_mat(16,16,16,6)
515 real(rp) :: intrpmat_vpordm1_tr(16,16)
517 real(rp) :: mfilter_h1d(16,16)
518 real(rp) :: mfilter_h1d_tr(16,16)
519 real(rp) :: mfilter_v1d_tr(16,16)
521 real(rp) :: mfilter_tracer_h1d(16,16)
522 real(rp) :: mfilter_tracer_h1d_tr(16,16)
523 real(rp) :: mfilter_tracer_v1d_tr(16,16)
525 procedure,
public :: init => element_operation_tensorprod3d_init_p15
526 procedure,
public :: final => element_operation_tensorprod3d_final_p15
527 procedure,
public :: dx => element_operation_tensorprod3d_dx_p15
528 procedure,
public :: dy => element_operation_tensorprod3d_dy_p15
529 procedure,
public :: dz => element_operation_tensorprod3d_dz_p15
530 procedure,
public :: lift => element_operation_tensorprod3d_lift_p15
531 procedure,
public :: dxdydzlift => element_operation_tensorprod3d_dxdydzlift_p15
532 procedure,
public :: div => element_operation_tensorprod3d_div_p15
533 procedure,
public :: div_var5 => element_operation_tensorprod3d_div_var5_p15
534 procedure,
public :: div_var5_2 => element_operation_tensorprod3d_div_var5_2_p15
535 procedure,
public :: lift_var5 => element_operation_tensorprod3d_lift_var5_p15
536 procedure,
public :: vfilterpm1 => element_operation_tensorprod3d_vfilterpm1_p15
538 procedure,
public :: setup_modalfilter => element_operation_tensorprod3d_setup_modalfilter_p15
539 procedure,
public :: setup_modalfilter_tracer => element_operation_tensorprod3d_setup_modalfilter_tracer_p15
540 procedure,
public :: modalfilter_tracer => element_operation_tensorprod3d_modalfilter_tracer_p15
541 procedure,
public :: modalfilter_var5 => element_operation_tensorprod3d_modalfilter_var5_p15
547 use scale_prc,
only: prc_abort
553 if ( elem3d%PolyOrder_h /= elem3d%PolyOrder_v )
then
554 log_info(
'ElemenetOperationTensorprod3D_create',*)
'PolyOrder_h and PolyOrder_v should be same in this module. ElemenetOperationGeneral should be used!'
558 select case( elem3d%PolyOrder_h )
590 log_info(
'ElemenetOperationTensorprod3D_create',*)
'The specified polynomial order execceds 15 and is not supported in this module. ElemenetOperationGeneral should be used!'
593 call obj%Init( elem3d )
604 subroutine element_operation_tensorprod3d_init_p1( this, elem3D )
610 this%elem3D => elem3d
612 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
615 end subroutine element_operation_tensorprod3d_init_p1
620 subroutine element_operation_tensorprod3d_setup_modalfilter_p1( this, &
621 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
622 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
627 real(rp),
intent(in) :: mf_etac_h
628 real(rp),
intent(in) :: mf_alpha_h
629 integer,
intent(in) :: mf_order_h
630 real(rp),
intent(in) :: mf_etac_v
631 real(rp),
intent(in) :: mf_alpha_v
632 integer,
intent(in) :: mf_order_v
635 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
636 mf_etac_h, mf_alpha_h, mf_order_h, &
637 mf_etac_v, mf_alpha_v, mf_order_v, &
638 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
641 end subroutine element_operation_tensorprod3d_setup_modalfilter_p1
646 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p1( this, &
647 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
648 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
653 real(rp),
intent(in) :: mf_etac_h
654 real(rp),
intent(in) :: mf_alpha_h
655 integer,
intent(in) :: mf_order_h
656 real(rp),
intent(in) :: mf_etac_v
657 real(rp),
intent(in) :: mf_alpha_v
658 integer,
intent(in) :: mf_order_v
661 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
662 mf_etac_h, mf_alpha_h, mf_order_h, &
663 mf_etac_v, mf_alpha_v, mf_order_v, &
664 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
667 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p1
672 subroutine element_operation_tensorprod3d_final_p1( this )
676 nullify( this%elem3D )
678 end subroutine element_operation_tensorprod3d_final_p1
683 subroutine element_operation_tensorprod3d_dx_p1( this, vec_in, vec_out )
687 real(rp),
intent(in) :: vec_in(this%elem3d%np)
688 real(rp),
intent(out) :: vec_out(this%elem3d%np)
692 end subroutine element_operation_tensorprod3d_dx_p1
697 subroutine element_operation_tensorprod3d_dy_p1( this, vec_in, vec_out )
701 real(rp),
intent(in) :: vec_in(this%elem3d%np)
702 real(rp),
intent(out) :: vec_out(this%elem3d%np)
706 end subroutine element_operation_tensorprod3d_dy_p1
711 subroutine element_operation_tensorprod3d_dz_p1( this, vec_in, vec_out )
715 real(rp),
intent(in) :: vec_in(this%elem3d%np)
716 real(rp),
intent(out) :: vec_out(this%elem3d%np)
720 end subroutine element_operation_tensorprod3d_dz_p1
725 subroutine element_operation_tensorprod3d_lift_p1( this, vec_in, vec_out )
729 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
730 real(rp),
intent(out) :: vec_out(this%elem3d%np)
734 end subroutine element_operation_tensorprod3d_lift_p1
739 subroutine element_operation_tensorprod3d_dxdydzlift_p1( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
745 real(rp),
intent(in) :: vec_in(this%elem3d%np)
746 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
747 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
748 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
749 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
750 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
753 vec_out_dx, vec_out_dy, vec_out_dz )
758 end subroutine element_operation_tensorprod3d_dxdydzlift_p1
767 subroutine element_operation_tensorprod3d_div_p1( this, vec_in, vec_in_lift, &
774 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
775 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
776 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
783 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
785 end subroutine element_operation_tensorprod3d_div_p1
790 subroutine element_operation_tensorprod3d_div_var5_p1( this, vec_in, vec_in_lift, &
797 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
798 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
799 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
809 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), &
810 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
813 end subroutine element_operation_tensorprod3d_div_var5_p1
818 subroutine element_operation_tensorprod3d_div_var5_2_p1( this, vec_in, &
824 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
825 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
831 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), &
832 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
835 end subroutine element_operation_tensorprod3d_div_var5_2_p1
840 subroutine element_operation_tensorprod3d_lift_var5_p1( this, vec_in, vec_out )
844 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
845 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
853 end subroutine element_operation_tensorprod3d_lift_var5_p1
858 subroutine element_operation_tensorprod3d_vfilterpm1_p1( this, vec_in, vec_out )
862 real(rp),
intent(in) :: vec_in(this%elem3d%np)
863 real(rp),
intent(out) :: vec_out(this%elem3d%np)
869 end subroutine element_operation_tensorprod3d_vfilterpm1_p1
874 subroutine element_operation_tensorprod3d_modalfilter_tracer_p1( this, vec_in, vec_work, vec_out )
880 real(rp),
intent(in) :: vec_in(this%elem3d%np)
881 real(rp),
intent(out) :: vec_work(this%elem3d%np)
882 real(rp),
intent(out) :: vec_out(this%elem3d%np)
889 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p1
894 subroutine element_operation_tensorprod3d_modalfilter_var5_p1( this, vec_in, vec_work, vec_out )
900 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
901 real(rp),
intent(out) :: vec_work(this%elem3d%np)
902 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
912 end subroutine element_operation_tensorprod3d_modalfilter_var5_p1
920 subroutine element_operation_tensorprod3d_init_p2( this, elem3D )
926 this%elem3D => elem3d
928 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
931 end subroutine element_operation_tensorprod3d_init_p2
936 subroutine element_operation_tensorprod3d_setup_modalfilter_p2( this, &
937 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
938 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
943 real(rp),
intent(in) :: mf_etac_h
944 real(rp),
intent(in) :: mf_alpha_h
945 integer,
intent(in) :: mf_order_h
946 real(rp),
intent(in) :: mf_etac_v
947 real(rp),
intent(in) :: mf_alpha_v
948 integer,
intent(in) :: mf_order_v
951 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
952 mf_etac_h, mf_alpha_h, mf_order_h, &
953 mf_etac_v, mf_alpha_v, mf_order_v, &
954 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
957 end subroutine element_operation_tensorprod3d_setup_modalfilter_p2
962 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p2( this, &
963 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
964 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
969 real(rp),
intent(in) :: mf_etac_h
970 real(rp),
intent(in) :: mf_alpha_h
971 integer,
intent(in) :: mf_order_h
972 real(rp),
intent(in) :: mf_etac_v
973 real(rp),
intent(in) :: mf_alpha_v
974 integer,
intent(in) :: mf_order_v
977 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
978 mf_etac_h, mf_alpha_h, mf_order_h, &
979 mf_etac_v, mf_alpha_v, mf_order_v, &
980 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
983 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p2
988 subroutine element_operation_tensorprod3d_final_p2( this )
992 nullify( this%elem3D )
994 end subroutine element_operation_tensorprod3d_final_p2
999 subroutine element_operation_tensorprod3d_dx_p2( this, vec_in, vec_out )
1003 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1004 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1008 end subroutine element_operation_tensorprod3d_dx_p2
1013 subroutine element_operation_tensorprod3d_dy_p2( this, vec_in, vec_out )
1017 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1018 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1022 end subroutine element_operation_tensorprod3d_dy_p2
1027 subroutine element_operation_tensorprod3d_dz_p2( this, vec_in, vec_out )
1031 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1032 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1036 end subroutine element_operation_tensorprod3d_dz_p2
1041 subroutine element_operation_tensorprod3d_lift_p2( this, vec_in, vec_out )
1045 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1046 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1050 end subroutine element_operation_tensorprod3d_lift_p2
1055 subroutine element_operation_tensorprod3d_dxdydzlift_p2( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1061 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1062 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1063 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1064 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1065 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1066 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1069 vec_out_dx, vec_out_dy, vec_out_dz )
1074 end subroutine element_operation_tensorprod3d_dxdydzlift_p2
1083 subroutine element_operation_tensorprod3d_div_p2( this, vec_in, vec_in_lift, &
1090 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
1091 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1092 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
1099 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
1101 end subroutine element_operation_tensorprod3d_div_p2
1106 subroutine element_operation_tensorprod3d_div_var5_p2( this, vec_in, vec_in_lift, &
1113 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1114 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1115 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1125 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), &
1126 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1129 end subroutine element_operation_tensorprod3d_div_var5_p2
1134 subroutine element_operation_tensorprod3d_div_var5_2_p2( this, vec_in, &
1140 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1141 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
1147 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), &
1148 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1151 end subroutine element_operation_tensorprod3d_div_var5_2_p2
1156 subroutine element_operation_tensorprod3d_lift_var5_p2( this, vec_in, vec_out )
1160 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
1161 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1169 end subroutine element_operation_tensorprod3d_lift_var5_p2
1174 subroutine element_operation_tensorprod3d_vfilterpm1_p2( this, vec_in, vec_out )
1178 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1179 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1185 end subroutine element_operation_tensorprod3d_vfilterpm1_p2
1190 subroutine element_operation_tensorprod3d_modalfilter_tracer_p2( this, vec_in, vec_work, vec_out )
1196 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1197 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1198 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1205 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p2
1210 subroutine element_operation_tensorprod3d_modalfilter_var5_p2( this, vec_in, vec_work, vec_out )
1216 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1217 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1218 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1228 end subroutine element_operation_tensorprod3d_modalfilter_var5_p2
1236 subroutine element_operation_tensorprod3d_init_p3( this, elem3D )
1242 this%elem3D => elem3d
1244 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
1247 end subroutine element_operation_tensorprod3d_init_p3
1252 subroutine element_operation_tensorprod3d_setup_modalfilter_p3( this, &
1253 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1254 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1259 real(rp),
intent(in) :: mf_etac_h
1260 real(rp),
intent(in) :: mf_alpha_h
1261 integer,
intent(in) :: mf_order_h
1262 real(rp),
intent(in) :: mf_etac_v
1263 real(rp),
intent(in) :: mf_alpha_v
1264 integer,
intent(in) :: mf_order_v
1267 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1268 mf_etac_h, mf_alpha_h, mf_order_h, &
1269 mf_etac_v, mf_alpha_v, mf_order_v, &
1270 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1273 end subroutine element_operation_tensorprod3d_setup_modalfilter_p3
1278 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p3( this, &
1279 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1280 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1285 real(rp),
intent(in) :: mf_etac_h
1286 real(rp),
intent(in) :: mf_alpha_h
1287 integer,
intent(in) :: mf_order_h
1288 real(rp),
intent(in) :: mf_etac_v
1289 real(rp),
intent(in) :: mf_alpha_v
1290 integer,
intent(in) :: mf_order_v
1293 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1294 mf_etac_h, mf_alpha_h, mf_order_h, &
1295 mf_etac_v, mf_alpha_v, mf_order_v, &
1296 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1299 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p3
1304 subroutine element_operation_tensorprod3d_final_p3( this )
1308 nullify( this%elem3D )
1310 end subroutine element_operation_tensorprod3d_final_p3
1315 subroutine element_operation_tensorprod3d_dx_p3( this, vec_in, vec_out )
1319 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1320 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1324 end subroutine element_operation_tensorprod3d_dx_p3
1329 subroutine element_operation_tensorprod3d_dy_p3( this, vec_in, vec_out )
1333 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1334 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1338 end subroutine element_operation_tensorprod3d_dy_p3
1343 subroutine element_operation_tensorprod3d_dz_p3( this, vec_in, vec_out )
1347 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1348 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1352 end subroutine element_operation_tensorprod3d_dz_p3
1357 subroutine element_operation_tensorprod3d_lift_p3( this, vec_in, vec_out )
1361 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1362 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1366 end subroutine element_operation_tensorprod3d_lift_p3
1371 subroutine element_operation_tensorprod3d_dxdydzlift_p3( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1377 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1378 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1379 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1380 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1381 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1382 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1385 vec_out_dx, vec_out_dy, vec_out_dz )
1390 end subroutine element_operation_tensorprod3d_dxdydzlift_p3
1399 subroutine element_operation_tensorprod3d_div_p3( this, vec_in, vec_in_lift, &
1406 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
1407 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1408 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
1415 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
1417 end subroutine element_operation_tensorprod3d_div_p3
1422 subroutine element_operation_tensorprod3d_div_var5_p3( this, vec_in, vec_in_lift, &
1429 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1430 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1431 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1441 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), &
1442 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1445 end subroutine element_operation_tensorprod3d_div_var5_p3
1450 subroutine element_operation_tensorprod3d_div_var5_2_p3( this, vec_in, &
1456 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1457 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
1463 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), &
1464 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1467 end subroutine element_operation_tensorprod3d_div_var5_2_p3
1472 subroutine element_operation_tensorprod3d_lift_var5_p3( this, vec_in, vec_out )
1476 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
1477 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1485 end subroutine element_operation_tensorprod3d_lift_var5_p3
1490 subroutine element_operation_tensorprod3d_vfilterpm1_p3( this, vec_in, vec_out )
1494 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1495 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1501 end subroutine element_operation_tensorprod3d_vfilterpm1_p3
1506 subroutine element_operation_tensorprod3d_modalfilter_tracer_p3( this, vec_in, vec_work, vec_out )
1512 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1513 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1514 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1521 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p3
1526 subroutine element_operation_tensorprod3d_modalfilter_var5_p3( this, vec_in, vec_work, vec_out )
1532 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1533 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1534 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1544 end subroutine element_operation_tensorprod3d_modalfilter_var5_p3
1552 subroutine element_operation_tensorprod3d_init_p4( this, elem3D )
1558 this%elem3D => elem3d
1560 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
1563 end subroutine element_operation_tensorprod3d_init_p4
1568 subroutine element_operation_tensorprod3d_setup_modalfilter_p4( this, &
1569 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1570 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1575 real(rp),
intent(in) :: mf_etac_h
1576 real(rp),
intent(in) :: mf_alpha_h
1577 integer,
intent(in) :: mf_order_h
1578 real(rp),
intent(in) :: mf_etac_v
1579 real(rp),
intent(in) :: mf_alpha_v
1580 integer,
intent(in) :: mf_order_v
1583 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1584 mf_etac_h, mf_alpha_h, mf_order_h, &
1585 mf_etac_v, mf_alpha_v, mf_order_v, &
1586 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1589 end subroutine element_operation_tensorprod3d_setup_modalfilter_p4
1594 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p4( this, &
1595 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1596 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1601 real(rp),
intent(in) :: mf_etac_h
1602 real(rp),
intent(in) :: mf_alpha_h
1603 integer,
intent(in) :: mf_order_h
1604 real(rp),
intent(in) :: mf_etac_v
1605 real(rp),
intent(in) :: mf_alpha_v
1606 integer,
intent(in) :: mf_order_v
1609 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1610 mf_etac_h, mf_alpha_h, mf_order_h, &
1611 mf_etac_v, mf_alpha_v, mf_order_v, &
1612 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1615 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p4
1620 subroutine element_operation_tensorprod3d_final_p4( this )
1624 nullify( this%elem3D )
1626 end subroutine element_operation_tensorprod3d_final_p4
1631 subroutine element_operation_tensorprod3d_dx_p4( this, vec_in, vec_out )
1635 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1636 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1640 end subroutine element_operation_tensorprod3d_dx_p4
1645 subroutine element_operation_tensorprod3d_dy_p4( this, vec_in, vec_out )
1649 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1650 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1654 end subroutine element_operation_tensorprod3d_dy_p4
1659 subroutine element_operation_tensorprod3d_dz_p4( this, vec_in, vec_out )
1663 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1664 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1668 end subroutine element_operation_tensorprod3d_dz_p4
1673 subroutine element_operation_tensorprod3d_lift_p4( this, vec_in, vec_out )
1677 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1678 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1682 end subroutine element_operation_tensorprod3d_lift_p4
1687 subroutine element_operation_tensorprod3d_dxdydzlift_p4( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
1693 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1694 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1695 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
1696 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
1697 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
1698 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
1701 vec_out_dx, vec_out_dy, vec_out_dz )
1706 end subroutine element_operation_tensorprod3d_dxdydzlift_p4
1715 subroutine element_operation_tensorprod3d_div_p4( this, vec_in, vec_in_lift, &
1722 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
1723 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
1724 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
1731 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
1733 end subroutine element_operation_tensorprod3d_div_p4
1738 subroutine element_operation_tensorprod3d_div_var5_p4( this, vec_in, vec_in_lift, &
1745 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1746 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
1747 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
1757 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), &
1758 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1761 end subroutine element_operation_tensorprod3d_div_var5_p4
1766 subroutine element_operation_tensorprod3d_div_var5_2_p4( this, vec_in, &
1772 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
1773 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
1779 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), &
1780 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
1783 end subroutine element_operation_tensorprod3d_div_var5_2_p4
1788 subroutine element_operation_tensorprod3d_lift_var5_p4( this, vec_in, vec_out )
1792 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
1793 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1801 end subroutine element_operation_tensorprod3d_lift_var5_p4
1806 subroutine element_operation_tensorprod3d_vfilterpm1_p4( this, vec_in, vec_out )
1810 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1811 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1817 end subroutine element_operation_tensorprod3d_vfilterpm1_p4
1822 subroutine element_operation_tensorprod3d_modalfilter_tracer_p4( this, vec_in, vec_work, vec_out )
1828 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1829 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1830 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1837 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p4
1842 subroutine element_operation_tensorprod3d_modalfilter_var5_p4( this, vec_in, vec_work, vec_out )
1848 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
1849 real(rp),
intent(out) :: vec_work(this%elem3d%np)
1850 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
1860 end subroutine element_operation_tensorprod3d_modalfilter_var5_p4
1868 subroutine element_operation_tensorprod3d_init_p5( this, elem3D )
1874 this%elem3D => elem3d
1876 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
1879 end subroutine element_operation_tensorprod3d_init_p5
1884 subroutine element_operation_tensorprod3d_setup_modalfilter_p5( this, &
1885 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1886 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1891 real(rp),
intent(in) :: mf_etac_h
1892 real(rp),
intent(in) :: mf_alpha_h
1893 integer,
intent(in) :: mf_order_h
1894 real(rp),
intent(in) :: mf_etac_v
1895 real(rp),
intent(in) :: mf_alpha_v
1896 integer,
intent(in) :: mf_order_v
1899 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
1900 mf_etac_h, mf_alpha_h, mf_order_h, &
1901 mf_etac_v, mf_alpha_v, mf_order_v, &
1902 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1905 end subroutine element_operation_tensorprod3d_setup_modalfilter_p5
1910 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p5( this, &
1911 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
1912 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
1917 real(rp),
intent(in) :: mf_etac_h
1918 real(rp),
intent(in) :: mf_alpha_h
1919 integer,
intent(in) :: mf_order_h
1920 real(rp),
intent(in) :: mf_etac_v
1921 real(rp),
intent(in) :: mf_alpha_v
1922 integer,
intent(in) :: mf_order_v
1925 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
1926 mf_etac_h, mf_alpha_h, mf_order_h, &
1927 mf_etac_v, mf_alpha_v, mf_order_v, &
1928 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
1931 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p5
1936 subroutine element_operation_tensorprod3d_final_p5( this )
1940 nullify( this%elem3D )
1942 end subroutine element_operation_tensorprod3d_final_p5
1947 subroutine element_operation_tensorprod3d_dx_p5( this, vec_in, vec_out )
1951 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1952 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1956 end subroutine element_operation_tensorprod3d_dx_p5
1961 subroutine element_operation_tensorprod3d_dy_p5( this, vec_in, vec_out )
1965 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1966 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1970 end subroutine element_operation_tensorprod3d_dy_p5
1975 subroutine element_operation_tensorprod3d_dz_p5( this, vec_in, vec_out )
1979 real(rp),
intent(in) :: vec_in(this%elem3d%np)
1980 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1984 end subroutine element_operation_tensorprod3d_dz_p5
1989 subroutine element_operation_tensorprod3d_lift_p5( this, vec_in, vec_out )
1993 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
1994 real(rp),
intent(out) :: vec_out(this%elem3d%np)
1998 end subroutine element_operation_tensorprod3d_lift_p5
2003 subroutine element_operation_tensorprod3d_dxdydzlift_p5( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2009 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2010 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2011 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2012 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2013 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2014 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2017 vec_out_dx, vec_out_dy, vec_out_dz )
2022 end subroutine element_operation_tensorprod3d_dxdydzlift_p5
2031 subroutine element_operation_tensorprod3d_div_p5( this, vec_in, vec_in_lift, &
2038 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
2039 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2040 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
2047 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
2049 end subroutine element_operation_tensorprod3d_div_p5
2054 subroutine element_operation_tensorprod3d_div_var5_p5( this, vec_in, vec_in_lift, &
2061 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2062 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2063 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2073 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), &
2074 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2077 end subroutine element_operation_tensorprod3d_div_var5_p5
2082 subroutine element_operation_tensorprod3d_div_var5_2_p5( this, vec_in, &
2088 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2089 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
2095 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), &
2096 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2099 end subroutine element_operation_tensorprod3d_div_var5_2_p5
2104 subroutine element_operation_tensorprod3d_lift_var5_p5( this, vec_in, vec_out )
2108 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
2109 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2117 end subroutine element_operation_tensorprod3d_lift_var5_p5
2122 subroutine element_operation_tensorprod3d_vfilterpm1_p5( this, vec_in, vec_out )
2126 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2127 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2133 end subroutine element_operation_tensorprod3d_vfilterpm1_p5
2138 subroutine element_operation_tensorprod3d_modalfilter_tracer_p5( this, vec_in, vec_work, vec_out )
2144 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2145 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2146 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2153 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p5
2158 subroutine element_operation_tensorprod3d_modalfilter_var5_p5( this, vec_in, vec_work, vec_out )
2164 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2165 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2166 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2176 end subroutine element_operation_tensorprod3d_modalfilter_var5_p5
2184 subroutine element_operation_tensorprod3d_init_p6( this, elem3D )
2190 this%elem3D => elem3d
2192 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
2195 end subroutine element_operation_tensorprod3d_init_p6
2200 subroutine element_operation_tensorprod3d_setup_modalfilter_p6( this, &
2201 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2202 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2207 real(rp),
intent(in) :: mf_etac_h
2208 real(rp),
intent(in) :: mf_alpha_h
2209 integer,
intent(in) :: mf_order_h
2210 real(rp),
intent(in) :: mf_etac_v
2211 real(rp),
intent(in) :: mf_alpha_v
2212 integer,
intent(in) :: mf_order_v
2215 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2216 mf_etac_h, mf_alpha_h, mf_order_h, &
2217 mf_etac_v, mf_alpha_v, mf_order_v, &
2218 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2221 end subroutine element_operation_tensorprod3d_setup_modalfilter_p6
2226 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p6( this, &
2227 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2228 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2233 real(rp),
intent(in) :: mf_etac_h
2234 real(rp),
intent(in) :: mf_alpha_h
2235 integer,
intent(in) :: mf_order_h
2236 real(rp),
intent(in) :: mf_etac_v
2237 real(rp),
intent(in) :: mf_alpha_v
2238 integer,
intent(in) :: mf_order_v
2241 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2242 mf_etac_h, mf_alpha_h, mf_order_h, &
2243 mf_etac_v, mf_alpha_v, mf_order_v, &
2244 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2247 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p6
2252 subroutine element_operation_tensorprod3d_final_p6( this )
2256 nullify( this%elem3D )
2258 end subroutine element_operation_tensorprod3d_final_p6
2263 subroutine element_operation_tensorprod3d_dx_p6( this, vec_in, vec_out )
2267 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2268 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2272 end subroutine element_operation_tensorprod3d_dx_p6
2277 subroutine element_operation_tensorprod3d_dy_p6( this, vec_in, vec_out )
2281 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2282 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2286 end subroutine element_operation_tensorprod3d_dy_p6
2291 subroutine element_operation_tensorprod3d_dz_p6( this, vec_in, vec_out )
2295 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2296 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2300 end subroutine element_operation_tensorprod3d_dz_p6
2305 subroutine element_operation_tensorprod3d_lift_p6( this, vec_in, vec_out )
2309 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2310 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2314 end subroutine element_operation_tensorprod3d_lift_p6
2319 subroutine element_operation_tensorprod3d_dxdydzlift_p6( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2325 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2326 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2327 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2328 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2329 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2330 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2333 vec_out_dx, vec_out_dy, vec_out_dz )
2338 end subroutine element_operation_tensorprod3d_dxdydzlift_p6
2347 subroutine element_operation_tensorprod3d_div_p6( this, vec_in, vec_in_lift, &
2354 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
2355 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2356 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
2363 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
2365 end subroutine element_operation_tensorprod3d_div_p6
2370 subroutine element_operation_tensorprod3d_div_var5_p6( this, vec_in, vec_in_lift, &
2377 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2378 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2379 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2389 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), &
2390 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2393 end subroutine element_operation_tensorprod3d_div_var5_p6
2398 subroutine element_operation_tensorprod3d_div_var5_2_p6( this, vec_in, &
2404 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2405 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
2411 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), &
2412 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2415 end subroutine element_operation_tensorprod3d_div_var5_2_p6
2420 subroutine element_operation_tensorprod3d_lift_var5_p6( this, vec_in, vec_out )
2424 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
2425 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2433 end subroutine element_operation_tensorprod3d_lift_var5_p6
2438 subroutine element_operation_tensorprod3d_vfilterpm1_p6( this, vec_in, vec_out )
2442 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2443 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2449 end subroutine element_operation_tensorprod3d_vfilterpm1_p6
2454 subroutine element_operation_tensorprod3d_modalfilter_tracer_p6( this, vec_in, vec_work, vec_out )
2460 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2461 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2462 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2469 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p6
2474 subroutine element_operation_tensorprod3d_modalfilter_var5_p6( this, vec_in, vec_work, vec_out )
2480 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2481 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2482 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2492 end subroutine element_operation_tensorprod3d_modalfilter_var5_p6
2500 subroutine element_operation_tensorprod3d_init_p7( this, elem3D )
2506 this%elem3D => elem3d
2508 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
2511 end subroutine element_operation_tensorprod3d_init_p7
2516 subroutine element_operation_tensorprod3d_setup_modalfilter_p7( this, &
2517 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2518 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2523 real(rp),
intent(in) :: mf_etac_h
2524 real(rp),
intent(in) :: mf_alpha_h
2525 integer,
intent(in) :: mf_order_h
2526 real(rp),
intent(in) :: mf_etac_v
2527 real(rp),
intent(in) :: mf_alpha_v
2528 integer,
intent(in) :: mf_order_v
2531 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2532 mf_etac_h, mf_alpha_h, mf_order_h, &
2533 mf_etac_v, mf_alpha_v, mf_order_v, &
2534 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2537 end subroutine element_operation_tensorprod3d_setup_modalfilter_p7
2542 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p7( this, &
2543 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2544 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2549 real(rp),
intent(in) :: mf_etac_h
2550 real(rp),
intent(in) :: mf_alpha_h
2551 integer,
intent(in) :: mf_order_h
2552 real(rp),
intent(in) :: mf_etac_v
2553 real(rp),
intent(in) :: mf_alpha_v
2554 integer,
intent(in) :: mf_order_v
2557 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2558 mf_etac_h, mf_alpha_h, mf_order_h, &
2559 mf_etac_v, mf_alpha_v, mf_order_v, &
2560 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2563 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p7
2568 subroutine element_operation_tensorprod3d_final_p7( this )
2572 nullify( this%elem3D )
2574 end subroutine element_operation_tensorprod3d_final_p7
2579 subroutine element_operation_tensorprod3d_dx_p7( this, vec_in, vec_out )
2583 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2584 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2588 end subroutine element_operation_tensorprod3d_dx_p7
2593 subroutine element_operation_tensorprod3d_dy_p7( this, vec_in, vec_out )
2597 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2598 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2602 end subroutine element_operation_tensorprod3d_dy_p7
2607 subroutine element_operation_tensorprod3d_dz_p7( this, vec_in, vec_out )
2611 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2612 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2616 end subroutine element_operation_tensorprod3d_dz_p7
2621 subroutine element_operation_tensorprod3d_lift_p7( this, vec_in, vec_out )
2625 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2626 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2630 end subroutine element_operation_tensorprod3d_lift_p7
2635 subroutine element_operation_tensorprod3d_dxdydzlift_p7( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2641 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2642 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2643 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2644 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2645 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2646 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2649 vec_out_dx, vec_out_dy, vec_out_dz )
2654 end subroutine element_operation_tensorprod3d_dxdydzlift_p7
2663 subroutine element_operation_tensorprod3d_div_p7( this, vec_in, vec_in_lift, &
2670 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
2671 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2672 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
2679 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
2681 end subroutine element_operation_tensorprod3d_div_p7
2686 subroutine element_operation_tensorprod3d_div_var5_p7( this, vec_in, vec_in_lift, &
2693 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2694 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
2695 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
2705 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), &
2706 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2709 end subroutine element_operation_tensorprod3d_div_var5_p7
2714 subroutine element_operation_tensorprod3d_div_var5_2_p7( this, vec_in, &
2720 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
2721 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
2727 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), &
2728 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
2731 end subroutine element_operation_tensorprod3d_div_var5_2_p7
2736 subroutine element_operation_tensorprod3d_lift_var5_p7( this, vec_in, vec_out )
2740 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
2741 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2749 end subroutine element_operation_tensorprod3d_lift_var5_p7
2754 subroutine element_operation_tensorprod3d_vfilterpm1_p7( this, vec_in, vec_out )
2758 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2759 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2765 end subroutine element_operation_tensorprod3d_vfilterpm1_p7
2770 subroutine element_operation_tensorprod3d_modalfilter_tracer_p7( this, vec_in, vec_work, vec_out )
2776 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2777 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2778 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2785 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p7
2790 subroutine element_operation_tensorprod3d_modalfilter_var5_p7( this, vec_in, vec_work, vec_out )
2796 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
2797 real(rp),
intent(out) :: vec_work(this%elem3d%np)
2798 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
2808 end subroutine element_operation_tensorprod3d_modalfilter_var5_p7
2816 subroutine element_operation_tensorprod3d_init_p8( this, elem3D )
2822 this%elem3D => elem3d
2824 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
2827 end subroutine element_operation_tensorprod3d_init_p8
2832 subroutine element_operation_tensorprod3d_setup_modalfilter_p8( this, &
2833 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2834 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2839 real(rp),
intent(in) :: mf_etac_h
2840 real(rp),
intent(in) :: mf_alpha_h
2841 integer,
intent(in) :: mf_order_h
2842 real(rp),
intent(in) :: mf_etac_v
2843 real(rp),
intent(in) :: mf_alpha_v
2844 integer,
intent(in) :: mf_order_v
2847 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
2848 mf_etac_h, mf_alpha_h, mf_order_h, &
2849 mf_etac_v, mf_alpha_v, mf_order_v, &
2850 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2853 end subroutine element_operation_tensorprod3d_setup_modalfilter_p8
2858 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p8( this, &
2859 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
2860 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
2865 real(rp),
intent(in) :: mf_etac_h
2866 real(rp),
intent(in) :: mf_alpha_h
2867 integer,
intent(in) :: mf_order_h
2868 real(rp),
intent(in) :: mf_etac_v
2869 real(rp),
intent(in) :: mf_alpha_v
2870 integer,
intent(in) :: mf_order_v
2873 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
2874 mf_etac_h, mf_alpha_h, mf_order_h, &
2875 mf_etac_v, mf_alpha_v, mf_order_v, &
2876 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
2879 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p8
2884 subroutine element_operation_tensorprod3d_final_p8( this )
2888 nullify( this%elem3D )
2890 end subroutine element_operation_tensorprod3d_final_p8
2895 subroutine element_operation_tensorprod3d_dx_p8( this, vec_in, vec_out )
2899 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2900 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2904 end subroutine element_operation_tensorprod3d_dx_p8
2909 subroutine element_operation_tensorprod3d_dy_p8( this, vec_in, vec_out )
2913 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2914 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2918 end subroutine element_operation_tensorprod3d_dy_p8
2923 subroutine element_operation_tensorprod3d_dz_p8( this, vec_in, vec_out )
2927 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2928 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2932 end subroutine element_operation_tensorprod3d_dz_p8
2937 subroutine element_operation_tensorprod3d_lift_p8( this, vec_in, vec_out )
2941 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
2942 real(rp),
intent(out) :: vec_out(this%elem3d%np)
2946 end subroutine element_operation_tensorprod3d_lift_p8
2951 subroutine element_operation_tensorprod3d_dxdydzlift_p8( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
2957 real(rp),
intent(in) :: vec_in(this%elem3d%np)
2958 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2959 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
2960 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
2961 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
2962 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
2965 vec_out_dx, vec_out_dy, vec_out_dz )
2970 end subroutine element_operation_tensorprod3d_dxdydzlift_p8
2979 subroutine element_operation_tensorprod3d_div_p8( this, vec_in, vec_in_lift, &
2986 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
2987 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
2988 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
2995 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
2997 end subroutine element_operation_tensorprod3d_div_p8
3002 subroutine element_operation_tensorprod3d_div_var5_p8( this, vec_in, vec_in_lift, &
3009 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3010 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3011 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3021 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), &
3022 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3025 end subroutine element_operation_tensorprod3d_div_var5_p8
3030 subroutine element_operation_tensorprod3d_div_var5_2_p8( this, vec_in, &
3036 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3037 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
3043 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), &
3044 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3047 end subroutine element_operation_tensorprod3d_div_var5_2_p8
3052 subroutine element_operation_tensorprod3d_lift_var5_p8( this, vec_in, vec_out )
3056 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
3057 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3065 end subroutine element_operation_tensorprod3d_lift_var5_p8
3070 subroutine element_operation_tensorprod3d_vfilterpm1_p8( this, vec_in, vec_out )
3074 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3075 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3081 end subroutine element_operation_tensorprod3d_vfilterpm1_p8
3086 subroutine element_operation_tensorprod3d_modalfilter_tracer_p8( this, vec_in, vec_work, vec_out )
3092 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3093 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3094 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3101 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p8
3106 subroutine element_operation_tensorprod3d_modalfilter_var5_p8( this, vec_in, vec_work, vec_out )
3112 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3113 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3114 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3124 end subroutine element_operation_tensorprod3d_modalfilter_var5_p8
3132 subroutine element_operation_tensorprod3d_init_p9( this, elem3D )
3138 this%elem3D => elem3d
3140 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
3143 end subroutine element_operation_tensorprod3d_init_p9
3148 subroutine element_operation_tensorprod3d_setup_modalfilter_p9( this, &
3149 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3150 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3155 real(rp),
intent(in) :: mf_etac_h
3156 real(rp),
intent(in) :: mf_alpha_h
3157 integer,
intent(in) :: mf_order_h
3158 real(rp),
intent(in) :: mf_etac_v
3159 real(rp),
intent(in) :: mf_alpha_v
3160 integer,
intent(in) :: mf_order_v
3163 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3164 mf_etac_h, mf_alpha_h, mf_order_h, &
3165 mf_etac_v, mf_alpha_v, mf_order_v, &
3166 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3169 end subroutine element_operation_tensorprod3d_setup_modalfilter_p9
3174 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p9( this, &
3175 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3176 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3181 real(rp),
intent(in) :: mf_etac_h
3182 real(rp),
intent(in) :: mf_alpha_h
3183 integer,
intent(in) :: mf_order_h
3184 real(rp),
intent(in) :: mf_etac_v
3185 real(rp),
intent(in) :: mf_alpha_v
3186 integer,
intent(in) :: mf_order_v
3189 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3190 mf_etac_h, mf_alpha_h, mf_order_h, &
3191 mf_etac_v, mf_alpha_v, mf_order_v, &
3192 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3195 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p9
3200 subroutine element_operation_tensorprod3d_final_p9( this )
3204 nullify( this%elem3D )
3206 end subroutine element_operation_tensorprod3d_final_p9
3211 subroutine element_operation_tensorprod3d_dx_p9( this, vec_in, vec_out )
3215 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3216 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3220 end subroutine element_operation_tensorprod3d_dx_p9
3225 subroutine element_operation_tensorprod3d_dy_p9( this, vec_in, vec_out )
3229 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3230 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3234 end subroutine element_operation_tensorprod3d_dy_p9
3239 subroutine element_operation_tensorprod3d_dz_p9( this, vec_in, vec_out )
3243 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3244 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3248 end subroutine element_operation_tensorprod3d_dz_p9
3253 subroutine element_operation_tensorprod3d_lift_p9( this, vec_in, vec_out )
3257 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3258 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3262 end subroutine element_operation_tensorprod3d_lift_p9
3267 subroutine element_operation_tensorprod3d_dxdydzlift_p9( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3273 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3274 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3275 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3276 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3277 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3278 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3281 vec_out_dx, vec_out_dy, vec_out_dz )
3286 end subroutine element_operation_tensorprod3d_dxdydzlift_p9
3295 subroutine element_operation_tensorprod3d_div_p9( this, vec_in, vec_in_lift, &
3302 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
3303 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3304 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
3311 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
3313 end subroutine element_operation_tensorprod3d_div_p9
3318 subroutine element_operation_tensorprod3d_div_var5_p9( this, vec_in, vec_in_lift, &
3325 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3326 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3327 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3337 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), &
3338 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3341 end subroutine element_operation_tensorprod3d_div_var5_p9
3346 subroutine element_operation_tensorprod3d_div_var5_2_p9( this, vec_in, &
3352 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3353 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
3359 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), &
3360 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3363 end subroutine element_operation_tensorprod3d_div_var5_2_p9
3368 subroutine element_operation_tensorprod3d_lift_var5_p9( this, vec_in, vec_out )
3372 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
3373 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3381 end subroutine element_operation_tensorprod3d_lift_var5_p9
3386 subroutine element_operation_tensorprod3d_vfilterpm1_p9( this, vec_in, vec_out )
3390 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3391 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3397 end subroutine element_operation_tensorprod3d_vfilterpm1_p9
3402 subroutine element_operation_tensorprod3d_modalfilter_tracer_p9( this, vec_in, vec_work, vec_out )
3408 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3409 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3410 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3417 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p9
3422 subroutine element_operation_tensorprod3d_modalfilter_var5_p9( this, vec_in, vec_work, vec_out )
3428 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3429 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3430 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3440 end subroutine element_operation_tensorprod3d_modalfilter_var5_p9
3448 subroutine element_operation_tensorprod3d_init_p10( this, elem3D )
3454 this%elem3D => elem3d
3456 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
3459 end subroutine element_operation_tensorprod3d_init_p10
3464 subroutine element_operation_tensorprod3d_setup_modalfilter_p10( this, &
3465 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3466 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3471 real(rp),
intent(in) :: mf_etac_h
3472 real(rp),
intent(in) :: mf_alpha_h
3473 integer,
intent(in) :: mf_order_h
3474 real(rp),
intent(in) :: mf_etac_v
3475 real(rp),
intent(in) :: mf_alpha_v
3476 integer,
intent(in) :: mf_order_v
3479 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3480 mf_etac_h, mf_alpha_h, mf_order_h, &
3481 mf_etac_v, mf_alpha_v, mf_order_v, &
3482 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3485 end subroutine element_operation_tensorprod3d_setup_modalfilter_p10
3490 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p10( this, &
3491 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3492 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3497 real(rp),
intent(in) :: mf_etac_h
3498 real(rp),
intent(in) :: mf_alpha_h
3499 integer,
intent(in) :: mf_order_h
3500 real(rp),
intent(in) :: mf_etac_v
3501 real(rp),
intent(in) :: mf_alpha_v
3502 integer,
intent(in) :: mf_order_v
3505 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3506 mf_etac_h, mf_alpha_h, mf_order_h, &
3507 mf_etac_v, mf_alpha_v, mf_order_v, &
3508 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3511 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p10
3516 subroutine element_operation_tensorprod3d_final_p10( this )
3520 nullify( this%elem3D )
3522 end subroutine element_operation_tensorprod3d_final_p10
3527 subroutine element_operation_tensorprod3d_dx_p10( this, vec_in, vec_out )
3531 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3532 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3536 end subroutine element_operation_tensorprod3d_dx_p10
3541 subroutine element_operation_tensorprod3d_dy_p10( this, vec_in, vec_out )
3545 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3546 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3550 end subroutine element_operation_tensorprod3d_dy_p10
3555 subroutine element_operation_tensorprod3d_dz_p10( this, vec_in, vec_out )
3559 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3560 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3564 end subroutine element_operation_tensorprod3d_dz_p10
3569 subroutine element_operation_tensorprod3d_lift_p10( this, vec_in, vec_out )
3573 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3574 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3578 end subroutine element_operation_tensorprod3d_lift_p10
3583 subroutine element_operation_tensorprod3d_dxdydzlift_p10( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3589 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3590 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3591 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3592 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3593 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3594 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3597 vec_out_dx, vec_out_dy, vec_out_dz )
3602 end subroutine element_operation_tensorprod3d_dxdydzlift_p10
3611 subroutine element_operation_tensorprod3d_div_p10( this, vec_in, vec_in_lift, &
3618 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
3619 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3620 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
3627 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
3629 end subroutine element_operation_tensorprod3d_div_p10
3634 subroutine element_operation_tensorprod3d_div_var5_p10( this, vec_in, vec_in_lift, &
3641 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3642 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3643 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3653 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), &
3654 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3657 end subroutine element_operation_tensorprod3d_div_var5_p10
3662 subroutine element_operation_tensorprod3d_div_var5_2_p10( this, vec_in, &
3668 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3669 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
3675 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), &
3676 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3679 end subroutine element_operation_tensorprod3d_div_var5_2_p10
3684 subroutine element_operation_tensorprod3d_lift_var5_p10( this, vec_in, vec_out )
3688 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
3689 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3697 end subroutine element_operation_tensorprod3d_lift_var5_p10
3702 subroutine element_operation_tensorprod3d_vfilterpm1_p10( this, vec_in, vec_out )
3706 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3707 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3713 end subroutine element_operation_tensorprod3d_vfilterpm1_p10
3718 subroutine element_operation_tensorprod3d_modalfilter_tracer_p10( this, vec_in, vec_work, vec_out )
3724 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3725 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3726 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3733 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p10
3738 subroutine element_operation_tensorprod3d_modalfilter_var5_p10( this, vec_in, vec_work, vec_out )
3744 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
3745 real(rp),
intent(out) :: vec_work(this%elem3d%np)
3746 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
3756 end subroutine element_operation_tensorprod3d_modalfilter_var5_p10
3764 subroutine element_operation_tensorprod3d_init_p11( this, elem3D )
3770 this%elem3D => elem3d
3772 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
3775 end subroutine element_operation_tensorprod3d_init_p11
3780 subroutine element_operation_tensorprod3d_setup_modalfilter_p11( this, &
3781 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3782 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3787 real(rp),
intent(in) :: mf_etac_h
3788 real(rp),
intent(in) :: mf_alpha_h
3789 integer,
intent(in) :: mf_order_h
3790 real(rp),
intent(in) :: mf_etac_v
3791 real(rp),
intent(in) :: mf_alpha_v
3792 integer,
intent(in) :: mf_order_v
3795 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
3796 mf_etac_h, mf_alpha_h, mf_order_h, &
3797 mf_etac_v, mf_alpha_v, mf_order_v, &
3798 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3801 end subroutine element_operation_tensorprod3d_setup_modalfilter_p11
3806 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p11( this, &
3807 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
3808 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
3813 real(rp),
intent(in) :: mf_etac_h
3814 real(rp),
intent(in) :: mf_alpha_h
3815 integer,
intent(in) :: mf_order_h
3816 real(rp),
intent(in) :: mf_etac_v
3817 real(rp),
intent(in) :: mf_alpha_v
3818 integer,
intent(in) :: mf_order_v
3821 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
3822 mf_etac_h, mf_alpha_h, mf_order_h, &
3823 mf_etac_v, mf_alpha_v, mf_order_v, &
3824 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
3827 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p11
3832 subroutine element_operation_tensorprod3d_final_p11( this )
3836 nullify( this%elem3D )
3838 end subroutine element_operation_tensorprod3d_final_p11
3843 subroutine element_operation_tensorprod3d_dx_p11( this, vec_in, vec_out )
3847 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3848 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3852 end subroutine element_operation_tensorprod3d_dx_p11
3857 subroutine element_operation_tensorprod3d_dy_p11( this, vec_in, vec_out )
3861 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3862 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3866 end subroutine element_operation_tensorprod3d_dy_p11
3871 subroutine element_operation_tensorprod3d_dz_p11( this, vec_in, vec_out )
3875 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3876 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3880 end subroutine element_operation_tensorprod3d_dz_p11
3885 subroutine element_operation_tensorprod3d_lift_p11( this, vec_in, vec_out )
3889 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
3890 real(rp),
intent(out) :: vec_out(this%elem3d%np)
3894 end subroutine element_operation_tensorprod3d_lift_p11
3899 subroutine element_operation_tensorprod3d_dxdydzlift_p11( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
3905 real(rp),
intent(in) :: vec_in(this%elem3d%np)
3906 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3907 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
3908 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
3909 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
3910 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
3913 vec_out_dx, vec_out_dy, vec_out_dz )
3918 end subroutine element_operation_tensorprod3d_dxdydzlift_p11
3927 subroutine element_operation_tensorprod3d_div_p11( this, vec_in, vec_in_lift, &
3934 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
3935 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
3936 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
3943 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
3945 end subroutine element_operation_tensorprod3d_div_p11
3950 subroutine element_operation_tensorprod3d_div_var5_p11( this, vec_in, vec_in_lift, &
3957 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3958 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
3959 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
3969 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), &
3970 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3973 end subroutine element_operation_tensorprod3d_div_var5_p11
3978 subroutine element_operation_tensorprod3d_div_var5_2_p11( this, vec_in, &
3984 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
3985 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
3991 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), &
3992 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
3995 end subroutine element_operation_tensorprod3d_div_var5_2_p11
4000 subroutine element_operation_tensorprod3d_lift_var5_p11( this, vec_in, vec_out )
4004 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
4005 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4013 end subroutine element_operation_tensorprod3d_lift_var5_p11
4018 subroutine element_operation_tensorprod3d_vfilterpm1_p11( this, vec_in, vec_out )
4022 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4023 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4029 end subroutine element_operation_tensorprod3d_vfilterpm1_p11
4034 subroutine element_operation_tensorprod3d_modalfilter_tracer_p11( this, vec_in, vec_work, vec_out )
4040 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4041 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4042 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4049 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p11
4054 subroutine element_operation_tensorprod3d_modalfilter_var5_p11( this, vec_in, vec_work, vec_out )
4060 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4061 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4062 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4072 end subroutine element_operation_tensorprod3d_modalfilter_var5_p11
4080 subroutine element_operation_tensorprod3d_init_p12( this, elem3D )
4086 this%elem3D => elem3d
4088 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
4091 end subroutine element_operation_tensorprod3d_init_p12
4096 subroutine element_operation_tensorprod3d_setup_modalfilter_p12( this, &
4097 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4098 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4103 real(rp),
intent(in) :: mf_etac_h
4104 real(rp),
intent(in) :: mf_alpha_h
4105 integer,
intent(in) :: mf_order_h
4106 real(rp),
intent(in) :: mf_etac_v
4107 real(rp),
intent(in) :: mf_alpha_v
4108 integer,
intent(in) :: mf_order_v
4111 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
4112 mf_etac_h, mf_alpha_h, mf_order_h, &
4113 mf_etac_v, mf_alpha_v, mf_order_v, &
4114 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4117 end subroutine element_operation_tensorprod3d_setup_modalfilter_p12
4122 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p12( this, &
4123 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4124 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4129 real(rp),
intent(in) :: mf_etac_h
4130 real(rp),
intent(in) :: mf_alpha_h
4131 integer,
intent(in) :: mf_order_h
4132 real(rp),
intent(in) :: mf_etac_v
4133 real(rp),
intent(in) :: mf_alpha_v
4134 integer,
intent(in) :: mf_order_v
4137 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
4138 mf_etac_h, mf_alpha_h, mf_order_h, &
4139 mf_etac_v, mf_alpha_v, mf_order_v, &
4140 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4143 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p12
4148 subroutine element_operation_tensorprod3d_final_p12( this )
4152 nullify( this%elem3D )
4154 end subroutine element_operation_tensorprod3d_final_p12
4159 subroutine element_operation_tensorprod3d_dx_p12( this, vec_in, vec_out )
4163 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4164 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4168 end subroutine element_operation_tensorprod3d_dx_p12
4173 subroutine element_operation_tensorprod3d_dy_p12( this, vec_in, vec_out )
4177 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4178 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4182 end subroutine element_operation_tensorprod3d_dy_p12
4187 subroutine element_operation_tensorprod3d_dz_p12( this, vec_in, vec_out )
4191 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4192 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4196 end subroutine element_operation_tensorprod3d_dz_p12
4201 subroutine element_operation_tensorprod3d_lift_p12( this, vec_in, vec_out )
4205 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
4206 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4210 end subroutine element_operation_tensorprod3d_lift_p12
4215 subroutine element_operation_tensorprod3d_dxdydzlift_p12( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4221 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4222 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4223 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4224 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4225 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4226 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4229 vec_out_dx, vec_out_dy, vec_out_dz )
4234 end subroutine element_operation_tensorprod3d_dxdydzlift_p12
4243 subroutine element_operation_tensorprod3d_div_p12( this, vec_in, vec_in_lift, &
4250 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
4251 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4252 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
4259 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
4261 end subroutine element_operation_tensorprod3d_div_p12
4266 subroutine element_operation_tensorprod3d_div_var5_p12( this, vec_in, vec_in_lift, &
4273 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4274 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4275 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4285 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), &
4286 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4289 end subroutine element_operation_tensorprod3d_div_var5_p12
4294 subroutine element_operation_tensorprod3d_div_var5_2_p12( this, vec_in, &
4300 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4301 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
4307 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), &
4308 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4311 end subroutine element_operation_tensorprod3d_div_var5_2_p12
4316 subroutine element_operation_tensorprod3d_lift_var5_p12( this, vec_in, vec_out )
4320 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
4321 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4329 end subroutine element_operation_tensorprod3d_lift_var5_p12
4334 subroutine element_operation_tensorprod3d_vfilterpm1_p12( this, vec_in, vec_out )
4338 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4339 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4345 end subroutine element_operation_tensorprod3d_vfilterpm1_p12
4350 subroutine element_operation_tensorprod3d_modalfilter_tracer_p12( this, vec_in, vec_work, vec_out )
4356 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4357 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4358 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4365 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p12
4370 subroutine element_operation_tensorprod3d_modalfilter_var5_p12( this, vec_in, vec_work, vec_out )
4376 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4377 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4378 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4388 end subroutine element_operation_tensorprod3d_modalfilter_var5_p12
4396 subroutine element_operation_tensorprod3d_init_p13( this, elem3D )
4402 this%elem3D => elem3d
4404 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
4407 end subroutine element_operation_tensorprod3d_init_p13
4412 subroutine element_operation_tensorprod3d_setup_modalfilter_p13( this, &
4413 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4414 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4419 real(rp),
intent(in) :: mf_etac_h
4420 real(rp),
intent(in) :: mf_alpha_h
4421 integer,
intent(in) :: mf_order_h
4422 real(rp),
intent(in) :: mf_etac_v
4423 real(rp),
intent(in) :: mf_alpha_v
4424 integer,
intent(in) :: mf_order_v
4427 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
4428 mf_etac_h, mf_alpha_h, mf_order_h, &
4429 mf_etac_v, mf_alpha_v, mf_order_v, &
4430 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4433 end subroutine element_operation_tensorprod3d_setup_modalfilter_p13
4438 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p13( this, &
4439 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4440 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4445 real(rp),
intent(in) :: mf_etac_h
4446 real(rp),
intent(in) :: mf_alpha_h
4447 integer,
intent(in) :: mf_order_h
4448 real(rp),
intent(in) :: mf_etac_v
4449 real(rp),
intent(in) :: mf_alpha_v
4450 integer,
intent(in) :: mf_order_v
4453 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
4454 mf_etac_h, mf_alpha_h, mf_order_h, &
4455 mf_etac_v, mf_alpha_v, mf_order_v, &
4456 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4459 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p13
4464 subroutine element_operation_tensorprod3d_final_p13( this )
4468 nullify( this%elem3D )
4470 end subroutine element_operation_tensorprod3d_final_p13
4475 subroutine element_operation_tensorprod3d_dx_p13( this, vec_in, vec_out )
4479 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4480 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4484 end subroutine element_operation_tensorprod3d_dx_p13
4489 subroutine element_operation_tensorprod3d_dy_p13( this, vec_in, vec_out )
4493 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4494 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4498 end subroutine element_operation_tensorprod3d_dy_p13
4503 subroutine element_operation_tensorprod3d_dz_p13( this, vec_in, vec_out )
4507 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4508 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4512 end subroutine element_operation_tensorprod3d_dz_p13
4517 subroutine element_operation_tensorprod3d_lift_p13( this, vec_in, vec_out )
4521 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
4522 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4526 end subroutine element_operation_tensorprod3d_lift_p13
4531 subroutine element_operation_tensorprod3d_dxdydzlift_p13( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4537 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4538 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4539 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4540 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4541 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4542 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4545 vec_out_dx, vec_out_dy, vec_out_dz )
4550 end subroutine element_operation_tensorprod3d_dxdydzlift_p13
4559 subroutine element_operation_tensorprod3d_div_p13( this, vec_in, vec_in_lift, &
4566 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
4567 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4568 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
4575 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
4577 end subroutine element_operation_tensorprod3d_div_p13
4582 subroutine element_operation_tensorprod3d_div_var5_p13( this, vec_in, vec_in_lift, &
4589 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4590 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4591 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4601 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), &
4602 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4605 end subroutine element_operation_tensorprod3d_div_var5_p13
4610 subroutine element_operation_tensorprod3d_div_var5_2_p13( this, vec_in, &
4616 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4617 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
4623 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), &
4624 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4627 end subroutine element_operation_tensorprod3d_div_var5_2_p13
4632 subroutine element_operation_tensorprod3d_lift_var5_p13( this, vec_in, vec_out )
4636 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
4637 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4645 end subroutine element_operation_tensorprod3d_lift_var5_p13
4650 subroutine element_operation_tensorprod3d_vfilterpm1_p13( this, vec_in, vec_out )
4654 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4655 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4661 end subroutine element_operation_tensorprod3d_vfilterpm1_p13
4666 subroutine element_operation_tensorprod3d_modalfilter_tracer_p13( this, vec_in, vec_work, vec_out )
4672 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4673 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4674 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4681 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p13
4686 subroutine element_operation_tensorprod3d_modalfilter_var5_p13( this, vec_in, vec_work, vec_out )
4692 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
4693 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4694 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4704 end subroutine element_operation_tensorprod3d_modalfilter_var5_p13
4712 subroutine element_operation_tensorprod3d_init_p14( this, elem3D )
4718 this%elem3D => elem3d
4720 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
4723 end subroutine element_operation_tensorprod3d_init_p14
4728 subroutine element_operation_tensorprod3d_setup_modalfilter_p14( this, &
4729 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4730 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4735 real(rp),
intent(in) :: mf_etac_h
4736 real(rp),
intent(in) :: mf_alpha_h
4737 integer,
intent(in) :: mf_order_h
4738 real(rp),
intent(in) :: mf_etac_v
4739 real(rp),
intent(in) :: mf_alpha_v
4740 integer,
intent(in) :: mf_order_v
4743 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
4744 mf_etac_h, mf_alpha_h, mf_order_h, &
4745 mf_etac_v, mf_alpha_v, mf_order_v, &
4746 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4749 end subroutine element_operation_tensorprod3d_setup_modalfilter_p14
4754 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p14( this, &
4755 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
4756 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
4761 real(rp),
intent(in) :: mf_etac_h
4762 real(rp),
intent(in) :: mf_alpha_h
4763 integer,
intent(in) :: mf_order_h
4764 real(rp),
intent(in) :: mf_etac_v
4765 real(rp),
intent(in) :: mf_alpha_v
4766 integer,
intent(in) :: mf_order_v
4769 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
4770 mf_etac_h, mf_alpha_h, mf_order_h, &
4771 mf_etac_v, mf_alpha_v, mf_order_v, &
4772 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
4775 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p14
4780 subroutine element_operation_tensorprod3d_final_p14( this )
4784 nullify( this%elem3D )
4786 end subroutine element_operation_tensorprod3d_final_p14
4791 subroutine element_operation_tensorprod3d_dx_p14( this, vec_in, vec_out )
4795 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4796 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4800 end subroutine element_operation_tensorprod3d_dx_p14
4805 subroutine element_operation_tensorprod3d_dy_p14( this, vec_in, vec_out )
4809 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4810 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4814 end subroutine element_operation_tensorprod3d_dy_p14
4819 subroutine element_operation_tensorprod3d_dz_p14( this, vec_in, vec_out )
4823 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4824 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4828 end subroutine element_operation_tensorprod3d_dz_p14
4833 subroutine element_operation_tensorprod3d_lift_p14( this, vec_in, vec_out )
4837 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
4838 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4842 end subroutine element_operation_tensorprod3d_lift_p14
4847 subroutine element_operation_tensorprod3d_dxdydzlift_p14( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
4853 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4854 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4855 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
4856 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
4857 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
4858 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
4861 vec_out_dx, vec_out_dy, vec_out_dz )
4866 end subroutine element_operation_tensorprod3d_dxdydzlift_p14
4875 subroutine element_operation_tensorprod3d_div_p14( this, vec_in, vec_in_lift, &
4882 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
4883 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
4884 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
4891 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
4893 end subroutine element_operation_tensorprod3d_div_p14
4898 subroutine element_operation_tensorprod3d_div_var5_p14( this, vec_in, vec_in_lift, &
4905 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4906 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
4907 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
4917 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), &
4918 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4921 end subroutine element_operation_tensorprod3d_div_var5_p14
4926 subroutine element_operation_tensorprod3d_div_var5_2_p14( this, vec_in, &
4932 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
4933 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
4939 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), &
4940 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
4943 end subroutine element_operation_tensorprod3d_div_var5_2_p14
4948 subroutine element_operation_tensorprod3d_lift_var5_p14( this, vec_in, vec_out )
4952 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
4953 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
4961 end subroutine element_operation_tensorprod3d_lift_var5_p14
4966 subroutine element_operation_tensorprod3d_vfilterpm1_p14( this, vec_in, vec_out )
4970 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4971 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4977 end subroutine element_operation_tensorprod3d_vfilterpm1_p14
4982 subroutine element_operation_tensorprod3d_modalfilter_tracer_p14( this, vec_in, vec_work, vec_out )
4988 real(rp),
intent(in) :: vec_in(this%elem3d%np)
4989 real(rp),
intent(out) :: vec_work(this%elem3d%np)
4990 real(rp),
intent(out) :: vec_out(this%elem3d%np)
4997 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p14
5002 subroutine element_operation_tensorprod3d_modalfilter_var5_p14( this, vec_in, vec_work, vec_out )
5008 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
5009 real(rp),
intent(out) :: vec_work(this%elem3d%np)
5010 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
5020 end subroutine element_operation_tensorprod3d_modalfilter_var5_p14
5028 subroutine element_operation_tensorprod3d_init_p15( this, elem3D )
5034 this%elem3D => elem3d
5036 call setup_elem_operator( this%D1D, this%D1D_tr, this%Lift_mat, this%IntrpMat_VPOrdM1_tr, &
5039 end subroutine element_operation_tensorprod3d_init_p15
5044 subroutine element_operation_tensorprod3d_setup_modalfilter_p15( this, &
5045 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
5046 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
5051 real(rp),
intent(in) :: mf_etac_h
5052 real(rp),
intent(in) :: mf_alpha_h
5053 integer,
intent(in) :: mf_order_h
5054 real(rp),
intent(in) :: mf_etac_v
5055 real(rp),
intent(in) :: mf_alpha_v
5056 integer,
intent(in) :: mf_order_v
5059 call setup_modalfilter( this%MFilter_h1D, this%MFilter_h1D_tr, this%MFilter_v1D_tr, &
5060 mf_etac_h, mf_alpha_h, mf_order_h, &
5061 mf_etac_v, mf_alpha_v, mf_order_v, &
5062 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
5065 end subroutine element_operation_tensorprod3d_setup_modalfilter_p15
5070 subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p15( this, &
5071 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
5072 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
5077 real(rp),
intent(in) :: mf_etac_h
5078 real(rp),
intent(in) :: mf_alpha_h
5079 integer,
intent(in) :: mf_order_h
5080 real(rp),
intent(in) :: mf_etac_v
5081 real(rp),
intent(in) :: mf_alpha_v
5082 integer,
intent(in) :: mf_order_v
5085 call setup_modalfilter( this%MFilter_tracer_h1D, this%MFilter_tracer_h1D_tr, this%MFilter_tracer_v1D_tr, &
5086 mf_etac_h, mf_alpha_h, mf_order_h, &
5087 mf_etac_v, mf_alpha_v, mf_order_v, &
5088 this%elem3D%PolyOrder_h, this%elem3D%PolyOrder_v )
5091 end subroutine element_operation_tensorprod3d_setup_modalfilter_tracer_p15
5096 subroutine element_operation_tensorprod3d_final_p15( this )
5100 nullify( this%elem3D )
5102 end subroutine element_operation_tensorprod3d_final_p15
5107 subroutine element_operation_tensorprod3d_dx_p15( this, vec_in, vec_out )
5111 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5112 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5116 end subroutine element_operation_tensorprod3d_dx_p15
5121 subroutine element_operation_tensorprod3d_dy_p15( this, vec_in, vec_out )
5125 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5126 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5130 end subroutine element_operation_tensorprod3d_dy_p15
5135 subroutine element_operation_tensorprod3d_dz_p15( this, vec_in, vec_out )
5139 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5140 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5144 end subroutine element_operation_tensorprod3d_dz_p15
5149 subroutine element_operation_tensorprod3d_lift_p15( this, vec_in, vec_out )
5153 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot)
5154 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5158 end subroutine element_operation_tensorprod3d_lift_p15
5163 subroutine element_operation_tensorprod3d_dxdydzlift_p15( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
5169 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5170 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
5171 real(rp),
intent(out) :: vec_out_dx(this%elem3d%np)
5172 real(rp),
intent(out) :: vec_out_dy(this%elem3d%np)
5173 real(rp),
intent(out) :: vec_out_dz(this%elem3d%np)
5174 real(rp),
intent(out) :: vec_out_lift(this%elem3d%np)
5177 vec_out_dx, vec_out_dy, vec_out_dz )
5182 end subroutine element_operation_tensorprod3d_dxdydzlift_p15
5191 subroutine element_operation_tensorprod3d_div_p15( this, vec_in, vec_in_lift, &
5198 real(rp),
intent(in) :: vec_in(this%elem3d%np,3)
5199 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot)
5200 real(rp),
intent(out) :: vec_out(this%elem3d%np,4)
5207 vec_out(:,1), vec_out(:,2), vec_out(:,3) )
5209 end subroutine element_operation_tensorprod3d_div_p15
5214 subroutine element_operation_tensorprod3d_div_var5_p15( this, vec_in, vec_in_lift, &
5221 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
5222 real(rp),
intent(in) :: vec_in_lift(this%elem3d%nfptot,5)
5223 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,4,5)
5233 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), &
5234 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
5237 end subroutine element_operation_tensorprod3d_div_var5_p15
5242 subroutine element_operation_tensorprod3d_div_var5_2_p15( this, vec_in, &
5248 real(rp),
intent(in) :: vec_in(this%elem3d%np,3,5)
5249 real(rp),
intent(out) :: vec_out_d(this%elem3d%np,3,5)
5255 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), &
5256 vec_out_d(:,1,iv), vec_out_d(:,2,iv), vec_out_d(:,3,iv) )
5259 end subroutine element_operation_tensorprod3d_div_var5_2_p15
5264 subroutine element_operation_tensorprod3d_lift_var5_p15( this, vec_in, vec_out )
5268 real(rp),
intent(in) :: vec_in(this%elem3d%nfptot,5)
5269 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
5277 end subroutine element_operation_tensorprod3d_lift_var5_p15
5282 subroutine element_operation_tensorprod3d_vfilterpm1_p15( this, vec_in, vec_out )
5286 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5287 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5293 end subroutine element_operation_tensorprod3d_vfilterpm1_p15
5298 subroutine element_operation_tensorprod3d_modalfilter_tracer_p15( this, vec_in, vec_work, vec_out )
5304 real(rp),
intent(in) :: vec_in(this%elem3d%np)
5305 real(rp),
intent(out) :: vec_work(this%elem3d%np)
5306 real(rp),
intent(out) :: vec_out(this%elem3d%np)
5313 end subroutine element_operation_tensorprod3d_modalfilter_tracer_p15
5318 subroutine element_operation_tensorprod3d_modalfilter_var5_p15( this, vec_in, vec_work, vec_out )
5324 real(rp),
intent(in) :: vec_in(this%elem3d%np,5)
5325 real(rp),
intent(out) :: vec_work(this%elem3d%np)
5326 real(rp),
intent(out) :: vec_out(this%elem3d%np,5)
5336 end subroutine element_operation_tensorprod3d_modalfilter_var5_p15
5342 subroutine setup_modalfilter( MFilter_h1D, MFilter_h1D_tr, MFilter_v1D_tr, &
5343 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
5344 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v, &
5345 PolyOrder_h, PolyOrder_v )
5350 real(rp),
intent(inout) :: mfilter_h1d(:,:)
5351 real(rp),
intent(inout) :: mfilter_h1d_tr(:,:)
5352 real(rp),
intent(inout) :: mfilter_v1d_tr(:,:)
5353 real(rp),
intent(in) :: mf_etac_h
5354 real(rp),
intent(in) :: mf_alpha_h
5355 integer,
intent(in) :: mf_order_h
5356 real(rp),
intent(in) :: mf_etac_v
5357 real(rp),
intent(in) :: mf_alpha_v
5358 integer,
intent(in) :: mf_order_v
5359 integer,
intent(in) :: polyorder_h
5360 integer,
intent(in) :: polyorder_v
5366 call elem1d%Init( polyorder_h, .false. )
5368 call mfilter1d%Init( elem1d, &
5369 mf_etac_h, mf_alpha_h, mf_order_h )
5370 mfilter_h1d(:,:) = mfilter1d%FilterMat(:,:)
5371 mfilter_h1d_tr(:,:) = transpose(mfilter_h1d(:,:))
5373 call mfilter1d%Final()
5377 call elem1d%Init( polyorder_v, .false. )
5379 call mfilter1d%Init( elem1d, &
5380 mf_etac_v, mf_alpha_v, mf_order_v )
5381 mfilter_v1d_tr(:,:) = transpose(mfilter1d%FilterMat(:,:))
5383 call mfilter1d%Final()
5387 end subroutine setup_modalfilter
5390 subroutine setup_elem_operator( D1D, D1D_tr, Lift_mat, IntrpMat_VPOrdM1_tr, &
5395 integer,
intent(in) :: np
5397 real(rp),
intent(out) :: d1d(np,np)
5398 real(rp),
intent(out) :: d1d_tr(np,np)
5399 real(rp),
intent(out) :: lift_mat(np,np,np,6)
5400 real(rp),
intent(out) :: intrpmat_vpordm1_tr(np,np)
5404 integer :: p1, p2, p_
5405 real(rp) :: invv_vpordm1(np,np)
5406 real(rp) :: intrpmat_vpordm1(np,np)
5413 call elem1d%Init( np-1, .false. )
5414 d1d(:,:) = elem1d%Dx1(:,:)
5415 d1d_tr(:,:) = transpose(d1d)
5417 call lift_sm%Init( elem3d%Lift, storage_format=
'ELL' )
5421 p1 = i + (j-1)*np + (k-1)*np**2
5422 lift_mat(i,j,k,1:6) = &
5423 (/ elem3d%Lift(p1,i+(k-1)*np), &
5424 elem3d%Lift(p1,j+(k-1)*np+(2-1)*np**2), &
5425 elem3d%Lift(p1,i+(k-1)*np+(3-1)*np**2), &
5426 elem3d%Lift(p1,j+(k-1)*np+(4-1)*np**2), &
5427 elem3d%Lift(p1,i+(j-1)*np+(5-1)*np**2), &
5428 elem3d%Lift(p1,i+(j-1)*np+(6-1)*np**2) /)
5432 call lift_sm%Final()
5436 invv_vpordm1(:,:) = elem1d%invV(:,:)
5437 invv_vpordm1(np,:) = 0.0_rp
5438 intrpmat_vpordm1(:,:) = matmul(elem1d%V, invv_vpordm1)
5439 intrpmat_vpordm1_tr(:,:) = transpose(intrpmat_vpordm1)
5445 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
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
subroutine, public elementoperationtensorprod3d_create(elem3d, obj)
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.
Derived type to manage a sparse matrix.