def METHOD_NAME(self):
    """
    Write report to file.
    """
    system = self.system
    if system.files.no_output is True:
        return
    text = list()
    header = list()
    row_name = list()
    data = list()
    self.update()
    t, _ = elapsed()
    # ----------------------------------------
    # info section
    text.append(self.info)
    header.append(None)
    row_name.append(None)
    data.append(None)
    # ----------------------------------------
    # ----------------------------------------
    # summary section
    text.append(['Statistics:\n'])
    header.append(None)
    row_name.append(self.basic.keys())
    data.append(list(self.basic.values()))
    # ----------------------------------------
    if len(self.extended):
        text.append(['EXTENDED SUMMARY:\n'])
        header.append(['P (pu)', 'Q (pu)'])
        row_name.append(
            ['Generation', 'Load'])
        Pcol = [
            self.extended['Pg'],
            self.extended['Pl'],
        ]
        Qcol = [
            self.extended['Qg'],
            self.extended['Ql'],
        ]
        data.append([Pcol, Qcol])
    if system.PFlow.converged:
        # ----------------------------------------
        # Bus data
        angle_unit = 'deg.' if system.PFlow.config.degree else 'rad.'
        angles = np.rad2deg(system.Bus.a.v) \
            if system.PFlow.config.degree == 1 else system.Bus.a.v
        text.append(['BUS DATA:\n'])
        header.append(['Bus Name', 'Vm(pu)', f'Va({angle_unit})'])
        row_name.append(system.Bus.idx.v)
        data.append([system.Bus.name.v, system.Bus.v.v, angles])
        # ----------------------------------------
        # ----------------------------------------
        # Node data
        if hasattr(system, 'Node') and system.Node.n:
            text.append(['NODE DATA:\n'])
            header.append(['Node Name', 'V(pu)'])
            row_name.append(system.Node.idx.v)
            data.append([system.Node.name.v, system.Node.v.v])
        # ----------------------------------------
        # ----------------------------------------
        # Line data
        text.append(['LINE DATA:\n'])
        header.append([
            'Line Name', 'Fr. Bus (idx)', 'To Bus (idx)', 'P From (pu)', 'Q From (pu)',
            'P To (pu)', 'Q To (pu)'
        ])
        row_name.append(system.Line.idx.v)
        data.append([system.Line.name.v,
                     system.Line.bus1.v,
                     system.Line.bus2.v,
                     system.Line.a1.e,
                     system.Line.v1.e,
                     system.Line.a2.e,
                     system.Line.v2.e
                     ])
        # ----------------------------------------
        # ----------------------------------------
        # Additional Algebraic data
        text.append(['OTHER ALGEBRAIC VARIABLES:\n'])
        header.append([''])
        row_name.append(system.dae.y_name[2 * system.Bus.n:system.dae.m])
        data.append([round(i, 6) 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([''])
            row_name.append(system.dae.x_name[:])
            data.append([round(i, 6) for i in system.dae.x[:]])
    dump_data(text, header, row_name, data, system.files.txt)
    _, s = elapsed(t)
    logger.info(f'Report saved to "{system.files.txt}" in {s}.')