Graphics Reference
In-Depth Information
and cosines, which implies the Fourier coecients u ijk may be complex even
though u is real-valued: this helps to simplify some of the other notation,
and more to the point, matches the API of most Fast Fourier Transform
packages. Note also that the Fourier coecients u ijk are 3D vectors of
complex numbers, not just scalars: you can think of this really being the
Fourier transform of u , the separate Fourier transform of v , and the further
separate Fourier transform of w all wrapped up into one equation.
In practice, of course, we'll use just a discrete Fourier transform, over
an m
m array of Fourier coecients. The length L should be chosen
large enough that the periodic tiling isn't too conspicuous, but not too large
relative to the simulation grid spacing Δ x —after all, we won't be able to
afford to take m too large, and we want the Fourier grid spacing L/m (the
smallest details we'll procedurally add) to be a lot smaller than Δ x .
Shinya and Fournier [Shinya and Fournier 92] and Stam and Fiume
[Stam and Fiume 93] introduced to graphics perhaps the simplest physically
reasonable turbulence model, the Kolmogorov “5/3-law”. This states that
for fully developed steady-state turbulence, the kinetic energy contained
in the Fourier modes of spatial frequency k should scale like k 5 / 3 .This
means that the ( i, j, k ) Fourier coecient should have magnitude on the
order of
×
m
×
( i 2 + j 2 + k 2 ) 11 / 12
u ijk
for i, j, k large enough (the low spatial frequencies are assumed to not
belong to the isotropic turbulence regime.) We can take it, in fact, to be a
random vector uniformly sampled from a ball of radius C ( i 2 + j 2 + k 2 ) 11 / 12 ,
for some user-tunable constant C . The cut-off frequency, below which we
keep u ijk zero, should be on the order of L/ Δ x or more, so that we don't
add procedural details at scales that were captured in the simulation.
The divergence of velocity becomes a simple algebraic operation on the
Fourier series:
u ( x )=
12 π
L
u ijk ] e 12 π ( ix + jy + kz ) /L .
[( i, j, k )
·
i,j,k = −∞
Therefore,
u = 0 is equivalent to requiring that each Fourier coe-
cient u ijk is perpendicular to its wave vector ( i, j, k ). Makingavelocity
field divergence-free then simplifies to just fixing each coecient individu-
ally, subtracting off their component in the radial direction—a simple 3D
projection.
Finally, once the Fourier coecients have been determined, an inverse
FFTcanbeappliedoneachofthe u -, v
∇·
,and w -components to get a
Search WWH ::




Custom Search