The Edwards–Wilkinson (EW) model is a fundamental mathematical framework in statistical physics for describing the evolution of surface growth. It models how a surface roughens over time, governed by a linear stochastic partial differential equation. The main equation incorporates both random fluctuations (white noise) and a smoothing term represented by the Laplacian, balancing randomness and relaxation effects. Primarily used to study kinetic roughening phenomena, the EW model is pivotal in understanding universality classes of surface growth and interfaces. It serves as a benchmark for comparing real-world surface growth processes, contributing to research in materials science, thin-film deposition, and various natural growth systems.

🌵MATLAB snippet

The Edwards–Wilkinson (EW) model is a simpler form of the KPZ equation used to describe surface growth. The main difference is that the nonlinear term ( $\left(\nabla h(x, t)\right)^2$ ) is absent. The EW equation can be written as:

$$ \frac{\partial h(x, t)}{\partial t} = \nu \nabla^2 h(x, t) + \eta(x, t), $$

where:

MATLAB Implementation Outline

Below is a basic MATLAB implementation to simulate the EW model:

  1. Discretize the spatial domain using a grid.
  2. Discretize time using a time step ( $dt$ ).
  3. Use finite difference methods for the Laplacian.
  4. Include a noise term using a random number generator.

Here's how to implement the EW model in MATLAB:

 % Parameters
 N = 100;        % Number of spatial points
 dt = 0.01;      % Time step
 dx = 1.0;       % Spatial step
 nu = 1.0;       % Diffusion coefficient
 noiseStrength = 0.1; % Noise strength
 T = 1000;       % Number of time steps
 ​
 % Initialize the height profile
 h = zeros(1, N);
 ​
 % Time evolution loop
 for t = 1:T
     % Compute the Laplacian using finite differences (periodic boundary)
     laplacian = (circshift(h, -1) - 2 * h + circshift(h, 1)) / (dx^2);

     % Add noise (scaled by sqrt(dt) for stability)
     noise = noiseStrength * sqrt(dt) * randn(1, N);

     % Update the height function
     h = h + dt * (nu * laplacian) + noise;

     % Plot the surface at regular intervals
     if mod(t, 100) == 0
         plot(h);
         title(['Surface profile at time step: ', num2str(t)]);
         xlabel('Spatial position');
         ylabel('Height');
         drawnow;
     end
 end

Explanation:

Visualization: