Source code for sarkas.potentials.tests.test_moliere
from numpy import array, isclose, zeros
from scipy.constants import elementary_charge, epsilon_0, pi
from ..moliere import moliere_force
[docs]def test_moliere_force():
"""Test the calculation of the moliere force and potential."""
charge = 4.0 * elementary_charge # = 4e [C] mks units
coul_const = 1.0 / (4.0 * pi * epsilon_0)
screening_charges = array([0.5, -0.5, 1.0])
screening_lengths = array([5.99988000e-11, 1.47732309e-11, 1.47732309e-11]) # [m]
params_len = len(screening_lengths)
pot_mat = zeros(2 * params_len + 1)
pot_mat[0] = coul_const * charge**2
pot_mat[1 : params_len + 1] = screening_charges.copy()
pot_mat[params_len + 1 :] = 1.0 / screening_lengths
r = 6.629755e-10 # [m] particles distance
potential, force = moliere_force(r, pot_mat)
assert isclose(potential, 4.423663010052846e-23)
assert isclose(force, 6.672438139145769e-14)
# def test_update_params():
# # TODO: write a test for update_params
# pass