docs: def write(self, content=None):
          """
          Write report to file.
  
          Parameters
          ----------
          content: str
              'summary', 'extended', 'powerflow'
  
          """
          if self.system.files.no_output is True:
              return
  
          t, _ = elapsed()
  
          if not content:
              logger.warning('report content not specified.')
              return
  
          self.update(content)
  
          system = self.system
          file = system.files.output
          export = all_formats.get(system.config.export, 'txt')
          module = importlib.import_module('andes.formats.' + export)
          dump_data = getattr(module, 'dump_data')
  
          text = list()
          header = list()
          rowname = list()
          data = list()
  
          text.append(self.info)
          header.append(None)
          rowname.append(None)
          data.append(None)
  
          if content == 'summary' or 'extended' or 'powerflow':
              text.append(['SUMMARY:\n'])
              header.append(None)
              rowname.append(self._basic_name)
              data.append([self.basic[item] for item in self._basic])
  
          if content == 'extended' or 'powerflow':
              text.append(['EXTENDED SUMMARY:\n'])
              header.append(['P (pu)', 'Q (pu)'])
              rowname.append(
                  ['Generation', 'Load', 'Shunt Inj', 'Losses', 'Line Charging'])
              Pcol = [
                  self.extended['Pg'],
                  self.extended['Pl'],
                  self.extended['Psh'],
                  self.extended['Ploss'],
                  self.extended['Pch'],
              ]
  
              Qcol = [
                  self.extended['Qg'],
                  self.extended['Ql'],
                  self.extended['Qsh'],
                  self.extended['Qloss'],
                  self.extended['Qch'],
              ]
  
              data.append([Pcol, Qcol])
  
          if content == 'powerflow' and system.pflow.solved:
              idx, name, Vm, Va, Pg, Qg, Pl, Ql = system.get_busdata()
              Va_unit = 'deg' if system.pflow.config.usedegree else 'rad'
              text.append(['BUS DATA:\n'])
              # todo: consider system.pflow.config.units
              header.append([
                  'Vm(pu)', 'Va({:s})'.format(Va_unit), 'Pg (pu)', 'Qg (pu)',
                  'Pl (pu)', 'Ql (pu)'
              ])
              name = [str(i) + '-' + j[:8] for i, j in zip(idx, name)]
              rowname.append(name)
              data.append([Vm, Va, Pg, Qg, Pl, Ql])
  
              # Node data
              if hasattr(system, 'Node') and system.Node.n:
                  idx, name, V = system.get_nodedata()
                  text.append(['NODE DATA:\n'])
                  header.append(['V(pu)'])
                  rowname.append(name)
                  data.append([V])
  
              # Line data
              name, fr, to, Pfr, Qfr, Pto, Qto, Ploss, Qloss = \
                  system.get_linedata()
              text.append(['LINE DATA:\n'])
              header.append([
                  'From Bus', 'To Bus', 'P From (pu)', 'Q From (pu)',
                  'P To (pu)', 'Q To(pu)', 'P Loss(pu)', 'Q Loss(pu)'
              ])
              rowname.append(name)
              data.append([fr, to, Pfr, Qfr, Pto, Qto, Ploss, Qloss])
  
              # Additional Algebraic data
              text.append(['OTHER ALGEBRAIC VARIABLES:\n'])
              header.append([''])
              rowname.append(
                  system.varname.unamey[2 * system.Bus.n:system.dae.m])
              data.append([round(i, 5) for i in system.dae.y[2 * system.Bus.n:]])
  
              # Additional State variable data
              if system.dae.n:
                  text.append(['OTHER STATE VARIABLES:\n'])
                  header.append([''])
                  rowname.append(system.varname.unamex[:])
                  data.append([round(i, 5) for i in system.dae.x[:]])
  
          dump_data(text, header, rowname, data, file)
  
          _, s = elapsed(t)
          logger.info('report written to <{:s}> in {:s}.'.format(system.files.output, s))