pdepe function maximum value
Show older comments
Hello,
I want to solve Fick's second law of diffusion using the pdepe function, where w is the concentration of a species in a solid and D is the diffusion coefficient
- ∂w/∂t=∂/∂x(D ∂w/∂x)
I defined the following parameters
- c=1 m=0 s=0 and f=D ∂w(x,t)/∂x
I made a function to define D
My boundary conditions are (at x=0 and x=L)
- -D ∂w(0,t)/∂x=beta
- -D ∂w(L,t)/∂x=0
Since boundaries are defined as p+qf=0 I've set
- pl=beta
- ql=1
- pr=0
- qr=1
My code seems to work just fine. The concentration w at point x=0 grows with time and numerically, the way I’ve written the code, it has no limit but physically it cannot surpass a saturation concentration Cp. Is there a way to set a maximum to the function? I do not know how to translate this to the code or even where I can add this condition.I would like a code that sets w(0,t)=Cp whenever, w(0,t) ≥Cp
Thanks
12 Comments
Torsten
on 7 Mar 2018
Usual boundary condition at x=0:
D*dw/dx = k*(w-Cp)
Best wishes
Torsten.
FM
on 8 Mar 2018
Torsten
on 8 Mar 2018
Then you could make several computations for different k-values ...
FM
on 8 Mar 2018
ql = 1.0;
if ul <= Cp
pl = beta;
else
pl = 0.0;
end
FM
on 8 Mar 2018
if ul <= Cp
ql = 1.0;
pl = beta;
else
ql = 0.0;
pl = ul - Cp;
end
If this does not work, stop the solver when ul reaches Cp and restart it with the new boundary condition.
Best wishes
Torsten.
FM
on 8 Mar 2018
Torsten
on 8 Mar 2018
sol = pdepe(m,pdefun,icfun,@(xl,ul,xr,ur,t)bcfun(xl,ul,xr,ur,t,ichoice),xmesh,tspan)
...
[pl, ql, pr, qr] = bcfun(xl,ul,xr,ur,t,ichoice)
...
FM
on 8 Mar 2018
FM
on 9 Mar 2018
Torsten
on 9 Mar 2018
Please show your code.
Answers (0)
Categories
Find more on Programming 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!