1function P = plate_setup(params)
2% PLATE_SETUP Derived quantities for a Kirchhoff-Love plate problem.
3%
4% P = plate_setup(params) returns a copy of params with the derived fields
5% P.D bending stiffness D = E h^3 / (12 (1 - nu^2)) [N m]
6% P.mu mass per unit area mu = rho h [kg/m^2]
7% P.kappa stiffness parameter kappa = sqrt(D / mu) [m^2/s]
8% P.Kb bending-stress factor at the surface z = h/2 [N/m]
9% P.Ks shear-stress factor at the surface z = h/2 [N/m]
10%
11% The transverse displacement w(x,y,t) of the plate obeys
12%
13% w_tt + 2 sigma0 w_t - 2 sigma1 lap(w_t) + kappa^2 lap(lap(w)) = f(x,y,t) / mu
14%
15% where f is the applied pressure [N/m^2], sigma0 [1/s] is a frequency-independent
16% loss rate and sigma1 [m^2/s] adds losses that grow with spatial frequency
17% (Bilbao, Numerical Sound Synthesis, 2009, ch. 12). The surface stresses follow
18% from the curvatures (see plate_stress).
20P = params;
21pl = params.plate;
22mat = params.material;
24if pl.Lx <= 0 || pl.Ly <= 0 || pl.h <= 0
25 error('plate_setup: plate dimensions must be positive');
26end
27if pl.h > 0.1 * min(pl.Lx, pl.Ly)
28 warning('plate_setup: thickness is more than a tenth of the shorter side; Kirchhoff-Love thin-plate theory is not reliable here');
29end
30if ~any(strcmp(params.bc, {'simply-supported', 'clamped'}))
31 error('plate_setup: unknown boundary condition "%s" (expected simply-supported or clamped)', params.bc);
32end
34P.D = mat.E * pl.h^3 / (12 * (1 - mat.nu^2));
35P.mu = mat.rho * pl.h;
36P.kappa = sqrt(P.D / P.mu);
37P.Kb = mat.E * pl.h / (2 * (1 - mat.nu^2));
38P.Ks = mat.E * pl.h / (2 * (1 + mat.nu));
39end