3

I am trying to verify my manual solution for this problem by any way, so I tried NDSolve, and DSolve, with no success. Can some one help, or even give me the final numbers :D I need the first 3 alphas for a bucklingenter image description here

Here is my interpretation (yields the NDSolve::ivone error)

xDim = 1;
yDim = 1/2;

alpha = 4 Pi^2;

eqn2D = D[w[x, y], {x, 4}] + 2 D[w[x, y], {x, 2}, {y, 2}] + 
   D[w[x, y], {y, 4}] + alpha D[w[x, y], {x, 2}];

buck2D = NDSolve[{eqn2D == 0,
   w[-xDim, y] == 0,
   w[xDim, y] == 0,
   w[x, -yDim] == 0,
   w[x, yDim] == 0,
   Derivative[2, 0][w][-xDim, y] == 0,
   Derivative[2, 0][w][xDim, y] == 0,
   Derivative[0, 2][w][x, -yDim] == 0,
   Derivative[0, 2][w][x, yDim] == 0},
   w, {x, -xDim, xDim}, {y, -yDim, yDim}, Method -> {"MethodOfLines"}]

Even the 1D solution seems incorrect:

youngs = 2*^5;(*N/mm^2, steel*)

sideLength = 1.78;(*mm*)
areaMomInertia = sideLength^4/12;(*mm^2, square section*)

load = 42;(*N*)

alpha = load/(youngs areaMomInertia);

eqn1D = D[w[x], {x, 4}] + alpha D[w[x], {x, 2}];

buck1D = NDSolveValue[{eqn1D == 0,
   w[0] == 0,
   w[200] == 0,
   (D[w[x], {x, 1}] /. x -> 0) == 0,
   (D[w[x], {x, 1}] /. x -> 200) == 0},
  w, {x, 0, 200}]

Plot[buck1D[x], {x, 0, 200}, PlotRange -> All]

References:

https://uta-ir.tdl.org/uta-ir/bitstream/handle/10106/300/umi-uta-1041.pdf http://www.arpnjournals.com/jeas/research_papers/rp_2007/jeas_0207_35.pdf

Young
  • 7,495
  • 1
  • 20
  • 45
Aladdin
  • 93
  • 4
  • 1
    Can you include your NDSolve code attempt? – Young Feb 07 '17 at 04:37
  • NDSolve[{eqn==0,w[-1,y]==0,w[1,y]==0,w[x,-(1/2)]==0,w[x,1/2]==0,(w^(0,2))[x,-(1/2)]==0,(w^(0,2))[x,1/2]==0,(w^(2,0))[1,y]==0,(w^(2,0))[-1,y]==0},w,{x,-1,1},{y,-(1/2),1/2}] – Aladdin Feb 07 '17 at 04:46
  • Gives me the error Boundary values may only be specified for one independent variable.
    Initial values may only be specified at one value of the other
    independent variable.
    – Aladdin Feb 07 '17 at 04:46
  • 3
    (w^(0,2))[x,-(1/‌​2)]==0 should be more like this Derivative[0, 2][w][x, -1/2] == 0 ... and I was unclear ... please share enough code so we can run your NDSolve attempt – Young Feb 07 '17 at 04:53
  • Also, please show us more background information, for example, what's "the first 3 alphas for a buckling"? – xzczd Feb 07 '17 at 05:37
  • This is potentially an interesting question but you should clean the question up a bit, fix the errors and provide the complete code you have. – user21 Feb 07 '17 at 07:02
  • @xzczd I added my own code and a reference to a paper solving this exact problem – Young Feb 08 '17 at 03:10
  • @Young Then this problem is quite similar to this one: http://mathematica.stackexchange.com/q/135893/1871 . And I think the solution for this specific problem is w[x,y]==0? – xzczd Feb 08 '17 at 04:19
  • @Young, while I see the crash in version 11.0 it seems fixed in current sources. So the crash should go away in the next release. But note that the FEM currently (V11.0) can not handle higher then second order spacial derivatives. – user21 Feb 08 '17 at 09:56
  • @user21 thanks for the feedback ... I was trying different stuff to avoid the NDSolve::ivone error and was surprised by the immediate crash ... Should ExpandFunctionSymbolically be ExpandEquationsSymbolically in the documentation here: http://reference.wolfram.com/language/tutorial/NDSolveMethodOfLines.html#789821263 – Young Feb 08 '17 at 15:39
  • @xzczd The buckling equation is very similar to the biharmonic equation ... I found your answer there previously and tried the pure NDSolve version to no avail – Young Feb 08 '17 at 15:43
  • @Young, yes, that looks right. I'll file a bug. Thanks. – user21 Feb 08 '17 at 16:06
  • OK @Young: (w^(0,2)) and using Derivative[0, 2][w] are basically the same thing. The alpha is the nondimensional load that will cause buckling. You can think of it an eigenvalue problem and alpha is the eigen values. – Aladdin Feb 08 '17 at 19:04
  • @xzczd So why did you set alpha = 4 Pi^2 ? – Aladdin Feb 08 '17 at 19:06
  • I set apha because I was going to compare results to a problem detailed in one of the references I found – Young Feb 08 '17 at 19:45
  • 3
    No, (w^(0,2)) is meaningless, it just looks correct, the StandardForm of Derivative can't be typed in this way, check this post for more details. Then, if this is an eigenvalue problem, I think your problem is similar to this one. – xzczd Feb 09 '17 at 02:40
  • @young I guess you've mixed this question up with this one? – xzczd Feb 09 '17 at 02:45
  • @xzczd I'm not sure what you mean. I haven't seen the first link ("this question") – Young Feb 09 '17 at 02:48
  • @young I mean there exists several posts whose name involves "biharmonic" and I've answered 2 of them, but the previous mentioned post doesn't contain a pure NDSolve approach. Actually this type of equation i.e. stationary biharmonic equation can't be solved with NDSolve directly, because 1. "MethodOfLine" only handles well-posed initial value problem. 2. Currently "FiniteElement" can only deal with equation no more than 2nd order. – xzczd Feb 09 '17 at 02:54
  • @xzczd now I understand ... the day "FiniteElement" inside NDSolve can handle 3rd order or higher will be awesome. – Young Feb 09 '17 at 02:58

1 Answers1

2

Since you just want to verify your manual solution by any way, let me show you a solution based on finiteFourierSinTransform.

dim@x = 1;
dim@y = 1/2;

Clear[alpha]

With[{w = w[x, y]}, 

 eqn = D[w, {x, 4}] + 2 D[w, {x, 2}, {y, 2}] + D[w, {y, 4}] + alpha D[w, {x, 2}] == 0;

 help = ({w == 0, D[w, {#, 2}] == 0} /. List /@ {# -> -dim@#, # -> dim@#} // Flatten) &;

 {bc@x, bc@y} = help /@ {x, y}]

Then make finite Fourier sine transform with respect to $x$, and substitute bc@x in:

Format@finiteFourierSinTransform[f_, __] := Subscript[\[ScriptCapitalF], s][f]

ffst = finiteFourierSinTransform;
{teq, tbc@y} = ffst[{eqn, bc@y}, {x, -dim@x, dim@x}, n] /. (Rule @@@ bc@x /. y -> y_)

Once again, make finite Fourier sine transform. This time we eliminate derivatives with respect to $y$:

tteq = ffst[teq, {y, -dim@y, dim@y}, m] /. 
     ffst[ffst[a_, b__], c__] :> ffst[ffst[a, c], b] /. (Rule @@@ tbc@y /. 
      x -> x_) /. (Rule @@@ bc@x /. y -> y_) // Simplify

Mathematica graphics

At this point, it's clear that $w$ only has a trivial solution, unless the coefficient (-4 alpha n^2 + (4 m^2 + n^2)^2 Pi^2) equals zero, which is relevant to buckling. It's clear that m and n won't be that large for first 3 alphas, so let's find them by brute force:

alphavalue = Solve[tteq[[1, 1]] == 0, alpha][[1, 1, -1]]
Sort@Union@Flatten[Table[{alphavalue, {n, m}}, {m, 5}, {n, 5}], 1][[1 ;; 3]]
(* {{4 π^2, {2, 1}}, {(169 π^2)/36, {3, 1}}, {(25 π^2)/4, {1, 1}}} *)

The first one is 4 π^2, which is exactly the value tested in your question.

xzczd
  • 65,995
  • 9
  • 163
  • 468