90 [[nodiscard]] std::string
toString()
const override
92 std::ostringstream result;
93 result <<
"Parameters: ["
117 std::vector<double> scratch;
125 void init()
override;
126 void step(
double t,
double deltaT)
override;
127 void addInput(
const std::shared_ptr<Element>& inputElement,
128 const std::string& inputComponent =
"output")
override;
129 std::string
toString()
const override;
130 std::shared_ptr<Element>
clone()
const override;
Collapses a 2D input field to a 1D output by reducing along one axis.
Definition collapse.h:114
void addInput(const std::shared_ptr< Element > &inputElement, const std::string &inputComponent="output") override
Register inputElement as an upstream source for this element.
Definition collapse.cpp:60
void step(double t, double deltaT) override
Advance the element by one time step.
Definition collapse.cpp:38
void setParameters(const CollapseParameters ¶meters)
Definition collapse.cpp:139
std::string toString() const override
Definition collapse.cpp:113
CollapseParameters getParameters() const
Definition collapse.cpp:145
void init() override
Initialize the element (called once before the simulation loop).
Definition collapse.cpp:16
void changeInputDimensions(const ElementDimensions &newInputDimensions)
Resize the 2D input field dimensions and rebuild the input buffer.
Definition collapse.cpp:126
std::shared_ptr< Element > clone() const override
Definition collapse.cpp:121
Abstract base class for all simulation elements.
Definition element.h:28
ProjectionAxis
Spatial axis a projection acts on.
Definition collapse.h:41
CompressionType
Reduction applied when collapsing one axis of a 2D field to 1D.
Definition collapse.h:23
@ MAXIMUM
Maximum along the collapsed axis.
@ AVERAGE
Mean along the collapsed axis.
@ SUM
Sum along the collapsed axis.
@ MINIMUM
Minimum along the collapsed axis.
Definition element_parameters.h:10
tools::math::ReduceOp toReduceOp(const CompressionType type)
Maps a CompressionType to the corresponding math reduction op.
Definition collapse.h:53
const std::map< CompressionType, std::string > CompressionTypeToString
Maps CompressionType values to human-readable strings.
Definition collapse.h:31
const std::map< ProjectionAxis, std::string > ProjectionAxisToString
Maps ProjectionAxis values to human-readable strings.
Definition collapse.h:47
Parameters for a Collapse (2D -> 1D) element.
Definition collapse.h:68
CollapseParameters(const CompressionType compression=CompressionType::SUM, const ProjectionAxis keepAxis=ProjectionAxis::X, const ElementDimensions &inputDimensions=ElementDimensions{ 100, 100, 1.0, 1.0 })
Construct Collapse parameters.
Definition collapse.h:77
CompressionType compression
Reduction applied along the collapsed axis.
Definition collapse.h:69
ElementDimensions inputDimensions
Spatial dimensions of the 2D source field.
Definition collapse.h:71
bool operator==(const CollapseParameters &other) const
Definition collapse.h:83
ProjectionAxis keepAxis
Axis kept in the 1D output (the other is collapsed).
Definition collapse.h:70
std::string toString() const override
Definition collapse.h:90
Definition element_parameters.h:188
Definition element_parameters.h:159
std::string toString() const
Definition element_parameters.cpp:55
Definition element_parameters.h:206