Alternating direction implicit method

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

In numerical analysis, the Alternating Direction Implicit (ADI) method is a finite difference method for solving parabolic, hyperbolic and elliptic partial differential equations.[1] It is most notably used to solve the problem of heat conduction or solving the diffusion equation in two or more dimensions. It is an example of an operator splitting method.[2]

The traditional method for solving the heat conduction equation numerically is the Crank–Nicolson method. This method results in a very complicated set of equations in multiple dimensions, which are costly to solve. The advantage of the ADI method is that the equations that have to be solved in each step have a simpler structure and can be solved efficiently with the tridiagonal matrix algorithm.

The method

File:ADI-stencil.svg
Stencil figure for the alternating direction implicit method in finite difference equations

Consider the linear diffusion equation in two dimensions,

{\partial u\over \partial t} =
 \left({\partial^2 u\over \partial x^2 } +
{\partial^2 u\over \partial y^2 }
\right)
 =  ( u_{xx} + u_{yy} )
= \Delta u

The implicit Crank–Nicolson method produces the following finite difference equation:

{u_{ij}^{n+1}-u_{ij}^n\over \Delta t} = 
{1 \over 2}\left(\delta_x^2+\delta_y^2\right)
\left(u_{ij}^{n+1}+u_{ij}^n\right)

where \delta_p is the central difference operator for the p-coordinate. After performing a stability analysis, it can be shown that this method will be stable for any \Delta t.

A disadvantage of the Crank–Nicolson method is that the matrix in the above equation is banded with a band width that is generally quite large. This makes direct solution of the system of linear equations quite costly (although efficient approximate solutions exist, for example use of the conjugate gradient method preconditioned with incomplete Cholesky factorization).

The idea behind the ADI method is to split the finite difference equations into two, one with the x-derivative taken implicitly and the next with the y-derivative taken implicitly,

{u_{ij}^{n+1/2}-u_{ij}^n\over \Delta t/2} = 
\left(\delta_x^2 u_{ij}^{n+1/2}+\delta_y^2 u_{ij}^{n}\right)
{u_{ij}^{n+1}-u_{ij}^{n+1/2}\over \Delta t/2} = 
\left(\delta_x^2 u_{ij}^{n+1/2}+\delta_y^2 u_{ij}^{n+1}\right).

The system of equations involved is symmetric and tridiagonal (banded with bandwidth 3), and is typically solved using tridiagonal matrix algorithm.

It can be shown that this method is unconditionally stable and second order in time and space.[3] There are more refined ADI methods such as the methods of Douglas,[4] or the f-factor method[5] which can be used for three or more dimensions.

References

<templatestyles src="Reflist/styles.css" />

Cite error: Invalid <references> tag; parameter "group" is allowed only.

Use <references />, or <references group="..." />
  1. Lua error in package.lua at line 80: module 'strict' not found..
  2. *Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found..
  4. Lua error in package.lua at line 80: module 'strict' not found..
  5. Lua error in package.lua at line 80: module 'strict' not found..