Pull request containing the weak-form Fokker-Planck self-collision operator for ions and associated features (check-in tests, underlying ability to support cross-ion-species collisions). Creating this request now to gather feedback before the merge. The major additions are the fokker_planck*.jl modules and the gauss_legendre.jl module, which provides the weak-form matrices necessary for the implementation.
To do list (before merging):
(COMPLETE) Include gauss_legendre.jl methods in calculus_tests.jl
(COMPLETE) Tests for second derivative function provided by the gauss_legendre.jl module.
(COMPLETE) Remove Q from second_derivative functions for chebyshev methods.
Retest the manufactured solutions tests (@johnomotani's Krook operator appears to break the MMS tests, again).
(COMPLETE) Clean up the earlier "strong-form" implementation of the collision operator.
(COMPLETE) Test the collision operator in a domain with sheath boundary conditions to check for reasonable behaviour.
(COMPLETE) Structure calculus.jl and the chebyshev.jl, gauss_legendre.jl modules in a fashion that is compatible with the new structure in master.
(COMPLETE) Example input file.
(COMPLETE) Instructions/checks for when to use "chebyshev_pseudospectral" vs. "gausslegendre_pseudospectral" options.
(COMPLETE) Determine how to usefully store interactive tests scripts "2D_FEM_assembly_test.jl" "fkpl_functional_test.jl" and "GaussLobattoLegendre_test.jl".
Support the vperp BC enforcing regularity at vperp =0 for the chebyshev grid. https://github.com/mabarnes/moment_kinetics/issues/157. This issue likely prevents the use of numerical dissipation in the vperp coordinate with chebyshev points.
Pull request containing the weak-form Fokker-Planck self-collision operator for ions and associated features (check-in tests, underlying ability to support cross-ion-species collisions). Creating this request now to gather feedback before the merge. The major additions are the fokker_planck*.jl modules and the gauss_legendre.jl module, which provides the weak-form matrices necessary for the implementation.
To do list (before merging):
To do list (after merging):