Example #1
0
    return mu


def _get_number_of_electrons(energies, weights, chemical_potential,
                             temperature):
    T = temperature
    g = 3 - len(energies)
    mu = chemical_potential
    n = 0
    for energies_spin in energies:
        for E, w in zip(np.array(energies_spin), weights):
            n += np.sum(1.0 / (1 + np.exp((E - mu) / T))) * w
    return n * g


if __name__ == '__main__':
    from cogue.interface.vasp_io import Vasprunxml
    import sys

    T = 0.4
    print "Temperature %f K (%f eV)" % (T / Kb, T)

    vasprun = Vasprunxml(sys.argv[1])
    succeeded = vasprun.parse_eigenvalues()
    eigvals = vasprun.get_eigenvalues()
    kpoints, weights = vasprun.get_kpoints()
    mu = get_chemical_potential(eigvals, weights, T, 16)
    print "Chemical potential:", mu
    print "Entropy (T*S):", get_entropy(eigvals, weights, mu, T) * T