// The interface shared by the CPU and the GPU time loops. export interface ChunkResult { firstSample: number; // audio index of pressureFront[0] pressureFront: Float32Array; // baffled Rayleigh pressure [Pa] pressureBack: Float32Array; // diffracted back term [Pa]; unbaffled = front - back } export interface HitState { peakForce: number; contactTime: number; velocity: number; height: number } export interface Diagnostics { time: number; kinetic: number; membrane: number; bending: number; exciters: number; maxWoverH: number; hits: HitState[]; } export interface SimulatorBackend { readonly kind: "cpu" | "gpu"; readonly samplesDone: number; /** Advance by nSamples audio samples and return the pressure samples completed meanwhile. */ runChunk(nSamples: number): Promise; diagnostics(): Promise; /** Transverse displacement w at every node, for the plate view. */ displacement(): Promise; dispose(): void; }