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

module FElib / Element/ ModalFilter More...

Data Types

type  modalfilter
 Derived type representing a modal filter. More...

Functions/Subroutines

subroutine modalfilter_init_line (this, elem, etac, alpha, ord, tend_flag)

Detailed Description

module FElib / Element/ ModalFilter

Description
A module for modal filtering
Author
Yuta Kawai, Team SCALE

Function/Subroutine Documentation

◆ modalfilter_init_line()

subroutine scale_element_modalfilter::modalfilter_init_line ( class(modalfilter), intent(inout) this,
class(lineelement), intent(in) elem,
real(rp), intent(in) etac,
real(rp), intent(in) alpha,
integer, intent(in) ord,
logical, intent(in), optional tend_flag )

Definition at line 61 of file scale_element_modalfilter.F90.

65
66 implicit none
67 class(ModalFilter), intent(inout) :: this
68 class(LineElement), intent(in) :: elem
69 real(RP), intent(in) :: etac
70 real(RP), intent(in) :: alpha
71 integer, intent(in) :: ord
72 logical, intent(in), optional :: tend_flag
73
74 real(RP) :: filter1D(elem%Np)
75 integer :: p
76 logical :: tend_flag_
77 !----------------------------------------------------
78
79 tend_flag_ = .false.
80 if ( present(tend_flag) ) tend_flag_ = tend_flag
81
82 call get_exp_filter( filter1d, & ! (out)
83 etac, alpha, ord, elem%Np, elem%PolyOrder, & ! (in)
84 tend_flag_ ) ! (in)
85
86 allocate( this%FilterMat(elem%Np,elem%Np) )
87 this%FilterMat(:,:) = 0.0_rp
88 do p=1, elem%Np
89 this%FilterMat(p,p) = filter1d(p)
90 end do
91 this%FilterMat(:,:) = matmul(this%FilterMat, elem%invV)
92 this%FilterMat(:,:) = matmul(elem%V, this%FilterMat)
93 !$acc enter data copyin(this%FilterMat)
94
95 return