1// A small cymbal for the tests: 30 cm across on a 30 mm mesh (about a hundred nodes), asymmetry
2// through rim warp, ovality and bell offset rather than dents (which a 30 mm mesh cannot see),
3// uniform damping only (sigma1 = 0) so the expected decay of every mode is exp(-2 sigma0 t).
4import { defaultConfig, type SimulationConfig } from "../src/config/schema.ts";
5import type { PrecomputeOptions } from "../src/precompute/pipeline.ts";
7export const ELEMENT_SIZE = 0.03;
9export function miniConfig(): SimulationConfig {
10 const cfg = defaultConfig();
11 cfg.hits = [];
12 cfg.profile.radius = 0.15;
13 cfg.profile.bell_height = 0.01;
14 cfg.profile.bell_top_radius = 0.02;
15 cfg.profile.bell_shoulder_radius = 0.06;
16 cfg.profile.bow_height = 0.02;
17 cfg.imperfections.n_dents = 0;
18 cfg.imperfections.rim_warp = 0.0005;
19 cfg.imperfections.shoulder_ovality = 0.03;
20 cfg.imperfections.bell_offset = 0.001;
21 cfg.mesh.element_size = ELEMENT_SIZE;
22 cfg.material.sigma0 = 8;
23 cfg.material.sigma1 = 0;
24 cfg.numerics.fs = 32000;
25 cfg.numerics.duration = 0.06;
26 cfg.numerics.cfl_safety = 0.8;
27 cfg.numerics.nonlinear = false;
28 return cfg;
29}
31export const OPTIONS: PrecomputeOptions = { elementSize: ELEMENT_SIZE, fmax: 4000 };
33export const noProgress = () => {};