示例#1
0
    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)
示例#2
0
    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": {}}