code: def run_vasp(self, run_dir: PathLike = ".",
                   vasp_cmd: list = None,
                   output_file: PathLike = "vasp.out",
                   err_file: PathLike = "vasp.err"):
          
          self.write_input(output_dir=run_dir)
          vasp_cmd = vasp_cmd or SETTINGS.get("PMG_VASP_EXE")
          vasp_cmd = [os.path.expanduser(os.path.expandvars(t)) for t in vasp_cmd]
          if not vasp_cmd:
              raise RuntimeError("You need to supply vasp_cmd or set the PMG_VASP_EXE in .pmgrc.yaml to run VASP.")
          with cd(run_dir):
              with open(output_file, 'w') as f_std, \
                      open(err_file, "w", buffering=1) as f_err:
                  subprocess.check_call(vasp_cmd, stdout=f_std, stderr=f_err)
docs: Write input files and run VASP.
  
          :param run_dir: Where to write input files and do the run.
          :param vasp_cmd: Args to be supplied to run VASP. Otherwise, the
              PMG_VASP_EXE in .pmgrc.yaml is used.
          :param output_file: File to write output.
          :param err_file: File to write err.