code: def get_adjusted_fermi_level(efermi, cbm, band_structure):
      
      # make a working copy of band_structure
      bs_working = BandStructureSymmLine.from_dict(band_structure.as_dict())
      if bs_working.is_metal():
          e = efermi
          while e < cbm:
              e += 0.01
              bs_working._efermi = e
              if not bs_working.is_metal():
                  return e
      return efermi
docs: When running a band structure computations the fermi level needs to be
      take from the static run that gave the charge density used for the non-self
      consistent band structure run. Sometimes this fermi level is however a
      little too low because of the mismatch between the uniform grid used in
      the static run and the band structure k-points (e.g., the VBM is on Gamma
      and the Gamma point is not in the uniform mesh). Here we use a procedure
      consisting in looking for energy levels higher than the static fermi level
      (but lower than the LUMO) if any of these levels make the band structure
      appears insulating and not metallic anymore, we keep this adjusted fermi
      level. This procedure has shown to detect correctly most insulators.
  
      Args:
          efermi (float): Fermi energy of the static run
          cbm (float): Conduction band minimum of the static run
          run_bandstructure: a band_structure object
  
      Returns:
          a new adjusted fermi level