FE-Project
Loading...
Searching...
No Matches
scale_element_operation_base.F90
Go to the documentation of this file.
1
2!-------------------------------------------------------------------------------
11#include "scaleFElib.h"
13
14 !-----------------------------------------------------------------------------
15 !
16 !++ used modules
17 !
18 use scale_precision
19
20 use scale_element_base, only: &
23 !-----------------------------------------------------------------------------
24 implicit none
25 private
26
27 !-----------------------------------------------------------------------------
28 !
29 !++ Public type & procedure
30 !
31 type, public, abstract :: elementoperationbase3d
32 class(elementbase3d), pointer :: elem3d
33 contains
34 procedure(elementoperationbase_final), deferred, public :: final
35 procedure(elementoperationbase_dx), deferred, public :: dx
36 procedure(elementoperationbase_dy), deferred, public :: dy
37 procedure(elementoperationbase_dz), deferred, public :: dz
38 procedure(elementoperationbase_lift), deferred, public :: lift
39 procedure(elementoperationbase_dxdydzlift), deferred, public :: dxdydzlift
40 procedure(elementoperationbase_div), deferred, public :: div
41 procedure(elementoperationbase_div_var5), deferred, public :: div_var5
42 procedure(elementoperationbase_vfilterpm1), deferred, public :: vfilterpm1
43 procedure(elementoperationbase_setup_modalfilter), deferred, public :: setup_modalfilter
44 procedure(elementoperationbase_setup_modalfilter_tracer), deferred, public :: setup_modalfilter_tracer
45 procedure(elementoperationbase_modalfilter_tracer), deferred, public :: modalfilter_tracer
46 procedure(elementoperationbase_modalfilter_var5), deferred, public :: modalfilter_var5
48 interface
49 subroutine elementoperationbase_final( this )
51 class(elementoperationbase3d), intent(inout) :: this
52 end subroutine elementoperationbase_final
53
54 subroutine elementoperationbase_dx( this, vec_in, vec_out )
56 import rp
57 class(elementoperationbase3d), intent(in) :: this
58 real(RP), intent(in) :: vec_in(this%elem3D%Np)
59 real(RP), intent(out) :: vec_out(this%elem3D%Np)
60 end subroutine elementoperationbase_dx
61
62 subroutine elementoperationbase_dy( this, vec_in, vec_out )
64 import rp
65 class(elementoperationbase3d), intent(in) :: this
66 real(RP), intent(in) :: vec_in(this%elem3D%Np)
67 real(RP), intent(out) :: vec_out(this%elem3D%Np)
68 end subroutine elementoperationbase_dy
69
70 subroutine elementoperationbase_dz( this, vec_in, vec_out )
72 import rp
73 class(elementoperationbase3d), intent(in) :: this
74 real(RP), intent(in) :: vec_in(this%elem3D%Np)
75 real(RP), intent(out) :: vec_out(this%elem3D%Np)
76 end subroutine elementoperationbase_dz
77
78 subroutine elementoperationbase_lift( this, vec_in, vec_out )
80 import rp
81 class(elementoperationbase3d), intent(in) :: this
82 real(RP), intent(in) :: vec_in(this%elem3D%NfpTot)
83 real(RP), intent(out) :: vec_out(this%elem3D%Np)
84 end subroutine elementoperationbase_lift
85
86 subroutine elementoperationbase_dxdydzlift( this, vec_in, vec_in_lift, vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
88 import rp
89 class(elementoperationbase3d), intent(in) :: this
90 real(RP), intent(in) :: vec_in(this%elem3D%Np)
91 real(RP), intent(in) :: vec_in_lift(this%elem3D%NfpTot)
92 real(RP), intent(out) :: vec_out_dx(this%elem3D%Np)
93 real(RP), intent(out) :: vec_out_dy(this%elem3D%Np)
94 real(RP), intent(out) :: vec_out_dz(this%elem3D%Np)
95 real(RP), intent(out) :: vec_out_lift(this%elem3D%Np)
96 end subroutine elementoperationbase_dxdydzlift
97
98 subroutine elementoperationbase_div( this, vec_in_x, vec_in_y, vec_in_z, vec_in_lift, &
99 vec_out_dx, vec_out_dy, vec_out_dz, vec_out_lift )
101 import rp
102 class(elementoperationbase3d), intent(in) :: this
103 real(RP), intent(in) :: vec_in_x(this%elem3D%Np)
104 real(RP), intent(in) :: vec_in_y(this%elem3D%Np)
105 real(RP), intent(in) :: vec_in_z(this%elem3D%Np)
106 real(RP), intent(in) :: vec_in_lift(this%elem3D%NfpTot)
107 real(RP), intent(out) :: vec_out_dx(this%elem3D%Np)
108 real(RP), intent(out) :: vec_out_dy(this%elem3D%Np)
109 real(RP), intent(out) :: vec_out_dz(this%elem3D%Np)
110 real(RP), intent(out) :: vec_out_lift(this%elem3D%Np)
111 end subroutine elementoperationbase_div
112
113 subroutine elementoperationbase_div_var5( this, vec_in, vec_in_lift, &
114 vec_out_d )
116 import rp
117 class(elementoperationbase3d), intent(in) :: this
118 real(RP), intent(in) :: vec_in(this%elem3D%Np,3,5)
119 real(RP), intent(in) :: vec_in_lift(this%elem3D%NfpTot,5)
120 real(RP), intent(out) :: vec_out_d(this%elem3D%Np,4,5)
121 end subroutine elementoperationbase_div_var5
122
123 subroutine elementoperationbase_vfilterpm1( this, vec_in, vec_out )
125 import rp
126 class(elementoperationbase3d), intent(in) :: this
127 real(RP), intent(in) :: vec_in(this%elem3D%Np)
128 real(RP), intent(out) :: vec_out(this%elem3D%Np)
129 end subroutine elementoperationbase_vfilterpm1
130
131 subroutine elementoperationbase_setup_modalfilter( this, &
132 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
133 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
135 import rp
136 class(elementoperationbase3d), intent(inout) :: this
137 real(RP), intent(in) :: MF_ETAC_h
138 real(RP), intent(in) :: MF_ALPHA_h
139 integer, intent(in) :: MF_ORDER_h
140 real(RP), intent(in) :: MF_ETAC_v
141 real(RP), intent(in) :: MF_ALPHA_v
142 integer, intent(in) :: MF_ORDER_v
143 end subroutine elementoperationbase_setup_modalfilter
144
145 subroutine elementoperationbase_setup_modalfilter_tracer( this, &
146 MF_ETAC_h, MF_ALPHA_h, MF_ORDER_h, &
147 MF_ETAC_v, MF_ALPHA_v, MF_ORDER_v )
149 import rp
150 class(elementoperationbase3d), intent(inout) :: this
151 real(RP), intent(in) :: MF_ETAC_h
152 real(RP), intent(in) :: MF_ALPHA_h
153 integer, intent(in) :: MF_ORDER_h
154 real(RP), intent(in) :: MF_ETAC_v
155 real(RP), intent(in) :: MF_ALPHA_v
156 integer, intent(in) :: MF_ORDER_v
157 end subroutine elementoperationbase_setup_modalfilter_tracer
158
159 subroutine elementoperationbase_modalfilter_tracer( this, vec_in, vec_work, vec_out )
161 import rp
162 class(elementoperationbase3d), intent(in) :: this
163 real(RP), intent(in) :: vec_in(this%elem3D%Np)
164 real(RP), intent(out) :: vec_work(this%elem3D%Np)
165 real(RP), intent(out) :: vec_out(this%elem3D%Np)
166 end subroutine elementoperationbase_modalfilter_tracer
167
168 subroutine elementoperationbase_modalfilter_var5( this, vec_in, vec_work, vec_out )
170 import rp
171 class(elementoperationbase3d), intent(in) :: this
172 real(RP), intent(in) :: vec_in(this%elem3D%Np,5)
173 real(RP), intent(out) :: vec_work(this%elem3D%Np)
174 real(RP), intent(out) :: vec_out(this%elem3D%Np,5)
175 end subroutine elementoperationbase_modalfilter_var5
176
177 end interface
178contains
179end module scale_element_operation_base
module FElib / Element / Base
subroutine, public elementbase3d_init(elem, lumpedmat_flag)
subroutine, public elementbase3d_final(elem)
module FElib / Element / Operation / Base