Solving advection diffusion pde

49 views (last 30 days)
Deepa Maheshvare
Deepa Maheshvare on 25 Dec 2018
I want to solve the above pde with the given boundary and initial conditions. I came across the pdepe function in MATLAB.
I had a chance to look at the example given here . I couldn't understand how pdex1pde function has to be defined for my case.
Could someone help?
  1 Comment
Deepa Maheshvare
Deepa Maheshvare on 27 Dec 2018
Hi All,
Is the following implementation correct?
function DiffusionConvection
m = 0;
x = linspace(0,62,10);
t = linspace(0,10,100);
sol = pdepe(m,@pdefun,@icfun,@bcfun,x,t)
function [g,f,s] = pdefun(x,t,c,DcDx)
D = 900;
v = 10;
g = 1;
f = D*DcDx;
s = -v*DcDx;
end
function c0 = icfun(x)
c0 = 80;
end
function [pl,ql,pr,qr] = bcfun(xl,cl,xr,cr,t)
pl = cl -10;
ql = 1;
pr = cr;
qr = 1;
end
end

Sign in to comment.

Answers (1)

Bill Greene
Bill Greene on 27 Dec 2018
The only problem I see with your code is in the boundary conditions. I corrected your bcfun function and have attached my version of your code below.
function DiffusionConvection
m = 0;
x = linspace(0,62,10);
t = linspace(0,10,100);
D = 900;
sol = pdepe(m,@pdefun,@icfun,@bcfun,x,t);
function [g,f,s] = pdefun(x,t,c,DcDx)
v = 10;
g = 1;
f = D*DcDx;
s = -v*DcDx;
end
function c0 = icfun(x)
c0 = 80;
end
function [pl,ql,pr,qr] = bcfun(xl,cl,xr,cr,t)
pl = -10*D;
ql = 1;
pr = 0;
qr = 1;
end
end
  5 Comments
Torsten
Torsten on 2 Jan 2019
Edited: Torsten on 2 Jan 2019
pl = -10*D;
ql = 1;
If you insert in the form used by pdepe (p+q*f=0), you get
-10*D + 1*D*Dcdx = 0,
thus
DcDx = 10.
Deepa Maheshvare
Deepa Maheshvare on 2 Jan 2019
Thanks a lot for the clarification

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!