Skip to content
Oakfield Operator Calculus Function Reference Site

Potential & Stimulus Operators

All stimulus operators take a destination field and an options table; most support scale_by_dt (bool) to scale writes by the simulation timestep.

sim_add_stimulus_operator(ctx, field, opts)

Travelling sinusoid.

  • type (required): "stimulus_sine".
  • amplitude (required): peak amplitude.
  • wavenumber (required): spatial wavenumber.
  • omega (required): angular frequency.
  • phase: phase offset.
  • origin, spacing: map index to coordinates.
  • time_offset: temporal shift.
  • nominal_dt, fixed_clock: lock timing when desired.
  • velocity: propagation speed.
  • rotation: complex phase rotation on output.
  • scale_by_dt: scale writes by dt.

Example:

sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_sine",
amplitude = 0.3,
wavenumber = 1.0,
omega = 0.6,
velocity = 0.2
})

sim_add_stimulus_operator(ctx, field, opts)

Standing-wave sinusoid (velocity defaults to 0).

  • type (required): "stimulus_standing".
  • Same parameters as stimulus_sine (amplitude, wavenumber, omega, phase, origin, spacing, time_offset, nominal_dt/fixed_clock, rotation).
  • Velocity typically 0; use phase to set node/antinode placement.

Example:

sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_standing",
amplitude = 0.4,
wavenumber = 0.8,
omega = 0.8,
phase = 0.25
})

sim_add_stimulus_operator(ctx, field, opts)

Sinusoid with time-varying frequency/wavenumber.

  • type (required): "stimulus_chirp".
  • amplitude, wavenumber, omega, phase, origin, spacing.
  • kdot (wavenumber rate), wdot (frequency rate) for chirp.
  • velocity, rotation, time_offset.
  • nominal_dt, fixed_clock, scale_by_dt.

Example:

sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_chirp",
amplitude = 0.5,
wavenumber = 1.0,
omega = 0.3,
kdot = 0.1,
wdot = 0.2
})

sim_add_stimulus_operator(ctx, field, opts)

Travelling sinusoid with Gaussian envelope.

  • type (required): "stimulus_gaussian_travel".
  • amplitude, wavenumber, omega, phase, origin, spacing.
  • Envelope: gaussian_center, gaussian_sigma (set >0 to enable).
  • velocity, rotation, time_offset.
  • nominal_dt, fixed_clock, scale_by_dt.

Example:

sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_gaussian_travel",
amplitude = 0.6,
wavenumber = 1.0,
omega = 0.5,
gaussian_sigma = 18.0,
gaussian_center = 0.0,
velocity = -0.3
})

sim_add_stimulus_operator(ctx, field, opts)

Pure Gaussian envelope (no carrier).

  • type (required): "stimulus_gaussian".
  • amplitude (required): peak amplitude.
  • center (default 0): envelope center coordinate.
  • sigma (required): width of Gaussian.
  • velocity (default 0): center propagation speed.
  • origin, spacing: index-to-coordinate mapping.
  • time_offset (optional), rotation (complex phase), nominal_dt, scale_by_dt.

Examples:

sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_gaussian",
center = 128,
sigma = 30,
amplitude = 1.0
})
sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_gaussian",
center = 0,
sigma = 10,
amplitude = 0.5
})

sim_add_stimulus_operator(ctx, field, opts)

Harmonic spikes in frequency.

  • type (required): "stimulus_spectral_lines".
  • amplitude (required): peak amplitude.
  • wavenumber, omega, phase: base line parameters.
  • harmonic_count (≥1): number of lines.
  • harmonic_power (≥0): power weighting across harmonics.
  • fixed_clock (bool), nominal_dt (optional), scale_by_dt.

Examples:

sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_spectral_lines",
amplitude = 1.0,
wavenumber = 0.5,
harmonic_count = 1
})
sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_spectral_lines",
amplitude = 0.2,
harmonic_count = 4,
harmonic_power = 0.9,
fixed_clock = true
})

sim_add_stimulus_operator(ctx, field, opts)

Checker/stripe pattern; works on complex fields.

  • type (required): "stimulus_checkerboard".
  • amplitude (required): pattern amplitude.
  • period_x, period_y: periods along each axis.
  • checker_phase: scalar phase offset.
  • checker_complex_phase: complex rotation applied to pattern.
  • scale_by_dt: scale writes by dt.

Examples:

sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_checkerboard",
amplitude = 1.0,
period_x = 8,
period_y = 8
})
sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_checkerboard",
amplitude = 0.5,
period_x = 12,
period_y = 6,
checker_complex_phase = 0.75
})

sim_add_stimulus_operator(ctx, field, opts)

Gaussian-windowed sinusoid.

  • type (required): "stimulus_gabor".
  • amplitude (required): peak amplitude.
  • wavenumber, omega, phase: carrier controls.
  • center, sigma (required): Gaussian window location/width.
  • origin, spacing: coordinate mapping.
  • velocity, rotation, time_offset.
  • nominal_dt, fixed_clock, scale_by_dt.

Examples:

sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_gabor",
amplitude = 0.4,
sigma = 12.0,
wavenumber = 0.5
})
sim.sim_add_stimulus_operator(ctx, field, {
type = "stimulus_gabor",
amplitude = 0.2,
omega = 0.5,
rotation = 0.3,
center = 64,
sigma = 20
})