Open mrhardman opened 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!
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).
Currently the collision operator
C[F,F]
acts on a single velocity space described byvpa
andvperp
. However, the introduction of electrons, fast ions, or just using moment_kinetic normalisations will mean thatvpa
andvperp
will describe a different physical velocity range for each species.Denoting the reference velocity of species s and s' by
crefs
andcrefsp
, the corresponding distribution functions byFs
andFsp
, and the corresponding Rosenbluth potentials byHs
andHsp
, the prescription for obtaining the Rosenbluth potentials in this more general case will be as follows:If
crefs > crefsp
then interpolateFsp
on to the grid used byFs
, and solve forHsp
using the existing routines (and apply any normalisation scaling factors).If
crefs < crefsp
then solve forHsp
usingFsp
and the existing routines, and then interpolateHsp
onto the grid used byHs
(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 originalvpa
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 likeN^2 * ngrid^2
,where
N
is the number of points in a single global coordinate dimensionvpa
orvperp
andngrid
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?