docs: def to_abivars(self):
          """Returns a dictionary with the abinit variables"""
          # These variables are always present.
          out_vars = {
              "ionmov" : self.abivars.ionmov,
              "optcell": self.abivars.optcell,
              "ntime"  : self.abivars.ntime,
          }
  
          # Atom relaxation.
          if self.move_atoms:
              out_vars.update({
                  "tolmxf": self.abivars.tolmxf,
              })
  
          if self.abivars.atoms_constraints:
              # Add input variables for constrained relaxation.
              raise NotImplementedError("")
              out_vars.update(self.abivars.atoms_constraints.to_abivars())
  
          # Cell relaxation.
          if self.move_cell:
              out_vars.update({
                  "dilatmx"  : self.abivars.dilatmx,
                  "ecutsm"   : self.abivars.ecutsm,
                  "strfact"  : self.abivars.strfact,
                  "strtarget": self.abivars.strtarget,
              })
  
          return out_vars