Skip to content

convert_timeslice function applying the wrong operation #516

@tsmbland

Description

@tsmbland

According to the QuantityType class there are two ways of transforming a quantity over the timeslice dimension:

  • Intensive: In this case a quantity should be split over the timeslice dimension according to the length of each timeslice. For example if you have a quantity representing the running costs of a technology over a year, you'd find the running cost in each timeslice by multiplying the total cost over the year by the fraction of the year that the timeslice occupies.
  • Extensive: In this case a quantity should be broadcast over the timeslice dimension, so all the values in each timeslice are the same. For example if you have the price of a commodity in a year, you'd apply this same price to each timeslice.

The convert_timeslice function takes a dataset of quantities along with timeslice data, and applies the appropriate transformation according to the specified QuantityType

However... I think it's doing this the wrong way around (i.e. splitting the data when extensive is specified, and broadcasting the data when intensive is specified). The tests would appear to back this up. Thus, there are many cases in the code where the wrong transformation is being applied, and I think this is what's causing the problem here (along with potentially many other problems)

Fixing this bug properly is going to require:

  1. Fixing the convert_timeslice function so it's doing the correct thing
  2. Going through the code to make sure that every call of convert_timeslice is using the correct quantity type.
  3. Most likely this will break a lot of things and could take a fair bit of additional work to get everything running again

Originally posted by @tsmbland in #512 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions