Viscous corrections from linearized Boltzmann transport
Dénes Molnár
Publication: Testing and improving shear viscous phase space correction models
Abstract: The calculation of self-consistent shear viscous corrections closely follows the standard determination of shear viscosity from covariant Boltzmann kinetic theory. The collision term is linearized in the deviation from local thermal equilibrium for each particle species, while the free streaming term is taken at zeroth order in the deviation, i.e., p · ∂f → p · ∂feq. This leads to an integral equation for the shear corrections. It can be shown that for each species i the corrections can be reduced to a one-dimensional function χi(|p|) that only depends on the magnitude of the particle momentum in the fluid rest frame.The integral equation turns out to be equivalent to a variational problem for a functional that is quadratic in the χi, which then becomes a linear algebra maximization problem when the χi are expanded over some finite basis of suitable one-dimensional functions. The computational difficulty stems from the need to evaluate certain 4D integrals for each variational matrix element, i.e., each possible pair of particle species and basis functions, which means tens of thousands or more of such integrals. Also, unlike the calculation of the shear viscosity, which only needs the maximum value of the functional, we need the full momentum distribution of particles, i.e., an accurate determination of the actual χi that maximize the functional.
Zack Wolff and I wrote a code in C++ that performs these calculations via nesting adaptive 1D interation routines from the GNU Scientific Library (GSL). GSL provides high-order routines that, for smooth functions, provide much faster convergence than 1/√N for Monte Carlo integration even for our 4D problem. Still, the calculations took a lot of cluster computing time, and with energy dependent cross sections they will take at least one order of magnitude longer. This is why I want to investigate whether GPUs are more suitable for this problem.
The primary goal is to port our current single-CPU shear viscous code to GPUs. On one hand, this is useful because everything can be conveniently cross-checked against the current code, including any change of integrators, if necessary. On the other hand, while the bulk viscous case has not been worked out analytically yet, it will lead to 4D integrals that are very similar to the shear viscous case (only the kernel will change). Therefore, once the shear viscous calculations are adapted to GPUs, bulk viscous corrections will be straightforward to code.
The first step will be to investigate whether the adaptive 1D integrators in GSL can be ported to OpenCL. If that turns out to be infeasible or inefficient, I will move on to other high-order integrators (Gauss-Kronrod, Gauss-Laguerre, etc) or give up adaptivity and use a fixed high number of points so that one can run efficiently on GPUs. The next step will be to increase the number of dimensions steadily up to full 4D, via nesting 1D integrations. Finally, I will port the shear viscous integration kernels, test the port against the current CPU-based code extensively, and try to optimize the code on GPUs as much as possible.