1# coding: utf-8
2"""Tests for bessel module."""
3import numpy as np
4
5from abipy.tools import bessel
6from abipy.core.testing import AbipyTest
7
8
9class TestBessels(AbipyTest):
10
11    def test_spline_int_jlqr(self):
12        """Testing spline_int_jlqr."""
13        rcut, qmax = 1.3, 3
14        l = 0
15        qvals = np.linspace(0, qmax, num=200)
16        spline = bessel.spline_int_jlqr(l, qmax, rcut, numq=1024, numr=1024)
17        fq = spline(qvals)
18        assert len(fq) == len(qvals)
19        assert fq.shape == (len(qvals),)
20        self.assert_almost_equal(fq[0], rcut ** 3 / 3)
21        def primitive(x):
22            return -x * np.cos(x) + np.sin(x)
23        self.assert_almost_equal(fq[-1], (1 / qmax**3) * (primitive(qmax*rcut) - primitive(0)))
24