Go to the documentation of this file.
25 #ifndef KERNEL_HPP_INCLUDED
26 #define KERNEL_HPP_INCLUDED
30 #include "../util/crtp_base.hpp"
31 #include "../library/interval_estimator.hpp"
32 #include "../library/distance_kernel_intervals.hpp"
38 namespace kernel_traits_ns
41 template <
class Derived>
struct space;
47 template <
class Derived>
struct result;
70 template <
class Derived>
100 template <
class Derived>
117 template <
class Derived>
132 template <
class Derived>
146 static_assert(std::is_same<typename test_input_t::space_t, typename trial_input_t::space_t>::value,
147 "The test and trial kernel inputs must define the same coordinate space");
149 typedef typename traits_t::result_t
result_t;
152 typedef typename test_input_t::space_t
space_t;
154 typedef typename space_t::location_t
x_t;
182 : m_kernel(kernel.derived()), m_test_input(x)
192 return m_kernel(m_test_input, y);
197 Derived
const &m_kernel;
208 return kernel_bind(*
this, x);
219 return derived()(x, y);
225 #endif // KERNEL_HPP_INCLUDED
@ is_symmetric
indicates if the kernel is symmetric
specialisation of NiHu::complexity_estimator for the interval case
return the kernel's result type
kernel_traits_ns::result< Derived >::type result_t
the kernel result type
kernel_compl_estimator< Derived >::type estimator_t
the kernel complexity estimator class
static const bool is_symmetric
true if K(x,y) = K(y,x)
kernel_bind(kernel_base< Derived > const &kernel, test_input_t const &x)
constructor
return whether the kernel is singular or not
kernel_traits_ns::test_input< Derived >::type test_input_t
kernel test input type
@ is_singular
indicates if the kernel is singular
result_t operator()(trial_input_t const &y) const
evaluate bound kernel
CRTP base class of all BEM kernels.
define intervals for distance range and accuracy
return the kernel's trial input
return the kernel's test input
result_t operator()(test_input_t const &x, trial_input_t const &y) const
evaluate kernel at a given source and receiver position
@ singular_quadrature_order
the quadrature order singular integrals are handled with
kernel_traits_ns::singular_core< Derived >::type singular_core_t
the kernel's singular core type
traits_t::result_t result_t
compile time check if the two kernel inputs are compatible
traits_t::quadrature_family_t quadrature_family_t
the quadrature family the kernel is integrated with
return the coordinate space where the kernel is defined
test_input_t::space_t space_t
type of the kernel's domain space
space_t::location_t x_t
type of a location vector in the kernel's domain
return the quadrature order the singular kernel needs to be integrated with
NIHU_CRTP_HELPERS typedef kernel_traits< Derived > traits_t
the traits class
the kernel bound at the test kernel input
return the quadrature family the kernel is integrated with
traits_t::far_field_behaviour_t far_field_behaviour_t
the asymptotic (far field) behaviour of the kernel
kernel_traits_ns::quadrature_family< Derived >::type quadrature_family_t
the far field asymptotic behaviour of the kernel
static const bool is_sungular
true if the kernel is singular
kernel_traits_ns::singularity_type< Derived >::type singularity_type_t
the kernel's singularity type
Estimate kernel complexity between two elements.
kernel_traits_ns::space< Derived >::type space_t
the kernel's coordinate space
return whether the kernel is symmetric or not
space_t::scalar_t scalar_t
type of the scalar coordinate in the kernel's domain
traits_t::test_input_t test_input_t
type of the first (test) kernel input
return the kernel's singular core type
kernel_bind bind(test_input_t const &x) const
bind the kernel at its test input
#define NIHU_CRTP_HELPERS
define CRTP helper function
traits_t::trial_input_t trial_input_t
type of the second (trial) kernel input
kernel_traits_ns::far_field_behaviour< Derived >::type far_field_behaviour_t
the far field asymptotic behaviour of the kernel
kernel_traits_ns::trial_input< Derived >::type trial_input_t
kernel trial input type
return the kernel's singularity type
return the far field asymptotic behaviour of the kernel
definition of different asymptotic function behaviour types
singular traits class of a kernel