All checks were successful
gitea-physics/pyewjn/pipeline/head This commit looks good
56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
import pyewjn.dielectric
|
|
import numpy as np
|
|
import pytest
|
|
from pyewjn.baskets import CalculationParams
|
|
|
|
|
|
def get_common_lindhard_dielectric():
|
|
params = CalculationParams(omega=1e9, omega_p=3.5e15, tau=1e-14, v_f=2e6)
|
|
return pyewjn.dielectric.get_lindhard_dielectric(params)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"test_input,expected",
|
|
[
|
|
(10, -1222.185185062794 + 1.2249999998777178e8j),
|
|
(1000, 16924.14814718176 + 1.2250000020552777e8j),
|
|
(1e8, 83.687499999706 + 0.00022417398943752126j),
|
|
],
|
|
)
|
|
def test_lindhard_dielectric(test_input, expected):
|
|
|
|
eps_to_test = get_common_lindhard_dielectric()
|
|
|
|
np.testing.assert_almost_equal(
|
|
eps_to_test(test_input), expected, decimal=6, err_msg="b function is off"
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"test_input,expected",
|
|
[
|
|
((100, 100), -883.3001542404703 + 1.2566370613549341e8j),
|
|
((100, 1e5), 5.827225842825694e7 + 3.933446612656656e7j),
|
|
((100, 1e10), 1.0084823001646925 + 2.0013975538629039e-10j),
|
|
((100, 1e7), 8483.300121667038 + 0.6340397839154446),
|
|
],
|
|
)
|
|
def test_zeta_pi_lindhard_dielectric(zeta_p_i_epsilon, test_input, expected):
|
|
u, y = test_input
|
|
actual = zeta_p_i_epsilon(np.sqrt(u**2 + y**2))
|
|
|
|
np.testing.assert_allclose(
|
|
actual,
|
|
expected,
|
|
rtol=10**3.8,
|
|
err_msg="lindhard dielectric differs from Mathematica",
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def zeta_p_i_epsilon():
|
|
params = CalculationParams(
|
|
omega=1e9, omega_p=3.544907701811032e15, tau=1e-14, v_f=2e6
|
|
)
|
|
return pyewjn.dielectric.get_lindhard_dielectric(params)
|