def METHOD_NAME(self, settings, t, spectrum=None):
    if t == 0:
        analytic_solution = settings.spectrum.size_distribution
    else:
        def analytic_solution(x):
            return settings.norm_factor * settings.kernel.analytic_solution(
                x=x, t=t, x_0=settings.X0, N_0=settings.n_part
            )
    volume_bins_edges = self.settings.formulae.trivia.volume(
        settings.radius_bins_edges
    )
    dm = np.diff(volume_bins_edges)
    dr = np.diff(settings.radius_bins_edges)
    pdf_m_x = volume_bins_edges[:-1] + dm / 2
    pdf_m_y = analytic_solution(pdf_m_x)
    pdf_r_x = settings.radius_bins_edges[:-1] + dr / 2
    pdf_r_y = pdf_m_y * dm / dr * pdf_r_x
    x = pdf_r_x * si.metres / si.micrometres
    y_true = (
        pdf_r_y
        * self.settings.formulae.trivia.volume(radius=pdf_r_x)
        * settings.rho
        / settings.dv
        * si.kilograms
        / si.grams
    )
    self.ax.plot(x, y_true, color="black")
    if spectrum is not None:
        y = spectrum * si.kilograms / si.grams
        error = error_measure(y, y_true, x)
        self.title = f"error measure: {error:.2f}"  # TODO #327 relative error
        return error
    return None