Spatial discretization has failed. Discretization supports only parabolic and elliptic equations, with flux term involving spatial derivative.
14 views (last 30 days)
Show older comments
Widitha Samrakoon
on 18 Feb 2016
Commented: Torsten
on 22 Feb 2016
I get this error in writing the code.... The code I wrote is as follows
function pdeop global A void G L Usg Usl Rhog Rhol Kos Kot aeff Ugeff Uleff hl a; m = 0; x = linspace(0,1.5,31); t = linspace(0,3600,3601); sol = pdepe(m,@pdeoppde,@pdeopic,@pdeopbc,x,t); u1 = sol(:,:,1); u2 = sol(:,:,2); u3=sol(:,:,3); u4=sol(:,:,4);
% -------------------------------------------------------------- function [c,f,s] = pdeoppde(x,t,u,DuDx) c = [A*void*(1-hl)*Rhog;A*void*hl*Rhol;A*void*(1-hl)*Rhog;A*void*hl*Rhol]; f = [-G;L;-G;L] .*u; Cs=Rhog*Kos*aeff*A*sqrt(Rhog/(Rhol-Rhog))*(Ugeff/Uleff); Ct=Rhog*Kot*aeff*A*sqrt(Rhog/(Rhol-Rhog))*(Ugeff/Uleff); ysstar=-4.2913*u(2)^4+11.791*u(2)^3-12.01*u(2)^2+5.508*u(2); ytstar=0.0023*exp(6.0058*u(4)); M=Cs*(ysstar-u(1)); N=Ct*(ytstar-u(3)); s = [M;-M;N;-N]; end % -------------------------------------------------------------- function u0 = pdeopic(x) u0 = [0;0.5;0;0.5]; end % -------------------------------------------------------------- function[pl,ql,pr,qr] = pdeopbc(xl,ul,xr,ur,t) pl = [ul(1);0;ul(3);0]; ql = [0;0;0;0]; pr = [ur(1)-0.5;0;ur(3)-0.5;0]; qr = [0;0;0;0]; end end
Can anyone please suggest me a solution?
3 Comments
Torsten
on 19 Feb 2016
... and best include the PDE system with boundary and initial conditions in mathematical notation as pdf document such that we are able to compare it to your code.
Best wishes
Torsten.
Accepted Answer
Bill Greene
on 20 Feb 2016
I see two problems.
First, your boundary conditions are incorrectly defined. They should be:
pl = [ul(1);ul(2);ul(3);ul(4)];
pr = [ur(1);ur(2)-0.5;ur(3);ur(4)-0.5];
(ql and qr are correct). All four of your equations are hyperbolic which pdepe is not designed to handle. But, you have added some artificial diffusion (the small second derivative terms). That is a good approach but because of the negative signs on some of the coefficients you have de-stabilized the system instead stabilizing it. Try this for the vector of diffusion coefficients, instead:
eps=.001;
[eps eps eps eps]'
2 Comments
Bill Greene
on 21 Feb 2016
OK, I took a guess at what your intention was with respect to the boundary conditions. pdepe requires boundary conditions at both ends and p=q=0 is not acceptable. I suggest p=0 and q=1 at the ends where you really don't want a BC. This will set your "artificial" flux to zero there but have minimal impact on your "real" PDE.
More Answers (1)
Torsten
on 22 Feb 2016
As Bill already pointed out, pdepe is not designed to solve PDEs without 2nd derivative terms.
You will have to discretize the spatial first derivatives (e.g. by a first-order upwind scheme) and solve the resulting system of ordinary differential equations using ODE15S, e.g. . Look up "method of lines" for more details.
Best wishes
Torsten.
See Also
Categories
Find more on Geometry and Mesh in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!