29 this->zeroCrossings = 0.0;
31 this->zeroCrossings = 1.0;
39 constexpr double epsilon = 1e-6;
49 [[nodiscard]] std::string
toString()
const override
51 std::ostringstream result;
52 result << std::fixed << std::setprecision(2);
53 result <<
"Parameters: ["
55 <<
"Decay: " <<
decay <<
", "
58 <<
"Circular: " << (
circular ?
"true" :
"false") <<
", "
59 <<
"Normalized: " << (
normalized ?
"true" :
"false") <<
"]";
75 std::vector<double> scratchExtended;
76 std::vector<double> scratchConvolution;
85 void step(
double t,
double deltaT)
override;
86 std::string
toString()
const override;
87 std::shared_ptr<Element>
clone()
const override;
Abstract base class for all convolution-based interaction kernels.
Definition kernel.h:17
Damped-cosine convolution kernel for oscillatory field dynamics.
Definition oscillatory_kernel.h:72
void init() override
Initialize the element (called once before the simulation loop).
Definition oscillatory_kernel.cpp:15
void setParameters(const OscillatoryKernelParameters &ok_parameters)
Definition oscillatory_kernel.cpp:95
std::shared_ptr< Element > clone() const override
Definition oscillatory_kernel.cpp:89
OscillatoryKernelParameters getParameters() const
Definition oscillatory_kernel.cpp:109
void step(double t, double deltaT) override
Advance the element by one time step.
Definition oscillatory_kernel.cpp:60
std::string toString() const override
Definition oscillatory_kernel.cpp:81
Definition element_parameters.h:10
Definition element_parameters.h:188
Definition element_parameters.h:206
Parameters for an oscillatory (damped-cosine) convolution kernel.
Definition oscillatory_kernel.h:12
bool circular
Enable circular (toroidal) convolution.
Definition oscillatory_kernel.h:17
double amplitude
Overall kernel amplitude.
Definition oscillatory_kernel.h:13
bool operator==(const OscillatoryKernelParameters &other) const
Definition oscillatory_kernel.h:37
bool normalized
Normalise the kernel before convolution.
Definition oscillatory_kernel.h:18
double amplitudeGlobal
Spatially uniform inhibition added after convolution.
Definition oscillatory_kernel.h:16
std::string toString() const override
Definition oscillatory_kernel.h:49
double decay
Exponential envelope decay rate (must be > 0).
Definition oscillatory_kernel.h:14
OscillatoryKernelParameters(const double amplitude=1.0, const double decay=0.08, const double zeroCrossings=0.3, const double amplitudeGlobal=-0.01, const bool circular=true, const bool normalized=false)
Definition oscillatory_kernel.h:20
double zeroCrossings
Spatial frequency controlling oscillation period (clamped to [0, 1]).
Definition oscillatory_kernel.h:15