/ challenges-old / cymbal2
Sign in
challenges-old / cymbal2
cymbal2 / MODEL.md
9.2 KBPreviewCodeBlameHistoryRaw

The cymbal2 model#

Every challenge in this repository is an instance of the model defined here. A challenge fixes the mid-surface profile Z(r)Z(r), the thickness h(r)h(r), the strike point (xs,ys)(x_s, y_s) and the output scale srefs_\text{ref}; its README gives those and nothing else changes. The problem is to compute the pressure signal p(t)p(t) of the output section for six seconds and write it as a wav file.

Geometry#

The cymbal is a thin shell. Its mid-surface is the graph of a function ZZ over the annulus

A={(x,y):rh≤r≤R},r=x2+y2,A = \{ (x, y) : r_h \le r \le R \}, \qquad r = \sqrt{x^2 + y^2},

and its thickness is hh. Both are functions of rr alone and are given per challenge. The rim r=Rr = R and the edge of the hole r=rhr = r_h are free. Below, subscripts xx, yy and tt denote partial derivatives, Greek indices run over x,yx, y, repeated Greek indices are summed, and δαβ\delta_{\alpha\beta} is the Kronecker delta.

Unknowns and strains#

The unknowns are the displacements u(x,y,t)u(x, y, t), v(x,y,t)v(x, y, t), w(x,y,t)w(x, y, t) of the mid-surface point (x,y,Z(x,y))(x, y, Z(x, y)) along the xx, yy and zz axes. The membrane strains are those of shallow-shell theory,

εxx=ux+Zxwx+12wx2,εyy=vy+Zywy+12wy2,εxy=12(uy+vx+Zxwy+Zywx+wxwy),\varepsilon_{xx} = u_x + Z_x w_x + \tfrac{1}{2} w_x^2, \qquad \varepsilon_{yy} = v_y + Z_y w_y + \tfrac{1}{2} w_y^2, \qquad \varepsilon_{xy} = \tfrac{1}{2} \left( u_y + v_x + Z_x w_y + Z_y w_x + w_x w_y \right),

and the bending strains are καβ=wαβ\kappa_{\alpha\beta} = w_{\alpha\beta}.

Stress resultants#

The material is linearly elastic and isotropic, with Young's modulus EE, 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

Nαβ=Eh1−ν2[(1−ν) ε~αβ+ν ε~γγ δαβ],Mαβ=D[(1−ν) κ~αβ+ν κ~γγ δαβ],N_{\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 M_{\alpha\beta} = D \left[ (1 - \nu)\, \tilde\kappa_{\alpha\beta} + \nu\, \tilde\kappa_{\gamma\gamma}\, \delta_{\alpha\beta} \right],

with ε~=ε+η εt\tilde\varepsilon = \varepsilon + \eta\, \varepsilon_t, κ~=κ+η κt\tilde\kappa = \kappa + \eta\, \kappa_t and D=Eh3/(12(1−ν2))D = E h^3 / (12 (1 - \nu^2)).

Equations of motion#

The motion is defined by its weak form. For all test functions δu,δv∈H1(A)\delta u, \delta v \in H^1(A) and δw∈H2(A)\delta w \in H^2(A), without constraint on either edge,

∫Aρh[(utt+2σ0ut) δu+(vtt+2σ0vt) δv+(wtt+2σ0wt) δw]dA+∫A(Nαβ δεαβ+Mαβ δκαβ)dA=−F(t)∫Aϕ δw dA,\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 + \int_A \left( N_{\alpha\beta}\, \delta\varepsilon_{\alpha\beta} + M_{\alpha\beta}\, \delta\kappa_{\alpha\beta} \right) dA = - F(t) \int_A \phi\, \delta w\, dA,

where σ0\sigma_0 is a loss rate, FF 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,

δεxx=δux+(Zx+wx) δwx,δεyy=δvy+(Zy+wy) δwy,δεxy=12(δuy+δvx+(Zx+wx) δwy+(Zy+wy) δwx),δκαβ=δwαβ.\delta\varepsilon_{xx} = \delta u_x + (Z_x + w_x)\, \delta w_x, \qquad \delta\varepsilon_{yy} = \delta v_y + (Z_y + w_y)\, \delta w_y, \qquad \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 \delta\kappa_{\alpha\beta} = \delta w_{\alpha\beta}.

Where the solution is smooth this is the strong form

ρh (utt+2σ0ut)=∂xNxx+∂yNxy,ρh (vtt+2σ0vt)=∂xNxy+∂yNyy,\rho h\, (u_{tt} + 2 \sigma_0 u_t) = \partial_x N_{xx} + \partial_y N_{xy}, \qquad \rho h\, (v_{tt} + 2 \sigma_0 v_t) = \partial_x N_{xy} + \partial_y N_{yy},
ρh (wtt+2σ0wt)=∂α[Nαβ(Zβ+wβ)]−∂αβMαβ−F(t) ϕ,\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,

together with the free-edge conditions that the weak form implies at r=Rr = R and r=rhr = r_h. The shell is at rest at t=0t = 0: u=v=w=0u = v = w = 0 and ut=vt=wt=0u_t = v_t = w_t = 0.

The strike#

The cymbal is struck once by a drum stick, modeled as a point mass msm_s that moves along zz and interacts with the shell through a Hertz contact force. Let zs(t)z_s(t) be the height of the stick tip above the undeformed surface point (xs,ys,Z(rs))(x_s, y_s, Z(r_s)), with zs(0)=0z_s(0) = 0 and z˙s(0)=−v0\dot z_s(0) = -v_0. The force is spread over the footprint

ϕ(x,y)=1cϕ πRs2  ϕ0 ⁣(ϱRs),ϱ=(x−xs)2+(y−ys)2,ϕ0(s)={12(1+cos⁡πs),0≤s≤1,0,s>1,cϕ=12−2π2,\phi(x, y) = \frac{1}{c_\phi\, \pi R_s^2}\; \phi_0\!\left( \frac{\varrho}{R_s} \right), \qquad \varrho = \sqrt{(x - x_s)^2 + (y - y_s)^2}, \qquad \phi_0(s) = \begin{cases} \tfrac{1}{2} (1 + \cos \pi s), & 0 \le s \le 1, \\ 0, & s > 1, \end{cases} \qquad c_\phi = \tfrac{1}{2} - \tfrac{2}{\pi^2},

which lies inside AA and integrates to one over AA. The surface height under the stick is the footprint average wˉ(t)=∫Aϕ w dA\bar w(t) = \int_A \phi\, w\, dA, the penetration is δ(t)=wˉ(t)−zs(t)\delta(t) = \bar w(t) - z_s(t), and the contact force is

F(t)=kc max⁡(δ(t),0)3/2.F(t) = k_c\, \max(\delta(t), 0)^{3/2}.

It acts on the stick upward, msz¨s=Fm_s \ddot z_s = F, and on the shell downward, as the traction −Fϕ-F \phi along zz in the equations of motion. The stick is otherwise free: there is no gravity and no hand, and contact occurs whenever δ>0\delta > 0, including any later contact after the first rebound.

Output#

The output is the acoustic pressure at the listener point xL\mathbf{x}_L given by the Rayleigh integral of the transverse acceleration over the shell,

p(t)=ρa2π∫A1d(x,y)  wtt ⁣(x,y,  t−d(x,y)ca)dA,d(x,y)=∣xL−(x,y,Z(x,y))∣,p(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 d(x, y) = \left| \mathbf{x}_L - (x, y, Z(x, y)) \right|,

with wttw_{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.

Remarks#

The shell is free. The strains are invariant under the small rigid motions w→w+a+θαxαw \to w + a + \theta_\alpha x_\alpha, uα→uα−θα(Z+w)−12θαθβxβu_\alpha \to u_\alpha - \theta_\alpha (Z + w) - \tfrac{1}{2} \theta_\alpha \theta_\beta x_\beta (with ux=uu_x = u, uy=vu_y = v), so the momentum and angular momentum that the strike imparts appear as a drift of ww that is linear in tt once the contact has ended, has no transverse acceleration, and does not enter pp; the in-plane inertia of that drift is of relative order ρΩ2R2/E\rho \Omega^2 R^2 / E, about 10−810^{-8}. The transverse displacement itself does contain the drift.

In the linear regime about the flat state, σ0\sigma_0 damps every mode at the rate σ0\sigma_0 and η\eta damps a mode of angular frequency ω\omega at the rate ηω2/2\eta \omega^2 / 2.

Parameters common to all challenges#

Symbol Value Unit Meaning
RR 0.2032 m outer radius (16 in diameter)
rhr_h 0.006 m hole radius
EE 110e9 Pa Young's modulus (B20 bell bronze)
ν\nu 0.34 Poisson's ratio
ρ\rho 8800 kg/m^3 density
σ0\sigma_0 1.1 1/s loss rate
η\eta 1.2e-8 s Kelvin-Voigt time constant
msm_s 0.02 kg stick tip mass
v0v_0 10 m/s stick speed at contact
kck_c 1e9 N/m^(3/2) Hertz contact stiffness
RsR_s 0.005 m footprint radius
ρa\rho_a 1.204 kg/m^3 air density
cac_a 343 m/s speed of sound in air
xL\mathbf{x}_L (0.65, 1.125, 0.75) m listener point

All values are exact decimal numbers. The listener is 1.5 m from the origin, 30 degrees above the plane z=0z = 0, at an azimuth of 60 degrees from the xx 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.

Deliverable#

Property Value
channels 1
sample rate fsf_s 48000 Hz
number of samples NN 288000 (6.0 s)
sample format 32-bit IEEE float (WAVE_FORMAT_IEEE_FLOAT)
sample kk, for k=0,…,N−1k = 0, \dots, N-1 p(k/fs)/srefp(k / f_s) / s_\text{ref}
srefs_\text{ref} output.signal_scale in the challenge's challenge.json, in Pa

The first sample is at t=0t = 0, the instant the stick touches the shell. Samples are pointwise values of pp with no anti-aliasing filter. Do not normalize the signal; absolute amplitude is compared.

Error measures#

Two relative errors against the reference solution are computed over the NN samples: the spectrogram ℓ2\ell^2 error (primary; periodic Hann window of length 2048, hop 512, no padding) and the waveform ℓ2\ell^2 error. The formulas are those of the string challenge. 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 2\sqrt{2} for any two of them.

Reference solution#

The reference is chosen automatically among the submitted solutions by the rule described in the repository README, unless reference_solution in challenge.json names one.

Optional field export#

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,), xi=−R+2R i/60x_i = -R + 2R\, i / 60 and the same for yy; t, float64, shape (3001,), tk=k/1000t_k = k / 1000; and u, float32, shape (3001, 61, 61), with u[k, j, i] =w(xi,yj,tk)= w(x_i, y_j, t_k) in meters for grid points in AA and NaN elsewhere. The drift of the free shell is part of ww. 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.

↑↓ move↵openescclose