automatically determine the energy range as min/max eigenvalue
        minus/plus the buffer_in_ev

def _auto_set_energy_range(self):
        """
        automatically determine the energy range as min/max eigenvalue
        minus/plus the buffer_in_ev
        """
        emins = [min([e_k[0] for e_k in self._bs.bands[Spin.up]])]
        emaxs = [max([e_k[0] for e_k in self._bs.bands[Spin.up]])]

        if self._bs.is_spin_polarized:
            emins.append(min([e_k[0] for e_k in
                              self._bs.bands[Spin.down]]))

            emaxs.append(max([e_k[0] for e_k in
                              self._bs.bands[Spin.down]]))

        min_eigenval = Energy(min(emins) - self._bs.efermi, "eV"). \
            to("Ry")
        max_eigenval = Energy(max(emaxs) - self._bs.efermi, "eV"). \
            to("Ry")

        # set energy range to buffer around min/max EV
        # buffer does not increase CPU time but will help get equal
        # energies for spin up/down for band structure
        const = Energy(2, "eV").to("Ry")
        self._ll = min_eigenval - const
        self._hl = max_eigenval + const

        en_range = Energy(max((abs(self._ll), abs(self._hl))),
                          "Ry").to("eV")

        self.energy_span_around_fermi = en_range * 1.01
        print("energy_span_around_fermi = ",
              self.energy_span_around_fermi)