Skip to main content
added 242 characters in body
Source Link
Alex Trounev
  • 48.8k
  • 3
  • 51
  • 115

This method can be used up to t=270 without loss of stability, but without violation of condition v<1 only up to t=230. The result is similar to what @bbgodfrey got.

Figure 3

This method can be used up to t=270 without loss of stability, but without violation of condition v<1 only up to t=230. The result is similar to what @bbgodfrey got.

Figure 3

added 326 characters in body
Source Link
Alex Trounev
  • 48.8k
  • 3
  • 51
  • 115
{Plot3D[solnu[x, t], {x, 0, L}, {t, 0, tmax}, Mesh -> None, 
  ColorFunction -> "Rainbow", AxesLabel -> Automatic], 
 Plot3D[solnv[x, t], {x, 0, L}, {t, 0, tmax}, Mesh -> None, 
  ColorFunction -> "Rainbow", AxesLabel -> Automatic, 
  PlotRange -> All]}

Figure 2

{Plot3D[solnu[x, t], {x, 0, L}, {t, 0, tmax}, Mesh -> None, 
  ColorFunction -> "Rainbow", AxesLabel -> Automatic], 
 Plot3D[solnv[x, t], {x, 0, L}, {t, 0, tmax}, Mesh -> None, 
  ColorFunction -> "Rainbow", AxesLabel -> Automatic, 
  PlotRange -> All]}

Figure 2

Source Link
Alex Trounev
  • 48.8k
  • 3
  • 51
  • 115

For such a system of nonlinear equations it is necessary to use a special method of solution and a thin grid with a sufficiently large number of cells. Then the concentration function will be automatically limited and the solution will look completely different than on a coarse grid of 25 cells, which is used in the automatic solution method.

func[x_, t_] := ((v[x, t] - 9/100)*(1 + u[x, t]) - 1/2*u[x, t])/
   u[x, t];

equ = D[u[x, t], t] - 1/20*func[x, t] + 
    D[u[x, t]^3*(D[u[x, t], x] + D[u[x, t], {x, 3}]), x] == 0;
eqv = D[v[x, t], t] + 
    u[x, t]^2/2*(3*D[u[x, t] + D[u[x, t], {x, 2}], x])*
     D[v[x, t], x] - 
    1/10*D[v[x, t], {x, 2}] == (1 - 
      v[x, t])*(func[x, 
        t]^2 - (1/10*Log[Abs[(1 - v0)/(1 - v[x, t])]])^2);

L = 10 \[Pi]; c = 1/40; v0 = 1/5; tmax = 200;
eqns = {equ, eqv, u[0, t] == u[L, t], v[0, t] == v[L, t], 
   u[x, 0] == 1 + c*Cos[x], v[x, 0] == 1/10};
{solnu, solnv} = 
 NDSolveValue[eqns, {u, v}, {x, 0, L}, {t, 0, tmax}, 
  Method -> {"MethodOfLines", 
    "SpatialDiscretization" -> {"TensorProductGrid", 
      "MinPoints" -> 137, "MaxPoints" -> 137, 
      "DifferenceOrder" -> "Pseudospectral"}}, MaxSteps -> 10^6]

Plot[{solnu[x, 0], solnu[x, 50], solnu[x, 100], solnu[x, 101]}, {x, 0,
   L}, PlotRange -> {{0, L}, All}, ImageSize -> 400, PlotPoints -> 80,
  Frame -> True, Axes -> False, AspectRatio -> 0.4, 
 PlotStyle -> {Black, Green, Blue, Red}]

Plot[{solnv[x, 0], solnv[x, 50], solnv[x, 100], solnv[x, 101]}, {x, 0,
   L}, PlotRange -> {{0, L}, All}, ImageSize -> 400, Frame -> True, 
 Axes -> False, AspectRatio -> 0.4, 
 PlotStyle -> {Black, Green, Blue, Red}]

Figure 1