[[ Check out my Wordpress blog Context/Earth for environmental and energy topics tied together in a semantic web framework ]]

Thursday, April 18, 2013

Ornstein-Uhlenbeck Diffusion

The Ornstein-Uhlenbeck correction to diffusion can be used in applications ranging from modeling Bakken oil production to modeling CO2 sequestration.

Due to its origins as a random walk process, a pure diffusion model of particles will show unbounded excursions given a long enough time duration. This is characterized by the unbounded Fickian growth law showing a t dependence for a pure random walk with a single diffusivity.

In practice, the physical environment of a particle may prevent unbounded excursions. It is physically possible that the environment may impose limiting effects on the extent of motion, or that it will place some form of drag on the particle’s hopping rate the further it moves away from a mean starting value.

The rationale for this limiting process within a producing hydrofractured reservoir may arise from a barrier to diffusion beyond a certain range.

Figure 1: The Ornstein-Uhlenbeck process suppresses the diffusional flow by limiting the extent at which the mobile solute can travel, thus generating a constrained asymptote below that of drag-free diffusion.

Similarly, a sequestration barrier may exist preventing CO2 from permanently exiting the active carbon cycle; this makes the fat temporal tail even fatter.

Figure 2 : Impulse Response of the sequestering of Carbon Dioxide to a normalized stimulus. The solid blue curve represents the generally accepted model, while the dashed and dotted curves represent the dispersive diffusion model with O-U correction. The correction flattens out the tail.

We can use the Ornstein-Uhlenbeck process to model mathematically how this pure random walk becomes bounded. The Ornstein-Uhlenbeck process has its origins in the modeling of Brownian motion with a special “reversion to the mean” property in motion excursions (specifically, it was first formulated to describe Brownian motion in the presence of drag on particle velocities, extending Einstein's work). The following expression shows the stationary marginal probability given a stochastic differential equation

dX=-a Xdt+dW

which models a drag on an excursion [1]
dPXt+s=x  Xs= 0)= 12πτe-x22τ dx 
where   τ=1-e-2at2a

The O-U correction is straight-forward to apply on our dispersive growth formulation, we only need apply a non-linear transformation to the time-scale.

t O-Uτ

and then apply this to a dispersive growth term such as the following:

xτ(t)=Dτ(t)Dτ(t)x01+ Dτ(t)x0    where    τt=(1-e-2at)/2a  

This has the equivalent effect of appearing to slow down time at an exponential rate. This exponential rate turns out to be much faster than the Fickian growth law can sustain, so that an asymptotic limit is achieved in the diffusional growth extent.

Figure 3: The reversion to the mean process of the Ornstein-Uhlenbeck process will limit the growth of a diffusional process

A physical model of an attractor or potential well which “tugs” on the random walker to bring it back to the mean state (see Figure below).

Figure 4: Representation of an Ornstein-Uhlenbeck random walk process. The hopping rate works similarly to a potential well, with a greater resistance to hopping the further excursion ways from the mean.

Algorithmic Code

The following pseudo-code snippet sets up an Ornstein-Uhlenbeck random walk model with a reversion-to-the-mean term. The diffusion term is the classical Markovian random walk transition rate. The drag term places an attractor which opposes large excursions in the term Z.

-- Ornstein-Uhlenbeck random walk = ou

ou(X1, X2, Z)
   if R < 0.5 then
      Z = Z*X1 + X2
      Z = Z*X1 - X2

-- This is how it gets parameterized

ou_random_walker (dX, Diffusion, Drag, Z)
   X1 = exp(-2*Drag*dX)
   X2 = sqrt(Diffusion*(1-exp(-2*Drag*dX))/2/Drag)
   ou(X1, X2, Z)


To determine whether an Ornstein-Uhlenbeck process is apparent on a set of data, one can apply a simple multiscale variance to the result of a Z array of length N :

variance(Z,N) {
   L = N/2
   while(L > 1) {
      Sum = 0.0
      for(i=1; i<N/2; i++) {
        Val = Z[i] - Z[i+L]
        Sum += Val * Val
      print L “ “ sqrt(Sum/(N/2))
      L = 0.95*L;

So that for a given random walk simulation, the asymptotic variance will tend to saturate at longer correlation length scales. A typical multiscale variance plot will look like those described here:

Autocorrelation and Spectral Representation

The autocorrelation of the Ornstein-Uhlenbeck process is, where Theta=Drag:

Rx= Dθ e-θ|x|

Even though this shows a saturation level, the power spectrum still obeys a 1/S^2 fall-off.

ISx= Dπ1Sx2+θ2

The Orenstein-Uhlenbeck process is often referred to as red noise and the two parameters of Diffusion and Drag can be determined either from the autocorrelation function or from the PSD. For the PSD, on a log-log plot, this involves reading the peak near S=0 and then determining the shoulder of the power-law roll-off. Between these two measures, one can infer both parameter values.


D. Mumford and A. Desolneux, Pattern Theory: The Stochastic Analysis Of Real-World Signals. A K Peters, Ltd., 2010.

1 comment:

  1. Hi WHT,

    Thanks for this summary.
    I have a question about the NDIC Typical plot.
    See e-mail.