Trouble with Method of Lines Matlab

  • Context: MATLAB 
  • Thread starter Thread starter Ein Krieger
  • Start date Start date
  • Tags Tags
    Lines Matlab Method
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 4K views
Ein Krieger
Messages
32
Reaction score
0
Hello, guys

I am struggling with solving the following ODE related to radial diffusion equation:

du/dt=D*(d^2/dr^2+2/r*du/dr)

For easiness I have attached the main m.file with general commands in Radial_diffusion.m
pde1d.m contains function to be solved by ODE, and dss004.m contains routines for differential solving.

I am getting the following commands:

Undefined function or variable 'r0'.

Error in pde1rd (line 10)
ur=dss004(0.0,r0,nr,u);

Error in odearguments (line 88)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ode15s (line 149)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Error in Radial_diffusion (line 30)
[t,u]=ode15s(@pde1rd,tout,u0,options);

Can you please indicate where I did wrong?
 

Attachments

Physics news on Phys.org
Hello there,

Your function [itex]pde1rd(t,u)[/itex] calls [itex]dss04(0.0,r0,nr,u)[/itex]. While [itex]u[/itex] is an argument of the first function and [itex]nr[/itex] is defined as a global variable, [itex]r0[/itex] is neither and is not defined within [itex]pde1rd[/itex].

J.
 
jfgobin said:
Hello there,

Your function [itex]pde1rd(t,u)[/itex] calls [itex]dss04(0.0,r0,nr,u)[/itex]. While [itex]u[/itex] is an argument of the first function and [itex]nr[/itex] is defined as a global variable, [itex]r0[/itex] is neither and is not defined within [itex]pde1rd[/itex].

J.

Thanks. I've got it.

But the values of u(r,t) from the following command

fprintf('\n nr=%2d r0=%4.2f \n', nr,r0);
for it=1:nout
fprintf('\n t=%4.2f\n', t(it));
for i=1:2:nr
fprintf('r=%4.1f u(r,t)=%8.5f\n', r(i), u(it));
end

end
fprintf('\n ncall=%5d\n', ncall)
show that for each value of r and t u(r,t) is zero. Why is it showing such results?