docs: def to_abivars(self):
          """Returns a dictionary with the abinit variables."""
          abivars = dict(
              bs_calctype=1,
              bs_loband=self.bs_loband,
              #nband=self.nband,
              mbpt_sciss=self.mbpt_sciss,
              ecuteps=self.ecuteps,
              bs_algorithm=self._ALGO2VAR[self.algo],
              bs_coulomb_term=21,
              mdf_epsinf=self.mdf_epsinf,
              bs_exchange_term=1 if self.with_lf else 0,
              inclvkb=self.inclvkb,
              zcut=self.zcut,
              bs_freq_mesh=self.bs_freq_mesh,
              bs_coupling=self._EXC_TYPES[self.exc_type],
              optdriver=self.optdriver,
          )
  
          if self.use_haydock:
              # FIXME
              abivars.update(
                  bs_haydock_niter=100,      # No. of iterations for Haydock
                  bs_hayd_term=0,            # No terminator
                  bs_haydock_tol=[0.05, 0],  # Stopping criteria
              )
  
          elif self.use_direct_diago:
              raise NotImplementedError("")
  
          elif self.use_cg:
              raise NotImplementedError("")
  
          else:
              raise ValueError("Unknown algorithm for EXC: %s" % self.algo)
  
          # Add extra kwargs
          abivars.update(self.kwargs)
  
          return abivars