FE-Project
Loading...
Searching...
No Matches
scale_element_operation_tensorprod3d Module Reference

module FElib / Element / Operation with 3D tensor product elements for GPU More...

Data Types

type  elementoperationtensorprod3d
 Derived type for elementwise operations with 3D tensor product elements. More...
interface  elementoperationtensorprod3d_init
type  elementoperationtensorprod3d_p1
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=1. More...
type  elementoperationtensorprod3d_p10
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=10. More...
type  elementoperationtensorprod3d_p11
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=11. More...
type  elementoperationtensorprod3d_p12
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=12. More...
type  elementoperationtensorprod3d_p13
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=13. More...
type  elementoperationtensorprod3d_p14
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=14. More...
type  elementoperationtensorprod3d_p15
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=15. More...
type  elementoperationtensorprod3d_p2
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=2. More...
type  elementoperationtensorprod3d_p3
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=3. More...
type  elementoperationtensorprod3d_p4
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=4. More...
type  elementoperationtensorprod3d_p5
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=5. More...
type  elementoperationtensorprod3d_p6
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=6. More...
type  elementoperationtensorprod3d_p7
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=7. More...
type  elementoperationtensorprod3d_p8
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=8. More...
type  elementoperationtensorprod3d_p9
 Derived type for elementwise operations with 3D tensor product elements with polynomial order p=9. More...

Functions/Subroutines

subroutine, public elementoperationtensorprod3d_create (elem3d, obj)
 Factory subroutine to create an object of ElementOperationTensorProd3D.

Detailed Description

module FElib / Element / Operation with 3D tensor product elements for GPU

Description
A module for providing mathematical operations assuming a 3D tensor product element with (p+1)^3 DOF for GPU
Author
Yuta Kawai, Xuanzhengbo Ren, and Team SCALE

Function/Subroutine Documentation

◆ elementoperationtensorprod3d_create()

subroutine, public scale_element_operation_tensorprod3d::elementoperationtensorprod3d_create ( class(elementbase3d), intent(in) elem3d,
class(elementoperationtensorprod3d), intent(out), allocatable obj )

Factory subroutine to create an object of ElementOperationTensorProd3D.

Parameters
[in]elem3dA 3D element object whose polynomial order is used to determine the type of created object
[out]objCreated object of ElementOperationTensorProd3D

Definition at line 578 of file scale_element_operation_tensorprod3D.F90.

579 use scale_prc, only: prc_abort
580 implicit none
581 class(ElementBase3D), intent(in) :: elem3D !< A 3D element object whose polynomial order is used to determine the type of created object
582 class(ElementOperationTensorProd3D), intent(out), allocatable :: obj !< Created object of ElementOperationTensorProd3D
583 !-----------------------------------------------------
584
585 if ( elem3d%PolyOrder_h /= elem3d%PolyOrder_v ) then
586 log_info('ElemenetOperationTensorprod3D_create',*) 'PolyOrder_h and PolyOrder_v should be same in this module. ElemenetOperationGeneral should be used!'
587 call prc_abort
588 end if
589
590 select case( elem3d%PolyOrder_h )
591 case(1)
592 allocate( elementoperationtensorprod3d_p1 :: obj )
593 case(2)
594 allocate( elementoperationtensorprod3d_p2 :: obj )
595 case(3)
596 allocate( elementoperationtensorprod3d_p3 :: obj )
597 case(4)
598 allocate( elementoperationtensorprod3d_p4 :: obj )
599 case(5)
600 allocate( elementoperationtensorprod3d_p5 :: obj )
601 case(6)
602 allocate( elementoperationtensorprod3d_p6 :: obj )
603 case(7)
604 allocate( elementoperationtensorprod3d_p7 :: obj )
605 case(8)
606 allocate( elementoperationtensorprod3d_p8 :: obj )
607 case(9)
608 allocate( elementoperationtensorprod3d_p9 :: obj )
609 case(10)
610 allocate( elementoperationtensorprod3d_p10 :: obj )
611 case(11)
612 allocate( elementoperationtensorprod3d_p11 :: obj )
613 case(12)
614 allocate( elementoperationtensorprod3d_p12 :: obj )
615 case(13)
616 allocate( elementoperationtensorprod3d_p13 :: obj )
617 case(14)
618 allocate( elementoperationtensorprod3d_p14 :: obj )
619 case(15)
620 allocate( elementoperationtensorprod3d_p15 :: obj )
621 case default
622 log_info('ElemenetOperationTensorprod3D_create',*) 'The specified polynomial order execceds 15 and is not supported in this module. ElemenetOperationGeneral should be used!'
623 call prc_abort
624 end select
625 call obj%Init( elem3d )
626
627 return

References scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p1(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p10(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p11(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p12(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p13(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p14(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p15(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p2(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p3(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p4(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p5(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p6(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p7(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p8(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirx_p9(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p1(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p10(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p11(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p12(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p13(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p14(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p15(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p2(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p3(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p4(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p5(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p6(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p7(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p8(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_diry_p9(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p1(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p10(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p11(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p12(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p13(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p14(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p15(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p2(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p3(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p4(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p5(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p6(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p7(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p8(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_dirz_p9(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p1(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p10(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p11(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p12(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p13(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p14(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p15(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p2(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p3(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p4(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p5(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p6(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p7(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p8(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_divlike_dirxyz_p9(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p1(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p10(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p11(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p12(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p13(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p14(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p15(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p2(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p3(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p4(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p5(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p6(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p7(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p8(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_gradlike_dirxyz_p9(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p1(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p10(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p11(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p12(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p13(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p14(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p15(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p2(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p3(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p4(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p5(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p6(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p7(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p8(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_lift_hexahedral_p9(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p1(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p10(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p11(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p12(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p13(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p14(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p15(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p2(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p3(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p4(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p5(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p6(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p7(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p8(), scale_element_operation_tensorprod3d_kernel::element_operation_kernel_matvec_modalfilter_p9(), and scale_element_operation_base::element_operator_type_tensorprod3d.

Referenced by scale_element_operation_tensorprod3d::elementoperationtensorprod3d_init::elementoperationtensorprod3d_init(), scale_model_meshbase_manager::modelmeshbase_init(), and mod_atmos_phy_preproc::physpreprocnone_init().