Re: Numerical solution of coupled nonlinear PDEs
- To: mathgroup at smc.vnet.net
- Subject: [mg112106] Re: Numerical solution of coupled nonlinear PDEs
- From: schochet123 <schochet123 at gmail.com>
- Date: Tue, 31 Aug 2010 04:15:01 -0400 (EDT)
- References: <i5g0j8$gq1$1@smc.vnet.net>
Since you have no time derivative in the equation for x, the system is a DAE (Differential-Algebraic System), which can be tricky, especially when the system involves PDEs and boundary conditions rather than just ODEs. Apparently NDSolve's solver for this case is not quite ready for prime time. To work around the difficulty, add a term -eps D[x[t,y],t] to the left side of the equation D[x[t, y], {y, 2}] == b[t, y] - a[t, y] for x, to turn it into purely differential (i.e., time-dependent) system. You want to pick eps small in order to make the added term negligible, but not too small because that would make the resulting system too stiff. The value eps=10^(-6) seemed to work OK. However, NDSolve then complains about having too large a local error, which can be avoided by adding the option Method -> {"MethodOfLines", {SpatialDiscretization -> {TensorProductGrid, MinPoints -> 200}}} to NDSolve. Be sure to check that the solution approximately satisfies the original equation. One way to do this is to plot Evaluate[D[x[t, y], {y, 2}] -( b[t, y] - a[t, y]) /. mysol1[[1]]] at various times, using the PlotRange->All option. Also note that in order to avoid an initial layer that may induce large errors, it is important that the initial data for x satisfy its algebraic equation, as yours does here. Steve On Aug 30, 1:19 pm, "Dominic" <miliot... at rtconline.com> wrote: > Hi guys, > > For the functions a(t,y), b(t,y), and x(t,y),I have the PDE system: > > a'=a''+a x''+x'a' > > b'=b''-bx''-x'b' > > x''=b-a > > Sorry I can't show the system more clearly here but on the left side the > partial is respect to t for a and b and it's with respect to y for the > x(t,y), and on the right, all partials are with respect to y, > > and I'd like to obtain a numerical solution for any simple IBVP using > NDSolve, for example in the domain 0<t<1 and 0<y<1 with all initial > conditions set to y This is the code I'm using: > > mysol = NDSolve[{D[a[t, y], t] == > D[a[t, y], {y, 2}] + a[t, y] D[x[t, y], {y, 2}] + > D[x[t, y], y] D[a[t, y], y] > , > D[b[t, y], t] == > D[b[t, y], {y, 2}] - b[t, y] D[x[t, y], {y, 2}] - > D[x[t, y], y] D[b[t, y], y] > , > D[x[t, y], {y, 2}] == b[t, y] - a[t, y] > , > a[0, y] == y, a[t, 0] == 0, a[t, 1] == 1, > > b[0, y] == y, b[t, 0] == 0, b[t, 1] == 1, > > x[0, y] == y, x[t, 0] == 0, x[t, 1] == 1}, > > {a, b, x}, {t, 0, 1}, {y, 0, 1}, MaxSteps -> 10000] > > However, I receive boundary-value errors and singular errors. > > Can someone help me set up this system in any way for any reasonable > domain with any reasonable initial and bondary values to obtain a > non-trivial solution? > > Thanks guys, > > Dominic