Hello Subodh Acharya,

I've been away for a field trip for two weeks, and I guess you have already found a solution for your problem.

If your question is still open, you may consider to look into package deSolve that now provides functions (ode1D, ode2D and ode3D) for solving 1-3 dimensional equations using the method of lines approach. The package comes with many examples and extensive documentation and there is also a JSS publication:

http://www.jstatsoft.org/v33/i09

If you need more help, please write to the dedicated mailing list for dynamic models:

https://stat.ethz.ch/mailman/listinfo/r-sig-dynamic-models

Hope it helps

Thomas Petzoldt

PS: You may also have a look into package ReacTran.


At 26.04.2010 03:09 Subodh Acharya wrote:
Hello everyone,
    I am trying to solve 2D differential equations using finite difference
scheme in R. I have been able to work with the equations with only one
spatial dimensions but I want to extend it to the two dimensional problem.
For example i can simulate one dimensional diffusion using a code like the
following. But I want to write a similar code for,say, a two dimensional
diffusion equation. Any kind of help/advice is highly appreciated.

Here is how I did for the 1D equation (in this case for 1D diffusion)
Equation: dc/dt  = D*d^2c/dx^2


dx = 10
dt = 0.1
D = 15
n = 20
tstep = 200
C = 50
dt = 0.1
dx = 10
conc<-matrix(0,tstep,n)
conc[1,1:10] = C
  for (i in 2:tstep) {
for (j in 1:n){
if (j==1){
conc[i,j] = conc[i-1,j] - dt*(D/dx^2)*(conc[i-1,j] - conc[i-1,j+1])
}
conc[i,j] = conc[i,j]
  if(j>1&&  j<  n){
conc[i,j] = conc[i-1,j] + dt*(D/dx^2)* (conc[i-1,(j-1)] - 2*conc[i-1,j] +
conc[i-1,(j+1)])
}
if (j==n){
conc[i,n] = conc[i-1,n] + dt*(D/dx^2)* ( conc[i-1,n-1] - conc[i-1,n])
}
conc[i,j] = conc[i,j]
}
}

Now in 2D the equation will be like this

dc/dt  = Dx*d^2c/dx^2 + Dy*d^C/dy^2

So that when I solve it I will get C(x, y, t) at each node of the grid.

Thanks for the help in advance.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to