Allow Grids to be loaded from CSVs with an arbitrary number of non-essential data columns
Closed this issue ยท 2 comments
๐
- Is your feature request essential for your project?
Describe the workflow you want to enable
Allow Grid
objects to be loaded from CSVs with an arbitrary number of non-essential data columns, for example data on asset ownership, names, transmission line routing, etc.
Describe your proposed implementation
This will require refactoring how the case.mat
files are generated, since currently the data tables are generated by dropping specified columns, rather than only writing certain columns.
The more complicated design issue is how to work with extra Grid information in the context of the current Scenario
object framework. Currently, the information that's dropped from the tables that get interpreted by the simulation engine (those required for the power flow) get added to the case.mat file as additional tables which get re-loaded later by a Scenario in Analyze state which is reading the grid.mat file that gets produced by REISE.jl as a record of the exact power system parameters that were used in optimization (since REISE.jl makes some modifications to things like ramp rates, Pmin values, and linearization of cost curves). If we don't pass the extra information to the case.mat file to be read later, then we can only infer information by looking at the corresponding information in the base grid, which may have have changed since the Scenario was run, and won't cover any additions to the Grid that were made as part of the scenario setup. If we do pass extra information into the case.mat file for some grid models, then we end up with grid.mat objects with different sets of extra information that need to be interpreted differently.
Additional context
The corresponding PreREISE issue to write extra information to the HIFLD grid model CSVs is Breakthrough-Energy/PreREISE#242.
This could also be relevant for Grids/Scenarios that are converted from PyPSA: we may want to be able to accept additional columns during translation, without breaking the ability to run PCMs.