Graphics Reference
In-Depth Information
that viscosity appears as the Laplacian of velocity, which in one dimension
is simply the second derivative.) That is, when we use the simple semi-
Lagrangian method to try to solve the advection equation without viscosity,
our results look like we are simulating a fluid with viscosity. It's called
numerical dissipation (or numerical viscosity, or numerical diffusion—they
all mean the same thing).
Fortunately the coecient of this numerical dissipation goes to zero as
Δ x
0, so we get the right answer in the limit. However, in computer
graphics we don't have the patience or supercomputing resources to take
Δ x extremely small: we want to see good-looking results with Δ x as large
as possible!
So how bad is it? It depends on what we're trying to simulate. If we're
trying to simulate a viscous fluid, which has plenty of natural dissipation
already, then the extra numerical dissipation will hardly be noticed—and
more importantly, looks plausibly like real dissipation. But, most often
we're trying to simulate nearly inviscid fluids, and this is a serious annoy-
ance which keeps smoothing the interesting features like small vortices from
our flow. As bad as this is for velocity, in Chapter 6 we'll see it can be
much much worse for other fluid variables.
3.5 Reducing Numerical Dissipation
There are many approaches to fixing the numerical dissipation problem.
We'll outline one particularly simple, but quite effective, strategy for fixing
the semi-Lagrangian method presented so far. As we saw in the last section,
the problem mainly lies with the excessive averaging induced by linear
interpolation (of the quantity being advected; linearly interpolating the
velocity field in which we trace is not the main culprit and can be used
as is). Thus, the natural next step is to use sharper interpolation. For
example, Fedkiw et al. [Fedkiw et al. 01] proposed using a specially limited
form of Catmull-Rom interpolation, which we will explore here.
Underlying Catmull-Rom is cubic Hermite spline interpolation. In one
dimension, a cubic Hermite spline simply constructs a cubic polynomial on
each interval that matches sampled function values and derivatives at the
endpoints. That is, the cubic polynomial p ( x )on[ x i ,x i +1 ] should satisfy
p ( x i )= f i ,
p ( x i +1 )= f i +1 ,
dp
dx ( x i )= s i ,
dp
dx ( x i +1 )= s i +1 .
Search WWH ::




Custom Search