QuazarTech / Bolt

A Fast Solver Framework For Kinetic Theories
GNU General Public License v3.0
7 stars 5 forks source link

Change primitive variable to log(f) #12

Open mchandra opened 7 years ago

mchandra commented 7 years ago

10 might be caused due to the distribution function f taking on negative values. One possible way to overcome this is to evolve log(f), which has no bounds instead of f, which is positive.

The equation for F(x, v, t) == log(f) has the same structure as f: dF/dt = \partial F/\partial t + \partial F / \partial dx/dt + \partial F / \partial v dv/dt

where the characteristic dv/dt now depends on f == exp(F)

shyams2 commented 7 years ago

It was found that in cases of non-zero charge the density/fields blow up to infinity. This was due to the KSP solver diverging. Setting ksp.setTolerances(atol = 1e-5) seems to be resolve the issue. ksp However, as evident from this plot, it shows poor accuracy. This is the result for the same test-case when the FFT Poisson solver is used. fft

shyams2 commented 7 years ago

The initial conditions as mentioned in #10 were setup to evolve using the log(f) implementation. However, the problem of numerical explosion in the electric field/density still persists. This is plot obtained till t = 1.5 after which the solution blows up. plot

mchandra commented 7 years ago
  1. Please report the above in #10. This issue deals with a more general issue of mapping onto log(f), with the hope that it helps in the resolution in #10.
  2. The initial prognosis for the failure in #10 was that the blowup is being caused by negative regions in phase space due to interpolation errors. By interpolating in log(f), that should no longer be an issue. Is that correct? Confirm that by plotting the phase space distribution in #10
  3. If the simulation in #10 still blows up, then there are other issues which we can discuss there.