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
kernel_traits_ns::singular_core< Derived >::type singular_core_t
the kernel's singular core type
return the kernel's singularity type
result_t operator()(test_input_t const &x, trial_input_t const &y) const
evaluate kernel at a given source and receiver position
kernel_traits_ns::quadrature_family< Derived >::type quadrature_family_t
the far field asymptotic behaviour of the kernel
return the kernel's result type
kernel_traits_ns::space< Derived >::type space_t
the kernel's coordinate space
the kernel bound at the test kernel input
kernel_compl_estimator< Derived >::type estimator_t
the kernel complexity estimator class
kernel_traits_ns::far_field_behaviour< Derived >::type far_field_behaviour_t
the far field asymptotic behaviour of the kernel
singular traits class of a kernel
kernel_bind bind(test_input_t const &x) const
bind the kernel at its test input
kernel_traits_ns::test_input< Derived >::type test_input_t
kernel test input type
define intervals for distance range and accuracy
return the kernel's singular core type
#define NIHU_CRTP_HELPERS
define CRTP helper function
@ is_singular
indicates if the kernel is singular
return whether the kernel is singular or not
CRTP base class of all BEM kernels.
space_t::scalar_t scalar_t
type of the scalar coordinate in the kernel's domain
@ singular_quadrature_order
the quadrature order singular integrals are handled with
kernel_traits_ns::singularity_type< Derived >::type singularity_type_t
the kernel's singularity type
return the far field asymptotic behaviour of the kernel
kernel_traits_ns::result< Derived >::type result_t
the kernel result type
@ is_symmetric
indicates if the kernel is symmetric
return the quadrature order the singular kernel needs to be integrated with
static const bool is_sungular
true if the kernel is singular
traits_t::far_field_behaviour_t far_field_behaviour_t
the asymptotic (far field) behaviour of the kernel
NIHU_CRTP_HELPERS typedef kernel_traits< Derived > traits_t
the traits class
return whether the kernel is symmetric or not
return the quadrature family the kernel is integrated with
traits_t::trial_input_t trial_input_t
type of the second (trial) kernel input
traits_t::test_input_t test_input_t
type of the first (test) kernel input
Estimate kernel complexity between two elements.
return the kernel's trial input
test_input_t::space_t space_t
type of the kernel's domain space
return the coordinate space where the kernel is defined
traits_t::result_t result_t
compile time check if the two kernel inputs are compatible
specialisation of NiHu::complexity_estimator for the interval case
traits_t::quadrature_family_t quadrature_family_t
the quadrature family the kernel is integrated with
return the kernel's test input
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
kernel_traits_ns::trial_input< Derived >::type trial_input_t
kernel trial input type
definition of different asymptotic function behaviour types
result_t operator()(trial_input_t const &y) const
evaluate bound kernel
space_t::location_t x_t
type of a location vector in the kernel's domain