"Luminita T." wrote in message <email@example.com>... > "Torsten" wrote in message <firstname.lastname@example.org>... > > "Luminita T." wrote in message <email@example.com>... > > > "Torsten" wrote in message <firstname.lastname@example.org>... > > > > "Luminita T." wrote in message <email@example.com>... > > > > > I've have a system of 4 parabolic PDE with boundary conditions that I would like to integrate in time starting from initial conditions. > > > > > > > > > > I've been trying to put the system into the pdepe() format, but it seems that I can't give coupled boundary conditions, in particular something of the form: a*DuDx(1) + b*DuDx(2) + c*DuDx(3) = 0. > > > > > > > > > > As far as I could see from the help, q(x,t) needs to be specified as a vector-valued function that is element-wise multiplied with f(x,t,u,DuDx), which in my case is just DuDx. This does not allow to express linear combinations of elements of f() for a boundary condition. > > > > > > > > > > If q(x,t) could be a matrix-valued function, then it could be done. > > > > > Is it possible to somehow specify coupled boundary conditions in pdepe() ? > > > > > > > > > > Alternatively, I've been looking at the pdetool() for 2D spatial PDE. It seems a bit more complicated to handle and I'll have to put a bit of time into it. At this point, I can't say directly from the UserGuide (2. Setting up your PDE >>Types of Boundary Conditions) if it can handle the coupled boundary conditions. Any help figuring this out is much appreciated. > > > > > > > > > > > > > Usually, the boundary condition for equation i refers directly to the flux defined in equation. > > > > Thus if f for equation i is given as > > > > f(i)=a*du1/dx + b*du2/dx + c*du3/dx, > > > > you simply have to put > > > > p(i)=0 and q(i)=1 > > > > to define the boundary condition > > > > a*du1/dx + b*du2/dx + c*du3/dx = 0. > > > > > > > > Best wishes > > > > Torsten. > > > > > > Hmm, my normal flux functions are f(1) = a1*du1/dx; f(2) = a2*du2/dx, etc. Separate terms. But then maybe I can introduce a "fake" or "helper" equation to have this new flux to use in the boundary condition. > > > > Or if you have flux boundary conditions for all three variables at a common endpoint, > > you can solve for the separate boundary conditions, e.g. > > a1*du1/dx = flux1 > > a2*du2/dx = flux2 > > a1*du1/dx + a2*du2/dx + a3*du3/dx = 0 > > gives > > a3*du3/dx = -flux1 - flux2 > > > > Best wishes > > Torsten. > > I'm very happy to try again with pdepe() and not having to dig into the pdetool(). Hopefully it will all work by next week. > > Yes - the flux boundary conditions for the three variables are at a common endpoint. (Actually the u() functions have originally different domains, but this can be solved by a change of variable, and luckily the transformation allows also to the match the boundary endpoints) > > I haven't really understood the last suggestion though. The general boundary equation form is > > p(x,t,u) + q(x,t).*f(x,t,u,dx/du) = 0 > > where the q() vector function is only element wise multiplied with the f(x,t,u,dx/du) flux vector. Thus I don't see how I can write > > a3*du3/dx = -flux1 - flux2 > > as a boundary condition. > > best regards > Luminita
flux1 and flux2 are scalar values prescribed by you - so if the flux term for the third equation is f(3)=a3*du3/dx, you can set p(3)=flux1 + flux2 q(3) = 1 in the function where you prescribe the boundary conditions.