Stimulus: Beam & Wavelet Families
These operators share the coordinate mapping and timing controls documented on Stimulus Operators. Most entries use add_stimulus_operator(ctx, field, opts) with the operator-specific type shown below.
Gaussian Pulse 💥
Section titled “Gaussian Pulse 💥”add_stimulus_operator(ctx, field, opts)
Generate a pure Gaussian envelope without carrier oscillation. Models localized pulses, initial conditions, and smooth spatial masks.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_gaussian_pulse".
Mathematical Formulation
Section titled “Mathematical Formulation”1D:
2D separable:
Parameters
Section titled “Parameters”| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
type | string | — | — | Must be "stimulus_gaussian_pulse" |
amplitude | double | unbounded | Peak amplitude (required) | |
center_x, center_y | double | 0.0 | unbounded | 1D/2D center position |
sigma_x, sigma_y | double | 1.0 | >0 | 1D/2D standard deviations |
velocity_x, velocity_y | double | 0.0 | unbounded | 1D/2D velocities |
time_offset | double | 0.0 | unbounded | Temporal shift |
rotation | double | 0.0 | unbounded | Complex phase rotation |
Plus timing parameters.
Examples
Section titled “Examples”-- Static 1D Gaussianooc.add_stimulus_operator(ctx, field, { type = "stimulus_gaussian_pulse", coord_center_x = 128, sigma_x = 30, amplitude = 1.0})
-- Moving pulseooc.add_stimulus_operator(ctx, field, { type = "stimulus_gaussian_pulse", coord_center_x = 0, sigma_x = 10, amplitude = 0.5, velocity_x = 2.0})
-- 2D elliptical Gaussianooc.add_stimulus_operator(ctx, field, { type = "stimulus_gaussian_pulse", amplitude = 0.8, coord_mode = "separable", coord_center_x = 128, coord_center_y = 128, sigma_x = 20, sigma_y = 40})Gabor Kernel 📦
Section titled “Gabor Kernel 📦”add_stimulus_operator(ctx, field, opts)
Generate a Gaussian-windowed sinusoid (Gabor function). Optimal for joint time-frequency localization and models neural receptive fields.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_gabor".
Mathematical Formulation
Section titled “Mathematical Formulation”1D:
2D with envelope rotation:
where are coordinates rotated by envelope_angle.
Parameters
Section titled “Parameters”| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
type | string | — | — | Must be "stimulus_gabor" |
amplitude | double | unbounded | Peak amplitude (required) | |
wavenumber | double | unbounded | Carrier wavenumber | |
omega | double | 0.0 | unbounded | Carrier frequency |
phase | double | 0.0 | unbounded | Carrier phase |
center_x, center_y | double | 0.0 | unbounded | 1D/2D center |
sigma_x, sigma_y | double | 1.0 | >0 | 1D/2D envelope widths |
velocity_x, velocity_y | double | 0.0 | unbounded | 1D/2D velocities |
envelope_angle | double | 0.0 | unbounded | Envelope rotation (radians) |
rotation | double | 0.0 | unbounded | Complex output rotation |
time_offset | double | 0.0 | unbounded | Temporal shift |
Plus timing parameters.
Examples
Section titled “Examples”-- 1D Gabor waveletooc.add_stimulus_operator(ctx, field, { type = "stimulus_gabor", amplitude = 0.4, sigma_x = 12.0, wavenumber = 0.5})
-- Moving Gabor pulseooc.add_stimulus_operator(ctx, field, { type = "stimulus_gabor", amplitude = 0.2, omega = 0.5, rotation = 0.3, coord_center_x = 64, sigma_x = 20, velocity_x = 1.0})
-- 2D oriented Gabor (receptive field model)ooc.add_stimulus_operator(ctx, field, { type = "stimulus_gabor", amplitude = 0.5, coord_mode = "separable", coord_center_x = 128, coord_center_y = 128, sigma_x = 15, sigma_y = 30, wavenumber = 0.3, envelope_angle = math.pi / 4})Morlet Wavelet Field 🌊
Section titled “Morlet Wavelet Field 🌊”add_stimulus_operator(ctx, field, opts)
Generate a multi-scale Morlet wavelet packet field: a superposition of Gaussian-windowed complex sinusoids at geometrically-spaced spatial scales. Supports drifting center position, orientation control, and explicit coordinate mapping.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_morlet_field".
Mathematical Formulation
Section titled “Mathematical Formulation”Each scale contributes a complex Morlet atom at effective time :
where rotated local coordinates are
with per-scale definitions:
- (
base_wavenumber×scale_growth) - (
sigma_base×sigma_growth)
When zero_mean = true, the implementation subtracts the standard Morlet correction from the real carrier term only:
The injected write is normalized by scale count:
For real fields, only is added. For complex fields, both real and imaginary parts are added, then rotation is applied.
Parameters
Section titled “Parameters”| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
type | string | — | — | Must be "stimulus_morlet_field" |
amplitude | double | 0.0 | unbounded | Overall amplitude (0.0 writes nothing) |
scales | integer | 4 | 1..64 | Number of Morlet scales (clamped to 64) |
base_wavenumber | double | 1.0 | unbounded | Carrier wavenumber at scale 0 (rad/unit) |
scale_growth | double | 2.0 | nonzero | Geometric growth of carrier wavenumber (absolute value used; zero falls back to default) |
sigma_base | double | 0.75 | (0, 8] | Gaussian envelope width at scale 0 |
sigma_growth | double | 1.5 | nonzero | Geometric growth of envelope width (absolute value used; zero falls back to default) |
center_u | double | 0.0 | unbounded | Wavelet center along local u coordinate |
center_v | double | 0.0 | unbounded | Wavelet center along local v coordinate |
velocity_u | double | 0.0 | unbounded | Center drift velocity along u (units/s) |
velocity_v | double | 0.0 | unbounded | Center drift velocity along v (units/s) |
orientation | double | 0.0 | unbounded | Wavelet orientation angle (radians) |
orientation_rate | double | 0.0 | unbounded | Orientation drift rate (rad/s) |
omega | double | 0.0 | unbounded | Temporal angular frequency (rad/s) |
phase | double | 0.0 | unbounded | Global phase offset (radians) |
time_offset | double | 0.0 | unbounded | Additional time shift |
rotation | double | 0.0 | unbounded | Complex phase rotation on output (radians) |
zero_mean | boolean | true | — | Apply Morlet zero-mean correction |
scale_by_dt | boolean | false | — | Scale writes by dt |
use_wavevector | boolean | false | — | Evaluate in (kx,ky) wavevector frame (also auto-enabled if nonzero kx or ky is provided) |
kx, ky | double | 0.0 | unbounded | Wavevector components; if wavevector mode is active and both are zero, runtime uses (1, 0) |
Plus coordinate mapping parameters (coord_mode, coord_axis, coord_combine, coord_angle, origin_x/y, spacing_x/y, coord_center_x/y, coord_velocity_x/y, spiral params).
Examples
Section titled “Examples”-- Basic 5-scale Morlet wavelet fieldooc.add_stimulus_operator(ctx, field, { type = "stimulus_morlet_field", amplitude = 0.8, scales = 5, base_wavenumber = 1.2, sigma_base = 0.75})
-- Oriented and drifting Morletooc.add_stimulus_operator(ctx, field, { type = "stimulus_morlet_field", amplitude = 0.6, scales = 4, base_wavenumber = 1.0, orientation = math.pi / 4, velocity_u = 0.5})
-- Slowly rotating wavelet fieldooc.add_stimulus_operator(ctx, field, { type = "stimulus_morlet_field", amplitude = 0.5, scales = 6, base_wavenumber = 0.8, scale_growth = 1.8, sigma_base = 0.9, orientation_rate = 0.15})
-- High-sigma broad envelope with temporal oscillationooc.add_stimulus_operator(ctx, field, { type = "stimulus_morlet_field", amplitude = 0.4, scales = 3, base_wavenumber = 2.0, sigma_base = 1.5, sigma_growth = 1.2, omega = 0.5})Steerable Wavelet 🔭
Section titled “Steerable Wavelet 🔭”add_stimulus_operator(ctx, field, opts)
Generate a multi-scale steerable wavelet stimulus using Simoncelli or Riesz wavelet families. Provides direction-selective, multi-resolution spatial structure with controllable angular bandwidth and orientation.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_steerable_wavelet".
Mathematical Formulation
Section titled “Mathematical Formulation”Each scale contributes a steerable filter response at orientation :
Simoncelli family (raised cosine in log-polar frequency):
Riesz family (order- Riesz transform):
where:
- is the log-radius Gaussian with bandwidth
radial_bandwidth - is the angular envelope raised to
order - is the per-scale wavenumber
The spatial-domain output is the sum over scales:
evaluated at each pixel by direct synthesis (not via FFT).
Parameters
Section titled “Parameters”| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
type | string | — | — | Must be "stimulus_steerable_wavelet" |
amplitude | double | — | unbounded | Overall amplitude (required) |
wavelet_family | enum | "simoncelli" | see below | Steerable wavelet family |
order | integer | 1 | ≥1 | Steering order (angular harmonic) |
scales | integer | 4 | ≥1 | Number of radial scales |
base_wavenumber | double | 1.0 | unbounded | Base radial wavenumber at scale 0 (rad/unit) |
scale_growth | double | 2.0 | (0, 8] | Geometric growth factor between scales |
radial_bandwidth | double | 0.65 | [0.05, 4] | Log-radius Gaussian bandwidth |
angular_sharpness | double | 1.0 | [0.1, 16] | Angular envelope sharpness |
orientation | double | 0.0 | unbounded | Steering orientation angle (radians) |
orientation_rate | double | 0.0 | unbounded | Angular steering drift rate (rad/s) |
omega | double | 0.0 | unbounded | Temporal angular frequency (rad/s) |
phase | double | 0.0 | unbounded | Global phase offset across scales (radians) |
time_offset | double | 0.0 | unbounded | Additional time shift |
rotation | double | 0.0 | unbounded | Complex phase rotation on output (radians) |
scale_by_dt | boolean | false | — | Scale writes by dt |
use_wavevector | boolean | false | — | Evaluate in (kx,ky) wavevector frame |
kx, ky | double | 0.0 | unbounded | Wavevector components (when use_wavevector = true) |
Wavelet family options: simoncelli, riesz
Plus coordinate mapping parameters.
Examples
Section titled “Examples”-- Basic Simoncelli steerable waveletooc.add_stimulus_operator(ctx, field, { type = "stimulus_steerable_wavelet", amplitude = 0.7, wavelet_family = "simoncelli", scales = 4, order = 2})
-- Riesz family with high steering orderooc.add_stimulus_operator(ctx, field, { type = "stimulus_steerable_wavelet", amplitude = 0.6, wavelet_family = "riesz", order = 3, scales = 5, orientation = math.pi / 6})
-- Slowly rotating steerable waveletooc.add_stimulus_operator(ctx, field, { type = "stimulus_steerable_wavelet", amplitude = 0.5, wavelet_family = "simoncelli", scales = 4, order = 2, orientation_rate = 0.2, angular_sharpness = 2.0})
-- Narrow-band single-scale Rieszooc.add_stimulus_operator(ctx, field, { type = "stimulus_steerable_wavelet", amplitude = 0.4, wavelet_family = "riesz", scales = 1, base_wavenumber = 1.5, radial_bandwidth = 0.3, order = 4})Heat Kernel ♨️
Section titled “Heat Kernel ♨️”add_stimulus_operator(ctx, field, opts)
Inject a diffusing Gaussian heat kernel whose width grows over time according to the heat equation. This is useful for thermal diffusion demos, broadening pulses, and soft sources that spread as the simulation advances.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_heat_kernel".
Mathematical Formulation
Section titled “Mathematical Formulation”The kernel broadens over time as
and the injected profile is
with optional mass preservation multiplying by .
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | — | Must be "stimulus_heat_kernel" |
diffusivity | double | 0.0 | Heat diffusivity controlling spread rate |
sigma_x | double | 1.0 | Initial width along X/local U |
sigma_y | double | 1.0 | Initial width along Y/local V |
preserve_mass | boolean | false | Preserve integrated mass as the kernel broadens |
Plus shared coordinate mapping and timing parameters (amplitude, time_offset, rotation, nominal_dt, fixed_clock, scale_by_dt).
Examples
Section titled “Examples”-- Diffusing thermal packetooc.add_stimulus_operator(ctx, field, { type = "stimulus_heat_kernel", amplitude = 0.5, diffusivity = 0.15, sigma_x = 8.0})
-- Mass-preserving anisotropic spreadooc.add_stimulus_operator(ctx, field, { type = "stimulus_heat_kernel", amplitude = 0.4, diffusivity = 0.08, sigma_x = 4.0, sigma_y = 12.0, preserve_mass = true})Optical Vortex 🌀
Section titled “Optical Vortex 🌀”add_stimulus_operator(ctx, field, opts)
Generate an optical vortex beam with a phase singularity and topological charge. This is useful for orbital-angular-momentum demos, dark-core beam patterns, and rotational phase structure.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_optical_vortex".
Mathematical Formulation
Section titled “Mathematical Formulation”In a local beam frame,
where is the integer charge, is the normalized radial coordinate set by waist_x and waist_y, and is the local polar angle.
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | — | Must be "stimulus_optical_vortex" |
charge | integer | 1 | Topological charge controlling phase winding |
waist_x | double | 0.75 | Beam waist along local U |
waist_y | double | 0.75 | Beam waist along local V |
center_u, center_v | double | 0.0 | Beam center in the local frame |
velocity_u, velocity_v | double | 0.0 | Beam-center drift velocity |
orientation | double | 0.0 | Beam orientation angle |
orientation_rate | double | 0.0 | Beam orientation drift rate |
Plus shared coordinate mapping and timing parameters (amplitude, omega, phase, time_offset, rotation, scale_by_dt).
Examples
Section titled “Examples”ooc.add_stimulus_operator(ctx, field, { type = "stimulus_optical_vortex", amplitude = 0.6, charge = 1, waist_x = 0.8})
ooc.add_stimulus_operator(ctx, field, { type = "stimulus_optical_vortex", amplitude = 0.4, charge = 2, orientation = math.pi / 6})Airy Beam 🪶
Section titled “Airy Beam 🪶”add_stimulus_operator(ctx, field, opts)
Generate a finite-energy separable Airy beam with configurable apodization and carrier tilt. This is useful for self-bending beam demos and accelerating-wave patterns.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_airy_beam".
Mathematical Formulation
Section titled “Mathematical Formulation”The beam uses separable Airy envelopes with finite-energy tapers:
where scale_u/v set and apodization_u/v set .
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | — | Must be "stimulus_airy_beam" |
scale_u, scale_v | double | 0.45 | Airy scaling along the local frame axes |
apodization_u, apodization_v | double | 0.12 | Finite-energy taper along each local axis |
center_u, center_v | double | 0.0 | Beam center in the local frame |
velocity_u, velocity_v | double | 0.0 | Beam-center drift velocity |
orientation | double | 0.0 | Beam orientation angle |
orientation_rate | double | 0.0 | Beam orientation drift rate |
carrier_u, carrier_v | double | 0.0 | Carrier tilt applied along the local axes |
Plus shared coordinate mapping and timing parameters (amplitude, omega, phase, time_offset, rotation, scale_by_dt).
Examples
Section titled “Examples”ooc.add_stimulus_operator(ctx, field, { type = "stimulus_airy_beam", amplitude = 0.5, scale_u = 0.4, apodization_u = 0.12})
ooc.add_stimulus_operator(ctx, field, { type = "stimulus_airy_beam", amplitude = 0.35, carrier_u = 2.0, carrier_v = -1.0, orientation = math.pi / 8})Zone Plate 🎯
Section titled “Zone Plate 🎯”add_stimulus_operator(ctx, field, opts)
Generate a Fresnel-style zone plate with quadratic radial phase and Gaussian aperture. This is useful for diffraction-inspired rings, focusing masks, and radial chirp patterns.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_zone_plate".
Mathematical Formulation
Section titled “Mathematical Formulation”In the local plate frame,
where is radial_chirp and .
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | — | Must be "stimulus_zone_plate" |
radial_chirp | double | 18.0 | Quadratic radial chirp controlling ring spacing |
scale_u, scale_v | double | 1.0 | Radial scaling along the local frame |
aperture_u, aperture_v | double | 1.6 | Gaussian aperture width along the local axes |
center_u, center_v | double | 0.0 | Plate center in the local frame |
velocity_u, velocity_v | double | 0.0 | Plate-center drift velocity |
orientation | double | 0.0 | Plate orientation angle |
orientation_rate | double | 0.0 | Plate orientation drift rate |
Plus shared coordinate mapping and timing parameters (amplitude, omega, phase, time_offset, rotation, scale_by_dt).
Examples
Section titled “Examples”ooc.add_stimulus_operator(ctx, field, { type = "stimulus_zone_plate", amplitude = 0.7, radial_chirp = 24.0, aperture_u = 1.3})
ooc.add_stimulus_operator(ctx, field, { type = "stimulus_zone_plate", amplitude = 0.5, scale_u = 0.75, scale_v = 1.25, orientation = math.pi / 6})Bessel Beam 🧵
Section titled “Bessel Beam 🧵”add_stimulus_operator(ctx, field, opts)
Generate an integer-order cylindrical Bessel beam with configurable radial wavenumber. This is useful for non-diffracting beam demos, cylindrical modes, and ringed phase fronts.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_bessel_beam".
Mathematical Formulation
Section titled “Mathematical Formulation”In the local beam frame,
where order sets the integer , radial_wavenumber sets , and is the scaled radial coordinate.
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | — | Must be "stimulus_bessel_beam" |
order | integer | 0 | Cylindrical Bessel order |
radial_wavenumber | double | 8.0 | Radial wavenumber applied to |
scale_u, scale_v | double | 1.0 | Radial scaling along the local frame axes |
center_u, center_v | double | 0.0 | Beam center in the local frame |
velocity_u, velocity_v | double | 0.0 | Beam-center drift velocity |
orientation | double | 0.0 | Beam orientation angle |
orientation_rate | double | 0.0 | Beam orientation drift rate |
Plus shared coordinate mapping and timing parameters (amplitude, omega, phase, time_offset, rotation, scale_by_dt).
Examples
Section titled “Examples”ooc.add_stimulus_operator(ctx, field, { type = "stimulus_bessel_beam", amplitude = 0.5, order = 0, radial_wavenumber = 10.0})
ooc.add_stimulus_operator(ctx, field, { type = "stimulus_bessel_beam", amplitude = 0.35, order = 2, orientation_rate = 0.1})Hermite-Gaussian Beam 🔬
Section titled “Hermite-Gaussian Beam 🔬”add_stimulus_operator(ctx, field, opts)
Generate separable Hermite-Gaussian transverse modes inside a Gaussian envelope. This is useful for cavity-mode demos, paraxial beam families, and mode-superposition studies.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_hermite_gaussian_beam".
Mathematical Formulation
Section titled “Mathematical Formulation”where mode_u/v set the Hermite indices and waist_u/v set the beam waists.
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | — | Must be "stimulus_hermite_gaussian_beam" |
mode_u, mode_v | integer | 0 | Hermite mode indices along the local axes |
waist_u, waist_v | double | 0.75 | Beam waist along the local axes |
center_u, center_v | double | 0.0 | Beam center in the local frame |
velocity_u, velocity_v | double | 0.0 | Beam-center drift velocity |
orientation | double | 0.0 | Beam orientation angle |
orientation_rate | double | 0.0 | Beam orientation drift rate |
carrier_u, carrier_v | double | 0.0 | Carrier tilt along the local axes |
Plus shared coordinate mapping and timing parameters (amplitude, omega, phase, time_offset, rotation, scale_by_dt).
Examples
Section titled “Examples”ooc.add_stimulus_operator(ctx, field, { type = "stimulus_hermite_gaussian_beam", amplitude = 0.6, mode_u = 1, mode_v = 0, waist_u = 0.75})
ooc.add_stimulus_operator(ctx, field, { type = "stimulus_hermite_gaussian_beam", amplitude = 0.45, mode_u = 2, mode_v = 1, carrier_u = 1.5})Traveling Wave Packet 📦
Section titled “Traveling Wave Packet 📦”add_stimulus_operator(ctx, field, opts)
Generate a Gaussian-envelope traveling wave packet with configurable carrier and drift. This is useful for localized transport, dispersive-packet demos, and moving coherent structures.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_traveling_wave_packet".
Mathematical Formulation
Section titled “Mathematical Formulation”The packet envelope is
and the injected field is
with the packet center drifting through the local frame over time.
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | — | Must be "stimulus_traveling_wave_packet" |
sigma_u, sigma_v | double | 0.75 | Packet width along the local axes |
center_u, center_v | double | 0.0 | Packet center in the local frame |
velocity_u, velocity_v | double | 0.0 | Packet-center drift velocity |
orientation | double | 0.0 | Packet orientation angle |
orientation_rate | double | 0.0 | Packet orientation drift rate |
carrier_u, carrier_v | double | 0.0 | Carrier wavenumber along the local axes |
Plus shared coordinate mapping and timing parameters (amplitude, omega, phase, time_offset, rotation, scale_by_dt).
Examples
Section titled “Examples”ooc.add_stimulus_operator(ctx, field, { type = "stimulus_traveling_wave_packet", amplitude = 0.6, sigma_u = 0.7, carrier_u = 3.6, velocity_u = 0.12})
ooc.add_stimulus_operator(ctx, field, { type = "stimulus_traveling_wave_packet", amplitude = 0.4, sigma_v = 1.2, carrier_v = 2.0, orientation = math.pi / 4})Cylindrical Wave Emitter 📡
Section titled “Cylindrical Wave Emitter 📡”add_stimulus_operator(ctx, field, opts)
Generate a regularized cylindrical wave radiating from a moving point source. This is useful for 2D wave-emitter demos, soft singular sources, and outgoing radial phase fronts.
Method Signature
Section titled “Method Signature”add_stimulus_operator(ctx, field, [options]) -> operatorReturns: Operator handle (userdata)
Note: Requires type = "stimulus_cylindrical_wave_emitter".
Mathematical Formulation
Section titled “Mathematical Formulation”With softened radius
the emitted field is
where softening_radius supplies , attenuation supplies , and radial_wavenumber supplies .
Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | — | Must be "stimulus_cylindrical_wave_emitter" |
radial_wavenumber | double | 8.0 | Radial wavenumber of the outgoing phase front |
attenuation | double | 0.0 | Exponential attenuation factor |
softening_radius | double | 0.1 | Core radius used to regularize the source singularity |
center_u, center_v | double | 0.0 | Emitter center in the local frame |
velocity_u, velocity_v | double | 0.0 | Emitter-center drift velocity |
Plus shared coordinate mapping and timing parameters (amplitude, omega, phase, time_offset, rotation, scale_by_dt).
Examples
Section titled “Examples”ooc.add_stimulus_operator(ctx, field, { type = "stimulus_cylindrical_wave_emitter", amplitude = 0.7, radial_wavenumber = 9.0, attenuation = 0.2})
ooc.add_stimulus_operator(ctx, field, { type = "stimulus_cylindrical_wave_emitter", amplitude = 0.4, softening_radius = 0.2, velocity_u = 0.05})