MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

No more memory available... when using ExplicitEuler method for Diffusion equations in Mathematica NDSolve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg47430] No more memory available... when using ExplicitEuler method for Diffusion equations in Mathematica NDSolve
  • From: Dharmesh <dharmesh at cc.usu.edu>
  • Date: Sun, 11 Apr 2004 04:44:07 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

This is my first message to the math group, and I am really new to Mathematica 
as well. I would really appreciate if someone could help me with this, as I 
did not find much help in the documentation or the forum regarding my problem. 
Here are the details:

I have these three diffusion equations that I need to solve using the NDSolve 
function.

solution = {r, a, s} /. First[NDSolve[{D[r[x,t], t] == -r[x,t] + ó[(s[x,t] - 
a[x,t] + g[x,t] - Subscript[c, r])/Subscript[b, r]],
	Subscript[ô,a]*D[a[x,t],t] == D[a[x,t], x, x] - a[x,t] + ë*ó[(s[x, t] - a[x, 
t] + g[x,t] - Subscript[c, a])/Subscript[b, a]],
       	Subscript[ô,s]*D[s[x,t],t] == ep^2*D[s[x, t],x,x] - s[x,t] + r[x,t],
	r[-5,t] == 0, r[x,0] == 0, r[5,t] == 0, a[-5,t] == 0, a[x,0] == 0, a[5,t] == 
0, s[-5,t] == 0, s[x,0] == 0, s[5,t] == 0},
	{r,a,s}, {x,-5,5}, {t,0,150}, MaxStepSize -> {0.025,0.05}, PrecisionGoal -> 
5]];

The above line works in Mathematica and I am able to generate plots (within 
seconds). However, I want to solve the above equations using the ExplicitEuler 
technique (Method->"ExplicitEuler"). The moment I add this to my NDSolve, it 
starts giving me "No more memory available ...". My PC configuration is 
Pentium 4, 3 GHz processor, 1 GB RAM. In a desperate attempt, I even tried to 
reduce the time range to 0-5, with no results. Is there a way I can solve this 
problem?

The initializations required for the above equations are:
ó[(i_)?Negative] := 0;
ó[(i_)?Positive] := i^2/(1 + i^2); 
g[x_, t_] := Evaluate[(Subscript[g, 0]*(1 - E^(-(t/Subscript[ô, 
g]))))/E^(x^2/Subscript[x, 0]^2)]; 
Subscript[c, a] = 0.5; 
Subscript[c, r] = 0.4; 
Subscript[b, r] = 0.2; 
Subscript[b, a] = 0.05;
ë = 1.6; 
Subscript[ô, s] = 0.1; 
Subscript[ô, a] = 1; 
ep = 0.1; 
Subscript[g, 0] = 1; 
Subscript[x, 0] = 3; 
Subscript[ô, g] = 40;

The code to display the plots is:
ContourPlot[solution[[1]] [x, t], {x, -5, 5}, {t, 0, 150}, PlotLabel -> 
"Rhomboid"];
Plot3D[solution[[2]] [x, t], {x, -5, 5}, {t, 0, 150}, PlotLabel -> "Argos"];
Plot3D[solution[[3]] [x, t], {x, -5, 5}, {t, 0, 150}, PlotLabel -> "Spitz"];

Also, Is there a way I can use different techniques to solve different 
differential equations in the same NDSolve? You might want to convert the 
above code into Standard or Traditional form for an easier view.

Thanking you in anticipation.

Dharmesh.


  • Prev by Date: Re: Errors with decimal addition in Mathematica 5.0
  • Next by Date: Re: Adding hyperlinks to help browser files in function::usage
  • Previous by thread: Re: FindRoot
  • Next by thread: ParametricPlot 3D table