7#ifndef KERNEL_LAFEM_ARCH_SLIP_FILTER_GENERIC_HPP
8#define KERNEL_LAFEM_ARCH_SLIP_FILTER_GENERIC_HPP 1
10#ifndef KERNEL_LAFEM_ARCH_SLIP_FILTER_HPP
11#error "Do not include this implementation-only header file directly!"
21 template <
int BlockSize_,
typename DT_,
typename IT_>
22 void SlipFilter::filter_rhs_generic(DT_ * v,
const DT_ *
const nu_elements,
const IT_ *
const sv_indices,
const Index ue)
25 FEAT_PRAGMA_OMP(parallel
for)
26 for(
Index i = 0; i < ue; ++i)
30 for(
Index j = 0 ; j < block_size ; ++j)
32 sp += v[block_size * sv_indices[i] + j] *nu_elements[block_size * i + j];
33 scal += nu_elements[block_size * i + j]*nu_elements[block_size * i + j];
38 for(
Index j = 0 ; j < block_size ; ++j)
39 v[block_size * sv_indices[i] + j] -= sp*nu_elements[block_size * i + j];
43 template <
int BlockSize_,
typename DT_,
typename IT_>
44 void SlipFilter::filter_def_generic(DT_ * v,
const DT_*
const nu_elements,
const IT_ *
const sv_indices,
const Index ue)
47 FEAT_PRAGMA_OMP(parallel
for)
48 for(
Index i = 0; i < ue; ++i)
52 for(
Index j = 0 ; j < block_size ; ++j)
54 sp += v[block_size * sv_indices[i] + j] *nu_elements[block_size * i + j];
55 scal += nu_elements[block_size * i + j]*nu_elements[block_size * i + j];
60 for(
Index j = 0 ; j < block_size ; ++j)
61 v[block_size * sv_indices[i] + j] -= sp*nu_elements[block_size * i + j];
std::uint64_t Index
Index data type.