50     character(len=64) :: filter_type
 
   56     real(kind=
rp), 
allocatable :: fh(:,:), fht(:,:)
 
   58     real(kind=
rp), 
allocatable :: trnsfr(:)
 
 
   76    character(len=*) :: filter_type
 
   81    this%filter_type = filter_type
 
   83    allocate(this%fh(nx, nx))
 
   84    allocate(this%fht(nx, nx))
 
   85    allocate(this%trnsfr(nx))
 
   87    call rzero(this%fh, nx*nx)
 
   88    call rzero(this%fht, nx*nx)
 
   89    call rone(this%trnsfr, nx) 
 
 
   97    if (
allocated(this%fh)) 
then 
  101    if (
allocated(this%fht)) 
then 
  105    if (
allocated(this%trnsfr)) 
then 
  106       deallocate(this%trnsfr)
 
  109    this%filter_type = 
"" 
 
  120        call neko_error(
"build_1d not implemented on accelarators.")
 
  123                               this%nx, this%filter_type)
 
 
  131    integer, 
intent(inout) :: nelv
 
  132    real(kind=
rp), 
intent(inout), 
dimension(this%nx, this%nx, this%nx, nelv) :: u,v
 
  135    call tnsr3d(v, this%nx, u, this%nx, this%fh, this%fht, this%fht, nelv)
 
 
  139end module elementwise_filter
 
Implements the CPU kernel for the elementwise_filter_t type.
 
subroutine, public build_1d_cpu(fh, fht, trnsfr, nx, filter_type)
Build the 1d filter for an element on the CPU. Suppose field x is filtered into x_hat by x_hat = fh*x...
 
Implements explicit_filter_t.
 
subroutine elementwise_field_filter_3d(this, v, u, nelv)
Filter a 3D field.
 
subroutine elementwise_filter_free(this)
Destructor.
 
subroutine build_1d(this)
Build the 1d filter for an element.
 
subroutine elementwise_filter_init(this, nx, filter_type)
Constructor.
 
subroutine, public rone(a, n)
Set all elements to one.
 
subroutine, public rzero(a, n)
Zero a real vector.
 
integer, parameter neko_bcknd_device
 
integer, parameter, public rp
Global precision used in computations.
 
subroutine, public tnsr3d(v, nv, u, nu, a, bt, ct, nelv)
Tensor product  performed on nelv elements.
 
Implements the explicit filter for SEM.