Fokker-Planck Diffusion
The Fokker-Planck equation
A Lagrangian discretization moves
The optimal
This is a semi-discrete transport where each cell integrates a radial function of its seed, radial_func = sdot.RadialExp( eps ). The gradient of
problem = sdot.OtProblem( sdot.SumOfDiracs( x ), domain, radial_func = sdot.RadialExp( eps ) )
for step in range( nb_steps ):
problem.source = sdot.SumOfDiracs( x ) # every cell gets the mass 1 / n
b = np.asarray( problem.solve().barycenters ) # the barycenters of sigma
x += tau * ( ( b - x ) / eps - grad_V( x ) )With a radial function the masses no longer sum to a constant: raising every weight by sdotplan/Sweep.h). The start, the Voronoi diagram or the weights of the previous step, is raised so that sdot.PowerDiagram( x, psi, distribution = domain, radial_func = sdot.RadialExp( eps ) ).
Heat equation
Inside the disk the cells are squares and
The heat flow from a uniform disk is known:

The choice of ε
- if
is of the order of or smaller, the gaussian of a cell is not flat over it, and the motion is slowed; - if
is not small compared to the square of the scale of , is a blurred version of .
The slope of the second moment (study in the script):
| 3.39 | 3.56 | 3.60 | 3.48 | |
| 3.43 | 3.63 | 3.73 | 3.73 | |
| 3.66 | 3.78 | 3.83 |
The slope approaches 4 as
The time step plays almost no part:
With a potential

The mean follows the exact decay
Limits
RadialExp works in 2D, with a density constant on pieces (Box, Image of degree 0, ConvexHull), on the CPU, without a periodicity or a sink. See the roadmap.
The pages are written by docs/examples/fokker_planck.py.