
[Sponsors] 
solving a heat diffusion problem, using CrankNicolson AND gaussSeidel method 

LinkBack  Thread Tools  Search this Thread  Display Modes 
June 5, 2012, 13:36 
solving a heat diffusion problem, using CrankNicolson AND gaussSeidel method

#1 
New Member
Vagelis Karvounis
Join Date: May 2012
Posts: 1
Rep Power: 0 
Hello everyone!
First of all i 'm not sure if i am posting on the right forum! May someone advise me about that! Here is what i am dealing with. A heat diffusion problem on an aluminum plate. The plate is represented by a grid of points. CrankNicolson method gives me an equation to calculate each point's temperature by using the temperatures of the surrounding points. T(i,j)=A*((a*dt/2)*(T'(i1,j)2*T'(i,j)+T'(i+1,j)+T(i1,j)+T(i+1,j))/dx^2 +(a*dt/2)*(T'(i,j1)2*T'(i,j)+T'(i,j+1)+T(i,j1)+T(i,j+1))/dy^2+ T'(i,j)) where T' is the temperature of a point at the previous time point, dt is the time between two time points and a is a heat diffusion constant of aluminum. dx,dy is the spatial division for the grid in x and y axis respectively also A=1/(1+dt*a*(1/dx^2)+dt*a*(1/dy^2)) T'(i,j) must be given, as also some boundary conditions must be given too. But the equation uses T(i1,j),T(i+1,j),T(i,j1),T(i,j+1) which are unknown. At this point GaussSeidel method is useful. I can use an arbitrary value for these unknown T values and by iterating the calculations for each point, T(i,j) are converging to the right values! Of course after that, T values are placed on T' and the process is repeated to calculate temperatures for the next time point. I am writing a code on matlab for this problem. The code is very slow.Trying to deal with making it faster, i found, that the shorter is the time step(dt) the less are the iterations i need to succeed a convergence on GaussSeidel. For my code, i use a 101X301 points grid and if dt=0.01sec it takes about 15 iterations to succeed convergence, more than 50 iterations if dt=0.1sec and more than 500 if dt=1sec. Could someone guide me to find out how the convergence process is being affected by dt or anything else? Thank you very much! 

June 5, 2012, 14:00 

#2 
Senior Member
Filippo Maria Denaro
Join Date: Jul 2010
Posts: 6,778
Rep Power: 71 
when you reduce the time step is absolutely normal and sound phjysical that the number of iterations decreases ... you simply have a physical state at the new time step that is closer to the old one....
Try using a SOR method, is faster than GS. 

March 25, 2015, 01:30 

#3 
New Member
prudhvi
Join Date: Oct 2014
Posts: 1
Rep Power: 0 
Hey vagelis,
I am trying to solve 2D heat equation using Crank Nicolson implementing gauss siedel method. my grid size is 128*128. time step dt=0.1. code is very slow in matlab. I am not able to get results quickly. please let me know if i can do anything to increase my execution time. 

March 25, 2015, 08:44 

#4 
Member
Join Date: Dec 2012
Posts: 92
Rep Power: 13 
You could try using a different linear solver. Matlab has an implementation of the biconjugated gradient method (bicgstab) included.
http://de.mathworks.com/help/matlab/ref/bicgstab.html The link explaines how to use it. The conjugate gradient methods are heaps faster than the gaussseidel, jacobi etc solvers. 

Tags 
gaussseidel, heat diffusion 
Thread Tools  Search this Thread 
Display Modes  

