1# The cymbal2 model
3Every 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.
5## Geometry
7The cymbal is a thin shell. Its mid-surface is the graph of a function $Z$ over the annulus
9$$
10A = \{ (x, y) : r_h \le r \le R \}, \qquad r = \sqrt{x^2 + y^2},
11$$
13and its thickness is $h$. Both are functions of $r$ alone and are given per challenge. The rim $r = R$ and the edge of the hole $r = r_h$ are free. Below, subscripts $x$, $y$ and $t$ denote partial derivatives, Greek indices run over $x, y$, repeated Greek indices are summed, and $\delta_{\alpha\beta}$ is the Kronecker delta.
15## Unknowns and strains
17The unknowns are the displacements $u(x, y, t)$, $v(x, y, t)$, $w(x, y, t)$ of the mid-surface point $(x, y, Z(x, y))$ along the $x$, $y$ and $z$ axes. The membrane strains are those of shallow-shell theory,
19$$
20\varepsilon_{xx} = u_x + Z_x w_x + \tfrac{1}{2} w_x^2, \qquad
21\varepsilon_{yy} = v_y + Z_y w_y + \tfrac{1}{2} w_y^2, \qquad
22\varepsilon_{xy} = \tfrac{1}{2} \left( u_y + v_x + Z_x w_y + Z_y w_x + w_x w_y \right),
23$$
25and the bending strains are $\kappa_{\alpha\beta} = w_{\alpha\beta}$.
27## Stress resultants
29The material is linearly elastic and isotropic, with Young's modulus $E$, Poisson's ratio $\nu$ and density $\rho$, and has a Kelvin-Voigt viscosity of time constant $\eta$. The membrane forces and bending moments per unit length are
31$$
32N_{\alpha\beta} = \frac{E h}{1 - \nu^2} \left[ (1 - \nu)\, \tilde\varepsilon_{\alpha\beta} + \nu\, \tilde\varepsilon_{\gamma\gamma}\, \delta_{\alpha\beta} \right], \qquad
33M_{\alpha\beta} = D \left[ (1 - \nu)\, \tilde\kappa_{\alpha\beta} + \nu\, \tilde\kappa_{\gamma\gamma}\, \delta_{\alpha\beta} \right],
34$$
36with $\tilde\varepsilon = \varepsilon + \eta\, \varepsilon_t$, $\tilde\kappa = \kappa + \eta\, \kappa_t$ and $D = E h^3 / (12 (1 - \nu^2))$.
38## Equations of motion
40The motion is defined by its weak form. For all test functions $\delta u, \delta v \in H^1(A)$ and $\delta w \in H^2(A)$, without constraint on either edge,
42$$
43\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
44+ \int_A \left( N_{\alpha\beta}\, \delta\varepsilon_{\alpha\beta} + M_{\alpha\beta}\, \delta\kappa_{\alpha\beta} \right) dA
45= - \sum_{i=1}^{3} F_i(t) \int_A \phi_i\, \delta w\, dA,
46$$
48where $\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,
50$$
51\delta\varepsilon_{xx} = \delta u_x + (Z_x + w_x)\, \delta w_x, \qquad
52\delta\varepsilon_{yy} = \delta v_y + (Z_y + w_y)\, \delta w_y, \qquad
53\delta\varepsilon_{xy} = \tfrac{1}{2} \left( \delta u_y + \delta v_x + (Z_x + w_x)\, \delta w_y + (Z_y + w_y)\, \delta w_x \right), \qquad
54\delta\kappa_{\alpha\beta} = \delta w_{\alpha\beta}.
55$$
57Where the solution is smooth this is the strong form
59$$
60\rho h\, (u_{tt} + 2 \sigma_0 u_t) = \partial_x N_{xx} + \partial_y N_{xy}, \qquad
61\rho h\, (v_{tt} + 2 \sigma_0 v_t) = \partial_x N_{xy} + \partial_y N_{yy},
62$$
64$$
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,
66$$
68together 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$.
70## The strikes
72The 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
74$$
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
77\phi_0(s) = \begin{cases} \tfrac{1}{2} (1 + \cos \pi s), & 0 \le s \le 1, \\ 0, & s > 1, \end{cases} \qquad
78c_\phi = \tfrac{1}{2} - \tfrac{2}{\pi^2},
79$$
81which 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,
83$$
84z_i(t_i) = \bar w_i(t_i), \qquad \dot z_i(t_i) = \partial_t \bar w_i(t_i) - v_0.
85$$
87The penetration is $\delta_i(t) = \bar w_i(t) - z_i(t)$ and the contact force is
89$$
90F_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$$
93It 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.
95## Output
97The output is the acoustic pressure at the listener point $\mathbf{x}_L$ given by the Rayleigh integral of the transverse acceleration over the shell,
99$$
100p(t) = \frac{\rho_a}{2\pi} \int_A \frac{1}{d(x, y)}\; w_{tt}\!\left( x, y,\; t - \frac{d(x, y)}{c_a} \right) dA, \qquad
101d(x, y) = \left| \mathbf{x}_L - (x, y, Z(x, y)) \right|,
102$$
104with $w_{tt}$ taken as zero at negative times. This is the field of a planar source in a rigid baffle; the acoustic problem is not solved, and the air exerts no load on the shell.
106## Remarks
108The 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.
110In 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$.
112## Parameters common to all challenges
114| Symbol | Value | Unit | Meaning |
115| --- | --- | --- | --- |
116| $R$ | 0.2032 | m | outer radius (16 in diameter) |
117| $r_h$ | 0.006 | m | hole radius |
118| $E$ | 110e9 | Pa | Young's modulus (B20 bell bronze) |
119| $\nu$ | 0.34 | | Poisson's ratio |
120| $\rho$ | 8800 | kg/m^3 | density |
121| $\sigma_0$ | 1.1 | 1/s | loss rate |
122| $\eta$ | 1.2e-8 | s | Kelvin-Voigt time constant |
123| $m_s$ | 0.02 | kg | stick tip mass |
124| $v_0$ | 10 | m/s | stick speed at contact |
125| $k_c$ | 1e9 | N/m^(3/2) | Hertz contact stiffness |
126| $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$ |
129| $\rho_a$ | 1.204 | kg/m^3 | air density |
130| $c_a$ | 343 | m/s | speed of sound in air |
131| $\mathbf{x}_L$ | (0.65, 1.125, 0.75) | m | listener point |
133All 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.
135## Deliverable
137| Property | Value |
138| --- | --- |
139| channels | 1 |
140| sample rate $f_s$ | 48000 Hz |
141| number of samples $N$ | 336000 (7.0 s) |
142| sample format | 32-bit IEEE float (WAVE_FORMAT_IEEE_FLOAT) |
143| sample $k$, for $k = 0, \dots, N-1$ | $p(k / f_s) / s_\text{ref}$ |
144| $s_\text{ref}$ | `output.signal_scale` in the challenge's challenge.json, in Pa |
146The 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.
148## Error measures
150Two relative errors against the reference solution are computed over the $N$ samples: the spectrogram $\ell^2$ error (primary; periodic Hann window of length 2048, hop 512, no padding) and the waveform $\ell^2$ error. The formulas are those of the [string challenge](https://vault1.magland.org/challenges/string/blob/main/challenges/string-pluck-v1/README.md#error-measures). The spectrogram error ranks because the response to this strike is chaotic: solutions that agree in every band still differ in waveform after the first tenth of a second, and the waveform error is then near $\sqrt{2}$ for any two of them.
152## Reference solution
154The reference is chosen automatically among the submitted solutions by the rule described in the [repository README](README.md), unless `reference_solution` in challenge.json names one.
156## Optional field export
158A 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.