docs: def ebalance(sdat, tstart=None, tend=None):
      """Energy balance.
  
      Compute Nu_t - Nu_b + V*dT/dt as a function of time using an explicit
      Euler scheme. This should be zero if energy is conserved.
  
      Args:
          sdat (:class:`~stagpy.stagyydata.StagyyData`): a StagyyData instance.
          tstart (float): time at which the computation should start. Use the
              beginning of the time series data if set to None.
          tend (float): time at which the computation should end. Use the
              end of the time series data if set to None.
      Returns:
          tuple of :class:`numpy.array`: energy balance and time arrays.
      """
      tseries = sdat.tseries_between(tstart, tend)
      rbot, rtop = misc.get_rbounds(sdat.steps.last)
      if rbot != 0:  # spherical
          coefsurf = (rtop / rbot)**2
          volume = rbot * ((rtop / rbot)**3 - 1) / 3
      else:
          coefsurf = 1.
          volume = 1.
      dtdt, time = dt_dt(sdat, tstart, tend)
      ftop = tseries['ftop'].values * coefsurf
      fbot = tseries['fbot'].values
      radio = tseries['H_int'].values
      ebal = ftop[1:] - fbot[1:] + volume * (dtdt - radio[1:])
      return ebal, time