I am solving the Eikonal Equation in 2D:

$ | \nabla T(x,y)|=1/V(x,y) $

for the traveltime, T(x,y), from a starting point: $ T(x_0,y_0) = 0$.

The curves $ T(x,y)=C$ forms closed contours around the starting point.

However the Eikonal equation do not impose any smoothness requirements on the contours.

As an example consider the following case:

Black circle: starting point, color: velocity, red=fast, blue=slow.

Figure: Black circle: starting point, color: velocity, V(x,y), red=fast, blue=slow.

The contours would have no problem getting trough the narrow red "gap".

The way I look at this: the Eikonal equation models sound, and sound have no problems getting trough narrow spaces.

I would like instead to model something more "viscous" so that the contours were smooth and could NOT get trough such a narrow gap.

What would be the PDE for that?

And how would I solve it numerically? Today I am using the Fast Marching Method. Would it possible to adapt this method to the new equation?


You could model shear viscosity without changing the PDE, just by pre-processing the data $V$. The idea is that since a slow-moving layer of fluid will slow down its neighbors, the velocity $V$ must be continuous, and more precisely Lipschitz continuous: $$|V(x,y)-V(x',y')|\le L\sqrt{(x-x')^2+(y-y')^2}\tag1$$ for all pairs of points $(x,y)$ and $(x',y')$. So, the picture of velocity field should look like this:

enter image description here

where purple color indicates intermediate values between red and blue. The velocity being Lipschitz should make iso-contours $C^{1,1}$-smooth.

A natural way to preprocess $V$ is $$\widetilde V(x,y) = \min_{x',y'}\left\{V(x',y')+L\sqrt{(x-x')^2+(y-y')^2} \right\} \tag2$$ This guarantees $\widetilde V(x,y)\le V(x,y)$, which means that viscous fluid will not move faster than inviscous one would (makes sense). The value of $L$ is for you to choose: the smaller values of $L$ correspond to greater viscosity. In your example, $\widetilde V$ will be the same as $V$ in the blue region and also in most of the red region, except for some boundary layer in which $\widetilde{V}<V$ due to viscosity.

The cost of pre-processing can be reduced by observing that in (2) you only need to consider $(x',y')$ such that $\sqrt{(x-x')^2+(y-y')^2}\le (\max V-\min V)/L$.

Also, check out Computational Science SE with its supply of fluid modeling questions.

  • $\begingroup$ Thanks! Could I first choose an influence-range, dmax, then find L: L=(maxV-minV)/dmax, and finally loop over all points within a distance = dmax from the point being preprocessed and apply your equation 2? $\endgroup$ – Andy Mar 19 '13 at 18:57
  • $\begingroup$ And in the picture of the preprocessed velocity you used an influence range >= half the width of the gap? $\endgroup$ – Andy Mar 19 '13 at 19:02
  • 1
    $\begingroup$ @Andy Yes, that choice of L makes sense. The loop should over distance $\le $ dmax, rather than $=$. This ensures $\widetilde V\le V$, because $x'=x$, $y'=y$ is one of the points over while minimum runs. As for the picture, it was made in Paint by adding purple rectangles to your picture. :) To prevent the contours from going through at the middle of the gap, influence range should be strictly greater than half-width. Try setting it equal to the total width of the gap, or even more. $\endgroup$ – user67506 Mar 19 '13 at 19:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.