docs: async def execute_job(self):
          """
          Execute the BMDS model and parse outputs if successful.
          """
          self.execution_start = datetime.now()
  
          # exit early if execution is not possible
          if not self.can_be_executed:
              return self._set_job_outputs(RunStatus.DID_NOT_RUN)
  
          exe = self.get_exe_path()
          dfile = self.write_dfile()
          outfile = self.get_outfile(dfile)
          o2 = outfile.replace(".out", ".002")
  
          proc = await asyncio.create_subprocess_exec(
              exe, dfile, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE
          )
  
          try:
              stdout, stderr = await asyncio.wait_for(
                  proc.communicate(), timeout=settings.BMDS_MODEL_TIMEOUT_SECONDS
              )
  
              output = None
              if os.path.exists(outfile):
                  with open(outfile, "r") as f:
                      output = f.read()
  
              self._set_job_outputs(
                  RunStatus.SUCCESS,
                  stdout=stdout.decode().strip(),
                  stderr=stderr.decode().strip(),
                  output=output,
              )
  
          except asyncio.TimeoutError:
              proc.kill()
              stdout, stderr = await proc.communicate()
              self._set_job_outputs(RunStatus.FAILURE)
  
          finally:
              if os.path.exists(outfile):
                  self.tempfiles.append(outfile)
              else:
                  with open(dfile, "r") as f:
                      txt = f.read()
                  logger.info("Output file not created: \n{}\n\n".format(txt))
  
              if os.path.exists(o2):
                  self.tempfiles.append(o2)
  
              self.tempfiles.cleanup()