fmm3dbie-webgpu-poc
Acoustic fields at a fixed frequency, solved with a high-order boundary integral equation on your GPU through WebGPU, in single precision: a point source in a closed room with partially absorbing walls, or a listener near a rigid cymbal in free space. This is a browser port of a CUDA proof of concept for fmm3dbie's Helmholtz impedance solver. Choose the problem, press Solve, then turn the view with the mouse and click a slice to move the source.
| no solve yet |
What is computed
The room is the superellipsoid |x|p + |y|p + |z|p = 1, with a point source inside and impedance walls (∂u/∂n − ikβu = 0). We solve fmm3dbie's combined field integral equation on 6m² curved patches: near interactions use precomputed quadrature weights, far interactions a direct sum, and GMRES runs on the CPU. The GPU work is in single precision.
The cymbal is 40 cm across, stationary and sound-hard, in free space, with a listener nearby. We put the source at the listener: by reciprocity the field u(x) is then the pressure at the listener due to a unit source at x, so one solve gives the listener's response to a source anywhere. The planes cut a 1 m box around the cymbal, which only selects where the field is shown; the integral equation needs no truncation. Since fmm3dbie's equations need a closed surface, the cymbal is a thin closed body with a raised bell, 20 mm thick at the center and thinner toward the rounded rim. The level is shown relative to the free field, so that 0 dB means no effect of the cymbal.
The self-test solves a problem with a known solution and reports the error. The energy mismatch compares the power from the source with the power absorbed by the walls, or, for the cymbal, with the power radiated to infinity. Large cases may need more GPU memory than the browser allows.