1

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 : enter image description here enter image description here

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]]
Pascal77
  • 195
  • 5
  • 1
    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 https://demonstrations.wolfram.com/VibrationOfARectangularMembrane/ you also have other code errors in the BC's other than the one mentioned below. – Nasser Mar 27 '21 at 07: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) : https://www.intechopen.com/books/advanced-engineering-testing/effect-of-various-edge-conditions-on-free-vibration-characteristics-of-isotropic-square-and-rectangu

    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?

    – Pascal77 Mar 27 '21 at 12:29
  • 1
    Yes, the code for all demos at Wolfram site is available to download. – Nasser Mar 27 '21 at 19:57

2 Answers2

1

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).

Adam
  • 3,937
  • 6
  • 22
1

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.

enter image description here

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]

enter image description here

enter image description here

Mathematica graphics

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

Mathematica graphics

May be more refined NDSolve options are needed.

Nasser
  • 143,286
  • 11
  • 154
  • 359
  • 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. – Pascal77 Mar 27 '21 at 21:09
  • In order to solve the NDSolve warning, I tried advice given in https://mathematica.stackexchange.com/questions/20729/2d-heat-equation-inconsistent-boundary-and-initial-conditions?rq=1 without any success :( – Pascal77 Mar 29 '21 at 14:29