poisson_2d


poisson_2d, a Python code which computes an approximate solution to the Poisson equation in the unit square, using finite differences and Jacobi iteration.

The version of Poisson's equation being solved here is

        - ( d/dx d/dx + d/dy d/dy ) U(x,y) = F(x,y)
      
over the rectangle 0 <= X <= 1, 0 <= Y <= 1, with exact solution
        U(x,y) = sin ( pi * x * y )
      
so that
        F(x,y) = pi^2 * ( x^2 + y^2 ) * sin ( pi * x * y )
      
and with Dirichlet boundary conditions along the lines x = 0, x = 1, y = 0 and y = 1. (The boundary conditions will actually be zero in this case, but we write up the problem as though we didn't know that, which makes it easy to change the problem later.)

We compute an approximate solution by discretizing the geometry, assuming that DX = DY, and approximating the Poisson operator by

        ( U(i-1,j) + U(i+1,j) + U(i,j-1) + U(i,j+1) - 4*U(i,j) ) / dx /dy
      
Along with the boundary conditions at the boundary nodes, we have a linear system for U. We can apply the Jacobi iteration to estimate the solution to the linear system.

The code is intended as a starting point for the implementation of a parallel version, using, for instance, MPI.

Licensing:

The information on this web page is distributed under the MIT license.

Languages:

poisson_2d is available in a C version and a FENICS version and a MATLAB version and an Octave version and a Python version.

Related Data and Programs:

poisson_1d, a Python code which solves a discretized version of the Poisson equation -uxx = f(x) on the interval a ≤ x ≤ b, with Dirichlet boundary conditions u(a) = ua, u(b) = ub. The linear system is solved using Gauss-Seidel iteration.

poisson_1d_multigrid, a Python code which applies the multigrid method to a discretized version of the 1D Poisson equation.

Source Code:


Last revised on 03 October 2024.