-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MATPOWER French Network #2
Comments
We start with the 1888-rte generating time-series with the script from Benjamin (@vinault give it a try and let us know). For IIDM file format, the Pegase network has been extensively used during ITESLA project and can be reuse for test. If we want to reduce the size of the grid for experiments and development, this will be something to define |
Hello, A grid file is a static description of what the state of the grid is currently, power absorbed, consumed, the flows etc. etc. It has no information in general about how the energy is produced or at which cost etc. Only the amount and location matters (basically). The "prods_charac.csv" describes, for each generator what are its minimum, maximum values, what are the cost of the fuel, how the production can vary between a certain amount of time etc. So no it's not possible to create "a" prod_charac.csv file from a grid file in general. Or rather it is possible to create an infinity of them that would be consistent with the grid at hand. There is no official prods_charac.csv file for any of the grid in matpower. If you want one you have to invent it (ie chose one from the infinity possible). You can for example say that all generators are "thermal", assign max_ramp_up = max_ramp_down , chose some max_p for all generators etc. I am not aware of anyone having done this work at RTE at the moment. |
As Benjamin mentionned, some info are missing in the grid.json file as we are running scenarios over time. In particular the costs and the ramps of the generators. Here are some typical numbers we used to far for the IEEE grids marginal_price = { Ramps here are normalized by pu and every 5 minnuclear_ramps = {'nuclear01': 100 / (1200 * 12)} coal_steam_turbine_ramps = {'coal01': 103 / (574 * 12), Slow rampsgas_steam_turbine_ramps = {'gast01': 55 / (237 * 12), Medium rampsgas_combined_cycle_ramps = {'gascc01': 84 / (264 * 12), Fast rampsgas_turbine_ramps = {'gasgt01': 16 / (47 * 12), ramp_hydro = 0.5 * p_max_hydro / 12 |
Those numbers were taken from reference from there (given by Carlo Brancucci (when he was at NREL) |
For loadflow issues on the 1888 rte case, this could be due to some issue in per uniting in the pandapower cases. When you load the 1888 rte case, are you currently loading the grid.mat or grid.json ? |
When loading the grid.mat with pypowsybl, convergence is fine (and cumulated load is 59GW):
When loading this .mat with grid2op and for a load level of 56GW in the first step of the chronics, there is indeed a divergence:
However when doing it on the best case without chronics, it converges again:
So this probably a problem of convergence for the value of the Chronic in the first step WARNING: comparing the flows computed from the grid.mat with pypowsybl and from the grid.json using lightsim2grid, there are some notable differences in power flows (here examples of lines with more than 100% difference, so this is probably not just a matter of different conventions between the two lines extremities for instance):
Side note negative loads in .mat (as exposed by pypowsybl) seem to correspond to s_gen in grid.json (as exposed by pandapower) |
To get a scenario that runs, I suggest we first run things with DC powerflows on the generated chronics @yojvr |
Here are chronics that partially converge in AC power flow over the scenario. Convergence periods are so far:
So at least you can do grid2op.make() without non converging load flow error initially. When generating the chronics, I used the .mat file, and made sure not too touch negative loads: their value is constant and taken from the original file. These negative loads in this format corresponds to the sgen in pandapower format. This is the code addition in get_loads_gens:
It seems not to be converging in particular when the load is the lowest from midnight to 6-7am. Making the timesteps 221 to 236 converge would already give an interesting continuous period on this grid. |
Script pour tester les convergences sur la chronique |
When changing the load factor directly with pypowsybl, I get convergence from 50% to 150% from the initial loading. So something is probably not set properly in the pypowsybl-grid2op backend as I would expect the same range of convergence. See this script for this experiment
|
@tschuppr explain here how you obtained chronics convergence to close this issue |
We obtained convergence by modifying the values of active power generation from negative to positive to comply with pypowsybl vision. |
Describe the current behavior
We are looking for a dataset to do some experimentations with the new Powsybl backend. Pandapower has one here : https://pandapower.readthedocs.io/en/v2.3.0/networks/power_system_test_cases.html#case-2848rte.
@BDonnot : Did you already try out some things with grid2op on a RTE case ? Do you have some advice for us (which case, what/which chronics) ? Thank you very much !
Describe the expected behavior
We want to showcase the whole pipeline with the Powsybl backend on the French grid.
Describe the motivation
No response
Extra Information
No response
The text was updated successfully, but these errors were encountered: