How to formulate boundary conditions for a PDE system?

조회 수: 4 (최근 30일)
Mikael Hakman
Mikael Hakman 2016년 6월 19일
댓글: Hitesh Saini 2020년 3월 16일
I have the following PDE system steaming from Flash Photolysis:
I formulated the PDEs in the form reqired by pdepe and coded pdefun as follows:
function [C,F,S] = photopde (x,t,U,DUDX)
C = [0;1];
F = [0;0];
S = [epsilon*U(1)*U(2);phi*epsilon*U(1)*U(2)];
end
The initial coditions are:
which are encoded into an icfun:
function U = photoic (x)
U = [I0*exp(-C0*epsilon*phi*x);C0];
end
However I have only 2 boundary conditions at the left side at t = 0 and none on the right side:
How do I code corresponding bcfun? How do I define PR and QR outputs from bcfun? Thanks.

답변 (2개)

Torsten
Torsten 2016년 6월 20일
Don't use "pdepe" to solve this system.
Discretize dI/dx in space. This will result in algebraic equations for I in each spatial grid point.
Then use ODE15S to solve the second ordinary differential equation for C in each of these spatial grid points.
Best wishes
Torsten.
  댓글 수: 4
Mikael Hakman
Mikael Hakman 2016년 6월 20일
What you are suggesting is that I should integrate I(x,t) by "hand" using the simplest of all integration methods - the Euler method. Then why not do the same for C(x,t) if that is what was required. But then we can do that in C++ or Java as easy as in MATLAB, don't we?
Torsten
Torsten 2016년 6월 20일
It's the method-of-lines approach - the same approach "pdepe" would use if it was able to solve your equations.
My advise is to start simple. You may try a 2nd order scheme in space for I later, but then it must be an upwind scheme for stability reasons. Centered differences will lead to oscillations, I guess.
Best wishes
Torsten.

댓글을 달려면 로그인하십시오.


Bill Greene
Bill Greene 2016년 6월 20일
pdepe is specifically designed for PDEs that are second-order in the spatial direction. That is why it requires you to specify boundary conditions at both ends.
But that doesn't mean it won't solve first-order PDEs and, since you already have most of the code implemented, I suggest you try it. Since your flux is zero everywhere, a boundary condition you can use at the right end to satisfy pdepe is qr=1, pr=0.
Sometimes when solving first-order PDEs with pdepe the solution shows some spurious oscillations. One simple way to deal with this problem is to add a small amount of "artificial diffusion", e.g.
F = 1e-6*[1;1];
where the factor can be adjusted so that it damps out the oscillations without having a large effect on the solution.
  댓글 수: 2
Mikael Hakman
Mikael Hakman 2016년 6월 20일
I tried this method before I asked the question here. I get the following picture from MATLAB:
The analytical solution gives:
I'm attaching full MATLAB source here. Thanks.
Hitesh Saini
Hitesh Saini 2020년 3월 16일
Hi Bill
How can we apply boundary conditions while solving PDE using line of approach method?
Is it possible?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Boundary Conditions에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by