Go to the documentation of this file.
26 #ifndef stokes_KERNEL_HPP_INCLUDED
27 #define stokes_KERNEL_HPP_INCLUDED
29 #include <boost/math/constants/constants.hpp>
31 #include "../core/global_definitions.hpp"
32 #include "../core/kernel.hpp"
33 #include "../core/gaussian_quadrature.hpp"
71 class stokes_2d_U_kernel;
79 typedef Eigen::Matrix<double, 2, 2>
result_t;
122 using boost::math::double_constants::pi;
125 double r = rvec.norm();
126 x_t gradr = rvec.normalized();
127 return ( - 1.* result_t::Identity() * (2.*std::log(r) +1.) + 2.* (gradr * gradr.transpose()) ) / (8.*pi*mu);
145 class stokes_2d_T_kernel;
153 typedef Eigen::Matrix<double, 2, 2>
result_t;
195 using boost::math::double_constants::pi;
198 double r = rvec.norm();
199 x_t gradr = rvec.normalized();
201 double rdny = gradr.dot(n);
203 -1.0 *( rdny *( gradr*gradr.transpose()) ) / (pi*r);
209 class stokes_3d_U_kernel;
217 typedef Eigen::Matrix<double, 3, 3>
result_t;
257 using boost::math::double_constants::pi;
261 double r = rvec.norm();
262 x_t gradr = rvec.normalized();
263 return ( result_t::Identity() + (gradr * gradr.transpose())) / (8. * pi * r * mu);
279 class stokes_3d_T_kernel;
286 typedef Eigen::Matrix<double, 3, 3>
result_t;
327 using boost::math::double_constants::pi;
330 auto r = rvec.norm();
331 auto gradr = rvec.normalized();
332 auto rdny = gradr.dot(ny);
333 return (-rdny * ( 3. * (gradr * gradr.transpose())) ) / (4. * pi * r * r);
356 template <
class guiggiani>
360 obj.set_laurent_coeff(
_m1(), guiggiani::laurent_coeff_t::Zero());
366 #endif // STOKES_KERNEL_HPP_INCLUDED
kernel_traits_ns::singular_core< Derived >::type singular_core_t
the kernel's singular core type
kernel_traits_ns::quadrature_family< Derived >::type quadrature_family_t
the far field asymptotic behaviour of the kernel
2d traction kernel for Stokes flow
The velocity kernel of 2D Stokes flow.
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
stokes_2d_U_kernel(double mu)
Construct a new Stokes 2d U kernel object.
kernel_traits_ns::test_input< Derived >::type test_input_t
kernel test input type
space_t::location_t x_t
the location type
a class representing a normal + Jacobian input
@ is_singular
indicates if the kernel is singular
Guiggiani's method for CPV and HPF collocational integrals.
CRTP base class of all BEM kernels.
result_t operator()(location_input_3d const &x, location_input_3d const &y) const
evaluate the stokes 3d velocity kernel between two kernel inputs
std::integral_constant< int, -1 > _m1
shorthand for constant minus one
double get_viscosity() const
Get the viscosity.
@ 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
stokes_kernel(double mu)
Construct a new Stokes kernel object.
Base class for Stokes kernels. This class contains one material parameter.
kernel_traits_ns::result< Derived >::type result_t
the kernel result type
@ is_symmetric
indicates if the kernel is symmetric
stokes_3d_T_kernel(double mu)
instantiate the stokes kernel
static void eval(guiggiani &obj)
evaluate the Laurent coefficients
result_t operator()(location_input_2d const &x, location_normal_input_2d const &y) const
Evaluate the kernel between two inputs.
result_t operator()(x_t const &x, x_t const &y) const
evaluate the stokes 3d traction kernel between two locations
stokes_3d_U_kernel(double mu)
instantiate the stokes kernel
result_t operator()(location_input_2d const &x, location_input_2d const &y) const
Evaluate the kernel between two kernel inputs.
the velocity kernel for 3d Stokes flow
const x_t & get_x(void) const
return the location
implementation of location and normal kernel inputs
result_t operator()(x_t const &x, x_t const &y) const
Evaluate the kernel between two locations.
result_t operator()(x_t const &x, x_t const &y, x_t const &ny) const
evaluate the stokes 3d traction kernel between two locations
traits_t::result_t result_t
compile time check if the two kernel inputs are compatible
result_t operator()(location_input_3d const &x, location_normal_input_3d const &y) const
evaluate the stokes 3d traction kernel between two kernel inputs
definition of Laurent coefficients of singularities
kernel_traits_ns::trial_input< Derived >::type trial_input_t
kernel trial input type
stokes_2d_T_kernel(double mu)
Construct a new Stokes 2d T kernel object.
Implementation of Guiggiani's method.
a class representing a simple location
the traction kernel for 3d Stokes flow
const x_t & get_unit_normal(void) const
return the unit normal vector
tag for the family of Gaussian quadratures