/**
   * Calculate the number of hours to discharge the battery till the minimum SoC (20%), based on the
   * current consumption (or maximum discharging rate)
   *
   * @param ts evaluation time
   */
  public final double basedOnCurrentCons(final long ts) {
    double autonomyHrs = 0;
    if (currentConsumption > 0 && currentSoCPercent > bat.getMinSoC()) {
      // limit the discharging rate to the maximum rate
      double power = currentConsumption;
      if (power > bat.getMaxDischargingRate()) {
        power = bat.getDischargingEfficiency();
      }

      double toDischarge =
          getCurrentSoCKWh() - (bat.getMinSoC() * (bat.getCapacityKWh() * 1000.) / 100);
      autonomyHrs = toDischarge / power;
    }
    if (autonomyHrs >= 0) {
      return autonomyHrs;
    }
    return 0;
  }
 private double getCurrentSoCKWh() {
   return currentSoCPercent * bat.getCapacityKWh() / 100.;
 }