1
$\begingroup$

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]]
$\endgroup$
3
  • 1
    $\begingroup$ 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. $\endgroup$
    – Nasser
    Mar 27, 2021 at 7:38
  • $\begingroup$ 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? $\endgroup$
    – Pascal77
    Mar 27, 2021 at 12:29
  • 1
    $\begingroup$ Yes, the code for all demos at Wolfram site is available to download. $\endgroup$
    – Nasser
    Mar 27, 2021 at 19:57

2 Answers 2

1
$\begingroup$

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.

$\endgroup$
2
  • $\begingroup$ 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. $\endgroup$
    – Pascal77
    Mar 27, 2021 at 21:09
  • $\begingroup$ In order to solve the NDSolve warning, I tried advice given in mathematica.stackexchange.com/questions/20729/… without any success :( $\endgroup$
    – Pascal77
    Mar 29, 2021 at 14:29
1
$\begingroup$

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

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.