code: def open_pspsfile(self, ecut=20, pawecutdg=None):
          
          from pymatgen.io.abinit.tasks import AbinitTask
          from abipy.core.structure import Structure
          from abipy.abio.factories import gs_input
          from abipy.electrons.psps import PspsFile
  
          # Build fake structure.
          lattice = 10 * np.eye(3)
          structure = Structure(lattice, [self.element], coords=[[0, 0, 0]])
  
          if self.ispaw and pawecutdg is None: pawecutdg = ecut * 4
          inp = gs_input(structure, pseudos=[self], ecut=ecut, pawecutdg=pawecutdg,
                         spin_mode="unpolarized", kppa=1)
          # Add prtpsps = -1 to make Abinit print the PSPS.nc file and stop.
          inp["prtpsps"] = -1
  
          # Build temporary task and run it (ignore retcode because we don't exit cleanly)
          task = AbinitTask.temp_shell_task(inp)
          task.start_and_wait()
  
          filepath = task.outdir.has_abiext("_PSPS.nc")
          if not filepath:
              logger.critical("Cannot find PSPS.nc file in %s" % task.outdir)
              return None
  
          # Open the PSPS.nc file.
          try:
              return PspsFile(filepath)
          except Exception as exc:
              logger.critical("Exception while reading PSPS file at %s:\n%s" % (filepath, str(exc)))
              return None
docs: Calls Abinit to compute the internal tables for the application of the
          pseudopotential part. Returns :class:`PspsFile` object providing methods
          to plot and analyze the data or None if file is not found or it's not readable.
  
          Args:
              ecut: Cutoff energy in Hartree.
              pawecutdg: Cutoff energy for the PAW double grid.