/ challenges-old / cymbal-solutions
Sign in
challenges-old / cymbal-solutions
Chain script for the 1000 N strike; drop the solutions of the superseded strike
Jeremy Magland <jmagland@flatironinstitute.org> committed commit e396ced47244 parent 69c83be Browse files
8 changed files+5−112
solutions/cymbal-flat-disk-v1/vonkarman-modal.jsondeleted+0−101View file
@@ -1,101 +0,0 @@
1-{
2- "schema_version": 1,
3- "submission_id": "vonkarman-modal",
4- "challenge_id": "cymbal-flat-disk-v1",
5- "submitter": {
6- "name": "Jeremy Magland",
7- "email": "jmagland@flatironinstitute.org"
8- },
9- "date": "2026-09-17",
10- "description": "Von Karman thin-plate reduction (Airy stress function, in-plane inertia neglected, damping on bending only) of the challenge model on a Cartesian grid: the disk is approximated by the square cells whose centers lie inside it (a staircase boundary) at 8 mm and 4 mm spacing. Linear free-plate modes and clamped Airy modes come from Bogner-Fox-Schmit finite elements on the cells and a sparse shift-invert eigensolver; the bases are restricted to functions even in y, which is exact because the strike is centered on the x axis. The cubic coupling tensor is integrated on the cells, the time stepping is a two-step scheme exact in the linear part, and the retarded Rayleigh integral uses cubic fractional delays. The chain is ordered by grid spacing, number of modes, and time step; the mode truncation caps the frequency the cascade can reach. Caution on the staircase: the free disk's low modes radiate as a near-cancelling sum, and the staircase edge breaks that cancellation. In the linear closed-form solution on the same meshes the ring level after the strike falls from 0.040 Pa rms at 8 mm to 0.016 at 6 mm, 0.012 at 4 mm and 0.0096 at 3 mm, while the mode frequencies agree to within a percent. The 8 mm members therefore ring several times too loud and the 4 mm members are probably still 20 to 30 percent too loud; the large waveform and spectrogram errors between the two grids reflect this, not the number of modes. A boundary-conforming discretization is needed for the radiated pressure to converge.",
11- "code_url": "https://vault1.magland.org/challenges/cymbal-solutions/blob/main/solvers/vonkarman-modal-disk/vk_modal_disk.py",
12- "viz_url": "https://vault1.magland.org/challenges/cymbal-solutions/site/",
13- "solutions": [
14- {
15- "solution_id": "vk-g8-w100-a100-m1",
16- "output": "vonkarman-modal/vk-g8-w100-a100-m1.wav",
17- "method": "von Karman plate (Airy form) on a Cartesian grid masked to the disk, modal method on Bogner-Fox-Schmit modes, Gautschi-type integrator exact in the linear part, retarded Rayleigh integral with cubic fractional delays",
18- "parameters": {
19- "grid_spacing_m": 0.008,
20- "cells": 2024,
21- "n_dof": 8500,
22- "transverse_modes": 100,
23- "basis_even_in_y": true,
24- "airy_modes": 100,
25- "oversampling": 1,
26- "dt_s": 2.0833333333333333e-05,
27- "highest_transverse_mode_hz": 2776.3
28- },
29- "timing_seconds": 137.981,
30- "more_accurate_than": [],
31- "hardware": "Intel Core i7-1355U laptop (2 performance + 8 efficiency cores, 40 GB), single process, numpy/scipy with OpenBLAS"
32- },
33- {
34- "solution_id": "vk-g8-w200-a200-m1",
35- "output": "vonkarman-modal/vk-g8-w200-a200-m1.wav",
36- "method": "von Karman plate (Airy form) on a Cartesian grid masked to the disk, modal method on Bogner-Fox-Schmit modes, Gautschi-type integrator exact in the linear part, retarded Rayleigh integral with cubic fractional delays",
37- "parameters": {
38- "grid_spacing_m": 0.008,
39- "cells": 2024,
40- "n_dof": 8500,
41- "transverse_modes": 200,
42- "basis_even_in_y": true,
43- "airy_modes": 200,
44- "oversampling": 1,
45- "dt_s": 2.0833333333333333e-05,
46- "highest_transverse_mode_hz": 5832.6
47- },
48- "timing_seconds": 748.714,
49- "more_accurate_than": [
50- "vk-g8-w100-a100-m1"
51- ],
52- "hardware": "Intel Core i7-1355U laptop (2 performance + 8 efficiency cores, 40 GB), single process, numpy/scipy with OpenBLAS"
53- },
54- {
55- "solution_id": "vk-g4-w200-a200-m2",
56- "output": "vonkarman-modal/vk-g4-w200-a200-m2.wav",
57- "method": "von Karman plate (Airy form) on a Cartesian grid masked to the disk, modal method on Bogner-Fox-Schmit modes, Gautschi-type integrator exact in the linear part, retarded Rayleigh integral with cubic fractional delays",
58- "parameters": {
59- "grid_spacing_m": 0.004,
60- "cells": 8112,
61- "n_dof": 33268,
62- "transverse_modes": 200,
63- "basis_even_in_y": true,
64- "airy_modes": 200,
65- "oversampling": 2,
66- "dt_s": 1.0416666666666666e-05,
67- "highest_transverse_mode_hz": 5890.6
68- },
69- "timing_seconds": 64.779,
70- "more_accurate_than": [
71- "vk-g8-w200-a200-m1"
72- ],
73- "hardware": "Intel(R) Xeon(R) w5-3435X (32 threads), numpy/scipy for the setup; coupling tensor and time stepping on NVIDIA RTX 6000 Ada Generation (PyTorch 2.14.0+cu130)"
74- },
75- {
76- "solution_id": "vk-g4-w300-a300-m2",
77- "output": "vonkarman-modal/vk-g4-w300-a300-m2.wav",
78- "method": "von Karman plate (Airy form) on a Cartesian grid masked to the disk, modal method on Bogner-Fox-Schmit modes, Gautschi-type integrator exact in the linear part, retarded Rayleigh integral with cubic fractional delays",
79- "parameters": {
80- "grid_spacing_m": 0.004,
81- "cells": 8112,
82- "n_dof": 33268,
83- "transverse_modes": 300,
84- "basis_even_in_y": true,
85- "airy_modes": 300,
86- "oversampling": 2,
87- "dt_s": 1.0416666666666666e-05,
88- "highest_transverse_mode_hz": 9000.3
89- },
90- "timing_seconds": 204.284,
91- "more_accurate_than": [
92- "vk-g4-w200-a200-m2"
93- ],
94- "hardware": "Intel(R) Xeon(R) w5-3435X (32 threads), numpy/scipy for the setup; coupling tensor and time stepping on NVIDIA RTX 6000 Ada Generation (PyTorch 2.14.0+cu130)",
95- "fields": {
96- "path": "vonkarman-modal/vk-g4-w300-a300-m2.h5",
97- "format": "hdf5"
98- }
99- }
100- ]
101-}
\ No newline at end of file
solutions/cymbal-flat-disk-v1/vonkarman-modal/vk-g4-w200-a200-m2.wavdeleted+0−0View file
Binary file not shown.
solutions/cymbal-flat-disk-v1/vonkarman-modal/vk-g4-w300-a300-m2.h5deleted+0−3View file
@@ -1,3 +0,0 @@
1-version https://git-lfs.github.com/spec/v1
2-oid sha256:c6f3893376fa73d6db19103612217cbe798793d3e086e18daf34f3662338f91a
3-size 16005783
solutions/cymbal-flat-disk-v1/vonkarman-modal/vk-g4-w300-a300-m2.wavdeleted+0−0View file
Binary file not shown.
solutions/cymbal-flat-disk-v1/vonkarman-modal/vk-g8-w100-a100-m1.wavdeleted+0−0View file
Binary file not shown.
solutions/cymbal-flat-disk-v1/vonkarman-modal/vk-g8-w200-a200-m1.wavdeleted+0−0View file
Binary file not shown.
solvers/vonkarman-modal-disk/__pycache__/vk_modal_disk.cpython-313.pycadded+0−0View file
Binary file not shown.
solvers/vonkarman-modal-disk/run_chain.shmodified+5−8View file
@@ -2,7 +2,7 @@
22 # Produce the vonkarman-modal chain for cymbal-flat-disk-v1. Run locally, never on the vault runner.
33 # The 8 mm members run on a CPU (minutes); the 4 mm members need a GPU (--device cuda, PyTorch) to be
44 # practical, since the per-step cost is the memory bandwidth of the coupling tensor (1.7 GB at 600 modes).
5-# Usage: bash run_chain.sh <cymbal-repo>/challenges/cymbal-flat-disk-v1/challenge.json [cpu|gpu|all]
5+# Usage: bash run_chain.sh <cymbal-repo>/challenges/cymbal-flat-disk-v1/challenge.json [gpu|cpu] (cpu: hours for the 4 mm members)
66 set -e
77 here="$(cd "$(dirname "$0")" && pwd)"
88 ch="$1"
@@ -10,10 +10,7 @@ what="${2:-all}"
1010 out="$here/../../solutions/cymbal-flat-disk-v1/vonkarman-modal"
1111 mkdir -p "$out"
1212 cd "$here"
13-if [ "$what" = cpu ] || [ "$what" = all ]; then
14- python3 vk_modal_disk.py "$ch" "$out" g8-w100-a100-m1 g8-w200-a200-m1
15-fi
16-if [ "$what" = gpu ] || [ "$what" = all ]; then
17- python3 vk_modal_disk.py "$ch" "$out" --device cuda --fields g4-w600-a600-m4 g4-w200-a200-m2 g4-w300-a300-m2 g4-w450-a450-m2 g4-w600-a600-m4
18-fi
19-python3 make_submission.py "$out" g8-w100-a100-m1 g8-w200-a200-m1 g4-w200-a200-m2 g4-w300-a300-m2 g4-w450-a450-m2 g4-w600-a600-m4
13+dev=""
14+[ "$what" = cpu ] || dev="--device cuda"
15+python3 vk_modal_disk.py "$ch" "$out" $dev --fields g4-w300-a300-m2 g8-w100-a100-m2 g8-w200-a200-m2 g4-w200-a200-m2 g4-w300-a300-m2
16+python3 make_submission.py "$out" g8-w100-a100-m2 g8-w200-a200-m2 g4-w200-a200-m2 g4-w300-a300-m2
↑↓ move↵openescclose