30 constexpr double epsilon = 1e-6;
31 return std::abs(
width - other.
width) < epsilon &&
38 [[nodiscard]] std::string
toString()
const override
40 std::ostringstream result;
41 result << std::fixed << std::setprecision(2);
42 result <<
"Parameters: ["
43 <<
"Width: " <<
width <<
", "
46 <<
"Circular: " << (
circular ?
"true" :
"false") <<
", "
47 <<
"Normalized: " << (
normalized ?
"true" :
"false") <<
"]";
56 std::array<int, 2> kernelRange_x{};
57 std::array<int, 2> kernelRange_y{};
58 std::vector<int> extIndex_x;
59 std::vector<int> extIndex_y;
60 std::vector<double> kernel_1d_x;
61 std::vector<double> kernel_1d_y;
62 std::vector<double> scratchTmp_;
63 std::vector<double> scratchConvolution_;
69 void step(
double t,
double deltaT)
override;
70 std::string
toString()
const override;
71 std::shared_ptr<Element>
clone()
const override;
Definition gauss_kernel_2d.h:53
void init() override
Initialize the element (called once before the simulation loop).
Definition gauss_kernel_2d.cpp:18
GaussKernel2DParameters getParameters() const
Definition gauss_kernel_2d.cpp:113
void setParameters(const GaussKernel2DParameters ¶meters)
Definition gauss_kernel_2d.cpp:107
std::shared_ptr< Element > clone() const override
Definition gauss_kernel_2d.cpp:102
std::string toString() const override
Definition gauss_kernel_2d.cpp:94
void step(double t, double deltaT) override
Advance the element by one time step.
Definition gauss_kernel_2d.cpp:75
Abstract base class for all convolution-based interaction kernels.
Definition kernel.h:17
Definition element_parameters.h:10
Definition element_parameters.h:188
Definition element_parameters.h:206
Definition gauss_kernel_2d.h:14
bool operator==(const GaussKernel2DParameters &other) const
Definition gauss_kernel_2d.h:28
GaussKernel2DParameters(double width=3.0, double amplitude=3.0, double amplitudeGlobal=-0.01, bool circular=true, bool normalized=true)
Definition gauss_kernel_2d.h:21
double amplitude
Definition gauss_kernel_2d.h:16
double amplitudeGlobal
Definition gauss_kernel_2d.h:17
bool normalized
Definition gauss_kernel_2d.h:19
bool circular
Definition gauss_kernel_2d.h:18
double width
Definition gauss_kernel_2d.h:15
std::string toString() const override
Definition gauss_kernel_2d.h:38