1
$\begingroup$

I tried to NDSolve the PDE system $$\partial_t w =x\cdot w\quad\quad\partial_z x=w$$ for $$(t,z)\in[0,1]\times[0,\pi]$$ with boundary conditions $$x(t,0)=w(t,0)=w(t,\pi)=0$$ and initial conditions $$w(0,z)=\sin z\quad\quad x(0,z)=1-\cos z$$ Here's my code:

s = NDSolve[{D[w[t, z], t] == w[t, z]*x[t, z], 
   D[x[t, z], z] == w[t, z], w[0, z] == Sin[z], x[0, z] == 1 - Cos[z],
    w[t, 0] == 0, w[t, π] == 0, x[t, 0] == 0}, {w , x}, {t, 0, 
   1}, {z, 0, π}]

Mathematica displays the following warning:

"NDSolve::mconly: For the method NDSolve`IDA, only machine real code is available. Unable to continue with complex values or beyond floating-point exceptions."

I would appreciate any help on how to overcome this error or solve numerically this kind of PDE system anyway.

$\endgroup$

1 Answer 1

2
$\begingroup$

This is a quasilinear hyperbolic system of equations. Not all initial data is valid, w=0 should be excluded from the initial data. An example of solving the problem

s = NDSolve[{D[w[t, z], t] == w[t, z]*x[t, z], 
   D[x[t, z], z] == w[t, z], w[0, z] == 1, x[0, z] == 1 - Cos[z], 
   w[t, 0] == 1, w[t, \[Pi]] == 1, x[t, 0] == 0}, {w, x}, {t, 0, 
   1}, {z, 0, \[Pi]}, 
  Method -> {"MethodOfLines", 
    "SpatialDiscretization" -> {"TensorProductGrid", 
      "MinPoints" -> 80, "MaxPoints" -> 100, 
      "DifferenceOrder" -> "Pseudospectral"}}];
{ContourPlot[Evaluate[w[t, z] /. s], {t, 0, 1}, {z, 0, \[Pi]}, 
  Contours -> 20, ColorFunction -> Hue, PlotLabel -> "w", 
  FrameLabel -> {"t", "z"}, PlotLegends -> Automatic], 
 ContourPlot[Evaluate[x[t, z] /. s], {t, 0, 1}, {z, 0, \[Pi]}, 
  Contours -> 20, ColorFunction -> Hue, PlotLabel -> "x", 
  FrameLabel -> {"t", "z"}, PlotLegends -> Automatic]}

fig1

$\endgroup$
11
  • $\begingroup$ Thanks for great help! Also: how can I see that boundary condition $w(t,0)=0$ is invalid? $\endgroup$
    – user61386
    Commented Nov 27, 2018 at 15:05
  • $\begingroup$ @user61386 It is necessary to bring the system to a second order equation using $x=w_t/w$ and then $x_z=w=(w_t/w)_z$ $\endgroup$ Commented Nov 27, 2018 at 15:22
  • $\begingroup$ My only problem is that with the initial conditions used above, i.e. $w(0,z)=1$ and $x(0,z)=1-\cos z$, the PDE system equation $\partial_t x =w$ seems to fail for $t=0$. $\endgroup$
    – user61386
    Commented Nov 27, 2018 at 20:59
  • $\begingroup$ Sorry, where does this equation come from? $\endgroup$ Commented Nov 27, 2018 at 21:12
  • 1
    $\begingroup$ Initial and boundary conditions must be consistent. $\endgroup$ Commented Nov 28, 2018 at 10:28

Your Answer

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