A typical stochastic partial differential equation (SPDE) used in surface growth modeling is the Kardar-Parisi-Zhang (KPZ) equation. This nonlinear SPDE characterizes the evolution of a growing interface influenced by random noise, balancing deposition, surface relaxation, and stochastic effects.

🌵MATLAB snippet

Stochastic Partial Differential Equations (SPDEs) are often used in modeling surface growth phenomena. One of the most common SPDEs for this purpose is the Kardar-Parisi-Zhang (KPZ) equation. The KPZ equation models surface growth where the height ( h(x, t) ) evolves over time due to random fluctuations, and is given by:

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

where:

MATLAB Implementation Overview

To simulate this SPDE, you can discretize the equation using finite difference methods for the spatial and temporal derivatives. Here's a general outline of how to set up a simulation in MATLAB:

  1. Define Parameters:
  2. Initialize the Surface:
  3. Iterate Over Time:

Sample MATLAB Code

Below is a simplified version of MATLAB code to simulate the KPZ equation:

 % Parameters
 L = 100; % Length of the domain
 N = 100; % Number of grid points
 dx = L / (N - 1); % Spatial step size
 dt = 0.01; % Time step size
 T = 10; % Total simulation time
 nu = 1.0; % Diffusion coefficient
 lambda = 0.5; % Non-linear term coefficient
 noise_strength = 0.1; % Strength of the noise
 ​
 % Spatial grid
 x = linspace(0, L, N);
 h = zeros(1, N); % Initial height profile
 ​
 % Time loop
 num_steps = floor(T / dt);
 for t = 1:num_steps
     % Compute Laplacian of h
     Laplacian_h = (circshift(h, [0, -1]) - 2 * h + circshift(h, [0, 1])) / dx^2;

     % Compute gradient squared term
     grad_h = (circshift(h, [0, -1]) - circshift(h, [0, 1])) / (2 * dx);
     grad_sq = grad_h.^2;

     % Add noise term
     eta = noise_strength * randn(1, N);

     % Update the surface
     h = h + dt * (nu * Laplacian_h + (lambda / 2) * grad_sq + eta);
 end
 ​
 % Plot the result
 plot(x, h);
 title('Simulated Surface Growth');
 xlabel('Position x');
 ylabel('Height h(x)');

Explanation: