docs: def dump_results(self):
          """
          Save eigenvalue analysis reports
  
          Returns
          -------
          None
          """
          system = self.system
          mu = self.mu
          partfact = self.part_fact
  
          if system.files.no_output:
              return
  
          text = []
          header = []
          rowname = []
          data = []
  
          neig = len(mu)
          mu_real = mu.real()
          mu_imag = mu.imag()
          npositive = sum(1 for x in mu_real if x > 0)
          nzero = sum(1 for x in mu_real if x == 0)
          nnegative = sum(1 for x in mu_real if x < 0)
  
          numeral = []
          for idx, item in enumerate(range(neig)):
              if mu_real[idx] == 0:
                  marker = '*'
              elif mu_real[idx] > 0:
                  marker = '**'
              else:
                  marker = ''
              numeral.append('#' + str(idx + 1) + marker)
  
          # compute frequency, undamped frequency and damping
          freq = [0] * neig
          ufreq = [0] * neig
          damping = [0] * neig
          for idx, item in enumerate(mu):
              if item.imag == 0:
                  freq[idx] = 0
                  ufreq[idx] = 0
                  damping[idx] = 0
              else:
                  freq[idx] = abs(item) / 2 / pi
                  ufreq[idx] = abs(item.imag / 2 / pi)
                  damping[idx] = -div(item.real, abs(item)) * 100
  
          # obtain most associated variables
          var_assoc = []
          for prow in range(neig):
              temp_row = partfact[prow, :]
              name_idx = list(temp_row).index(max(temp_row))
              var_assoc.append(system.varname.unamex[name_idx])
  
          pf = []
          for prow in range(neig):
              temp_row = []
              for pcol in range(neig):
                  temp_row.append(round(partfact[prow, pcol], 5))
              pf.append(temp_row)
  
          text.append(system.report.info)
          header.append([''])
          rowname.append(['EIGENVALUE ANALYSIS REPORT'])
          data.append('')
  
          text.append('STATISTICS\n')
          header.append([''])
          rowname.append(['Positives', 'Zeros', 'Negatives'])
          data.append([npositive, nzero, nnegative])
  
          text.append('EIGENVALUE DATA\n')
          header.append([
              'Most Associated', 'Real', 'Imag', 'Damped Freq.', 'Frequency',
              'Damping [%]'
          ])
          rowname.append(numeral)
          data.append(
              [var_assoc,
               list(mu_real),
               list(mu_imag), ufreq, freq, damping])
  
          cpb = 7  # columns per block
          nblock = int(ceil(neig / cpb))
  
          if nblock <= 100:
              for idx in range(nblock):
                  start = cpb * idx
                  end = cpb * (idx + 1)
                  text.append('PARTICIPATION FACTORS [{}/{}]\n'.format(
                      idx + 1, nblock))
                  header.append(numeral[start:end])
                  rowname.append(system.varname.unamex)
                  data.append(pf[start:end])
  
          dump_data(text, header, rowname, data, system.files.eig)
          logger.info('report saved.')