For the myopic method, based on the carbon budget indicated in the config file (sector_opts), a CO2 limit is calculated for every planning_horizon following an exponential or beta decay. A file with CO2 limit in every planning_horizon and a plot showing historical and planned CO2 emissions
are saved in the results
**This requires updating to UNFCCC_v23.csv in the data bundle**
This enables that the same function is used to read emissions in 2018, which are assumed to remain constant in 2019 and 2020 and subtracted from carbon budget (estimated from 2018 on).
I checked and 1990 emissions calculated with UNFCCC_v23 are very similar to those calculated with UNFCCC_v21 (<1% differences in all values at EU level).
Some countries show higher deviations, mainly in domestic aviation and navigation. I guess because those values started to be reported later and v23 should include more accurate values.
Running the rule solve_network in the university cluster, I was getting a "No space left on device" error. Making solve_dir=tmpdir by default avoids this error and makes it easier to identify any problem with temp files
This was breaking add_existing_baseyear.py and it is now fixed. Column name for commissioning year in powerplantmatching has changed. Now "DataIn" is used as column name, also when renewable capacities per country are added to the power plants dataframe
* Update prepare_network.py
The new ATK wildcard removes all lines + links without further distinction; however, since storage options are now modeled as store components, the links to and from the the storage units for (dis)charge are eliminated as well. Thus, the storage options drop out of the optimisation.
Especially when only allowing renewables as generation sources, optimisation may become infeasible for a high temporal resolution (capacity factors = 0 for certain hours; no further options to serve the load).
This issue does not arise with the ATKc wildcard, since bus0 and bus1 of the (dis)charge links share the same country code.
The proposed change is a very quick fix in the enforce_autarky function, solely removing DC links.
* Update scripts/prepare_network.py
Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
* Update prepare_network.py
Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
This is almost a direct copy PyPSA-Eur #167https://github.com/PyPSA/pypsa-eur/pull/167
A factor altering the maximum capacity (p_nom_max) can also be specified by e.g. solar+p3
One should be careful when using this for solar because the factor is applied to all the generators whose carrier includes the string 'solar' (i.e., it is applied to both utility and rooftop solar)
I would suggest implementing 'solar utility' and 'solar rooftop' as carriers, since this can be useful for other selecting processes. Is there is any reason for keeping 'solar' as a carrier for 'solar utility'?
The previous way of increasing maximum capacity via the config file (e.g 'solar3') is still present in the code.
For the myopic method, based on the carbon budget indicated in the config file (sector_opts), a CO2 limit is calculated for every planning_horizon following an exponential or beta decay. A file with CO2 limit in every planning_horizon and a plot showing historical and planned CO2 emissions
are saved in the results
**This requires updating to UNFCCC_v23.csv in the data bundle**
This enables that the same function is used to read emissions in 2018, which are assumed to remain constant in 2019 and 2020 and subtracted from carbon budget (estimated from 2018 on).
I checked and 1990 emissions calculated with UNFCCC_v23 are very similar to those calculated with UNFCCC_v21 (<1% differences in all values at EU level).
Some countries show higher deviations, mainly in domestic aviation and navigation. I guess because those values started to be reported later and v23 should include more accurate values.
Running the rule solve_network in the university cluster, I was getting a "No space left on device" error. Making solve_dir=tmpdir by default avoids this error and makes it easier to identify any problem with temp files
This was breaking add_existing_baseyear.py and it is now fixed. Column name for commissioning year in powerplantmatching has changed. Now "DataIn" is used as column name, also when renewable capacities per country are added to the power plants dataframe
Before it just had a fixed marginal cost. Now it uses DEA assumptions
for heat, electricity and capital costs.
This necessitates locating it somewhere concrete. Heat is taken from
urban central or decentral buses.
Use DEA assumptions for post-combustion carbon capture.
Also rename CCS as CC whenever only carbon capture is involved, since
sequestration (or CCU) is a separate step.
Only change was to remove the Store-Link-Bus combinations for
batteries and H2 storage from PyPSA-Eur, since they are implemented
with different names, costs and voltage level in PyPSA-Eur-Sec.
Removals are now done in a more transparent way in the config.yaml.
The assumptions for c_b and c_v and eta were arranged assuming
extraction plants (like the coal CHP in DEA).
However, if you look in DEA assumptions at "09b Wood Pellets Medium"
(used for solid biomass CHP) and "Gas turbine simple cycle (large)"
(used for gas CHP) they are not extraction plants but back pressure
plants.
The back pressure coefficient in DEA c_b is simply
c_b = name plate electricity efficiency / name plate heat efficiency
both measured when both heat and electricity are produced at maximum.
For the extraction plants, the efficiency was measured in condensation
mode, i.e. no heat production.
In almost 99.5% of cases the CHP dispatches along the backpressure
line where heat output is proportional to electricity output.
So we can switch to a single link to avoid the burden of modelling the
full electricity-heat feasibility space of CHPs.
This only applies to large CHPs in district heating networks.
* release_notes: order for release
* doc: fix smaller typos and tidy up
* config: bump version
* doc: fix line references
* doc: bump confpy version
* envs: update fixed versions yaml
* Snakefile: simplify all_elec to all
* fix clustering of offwind-ac and offwind-dc in sites option
* add release nodes
* attach renewable assets by location (lat and lon) from OPSD register to network
* adapt default config to changes
* undo changes from a differen PR in cluster_network.py
* undo changes from a different PR, add release notes for this PR
* correct release notes
* add comments for relevant settings in add_electricity.py
* adjust configtable for electricity to OPSD renewable option and add estimate_renewable_capacities_from_capacitiy_stats
* reset cluster_network to HEAD
* add_electricity: Capacity is float
* config: add GB to OPSD_VRE_countries
* review and modify implementation
* update release notes
* Update envs/environment.yaml
Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
Co-authored-by: martha.frysztacki <eb5194@iai-esm003.iai.kit.edu>
Co-authored-by: eb5194 <martha.frysztacki@kit.edu>
Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
* add option to use custom clustermaps from data folder
* adapt default config to custom busmap
* input file from Snakefile
* adapt input description
* add option to use custom clustermaps from data folder
* adapt default config to custom busmap
* input file from Snakefile
* adapt input description
* Snakefile: custom_busmap in cluster_network input is now csv
* cluster_network: custom_busmap is now read as csv file, adaptions of description
* simplify_network: adapt descriptions
* configfiles: add cutom_clustermaps switch
* unify clustarmap and busmap names
* unify clustermap and busmap names
* test/config: unify clustermap and busmap names
* cluster_network: make clustering_for_n_clusters compatible with simplify_network
* simplify_network: make compatible with changes in cluster_network.py
* Update scripts/cluster_network.py
* Update scripts/simplify_network.py
* Update scripts/simplify_network.py
* Update scripts/cluster_network.py
* Update scripts/cluster_network.py
* cluster_network: move custom_busmap flag to enable; simplify names
* cluster_network: move custom_busmap flag to enable; simplify names
* custom_busmap: add documentation
* cluster_network: add default for custom_busmap for compatibility with old configs
* cluster_network: add default for custom_busmap for compatibility with old configs
Co-authored-by: martha.frysztacki <eb5194@iai-esm003.iai.kit.edu>
Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
* no defaults channel in environment.yaml
* GIS from conda-forge
* remove channel pinning and add descartes via conda
* remove geopandas version restriction
* travis: remove duplicated conda list
Specify as dictionary, use get_parameter to get correct value.
Also remove old parameter "space_heating_fraction" since this is
superceded by the new exogenous retro code.