Diffusion Operators
📉 Linear Dissipative
Section titled “📉 Linear Dissipative”sim_add_linear_dissipative_operator(ctx, field, opts)
Spectral fractional Laplacian. Parameters:
viscosity(required, ≥0): diffusion coefficient.alpha(0..2, default 2): fractional Laplacian power.spacing(>0, default 1.0): grid spacing used to scale |k|.
Example:
sim.sim_add_linear_dissipative_operator(ctx, field, { viscosity = 0.5, alpha = 1.3, spacing = 0.05})
sim.sim_add_linear_dissipative_operator(ctx, field, { viscosity = 0.0}) -- no-op/pass-through🔮 Linear Spectral Fusion
Section titled “🔮 Linear Spectral Fusion”sim_add_linear_spectral_fusion_operator(ctx, field, opts)
Fuses dissipation, dispersion, and phase shift in one FFT pair. Parameters:
viscosity(≥0): dissipation strength.alpha(0..2, default 2): dissipation order.dissipation_spacing(>0, default 1): scales |k| for dissipation.dispersion_coefficient(default 0): dispersion gain.dispersion_order(default 1): power on |k|.dispersion_reference_k(≥0, default 0): carrier offset.dispersion_spacing(>0, default 1): spacing for dispersion term.phase_rate(default 0): global phase rotation (rad/s).
Example:
sim.sim_add_linear_spectral_fusion_operator(ctx, field, { viscosity = 0.2, alpha = 2.0, dispersion_coefficient = 1.0, dispersion_order = 2.0, phase_rate = 0.0})
sim.sim_add_linear_spectral_fusion_operator(ctx, field, { dispersion_coefficient = 0.5, dispersion_order = 1.0})🌈 Dispersion
Section titled “🌈 Dispersion”sim_add_dispersion_operator(ctx, field, opts)
Pure spectral phase operator. Parameters:
coefficient(required, -10..10): phase gain.order(0..4, default 2): |k| power.spacing(>0, default 1): grid spacing scaling.reference_k(≥0, default 0): carrier wavenumber offset.
Example:
sim.sim_add_dispersion_operator(ctx, field, { coefficient = 1.0, order = 2.0})
sim.sim_add_dispersion_operator(ctx, field, { coefficient = -0.5, order = 1.0, reference_k = 0.25})🧠 Fractional Memory
Section titled “🧠 Fractional Memory”sim_add_fractional_memory_operator(ctx, field, opts)
Long-range fractional derivative accumulator.
order(required, 0<order≤1): fractional power.gain(default 0.5): scale applied to response.memory_steps(integer≥1): history length.
Example:
sim.sim_add_fractional_memory_operator(ctx, field, { order = 0.6, gain = 0.25, memory_steps = 128})
sim.sim_add_fractional_memory_operator(ctx, field, { order = 1.0}) -- first-order lagRead/modify an existing fractional-memory operator
Section titled “Read/modify an existing fractional-memory operator”sim_fractional_memory_config(ctx, op_index) -> table|nilreturns{ field_index, order, gain, memory_steps }.sim_fractional_memory_update(ctx, op_index, opts) -> trueupdates the live operator; only provided fields are touched.
local cfg = sim.sim_fractional_memory_config(ctx, op_index)if cfg then sim.log("fracmem: field=%d order=%.2f gain=%.3f steps=%d", cfg.field_index, cfg.order, cfg.gain, cfg.memory_steps)end
-- Increase memory and gainsim.sim_fractional_memory_update(ctx, op_index, { memory_steps = 256, gain = 0.35,})