Advanced Examples
CLI Examples
Section titled “CLI Examples”Examples of more advanced Lua usage patterns, including on-step hooks, custom operators, async logging, and multi-field coupling.
1) Parameter Sweep with On-Step Hook
Section titled “1) Parameter Sweep with On-Step Hook”Sweeps wavenumber on operator index as
-- stimulus_sine_184#0 (schema=stimulus_sine, index=1)sim.sim_add_stimulus_operator(ctx, field, { type = "stimulus_sine", amplitude = 0.4, wavenumber = 1, omega = -0.4, spacing = 1})
local t = 0
sim.sim_on_step(ctx, function(c) t = t + 1 local sweep = math.sin(t * 0.0005) sim.sim_operator_param_set(c, 1, "wavenumber", sweep)end)2) Lua-defined Operator
Section titled “2) Lua-defined Operator”Defines a custom operator in Lua that counts simulation ticks and logs step metrics every 1000 steps.
local tick = 0local tick_op = sim.sim_add_operator(ctx, 'tick_counter', function(context) tick = tick + 1
if tick % 1000 == 0 then local metrics = sim.sim_step_metrics_latest(ctx) if metrics then sim.log("Step %d: dt=%.6f, writes=%d", tick, metrics.accepted_dt, metrics.dirty_writes) end
end return trueend)