37 #ifndef BASE_KERNELS_H 38 #define BASE_KERNELS_H 42 #include "base_data_package.h" 66 const std::string kernel_name_;
68 Real cutoff_radius_ref_;
76 void setDerivativeParameters();
79 explicit Kernel(Real h,
const std::string &kernel_name =
"Kernel");
82 std::string Name()
const {
return kernel_name_; };
83 Real SmoothingLength()
const {
return h_; };
86 Real CutOffRadius()
const {
return cutoff_radius_ref_; };
87 Real FactorW1D()
const {
return factor_W_1D_; };
88 Real FactorW2D()
const {
return factor_W_2D_; };
89 Real FactorW3D()
const {
return factor_W_3D_; };
94 virtual Real W(
const Real& r_ij,
const Real& displacement)
const;
95 virtual Real W(
const Real& r_ij,
const Vec2d& displacement)
const;
96 virtual Real W(
const Real& r_ij,
const Vec3d& displacement)
const;
101 virtual Real W_1D(
const Real q)
const = 0;
102 virtual Real W_2D(
const Real q)
const = 0;
103 virtual Real W_3D(
const Real q)
const = 0;
106 virtual Real
W0(
const Real& point_i)
const {
return factor_W_1D_; };
107 virtual Real W0(
const Vec2d& point_i)
const {
return factor_W_2D_; };
108 virtual Real W0(
const Vec3d& point_i)
const {
return factor_W_3D_; };
113 virtual Real dW(
const Real& r_ij,
const Real& displacement)
const;
114 virtual Real dW(
const Real& r_ij,
const Vec2d& displacement)
const;
115 virtual Real dW(
const Real& r_ij,
const Vec3d& displacement)
const;
120 virtual Real dW_1D(
const Real q)
const = 0;
121 virtual Real dW_2D(
const Real q)
const = 0;
122 virtual Real dW_3D(
const Real q)
const = 0;
127 virtual Real d2W(
const Real& r_ij,
const Real& displacement)
const;
128 virtual Real d2W(
const Real& r_ij,
const Vec2d& displacement)
const;
129 virtual Real d2W(
const Real& r_ij,
const Vec3d& displacement)
const;
134 virtual Real d2W_1D(
const Real q)
const = 0;
135 virtual Real d2W_2D(
const Real q)
const = 0;
136 virtual Real d2W_3D(
const Real q)
const = 0;
146 FactorFunctor h_factor_W_1D_, h_factor_W_2D_, h_factor_W_3D_;
147 FactorFunctor h_factor_dW_1D_, h_factor_dW_2D_, h_factor_dW_3D_;
148 FactorFunctor h_factor_d2W_1D_, h_factor_d2W_2D_, h_factor_d2W_3D_;
150 Real factorW1D(
const Real& h_ratio)
const {
return h_ratio; };
151 Real factorW2D(
const Real& h_ratio)
const {
return h_ratio * h_ratio; };
152 Real factorW3D(
const Real& h_ratio)
const {
return h_ratio * h_ratio * h_ratio; };
153 Real factordW1D(
const Real& h_ratio)
const {
return factorW1D(h_ratio) * h_ratio; };
154 Real factordW2D(
const Real& h_ratio)
const {
return factorW2D(h_ratio) * h_ratio; };
155 Real factordW3D(
const Real& h_ratio)
const {
return factorW3D(h_ratio)* h_ratio; };
156 Real factord2W1D(
const Real& h_ratio)
const {
return factordW1D(h_ratio) * h_ratio; };
157 Real factord2W2D(
const Real& h_ratio)
const {
return factordW2D(h_ratio) * h_ratio; };
158 Real factord2W3D(
const Real& h_ratio)
const {
return factordW3D(h_ratio) * h_ratio; };
161 Real CutOffRadius(Real h_ratio)
const {
return cutoff_radius_ref_ / h_ratio; };
163 Real W(
const Real& h_ratio,
const Real& r_ij,
const Real& displacement)
const;
164 Real W(
const Real& h_ratio,
const Real& r_ij,
const Vec2d& displacement)
const;
165 Real W(
const Real& h_ratio,
const Real& r_ij,
const Vec3d& displacement)
const;
168 Real W0(
const Real& h_ratio,
const Real& point_i)
const;
169 Real W0(
const Real& h_ratio,
const Vec2d& point_i)
const;
170 Real W0(
const Real& h_ratio,
const Vec3d& point_i)
const;
173 Real dW(
const Real& h_ratio,
const Real& r_ij,
const Real& displacement)
const;
174 Real dW(
const Real& h_ratio,
const Real& r_ij,
const Vec2d& displacement)
const;
175 Real dW(
const Real& h_ratio,
const Real& r_ij,
const Vec3d& displacement)
const;
178 Real d2W(
const Real& h_ratio,
const Real& r_ij,
const Real& displacement)
const;
179 Real d2W(
const Real& h_ratio,
const Real& r_ij,
const Vec2d& displacement)
const;
180 Real d2W(
const Real& h_ratio,
const Real& r_ij,
const Vec3d& displacement)
const;
189 #endif //BASE_KERNELS_H
std::function< Real(const Real &)> FactorFunctor
Definition: base_kernel.h:145
virtual Real KernelSize() const
Definition: base_kernel.h:85
virtual Real W0(const Real &point_i) const
Definition: base_kernel.h:106
Abstract base class of a general SPH kernel function which is a smoothed Dirac delta function...
Definition: base_kernel.h:63
Real inv_h_
Definition: base_kernel.h:67
Real factor_dW_1D_
Definition: base_kernel.h:72
Real factor_d2W_1D_
Definition: base_kernel.h:74
Real factor_W_1D_
Definition: base_kernel.h:70
Definition: solid_body_supplementary.cpp:9