Move storage min/max duration from opchar to capacity inputs
I started digging into this. These two parameters are only used by dr_new and stor_new_lin capacity types. Presumably they could be moved to project_new_potential table from project_operational_chars table - I see no other suitable home for them.
An inital question is: Are these parameters are really necessary, in the face of {min/max}_capacity_{power/energy} parameters present in the project_new_potential? I'm not sure under what conditions the possibility of allocating energy capacity without power capacity can manifest (as mentioned in the code comments).
If we do keep them, then:
- These values have to be validated while loading the data, similar to heat rates, because its too easy to generate an infeasibility.
- They will have to be indexed by period similar to the other values in the table.
Does this sound sensible?
I did an experiment by simply removing these constraints in stor_new_lin module and running test_new_build_storage scenario. I found that the newly built capacity did not differ, but there were small changes in provisioned capacity by regulation_down, load_following_down along with a handful of instances in values of related variables such as footroom, headroom etc. I verified that the LP files going to the solver differed only in the 4 constraints relating to min/max_duration_hours. Doesn't seem like a bug because objective value did not change. Similar behaviour was observed in test_new_build_storage_cumulative_min_max as well test_new_build_storage_itc.
However test_new_build_storage_itc_single_superperiod gave significantly different results because of differing capacity built - which is expected.