# Solving rectangular plates vibrations wave equation

I am a new Mathematica user (about 6 month) and I am trying to solve the wave equation for a rectangulare plate (not an elastic mebrane). I read some papers about this subject and my code structure is inspired by the 1D wave equation code found in the Wolfram's help sheets. Unfortunately, I have got the following message : Equation or list of equations expected instead of True in the first argument. Here is the theory I used to write my code :

ClearAll["Global*"];
Ey = 2.078 10^11 ;(* N/m^2 *)
\[Nu] = 0.317756 ;(* unitless *)
\[CurlyRho]d = 8166; (* kg/m^3 *)
h = 10^-3;
Df = (Ey h^3)/(12 (1 - \[Nu]^2));
eqn = {D[w[x, y, t], {x, 4}] + 2 D[w[x, y, t], {x, 2}, {y, 2}] +
D[w[x, y, t], {y, 4}] + (\[CurlyRho]d h)/
Df D[w[x, y, t], {t, 2}] == 0}
(* Initial conditions *)
ic = {w[x, y, 0] == Sin[m x ] Sin[n y],
D[w[x, y, 0], {t, 1}] ==
0}; (* Sin[mx]Sin[n y] plate's initial vibration is sinusoidal \
waves in x and y *)
(* m and n are integers *)
(* Boundary conditions *)
bc1 = {Derivative[2, 0, 0][w][0, y, t] == 0,
Derivative[3, 0, 0][w][0, y, t] == 0,
Derivative[2, 0, 0][w][a, y, t] == 0,
Derivative[3, 0, 0][w][a, y, t] == 0};
bc2 = {Derivative[0, 2, 0][w][x, 0, t] == 0,
Derivative[x, 3, 0][w][0, y, t] == 0,
Derivative[0, 2, 0][w][x, b, t] == 0,
Derivative[0, 3, 0][w][x, b, t] == 0};
symbsol =
DSolve[{eqn, bc1, bc2, ic}, w, {x, y, t},
Assumptions -> Element[{m, n}, Integers]]
• Are you sure the BC are correct? You have them all neumann. This is physically not possible, and would not give unique solution. need to have some edge fixed. For fixed edges plate, there is a Mathematica demo here demonstrations.wolfram.com/VibrationOfARectangularMembrane you also have other code errors in the BC's other than the one mentioned below. Mar 27, 2021 at 7:38
• Thank you Nasser. These BC come from this study (I am not a specialist, I just try to understand and it is not easy. trust me) : intechopen.com/books/advanced-engineering-testing/… But I will follow your advice and will try clamped edges as BC. Congratulations : you are the author of the demo. Great job. Is the code public and available? Mar 27, 2021 at 12:29
• Yes, the code for all demos at Wolfram site is available to download. Mar 27, 2021 at 19:57

Try this. Used Derivative instead. Also Rationlizing numbers helps a little. But DSolve still can't solve it.

ClearAll["Global*"];
Ey = SetPrecision[2.078*10^11, Infinity];(*N/m^2*)
ν = Rationalize[0.317756];(*unitless*)
ϱd = 8166;(*kg/m^3*)
h =1/1000;
Df = (Ey h^3)/(12 (1 - ν^2));

eqn = {D[w[x, y, t], {x, 4}] + 2 D[w[x, y, t], {x, 2}, {y, 2}] +
D[w[x, y, t], {y, 4}] + (ϱd h)/Df D[w[x, y, t], {t, 2}] == 0};

ic = {w[x, y, 0] == Sin[m x] Sin[n y], Derivative[0, 0, 1][w][x, y, 0] == 0};

(*Sin[m x]Sin[n y] plate's initial vibration is sinusoidal waves in x \
and y*)(*m and n are integers*)(*BC=plate is fully simply supported*)

bc1 = {w[0, y, t] == 0,
Derivative[2, 0, 0][w][0, y, t] == 0,
w[a, y, t] == 0,
Derivative[2, 0, 0][w][a, y, t] == 0};

bc2 = {w[x, 0, t] == 0,
Derivative[0, 2, 0][w][x, 0, t] == 0,
w[x, b, t] == 0,
Derivative[0, 2, 0][w][x, b, t] == 0};

symbsol = DSolve[{eqn, ic, bc1, bc2}, w, {x, y, t}]

But DSolve can't solve it.

May be because you still have inconsistent B.C./I.C. ? or may because DSolve does not have template for it.

NDSolve solves it, but gives the above warning.

a = 1; b = 1; m = 1; n = 2;
numsol = NDSolve[{eqn, ic, bc1, bc2}, w, {x, 0, a}, {y, 0, b}, {t, 0, 1},
Method -> {"StiffnessSwitching"}, MaxSteps -> 10^6]

Plot3D[Evaluate[w[x, y, 0] /. numsol], {x, 0, a}, {y, 0, b}]

May be more refined NDSolve options are needed.

• Many thanks, Nasser. I took into account your code and it is working now, I will try to understant why we get the message : Warning: boundary and initial conditions are inconsistent. Mar 27, 2021 at 21:09
• In order to solve the NDSolve warning, I tried advice given in mathematica.stackexchange.com/questions/20729/… without any success :( Mar 29, 2021 at 14:29

In ic, the expression D[w[x,y,0],{t,1}]==0 is simply True because w[x,y,0] is not a function of t. You need to take the derivative w.r.t. t first, and then evaluate at 0, like so

(D[w[x,y,t],{t,1}]/.t->0)==0

In bc2, you're taking the $$x$$th derivative w.r.t. 0, presumably that should be the 0th derivative w.r.t. $$x$$.

Alas, Mathematica doesn't find a solution when I try with these changes. Trying an NDSolve with particular values for a, b might be helpful. I'm not the best at pde solving, but I might take some time to coax Mathematica into a solution (I thought rectangular plates had a solution in Fourier series).

• Thank you. I will try this. Mar 26, 2021 at 23:40
• I took into account all previous comments. Here is my new code. it does not work.. ''' Mar 27, 2021 at 19:28