Solving 2 coupled pde

4 views (last 30 days)
Niharika Gupta
Niharika Gupta on 19 Aug 2015
Commented: Torsten on 19 Aug 2015
I want to solve a system of 2 coupled pde (in MATLAB) of the format:
c1*(df/dt)+c2*(df/dz)+c3*(f)+c4*(g)=0
(dg/dt)=c5*f+c6*g
with Initial conditions as
f(0,t)=1, g(z,0)=0 and f(z,0)=0
0<f,g,z,t<1
I am getting the error:
Warning: Failure at t=5.414867e-02. Unable to meet integration tolerances without reducing
the step size below the smallest value allowed (1.110223e-16) at time t.
> In ode15s at 669
In pdepe at 317
In pdex4 at 13
Warning: Time integration has failed. Solution is available at requested time points up to
t=5.414805e-02.
> In pdepe at 323
In pdex4 at 13
Error using surf (line 75)
Data dimensions must agree.
Error in pdex4 (line 18)
surf(x,t,u1);
My code is
function pdex4
c1=(0.63*150*(10^-6))/(6.93*(10^-5)*3600);
c2=1;
c3=((1-0.63-0.27)*0.0045*150*(10^-6)*5021.8)/(6.93*(10^-5));
c4=-((1-0.63-0.27)*0.0045*150*(10^-6)*4.62*(10^3))/(1.03*6.93*(10^-5));
c5=(0.0045*3600*1.03*5021.8)/(4.62*(10^3));
c6=-0.0045*3600;
m = 0;
x = linspace(0,1,10);
t = linspace(0,1,1000000);
options=odeset('NonNegative',[]);
sol = pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t,options);
u1 = sol(:,:,1);
u2 = sol(:,:,2);
figure
surf(x,t,u1);
title('u1(x,t)')
xlabel('Distance x')
ylabel('Time t')
figure
surf(x,t,u2);
title('u2(x,t)')
xlabel('Distance x')
ylabel('Time t')
function [c,f,s] = pdex4pde(x,t,u,DuDx)
c1=(0.63*150*(10-6))/(6.93*(10^-5)*3600);
c2=1;
c3=((1-0.63-0.27)*0.0045*150*(10^-6)*5021.8)/(6.93*(10^-5));
c4=-((1-0.63-0.27)*0.0045*150*(10^-6)*4.62*(10^3))/(1.03*6.93*(10^-5));
c5=(0.0045*3600*1.03*5021.8)/(4.62*(10^3));
c6=-0.0045*3600;
c = [c1; 1];
f = [-c2*u(1); 0];
s = [c3*u(1)+c4*u(2); c5*u(1)+c6*u(2)];
function u0 = pdex4ic(x)
u0 = [0; 0];
function [pl,ql,pr,qr] = pdex4bc(xl,ul,xr,ur,t)
pl = [-1; ul(2)-1];
ql = [1; 0];
pr = [-1; ur(2)-1];
qr = [1; 1];
Can you please tell me what changes should I make.
  3 Comments
Niharika Gupta
Niharika Gupta on 19 Aug 2015
Thanks Torsten for the suggestion. Following the method of lines, my equations are of this form:
f' = A*f + B*g
g' = c5*f +c6*g
where
A =
[a b c 0 0 0 0 0,...
0 a b c 0 0 0 0,...
.
.
.
0 0 0 0 0 a b c];
B =
[d 0 -d 0 0 0 0 0,...
0 d 0 -d 0 0 0 0,...
.
.
.
0 0 0 0 0 d 0 -d];
and
fi(0)=0
gi(0)=0
Does ode15s allow me to solve these kind of coupled equations? Large Stiff Sparse Problem given in Mathworks ode somehwat resembles my case but I am unable to inculcate it for my case.
Torsten
Torsten on 19 Aug 2015
I think the structure of your matrices A and B is wrong.
But yes: ode15s can handle sparse ODE systems resulting from the discretization of PDEs.
Best wishes
Torsten.

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 19 Aug 2015
Those boundary conditions are incompatible.
You have f(0,t)=1, g(z,0)=0 and f(z,0)=0 . So f(z,t)=1 when z = 0. Consider then t = 0, then f(z,0) = 1 by the first boundary condition when z = 0. But in the third boundary condition you said f(z,0) = 0 for all z which has to include the case of z = 0.
With your boundary conditions being incompatible you are not going to be able to meet the integration tolerances.

Community Treasure Hunt

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

Start Hunting!