diffusion_pde


diffusion_pde, a MATLAB code which solves the diffusion partial differential equation (PDE) dudt = mu * d2udx2 in one spatial dimension and time, with a constant diffusion coefficient mu, and periodic or zero Neumann boundary conditions, using the forward time centered space (FTCS) solver or ode45().

We solve for u(x,t), the solution of the constant-velocity diffusion equation in 1D,

        du/dt - mu d2u/dx2 = 0
      
over the interval:
        0.0 <= x <= 1.0
      
with constant diffusion coefficient:
        mu = 0.5
      
with periodic boundary conditions:
        u(0,t) = u(1,t) for all t
      
or zero Neumann conditions:
        u'(0,t) = u'(1,t) = 0 for all t
      
and initial condition
        u(x,0) = (10x-6)^2 (8-10x)^2 for 0.6 <= x <= 0.8
               = 0                   elsewhere.
      

We may use a method known as FTCS (forward time, centered space):

As an alternative, we may use the ode45() solver.

Licensing:

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

Languages:

diffusion_pde is available in a MATLAB version and an Octave version and a Python version.

Related Data and codes:

diffusion_pde_test

advection_pde, a MATLAB code which solves the advection PDE dudt + c * dudx = 0 in one spatial dimension, with a constant velocity c, and periodic boundary conditions, using the forward time, centered space (FTCS) difference method.

allen_cahn_pde, a MATLAB code which sets up and solves the Allen-Cahn reaction-diffusion system of partial differential equations (PDE) in 1 space dimension and time.

artery_pde. a MATLAB code which solves a partial differential equation (PDE) that models the displacement of arterial walls under pressure.

gray_scott_pde, a MATLAB code which solves the partial differential equation (PDE) known as the Gray-Scott reaction diffusion equation, displaying a sequence of solutions as time progresses.

schroedinger_linear_pde, a MATLAB code which solves the complex partial differential equation (PDE) known as Schroedinger's linear equation: dudt = i uxx, in one spatial dimension, with Neumann boundary conditions.

schroedinger_nonlinear_pde, a MATLAB code which solves the complex partial differential equation (PDE) known as Schroedinger's nonlinear equation: dudt = i uxx + gamma * |u|^2 u, in one spatial dimension, with Neumann boundary conditions.

spiral_pde, a MATLAB code which solves a pair of reaction-diffusion partial differential equations (PDE) over a rectangular domain with periodic boundary condition, whose solution is known to evolve into a pair of spirals.

string_pde, a MATLAB code which sets up and solves the partial differential equations (PDE) describing a vibrating string.

tumor_pde, a MATLAB code which solves the tumor angiogenesis partial differential equations (PDE) using MATLAB's pdepe() function.

wave_pde, a MATLAB code which uses the finite difference method (FDM) in space, and the method of lines in time, to set up and solve the partial differential equations (PDE) known as the wave equations, utt = c uxx.

References:

  1. Willem Hundsdorfer, Jan Verwer,
    Numerical solution of time-dependent advection-diffusion-reaction equations,
    Springer, 2003
    ISBN: 978-3-662-09017-6

Source Code:


Last revised on 27 January 2021.