5

I am trying to solve two simultaneous partial differential equation for $P[x,t]$ and $V[x,t]$. I have a piecewise boundary condition for $V[L,t]$. When using that piecewise condition, I get the error

NDSolve::ndnum : Encountered non-numerical value for a derivative at t==0

However, I get a solution when I manually solve within the piecewise ranges.

Vout = 
  Piecewise[
    {{1.1182586384 t, 0 <= t <= 1}, {1.11826, 1 <= t <= 14}, 
     {644.41640535 (0.00173530 - 0.00173530 (-14 + t)), 14 <= t <= 15}}];

NDSolve[
  {D[P[x, t], t] + 7.17358*^8 D[V[x, t], x] == 0, 
   D[V[x, t], t] + D[P[x, t], t]/1000 == 
     Piecewise[
       {{-0.00984252 Abs[V[x, t]] V[x, t], 0 < x < 3100}, 
        {-0.00656168 Abs[V[x, t]] V[x, t], 3100 < x < 5800}, 
        {-0.02249719 Abs[V[x, t]] V[x, t], 5800 < x < 5809.144}}],
   V[x, 0] == 0., P[x, 0] == 3.4474*^7, P[0, t] == 3.447*^7, V[5809.144, t] == Vout}, 
  {P, V}, {x, 0, 5809.144}, {t, 0, 15}]
xzczd
  • 65,995
  • 9
  • 163
  • 468

1 Answers1

4

The problem is that by limiting the domain of Vout to 0 <= t < 15, its derivative becomes Indeterminate at the boundaries t = 0, 15:

Mathematica graphics

We can fix it by extending the definition of Vout beyond the time interval. The extension won't be used, except in values of its derivative at the endpoints of the time interval.

Clear[x, t, V, P];
Vout = Piecewise[{
    {1.1182586384 t, t <= 1},
    {1.11826, 1 <= t <= 14},
    {644.41640535 (0.00173530 - 0.00173530 (-14 + t)), 14 <= t}}];

NDSolve[{
  D[P[x, t], t] + 7.17358*^8 D[V[x, t], x] == 0,
  D[V[x, t], t] + D[P[x, t], t]/1000 == Piecewise[{
     {-0.00984252 Abs[V[x, t]] V[x, t], 0 < x < 3100},
     {-0.00656168 Abs[V[x, t]] V[x, t], 3100 < x < 5800},
     {-0.02249719 Abs[V[x, t]] V[x, t], 5800 < x < 5809.144}}],
  V[x, 0] == 0., P[x, 0] == 3.4474*^7, P[0, t] == 3.447*^7, V[5809.144, t] == Vout},
 {P, V}, {x, 0, 5809.144}, {t, 0, 15}]

Mathematica graphics

Michael E2
  • 235,386
  • 17
  • 334
  • 747