5#ifndef OAKFIELD_MINIMAL_CONVOLUTION_H
6#define OAKFIELD_MINIMAL_CONVOLUTION_H
20 SIM_MINIMAL_CONVOLUTION_MAX_TAPS = 9,
21 SIM_MINIMAL_CONVOLUTION_MAX_TAPS_2D =
22 SIM_MINIMAL_CONVOLUTION_MAX_TAPS * SIM_MINIMAL_CONVOLUTION_MAX_TAPS,
49 double kernel[SIM_MINIMAL_CONVOLUTION_MAX_TAPS];
54 double kernel_2d[SIM_MINIMAL_CONVOLUTION_MAX_TAPS_2D];
SimResult
Return codes shared by libsimcore modules.
Definition field.h:29
SimIRBoundaryPolicy
Boundary handling policy for differential operators.
Definition kernel_ir.h:82
SimResult sim_minimal_convolution_config(struct SimContext *context, size_t operator_index, SimMinimalConvolutionOperatorConfig *out_config)
Copy the current minimal-convolution configuration from a registered operator.
SimResult sim_minimal_convolution_update(struct SimContext *context, size_t operator_index, const SimMinimalConvolutionOperatorConfig *config)
Replace the configuration of a registered minimal-convolution operator.
SimMinimalConvolutionAxis
Axis selection for one-dimensional kernels on two-dimensional fields.
Definition minimal_convolution.h:37
@ SIM_MINIMAL_CONVOLUTION_AXIS_X
Definition minimal_convolution.h:38
@ SIM_MINIMAL_CONVOLUTION_AXIS_Y
Definition minimal_convolution.h:39
SimMinimalConvolutionMode
Supported minimal-convolution kernel layouts.
Definition minimal_convolution.h:28
@ SIM_MINIMAL_CONVOLUTION_MODE_AXIS
Definition minimal_convolution.h:29
@ SIM_MINIMAL_CONVOLUTION_MODE_KERNEL_2D
Definition minimal_convolution.h:31
@ SIM_MINIMAL_CONVOLUTION_MODE_SEPARABLE
Definition minimal_convolution.h:30
SimResult sim_add_minimal_convolution_operator(struct SimContext *context, const SimMinimalConvolutionOperatorConfig *config, size_t *out_index)
Register a minimal convolution operator.
Declarative complex-first operator splitting (substep expansion at plan time).
Simulation runtime state.
Definition sim_context.h:70
Configuration for the minimal convolution operator.
Definition minimal_convolution.h:45
bool wrap
Definition minimal_convolution.h:56
bool scale_by_dt
Definition minimal_convolution.h:59
bool accumulate
Definition minimal_convolution.h:58
size_t output_field
Definition minimal_convolution.h:47
double kernel_2d[SIM_MINIMAL_CONVOLUTION_MAX_TAPS_2D]
Definition minimal_convolution.h:54
size_t stride
Definition minimal_convolution.h:55
size_t input_field
Definition minimal_convolution.h:46
size_t kernel_rows
Definition minimal_convolution.h:52
double kernel[SIM_MINIMAL_CONVOLUTION_MAX_TAPS]
Definition minimal_convolution.h:49
size_t kernel_length
Definition minimal_convolution.h:48
size_t kernel_cols
Definition minimal_convolution.h:53
SimMinimalConvolutionAxis axis
Definition minimal_convolution.h:51
SimMinimalConvolutionMode mode
Definition minimal_convolution.h:50
SimIRBoundaryPolicy boundary
Definition minimal_convolution.h:57