Two challenges, each with three strikes at 0, 2 and 4 s; 7 s output
11 changed files+103−271
MODEL.mdmodified+24−16View file
@@ -1,6 +1,6 @@
11 # The cymbal2 model
22
3-Every challenge in this repository is an instance of the model defined here. A challenge fixes the mid-surface profile $Z(r)$, the thickness $h(r)$, the strike point $(x_s, y_s)$ and the output scale $s_\text{ref}$; its README gives those and nothing else changes. The problem is to compute the pressure signal $p(t)$ of the output section for six seconds and write it as a wav file.
3+Every challenge in this repository is an instance of the model defined here. A challenge fixes the mid-surface profile $Z(r)$, the thickness $h(r)$ and the output scale $s_\text{ref}$; its README gives those and nothing else changes. The problem is to compute the pressure signal $p(t)$ of the output section for seven seconds, during which the cymbal is struck three times, and write it as a wav file.
44
55 ## Geometry
66
@@ -42,10 +42,10 @@ The motion is defined by its weak form. For all test functions $\delta u, \delta
4242 $$
4343 \int_A \rho h \left[ (u_{tt} + 2 \sigma_0 u_t)\, \delta u + (v_{tt} + 2 \sigma_0 v_t)\, \delta v + (w_{tt} + 2 \sigma_0 w_t)\, \delta w \right] dA
4444 + \int_A \left( N_{\alpha\beta}\, \delta\varepsilon_{\alpha\beta} + M_{\alpha\beta}\, \delta\kappa_{\alpha\beta} \right) dA
45-= - F(t) \int_A \phi\, \delta w\, dA,
45+= - \sum_{i=1}^{3} F_i(t) \int_A \phi_i\, \delta w\, dA,
4646 $$
4747
48-where $\sigma_0$ is a loss rate, $F$ and $\phi$ are the strike force and footprint of the next section, and $\delta\varepsilon$, $\delta\kappa$ are the variations of the strains at the current state,
48+where $\sigma_0$ is a loss rate, $F_i$ and $\phi_i$ are the force and footprint of the $i$th strike of the next section, and $\delta\varepsilon$, $\delta\kappa$ are the variations of the strains at the current state,
4949
5050 $$
5151 \delta\varepsilon_{xx} = \delta u_x + (Z_x + w_x)\, \delta w_x, \qquad
@@ -62,29 +62,35 @@ $$
6262 $$
6363
6464 $$
65-\rho h\, (w_{tt} + 2 \sigma_0 w_t) = \partial_\alpha \left[ N_{\alpha\beta} (Z_\beta + w_\beta) \right] - \partial_{\alpha\beta} M_{\alpha\beta} - F(t)\, \phi,
65+\rho h\, (w_{tt} + 2 \sigma_0 w_t) = \partial_\alpha \left[ N_{\alpha\beta} (Z_\beta + w_\beta) \right] - \partial_{\alpha\beta} M_{\alpha\beta} - \sum_i F_i(t)\, \phi_i,
6666 $$
6767
6868 together with the free-edge conditions that the weak form implies at $r = R$ and $r = r_h$. The shell is at rest at $t = 0$: $u = v = w = 0$ and $u_t = v_t = w_t = 0$.
6969
70-## The strike
70+## The strikes
7171
72-The cymbal is struck once by a drum stick, modeled as a point mass $m_s$ that moves along $z$ and interacts with the shell through a Hertz contact force. Let $z_s(t)$ be the height of the stick tip above the undeformed surface point $(x_s, y_s, Z(r_s))$, with $z_s(0) = 0$ and $\dot z_s(0) = -v_0$. The force is spread over the footprint
72+The cymbal is struck three times by a drum stick, at the times $t_i$ and points $(x_i, 0)$ of the parameter table: on the bell, then at half the radius, then near the rim, two seconds apart. The stick is a point mass $m_s$ that moves along $z$ and interacts with the shell through a Hertz contact force. The $i$th strike has the footprint
7373
7474 $$
75-\phi(x, y) = \frac{1}{c_\phi\, \pi R_s^2}\; \phi_0\!\left( \frac{\varrho}{R_s} \right), \qquad
76-\varrho = \sqrt{(x - x_s)^2 + (y - y_s)^2}, \qquad
75+\phi_i(x, y) = \frac{1}{c_\phi\, \pi R_s^2}\; \phi_0\!\left( \frac{\varrho_i}{R_s} \right), \qquad
76+\varrho_i = \sqrt{(x - x_i)^2 + y^2}, \qquad
7777 \phi_0(s) = \begin{cases} \tfrac{1}{2} (1 + \cos \pi s), & 0 \le s \le 1, \\ 0, & s > 1, \end{cases} \qquad
7878 c_\phi = \tfrac{1}{2} - \tfrac{2}{\pi^2},
7979 $$
8080
81-which lies inside $A$ and integrates to one over $A$. The surface height under the stick is the footprint average $\bar w(t) = \int_A \phi\, w\, dA$, the penetration is $\delta(t) = \bar w(t) - z_s(t)$, and the contact force is
81+which lies inside $A$ and integrates to one over $A$, and the surface height under it is the footprint average $\bar w_i(t) = \int_A \phi_i\, w\, dA$. Let $z_i(t)$, defined for $t \ge t_i$, be the height of the tip of the $i$th stick. It meets the surface at $t_i$ with relative speed $v_0$, wherever the motion of the shell has taken that surface,
8282
8383 $$
84-F(t) = k_c\, \max(\delta(t), 0)^{3/2}.
84+z_i(t_i) = \bar w_i(t_i), \qquad \dot z_i(t_i) = \partial_t \bar w_i(t_i) - v_0.
8585 $$
8686
87-It acts on the stick upward, $m_s \ddot z_s = F$, and on the shell downward, as the traction $-F \phi$ along $z$ in the equations of motion. The stick is otherwise free: there is no gravity and no hand, and contact occurs whenever $\delta > 0$, including any later contact after the first rebound.
87+The penetration is $\delta_i(t) = \bar w_i(t) - z_i(t)$ and the contact force is
88+
89+$$
90+F_i(t) = k_c\, \max(\delta_i(t), 0)^{3/2} \quad \text{for } t \ge t_i, \qquad F_i(t) = 0 \quad \text{for } t < t_i.
91+$$
92+
93+It acts on the stick upward, $m_s \ddot z_i = F_i$, and on the shell downward, as the traction $-F_i \phi_i$ along $z$ in the equations of motion. Each stick is otherwise free: there is no gravity and no hand, it stays in the model after its rebound, and contact occurs whenever $\delta_i > 0$, including any later contact.
8894
8995 ## Output
9096
@@ -99,7 +105,7 @@ with $w_{tt}$ taken as zero at negative times. This is the field of a planar sou
99105
100106 ## Remarks
101107
102-The shell is free. The strains are invariant under the small rigid motions $w \to w + a + \theta_\alpha x_\alpha$, $u_\alpha \to u_\alpha - \theta_\alpha (Z + w) - \tfrac{1}{2} \theta_\alpha \theta_\beta x_\beta$ (with $u_x = u$, $u_y = v$), so the momentum and angular momentum that the strike imparts appear as a drift of $w$ that is linear in $t$ once the contact has ended, has no transverse acceleration, and does not enter $p$; the in-plane inertia of that drift is of relative order $\rho \Omega^2 R^2 / E$, about $10^{-8}$. The transverse displacement itself does contain the drift.
108+The shell is free. The strains are invariant under the small rigid motions $w \to w + a + \theta_\alpha x_\alpha$, $u_\alpha \to u_\alpha - \theta_\alpha (Z + w) - \tfrac{1}{2} \theta_\alpha \theta_\beta x_\beta$ (with $u_x = u$, $u_y = v$), so the momentum and angular momentum that the strikes impart appear as a drift of $w$ that is linear in $t$ between contacts, has no transverse acceleration, and does not enter $p$; the in-plane inertia of that drift is of relative order $\rho \Omega^2 R^2 / E$, about $10^{-8}$. The transverse displacement itself does contain the drift.
103109
104110 In the linear regime about the flat state, $\sigma_0$ damps every mode at the rate $\sigma_0$ and $\eta$ damps a mode of angular frequency $\omega$ at the rate $\eta \omega^2 / 2$.
105111
@@ -118,11 +124,13 @@ In the linear regime about the flat state, $\sigma_0$ damps every mode at the ra
118124 | $v_0$ | 10 | m/s | stick speed at contact |
119125 | $k_c$ | 1e9 | N/m^(3/2) | Hertz contact stiffness |
120126 | $R_s$ | 0.005 | m | footprint radius |
127+| $t_1, t_2, t_3$ | 0, 2, 4 | s | strike times |
128+| $x_1, x_2, x_3$ | 0.035, 0.1016, 0.17272 | m | strike points on the $x$ axis: on the bell, $0.5 R$, $0.85 R$ |
121129 | $\rho_a$ | 1.204 | kg/m^3 | air density |
122130 | $c_a$ | 343 | m/s | speed of sound in air |
123131 | $\mathbf{x}_L$ | (0.65, 1.125, 0.75) | m | listener point |
124132
125-All values are exact decimal numbers. The listener is 1.5 m from the origin, 30 degrees above the plane $z = 0$, at an azimuth of 60 degrees from the $x$ axis, on which every strike point lies. The stick values are provisional until the first solutions have been heard; they will be fixed before any solution is published, and a challenge is never changed after that.
133+All values are exact decimal numbers. The listener is 1.5 m from the origin, 30 degrees above the plane $z = 0$, at an azimuth of 60 degrees from the $x$ axis, on which the strike points lie. The strikes are the same in both challenges; on the flat annulus the first lands where the bell would be. The stick values are provisional until the first solutions have been heard; they will be fixed before any solution is published, and a challenge is never changed after that.
126134
127135 ## Deliverable
128136
@@ -130,12 +138,12 @@ All values are exact decimal numbers. The listener is 1.5 m from the origin, 30
130138 | --- | --- |
131139 | channels | 1 |
132140 | sample rate $f_s$ | 48000 Hz |
133-| number of samples $N$ | 288000 (6.0 s) |
141+| number of samples $N$ | 336000 (7.0 s) |
134142 | sample format | 32-bit IEEE float (WAVE_FORMAT_IEEE_FLOAT) |
135143 | sample $k$, for $k = 0, \dots, N-1$ | $p(k / f_s) / s_\text{ref}$ |
136144 | $s_\text{ref}$ | `output.signal_scale` in the challenge's challenge.json, in Pa |
137145
138-The first sample is at $t = 0$, the instant the stick touches the shell. Samples are pointwise values of $p$ with no anti-aliasing filter. Do not normalize the signal; absolute amplitude is compared.
146+The first sample is at $t = 0$, the instant the first stick touches the shell. Samples are pointwise values of $p$ with no anti-aliasing filter. Do not normalize the signal; absolute amplitude is compared.
139147
140148 ## Error measures
141149
@@ -147,4 +155,4 @@ The reference is chosen automatically among the submitted solutions by the rule
147155
148156 ## Optional field export
149157
150-A submission may provide the transverse displacement for visualization; it is not scored. The file is HDF5 with datasets `x` and `y`, float64, shape (61,), $x_i = -R + 2R\, i / 60$ and the same for $y$; `t`, float64, shape (3001,), $t_k = k / 1000$; and `u`, float32, shape (3001, 61, 61), with `u[k, j, i]` $= w(x_i, y_j, t_k)$ in meters for grid points in $A$ and NaN elsewhere. The drift of the free shell is part of $w$. Root attributes `challenge_id`, `solution_id`, `quantity` and `units` are recommended. The file is about 40 MB and belongs in git LFS or at an external URL.
158+A submission may provide the transverse displacement for visualization; it is not scored. The file is HDF5 with datasets `x` and `y`, float64, shape (61,), $x_i = -R + 2R\, i / 60$ and the same for $y$; `t`, float64, shape (3501,), $t_k = k / 500$; and `u`, float32, shape (3501, 61, 61), with `u[k, j, i]` $= w(x_i, y_j, t_k)$ in meters for grid points in $A$ and NaN elsewhere. The drift of the free shell is part of $w$. Root attributes `challenge_id`, `solution_id`, `quantity` and `units` are recommended. The file is about 50 MB and belongs in git LFS or at an external URL.
README.mdmodified+6−8View file
@@ -1,15 +1,13 @@
11 # Instrument simulation challenges: cymbal2
22
3-This repository defines four simulation challenges on one geometrically nonlinear thin-shell model of a 16 inch crash cymbal struck by a drum stick, and publishes the comparison of every registered solution at [challenges/cymbal2/site](https://vault1.magland.org/challenges/cymbal2/site/). It follows the arrangement of the [string](https://vault1.magland.org/challenges/string), [plate](https://vault1.magland.org/challenges/plate) and [cymbal](https://vault1.magland.org/challenges/cymbal) repositories: the model is defined in the continuum, solutions live in separate registered repositories, and the shared [challenge-tools](https://vault1.magland.org/challenges/challenge-tools) package scores them against a reference chosen from among the submissions.
3+This repository defines two simulation challenges on one geometrically nonlinear thin-shell model of a 16 inch crash cymbal struck by a drum stick, and publishes the comparison of every registered solution at [challenges/cymbal2/site](https://vault1.magland.org/challenges/cymbal2/site/). It follows the arrangement of the [string](https://vault1.magland.org/challenges/string), [plate](https://vault1.magland.org/challenges/plate) and [cymbal](https://vault1.magland.org/challenges/cymbal) repositories: the model is defined in the continuum, solutions live in separate registered repositories, and the shared [challenge-tools](https://vault1.magland.org/challenges/challenge-tools) package scores them against a reference chosen from among the submissions.
44
5-The model is defined once, in [MODEL.md](MODEL.md): a shallow shell with in-plane inertia, Saint Venant-Kirchhoff through the thickness, Kelvin-Voigt and mass-proportional damping, free at both edges, struck by a point mass through a Hertz contact, radiating to a listener 1.5 m away through the Rayleigh integral. Each challenge fixes the profile, the thickness and the strike point. Three of the four share the cymbal's geometry (a paraboloidal bow, a cosine-dome bell around the mounting hole, and a thickness that tapers from the bell to the rim) and differ only in where the stick lands, so that the difference in sound between a crash near the rim and a ping on the bell comes out of the same equations; the fourth is a flat annulus of uniform thickness, as a baseline.
5+The model is defined once, in [MODEL.md](MODEL.md): a shallow shell with in-plane inertia, Saint Venant-Kirchhoff through the thickness, Kelvin-Voigt and mass-proportional damping, free at both edges, struck by a point mass through a Hertz contact, radiating to a listener 1.5 m away through the Rayleigh integral. Each challenge fixes the profile and the thickness. In both, the same stick lands three times, two seconds apart: on the bell (or where the bell would be), at half the radius, and near the rim, so that the difference in sound between a ping on the bell and a crash near the rim comes out of the same equations within one seven-second recording.
66
7-| ID | Geometry | Strike point | Deliverable |
8-| --- | --- | --- | --- |
9-| [cymbal2-flat-v1](challenges/cymbal2-flat-v1/README.md) | flat annulus, 1.0 mm | 0.85 R | 6 s mono wav, 48 kHz, float32 |
10-| [cymbal2-rim-v1](challenges/cymbal2-rim-v1/README.md) | bow, bell, taper 1.2 to 0.7 mm | 0.85 R | 6 s mono wav, 48 kHz, float32 |
11-| [cymbal2-mid-v1](challenges/cymbal2-mid-v1/README.md) | bow, bell, taper 1.2 to 0.7 mm | 0.5 R | 6 s mono wav, 48 kHz, float32 |
12-| [cymbal2-bell-v1](challenges/cymbal2-bell-v1/README.md) | bow, bell, taper 1.2 to 0.7 mm | on the bell, 35 mm | 6 s mono wav, 48 kHz, float32 |
7+| ID | Geometry | Deliverable |
8+| --- | --- | --- |
9+| [cymbal2-flat-v1](challenges/cymbal2-flat-v1/README.md) | flat annulus, 1.0 mm | 7 s mono wav, 48 kHz, float32 |
10+| [cymbal2-crash-v1](challenges/cymbal2-crash-v1/README.md) | bow, cosine bell, taper 1.2 to 0.7 mm | 7 s mono wav, 48 kHz, float32 |
1311
1412 Each challenge lives in `challenges/<challenge-id>/` as a `README.md`, which together with MODEL.md is the specification, and a `challenge.json` with the parameters, output format, error measures and field-export grid in machine-readable form. The stick parameters and the output scales are provisional until the first solutions have been heard; once a solution is published, a challenge is never changed, and a corrected model gets a new ID.
1513
challenges/cymbal2-bell-v1/README.mddeleted+0−25View file
@@ -1,25 +0,0 @@
1-# cymbal2-bell-v1: the cymbal struck on the bell
2-
3-The cymbal of this tier, a paraboloidal bow with a cosine-dome bell around the mounting hole and a thickness that tapers from 1.2 mm at the bell to 0.7 mm at the rim, struck by the stick on the flank of the bell, 35 mm from the axis on the $x$ axis, the ping stroke. The model, the strike, the listener, the output, the error measures and the common parameters are defined in [MODEL.md](../../MODEL.md); this page fixes what is specific to this challenge. The machine-readable version is [challenge.json](challenge.json). The challenges cymbal2-rim-v1 and cymbal2-mid-v1 are the same cymbal struck elsewhere.
4-
5-## Geometry and strike
6-
7-$$
8-Z(r) = H \left( 1 - \frac{r^2}{R^2} \right) + \begin{cases} \dfrac{h_b}{2} \left( 1 + \cos \dfrac{\pi r}{r_b} \right), & r < r_b, \\[2ex] 0, & r \ge r_b, \end{cases}
9-\qquad
10-h(r) = \begin{cases} h_c, & r \le r_b, \\[1ex] h_c + (h_e - h_c)\, \dfrac{r - r_b}{R - r_b}, & r_b < r \le R, \end{cases}
11-$$
12-
13-for $r_h \le r \le R$. The bell joins the bow with continuous slope and a jump in curvature at $r = r_b$; the thickness is continuous there.
14-
15-| Symbol | Value | Unit | Meaning |
16-| --- | --- | --- | --- |
17-| $H$ | 0.025 | m | bow height |
18-| $r_b$ | 0.055 | m | bell radius |
19-| $h_b$ | 0.015 | m | bell height above the bow |
20-| $h_c$ | 0.0012 | m | thickness over the bell |
21-| $h_e$ | 0.0007 | m | thickness at the rim |
22-| $(x_s, y_s)$ | (0.035, 0) | m | strike point, on the bell |
23-| $s_\text{ref}$ | 16 (provisional) | Pa | output scale |
24-
25-At the strike point the surface is 29 mm above the rim plane, its slope is 0.43, and the thickness is 1.2 mm; the footprint spans 30 to 40 mm from the axis, clear of the hole. The largest slope of the profile is about 0.46, on the flank of the bell, where shallow-shell theory is a coarse approximation of a real cymbal; the model is nevertheless defined as written.
challenges/cymbal2-bell-v1/challenge.jsondeleted+0−76View file
@@ -1,76 +0,0 @@
1-{
2- "challenge_id": "cymbal2-bell-v1",
3- "title": "Bowed, belled and tapered cymbal struck on the bell by a drum stick: radiated pressure",
4- "version": 1,
5- "model": "cymbal2 shallow shell (MODEL.md)",
6- "output": {
7- "type": "wav",
8- "sample_rate_hz": 48000,
9- "num_samples": 288000,
10- "channels": 1,
11- "sample_format": "float32",
12- "signal": "acoustic pressure at the listener point from the Rayleigh integral of the transverse acceleration over the shell",
13- "signal_unit": "Pa",
14- "signal_scale": 16.0,
15- "signal_scale_note": "provisional until the first solutions are published"
16- },
17- "geometry": {
18- "type": "shell-of-revolution",
19- "mid_surface": "Z(r) = bow_height (1 - r^2/disk_radius^2) + bell_height/2 (1 + cos(pi r / bell_radius)) [r < bell_radius]",
20- "thickness": "h(r) = thickness_center for r <= bell_radius, linear from thickness_center at bell_radius to thickness_rim at disk_radius",
21- "domain": "annulus hole_radius <= r <= disk_radius, both edges free"
22- },
23- "parameters": {
24- "disk_radius": 0.2032,
25- "hole_radius": 0.006,
26- "E": 110000000000.0,
27- "nu": 0.34,
28- "rho": 8800.0,
29- "sigma0": 1.1,
30- "eta": 1.2e-08,
31- "stick_mass": 0.02,
32- "stick_speed": 10.0,
33- "contact_stiffness": 1000000000.0,
34- "contact_exponent": 1.5,
35- "strike_radius": 0.005,
36- "rho_air": 1.204,
37- "c_air": 343.0,
38- "listener_x": 0.65,
39- "listener_y": 1.125,
40- "listener_z": 0.75,
41- "bow_height": 0.025,
42- "bell_radius": 0.055,
43- "bell_height": 0.015,
44- "thickness_center": 0.0012,
45- "thickness_rim": 0.0007,
46- "strike_x": 0.035,
47- "strike_y": 0.0
48- },
49- "metrics": {
50- "primary": "spectrogram_l2",
51- "spectrogram_l2": {
52- "window": "hann_periodic",
53- "n_fft": 2048,
54- "hop": 512
55- },
56- "waveform_l2": {}
57- },
58- "fields": {
59- "format": "hdf5",
60- "quantity": "transverse displacement w(x, y, t) of the mid-surface, including the rigid drift; NaN outside the annulus",
61- "units": "m",
62- "axes": [
63- "t",
64- "y",
65- "x"
66- ],
67- "shape": [
68- 3001,
69- 61,
70- 61
71- ],
72- "frame_rate_hz": 1000,
73- "dtype": "float32"
74- },
75- "reference_solution": null
76-}
challenges/cymbal2-crash-v1/README.mdadded+24−0View file
@@ -0,0 +1,24 @@
1+# cymbal2-crash-v1: the crash cymbal struck on the bell, at mid-radius and near the rim
2+
3+The cymbal of this tier: a paraboloidal bow with a cosine-dome bell around the mounting hole and a thickness that tapers from 1.2 mm at the bell to 0.7 mm at the rim, struck three times by the stick, on the flank of the bell, at half the radius and at 0.85 R, two seconds apart. The three hits are identical sticks; what differs is the local stiffness they meet, so the ping of the bell and the crash of the rim come out of the same equations. The model, the strikes, the listener, the output, the error measures and the common parameters are defined in [MODEL.md](../../MODEL.md); this page fixes what is specific to this challenge. The machine-readable version is [challenge.json](challenge.json).
4+
5+## Geometry
6+
7+$$
8+Z(r) = H \left( 1 - \frac{r^2}{R^2} \right) + \begin{cases} \dfrac{h_b}{2} \left( 1 + \cos \dfrac{\pi r}{r_b} \right), & r < r_b, \\[2ex] 0, & r \ge r_b, \end{cases}
9+\qquad
10+h(r) = \begin{cases} h_c, & r \le r_b, \\[1ex] h_c + (h_e - h_c)\, \dfrac{r - r_b}{R - r_b}, & r_b < r \le R, \end{cases}
11+$$
12+
13+for $r_h \le r \le R$. The bell joins the bow with continuous slope and a jump in curvature at $r = r_b$; the thickness is continuous there.
14+
15+| Symbol | Value | Unit | Meaning |
16+| --- | --- | --- | --- |
17+| $H$ | 0.025 | m | bow height |
18+| $r_b$ | 0.055 | m | bell radius |
19+| $h_b$ | 0.015 | m | bell height above the bow |
20+| $h_c$ | 0.0012 | m | thickness over the bell |
21+| $h_e$ | 0.0007 | m | thickness at the rim |
22+| $s_\text{ref}$ | 16 (provisional) | Pa | output scale |
23+
24+At the three strike points the surface is 29, 19 and 7 mm above the rim plane, its slope is 0.43, 0.12 and 0.21, and the thickness is 1.20, 1.04 and 0.80 mm; the first footprint spans 30 to 40 mm from the axis, clear of the hole. The largest slope of the profile is about 0.46, on the flank of the bell, where shallow-shell theory is a coarse approximation of a real cymbal; the model is nevertheless defined as written.
challenges/cymbal2-rim-v1/challenge.json →challenges/cymbal2-crash-v1/challenge.jsonrenamed+23−8View file
@@ -1,12 +1,12 @@
11 {
2- "challenge_id": "cymbal2-rim-v1",
3- "title": "Bowed, belled and tapered cymbal struck near the rim by a drum stick: radiated pressure",
2+ "challenge_id": "cymbal2-crash-v1",
3+ "title": "Bowed, belled and tapered crash cymbal struck three times by a drum stick, on the bell, at half the radius and near the rim: radiated pressure",
44 "version": 1,
55 "model": "cymbal2 shallow shell (MODEL.md)",
66 "output": {
77 "type": "wav",
88 "sample_rate_hz": 48000,
9- "num_samples": 288000,
9+ "num_samples": 336000,
1010 "channels": 1,
1111 "sample_format": "float32",
1212 "signal": "acoustic pressure at the listener point from the Rayleigh integral of the transverse acceleration over the shell",
@@ -42,10 +42,25 @@
4242 "bell_radius": 0.055,
4343 "bell_height": 0.015,
4444 "thickness_center": 0.0012,
45- "thickness_rim": 0.0007,
46- "strike_x": 0.17272,
47- "strike_y": 0.0
45+ "thickness_rim": 0.0007
4846 },
47+ "strikes": [
48+ {
49+ "t": 0.0,
50+ "x": 0.035,
51+ "y": 0.0
52+ },
53+ {
54+ "t": 2.0,
55+ "x": 0.1016,
56+ "y": 0.0
57+ },
58+ {
59+ "t": 4.0,
60+ "x": 0.17272,
61+ "y": 0.0
62+ }
63+ ],
4964 "metrics": {
5065 "primary": "spectrogram_l2",
5166 "spectrogram_l2": {
@@ -65,11 +80,11 @@
6580 "x"
6681 ],
6782 "shape": [
68- 3001,
83+ 3501,
6984 61,
7085 61
7186 ],
72- "frame_rate_hz": 1000,
87+ "frame_rate_hz": 500,
7388 "dtype": "float32"
7489 },
7590 "reference_solution": null
challenges/cymbal2-flat-v1/README.mdmodified+4−5View file
@@ -1,8 +1,8 @@
1-# cymbal2-flat-v1: flat annulus struck near the rim
1+# cymbal2-flat-v1: flat annulus struck three times
22
3-The baseline of the cymbal2 tier: a flat annulus of bell bronze with the diameter, the mounting hole and a uniform thickness of 1 mm, struck by the stick at 0.85 R on the $x$ axis. It has no bow, bell or taper, so every position on it has the same local stiffness; the three cymbal challenges add the geometry that makes the strike position matter. The model, the strike, the listener, the output, the error measures and the common parameters are defined in [MODEL.md](../../MODEL.md); this page fixes what is specific to this challenge. The machine-readable version is [challenge.json](challenge.json).
3+The baseline of the cymbal2 tier: a flat annulus of bell bronze with the diameter and the mounting hole of a 16 inch crash and a uniform thickness of 1 mm, struck three times by the stick, at 35 mm from the axis, at half the radius and at 0.85 R, two seconds apart. It has no bow, bell or taper, so every position on it has the same local stiffness, and the three hits differ only through the mode shapes at the strike points; cymbal2-crash-v1 adds the geometry that makes the position matter. The model, the strikes, the listener, the output, the error measures and the common parameters are defined in [MODEL.md](../../MODEL.md); this page fixes what is specific to this challenge. The machine-readable version is [challenge.json](challenge.json).
44
5-## Geometry and strike
5+## Geometry
66
77 $$
88 Z(r) = 0, \qquad h(r) = h_0, \qquad r_h \le r \le R.
@@ -11,7 +11,6 @@ $$
1111 | Symbol | Value | Unit | Meaning |
1212 | --- | --- | --- | --- |
1313 | $h_0$ | 0.001 | m | thickness |
14-| $(x_s, y_s)$ | (0.17272, 0) | m | strike point, $0.85 R$ |
1514 | $s_\text{ref}$ | 16 (provisional) | Pa | output scale |
1615
17-The lowest elastic frequencies of the annulus in the linear regime are near 22 Hz (two nodal diameters), 38 Hz (axisymmetric) and 51 Hz (three nodal diameters); the hole changes them by less than a percent from those of the full disk. The stick brings about 1 J and a peak force of a few hundred newtons over about half a millisecond, which bends the annulus by many thicknesses and puts it well into the regime of membrane stiffening.
16+The lowest elastic frequencies of the annulus in the linear regime are near 22 Hz (two nodal diameters), 38 Hz (axisymmetric) and 51 Hz (three nodal diameters); the hole changes them by less than a percent from those of the full disk. Each stick brings about 1 J and a peak force of a few hundred newtons over about half a millisecond, which bends the annulus by many thicknesses and puts it well into the regime of membrane stiffening.
challenges/cymbal2-flat-v1/challenge.jsonmodified+22−7View file
@@ -1,12 +1,12 @@
11 {
22 "challenge_id": "cymbal2-flat-v1",
3- "title": "Flat bronze annulus of uniform thickness struck near the rim by a drum stick: radiated pressure",
3+ "title": "Flat bronze annulus of uniform thickness struck three times by a drum stick: radiated pressure",
44 "version": 1,
55 "model": "cymbal2 shallow shell (MODEL.md)",
66 "output": {
77 "type": "wav",
88 "sample_rate_hz": 48000,
9- "num_samples": 288000,
9+ "num_samples": 336000,
1010 "channels": 1,
1111 "sample_format": "float32",
1212 "signal": "acoustic pressure at the listener point from the Rayleigh integral of the transverse acceleration over the shell",
@@ -38,10 +38,25 @@
3838 "listener_x": 0.65,
3939 "listener_y": 1.125,
4040 "listener_z": 0.75,
41- "thickness": 0.001,
42- "strike_x": 0.17272,
43- "strike_y": 0.0
41+ "thickness": 0.001
4442 },
43+ "strikes": [
44+ {
45+ "t": 0.0,
46+ "x": 0.035,
47+ "y": 0.0
48+ },
49+ {
50+ "t": 2.0,
51+ "x": 0.1016,
52+ "y": 0.0
53+ },
54+ {
55+ "t": 4.0,
56+ "x": 0.17272,
57+ "y": 0.0
58+ }
59+ ],
4560 "metrics": {
4661 "primary": "spectrogram_l2",
4762 "spectrogram_l2": {
@@ -61,11 +76,11 @@
6176 "x"
6277 ],
6378 "shape": [
64- 3001,
79+ 3501,
6580 61,
6681 61
6782 ],
68- "frame_rate_hz": 1000,
83+ "frame_rate_hz": 500,
6984 "dtype": "float32"
7085 },
7186 "reference_solution": null
challenges/cymbal2-mid-v1/README.mddeleted+0−25View file
@@ -1,25 +0,0 @@
1-# cymbal2-mid-v1: the cymbal struck at half the radius
2-
3-The cymbal of this tier, a paraboloidal bow with a cosine-dome bell around the mounting hole and a thickness that tapers from 1.2 mm at the bell to 0.7 mm at the rim, struck by the stick at 0.5 R on the $x$ axis, between the bell and the rim. The model, the strike, the listener, the output, the error measures and the common parameters are defined in [MODEL.md](../../MODEL.md); this page fixes what is specific to this challenge. The machine-readable version is [challenge.json](challenge.json). The challenges cymbal2-rim-v1 and cymbal2-bell-v1 are the same cymbal struck elsewhere.
4-
5-## Geometry and strike
6-
7-$$
8-Z(r) = H \left( 1 - \frac{r^2}{R^2} \right) + \begin{cases} \dfrac{h_b}{2} \left( 1 + \cos \dfrac{\pi r}{r_b} \right), & r < r_b, \\[2ex] 0, & r \ge r_b, \end{cases}
9-\qquad
10-h(r) = \begin{cases} h_c, & r \le r_b, \\[1ex] h_c + (h_e - h_c)\, \dfrac{r - r_b}{R - r_b}, & r_b < r \le R, \end{cases}
11-$$
12-
13-for $r_h \le r \le R$. The bell joins the bow with continuous slope and a jump in curvature at $r = r_b$; the thickness is continuous there.
14-
15-| Symbol | Value | Unit | Meaning |
16-| --- | --- | --- | --- |
17-| $H$ | 0.025 | m | bow height |
18-| $r_b$ | 0.055 | m | bell radius |
19-| $h_b$ | 0.015 | m | bell height above the bow |
20-| $h_c$ | 0.0012 | m | thickness over the bell |
21-| $h_e$ | 0.0007 | m | thickness at the rim |
22-| $(x_s, y_s)$ | (0.1016, 0) | m | strike point, $0.5 R$ |
23-| $s_\text{ref}$ | 16 (provisional) | Pa | output scale |
24-
25-At the strike point the surface is 19 mm above the rim plane, its slope is 0.12, and the thickness is 1.04 mm. The largest slope of the profile is about 0.46, on the flank of the bell, where shallow-shell theory is a coarse approximation of a real cymbal; the model is nevertheless defined as written.
challenges/cymbal2-mid-v1/challenge.jsondeleted+0−76View file
@@ -1,76 +0,0 @@
1-{
2- "challenge_id": "cymbal2-mid-v1",
3- "title": "Bowed, belled and tapered cymbal struck at half the radius by a drum stick: radiated pressure",
4- "version": 1,
5- "model": "cymbal2 shallow shell (MODEL.md)",
6- "output": {
7- "type": "wav",
8- "sample_rate_hz": 48000,
9- "num_samples": 288000,
10- "channels": 1,
11- "sample_format": "float32",
12- "signal": "acoustic pressure at the listener point from the Rayleigh integral of the transverse acceleration over the shell",
13- "signal_unit": "Pa",
14- "signal_scale": 16.0,
15- "signal_scale_note": "provisional until the first solutions are published"
16- },
17- "geometry": {
18- "type": "shell-of-revolution",
19- "mid_surface": "Z(r) = bow_height (1 - r^2/disk_radius^2) + bell_height/2 (1 + cos(pi r / bell_radius)) [r < bell_radius]",
20- "thickness": "h(r) = thickness_center for r <= bell_radius, linear from thickness_center at bell_radius to thickness_rim at disk_radius",
21- "domain": "annulus hole_radius <= r <= disk_radius, both edges free"
22- },
23- "parameters": {
24- "disk_radius": 0.2032,
25- "hole_radius": 0.006,
26- "E": 110000000000.0,
27- "nu": 0.34,
28- "rho": 8800.0,
29- "sigma0": 1.1,
30- "eta": 1.2e-08,
31- "stick_mass": 0.02,
32- "stick_speed": 10.0,
33- "contact_stiffness": 1000000000.0,
34- "contact_exponent": 1.5,
35- "strike_radius": 0.005,
36- "rho_air": 1.204,
37- "c_air": 343.0,
38- "listener_x": 0.65,
39- "listener_y": 1.125,
40- "listener_z": 0.75,
41- "bow_height": 0.025,
42- "bell_radius": 0.055,
43- "bell_height": 0.015,
44- "thickness_center": 0.0012,
45- "thickness_rim": 0.0007,
46- "strike_x": 0.1016,
47- "strike_y": 0.0
48- },
49- "metrics": {
50- "primary": "spectrogram_l2",
51- "spectrogram_l2": {
52- "window": "hann_periodic",
53- "n_fft": 2048,
54- "hop": 512
55- },
56- "waveform_l2": {}
57- },
58- "fields": {
59- "format": "hdf5",
60- "quantity": "transverse displacement w(x, y, t) of the mid-surface, including the rigid drift; NaN outside the annulus",
61- "units": "m",
62- "axes": [
63- "t",
64- "y",
65- "x"
66- ],
67- "shape": [
68- 3001,
69- 61,
70- 61
71- ],
72- "frame_rate_hz": 1000,
73- "dtype": "float32"
74- },
75- "reference_solution": null
76-}
challenges/cymbal2-rim-v1/README.mddeleted+0−25View file
@@ -1,25 +0,0 @@
1-# cymbal2-rim-v1: the cymbal struck near the rim
2-
3-The cymbal of this tier, a paraboloidal bow with a cosine-dome bell around the mounting hole and a thickness that tapers from 1.2 mm at the bell to 0.7 mm at the rim, struck by the stick at 0.85 R on the $x$ axis, the crash stroke. The model, the strike, the listener, the output, the error measures and the common parameters are defined in [MODEL.md](../../MODEL.md); this page fixes what is specific to this challenge. The machine-readable version is [challenge.json](challenge.json). The challenges cymbal2-mid-v1 and cymbal2-bell-v1 are the same cymbal struck elsewhere.
4-
5-## Geometry and strike
6-
7-$$
8-Z(r) = H \left( 1 - \frac{r^2}{R^2} \right) + \begin{cases} \dfrac{h_b}{2} \left( 1 + \cos \dfrac{\pi r}{r_b} \right), & r < r_b, \\[2ex] 0, & r \ge r_b, \end{cases}
9-\qquad
10-h(r) = \begin{cases} h_c, & r \le r_b, \\[1ex] h_c + (h_e - h_c)\, \dfrac{r - r_b}{R - r_b}, & r_b < r \le R, \end{cases}
11-$$
12-
13-for $r_h \le r \le R$. The bell joins the bow with continuous slope and a jump in curvature at $r = r_b$; the thickness is continuous there.
14-
15-| Symbol | Value | Unit | Meaning |
16-| --- | --- | --- | --- |
17-| $H$ | 0.025 | m | bow height |
18-| $r_b$ | 0.055 | m | bell radius |
19-| $h_b$ | 0.015 | m | bell height above the bow |
20-| $h_c$ | 0.0012 | m | thickness over the bell |
21-| $h_e$ | 0.0007 | m | thickness at the rim |
22-| $(x_s, y_s)$ | (0.17272, 0) | m | strike point, $0.85 R$ |
23-| $s_\text{ref}$ | 16 (provisional) | Pa | output scale |
24-
25-At the strike point the surface is 7 mm above the rim plane, its slope is 0.21, and the thickness is 0.80 mm. The largest slope of the profile is about 0.46, on the flank of the bell, where shallow-shell theory is a coarse approximation of a real cymbal; the model is nevertheless defined as written.