mabarnes / moment_kinetics

Other
2 stars 4 forks source link

Multi-species collisions with different reference velocities for each species #196

Open mrhardman opened 6 months ago

mrhardman commented 6 months ago

Currently the collision operator C[F,F] acts on a single velocity space described by vpa and vperp. However, the introduction of electrons, fast ions, or just using moment_kinetic normalisations will mean that vpa and vperp will describe a different physical velocity range for each species.

Denoting the reference velocity of species s and s' by crefs and crefsp, the corresponding distribution functions by Fs and Fsp, and the corresponding Rosenbluth potentials by Hs and Hsp, the prescription for obtaining the Rosenbluth potentials in this more general case will be as follows:

If crefs > crefsp then interpolate Fsp on to the grid used by Fs, and solve for Hsp using the existing routines (and apply any normalisation scaling factors).

If crefs < crefsp then solve for Hsp using Fsp and the existing routines, and then interpolate Hsp onto the grid used by Hs (and apply any normalisation scaling factors).

The ratio of crefs/crefsp determines the scaling needed for the interpolation, whereas the data stored always remains on the original vpa vperp normalised coordinates, which simply change interpretation when the interpolation is carried out.

The main computational challenge is in providing a fast interpolation for the 2D space of vpa vperp. A naive implementation based on matrix assembly would appear to scale like

N^2 * ngrid^2,

where N is the number of points in a single global coordinate dimension vpa or vperp and ngrid is the number of polynomials in a local element. We assume that each point in the interpolated function will depend only on a single element in the un-interpolated data. This scaling is comparable to the assembly step already used in the collision operator which suggests that it may be possible to construct an interpolation which does not slow the operator down by more that O(1).

@johnomotani @LucasMontoya4 Thoughts on this exercise? How quickly would you want either collisions with kinetic electrons or multiple charged species?

LucasMontoya4 commented 6 months ago

@mrhardman I'm afraid I think it's going to take me a bit of time to understand everything you've said... Probably John can give you an answer!

mrhardman commented 6 months ago

The branch https://github.com/mabarnes/moment_kinetics/tree/cross-species-collisions has been created to start experimenting with the interpolation methods in the 2D velocity grid. Note that existing 1D interpolation methods cannot directly carry over to the 2D domain. The new routine interpolate_2D_vspace! is tested and can function with any of the input grid options (although the collision operator matrices do not support Chebyshev grids yet).