def test_qmodel(self): qm = QModel() modqm = QModel(beta=2., expnorm=0.5, gamma=0.1) # test rho_rec self.assertEqual(qm.rho_rec(1.), 0.77880078307140488) self.assertEqual(modqm.rho_rec(1.), 0.6814583156907158) # test rho_rec_limit0 self.assertEqual(qm.rho_rec_limit0, -0.25) self.assertEqual(modqm.rho_rec_limit0, -0.51)
def __init__(self, dielectric_const, q_model=None, energy_cutoff=520, madetol=0.0001, axis=None): """ Initializes the FreysoldtCorrection class Args: dielectric_const (float or 3x3 matrix): Dielectric constant for the structure q_model (QModel): instantiated QModel object or None. Uses default parameters to instantiate QModel if None supplied energy_cutoff (int): Maximum energy in eV in reciprocal space to perform integration for potential correction. madeltol(float): Convergence criteria for the Madelung energy for potential correction axis (int): Axis to calculate correction. If axis is None, then averages over all three axes is performed. """ self.q_model = QModel() if not q_model else q_model self.energy_cutoff = energy_cutoff self.madetol = madetol self.dielectric_const = dielectric_const if isinstance(dielectric_const, int) or \ isinstance(dielectric_const, float): self.dielectric = float(dielectric_const) else: self.dielectric = float(np.mean(np.diag(dielectric_const))) self.axis = axis self.metadata = {"pot_plot_data": {}, "pot_corr_uncertainty_md": {}}