Commit Graph

5245 Commits

Author SHA1 Message Date
martavp
fcc54bada3 Calculate and save cumulative costs for the myopic approach
Creates an additional file in results/csvs including the cumulative costs with different social discount rates
2021-01-12 10:58:00 +01:00
martavp
4a681749d7 Add function build_carbon_budget()
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
2021-01-12 10:57:29 +01:00
martavp
ceba265c0a build_eea_co2() now reads version23 of UNFCCC inventory.
**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.
2021-01-12 10:57:09 +01:00
martavp
6a7b1d5450 Fix unicode error due to dash before sawdust
A quick fix to https://github.com/PyPSA/pypsa-eur-sec/issues/79
2021-01-12 10:53:22 +01:00
martavp
c623b82b39 Make explicit solver_dir=tmpdir
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
2021-01-12 10:51:12 +01:00
martavp
b7b7407756 Adapt nomenclature from "YearCommissioned" to "DataIn"
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
2021-01-12 10:46:30 +01:00
Chiara Anselmetti
ed4fdc9150
Keep links to store components when using ATK wildcard (#214)
* 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>
2021-01-11 10:27:27 +01:00
martavp
a6a88e26da Allow white space in sector_opts, e.g. to investigate sensitivity to cost of 'H2 Electrolysis' 2021-01-04 16:22:39 +01:00
martavp
b98235c1f1 Allow specifying an option to alter the capital cost of carriers by a factor indicated in the config file, eg: solar+c0.5
This is almost a direct copy PyPSA-Eur #167
https://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.
2021-01-04 10:13:30 +01:00
martavp
93360119d9 Allow decimals in sector_opts 2021-01-04 10:07:29 +01:00
martavp
cf71858bc0 update documentation and release notes 2021-01-01 17:53:59 +01:00
martavp
7c464f166b Calculate and save cumulative costs for the myopic approach
Creates an additional file in results/csvs including the cumulative costs with different social discount rates
2020-12-30 15:56:34 +01:00
martavp
3457d4ee38 Add function build_carbon_budget()
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
2020-12-30 15:55:08 +01:00
martavp
7479ba0424 Fix unicode error due to dash before sawdust
A quick fix to https://github.com/PyPSA/pypsa-eur-sec/issues/79
2020-12-30 12:14:08 +01:00
martavp
5db196f92a build_eea_co2() now reads version23 of UNFCCC inventory.
**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.
2020-12-29 11:31:00 +01:00
martavp
ec5efcc93d Make explicit solver_dir=tmpdir
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
2020-12-28 15:39:05 +01:00
martavp
3ae8021cb6 Adapt nomenclature from "YearCommissioned" to "DataIn"
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
2020-12-26 17:47:32 +01:00
martavp
afdfbf54e8
Merge pull request #2 from PyPSA/master
update with master
2020-12-26 11:03:55 +01:00
Fabian Neumann
8f2ace03ee doc: fix electricity.csv format [skip travis] 2020-12-15 15:17:37 +01:00
Tom Brown
27cc2935be PyPSA-Eur-Sec Version 0.4.0
See the release notes:

https://pypsa-eur-sec.readthedocs.io/en/latest/release_notes.html#pypsa-eur-sec-0-4-0-11th-december-2020
2020-12-11 17:13:18 +01:00
Tom Brown
104a9d6d66
Merge pull request #81 from PyPSA/ccs
Improve representation of CCS
2020-12-11 14:58:57 +01:00
Tom Brown
b2c40dfe30 Replace old "industry CC" assumption with DEA "cement capture" 2020-12-09 18:47:50 +01:00
Tom Brown
19a7a1a684 Implement DAC properly with electricity and heat demand
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.
2020-12-09 18:19:57 +01:00
Tom Brown
0d96ec1de4 Use DEA capture rates for CHP CC rather than default rate 2020-12-09 17:26:29 +01:00
Tom Brown
608c9a5ac5 Replace gas and solid biomass CHP CCS with CHP + DEA CC
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.
2020-12-09 16:38:49 +01:00
Tom Brown
3ff669b07b Move CO2 sequestration potential and costs to config.yaml 2020-12-09 15:36:45 +01:00
Tom Brown
b8f1f30183 Make code compatible with PyPSA-Eur v0.3.0
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.
2020-12-09 15:18:01 +01:00
Tom Brown
f34728c0c4 doc: Document supply and demand options in the different sectors 2020-12-07 16:23:25 +01:00
Tom Brown
098281b432 Correct central CHP from extraction to back pressure
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.
2020-12-07 12:32:53 +01:00
Tom Brown
47a618f385 Replace large CHP 2-link feasibility diagram with single link
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.
2020-12-07 10:48:24 +01:00
Fabian Neumann
9966c751bd envs: restore REUSE compliance [skip travis] 2020-12-07 09:45:14 +01:00
Fabian Neumann
5a917dc5a9 doc: change zenodo links to latest [skip travis] 2020-12-07 09:43:17 +01:00
Fabian Neumann
08674a6cda
Release v0.3 (#213)
* 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
2020-12-05 17:54:50 +01:00
Fabian Neumann
3ad6340c13 travis: correctly constrain version 2020-12-04 18:53:12 +01:00
Fabian Neumann
1baa309252 travis: ipopt 3.13.3 does not provide windows executables
https://github.com/conda-forge/ipopt-feedstock/issues/55
2020-12-04 18:44:34 +01:00
Tom Brown
21c4fd4761
Merge pull request #80 from PyPSA/retro-new-pandas
Retro new pandas
2020-12-04 16:17:10 +01:00
Fabian
f563b612e4 doc/configuration.rst: update lines 2020-12-03 23:47:38 +01:00
FabianHofmann
3fa5bbad1c
Opsd renewable ppls (#212)
* 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>
2020-12-03 23:13:41 +01:00
Fabian Neumann
2fc1ea0255
some refactoring and code cleaning (#190)
* some refactoring and code cleaning

* execute pre-commit

* pre-commit: limit large files

* add license to .pre-commit

* add pre-commit to env

* solve: tidy memory logger

* travis: add conda list for easier debugging

* undo config test/tutorial without plotting, rm matplotlibrc, .licenses

* remove {networks} wildcard

* unadd pre-commit config

* add release notes

* restore REUSE compliance

* fix docs environment python version

* env: remove gurobi from dependencies

* fix unclean merge block

* fix elif to if

* lighter rtd style

* lighter rtd style II
2020-12-03 19:50:53 +01:00
Fabian Neumann
84edde8f63
add time series segmentation with tsam package (#186)
* add time segmentation with tsam

* cut off SEG

* Snakefile: adjust memory function

* untangle memory reservation calculation

* prepare: document segmentation option

* correct typo
2020-12-03 16:02:21 +01:00
Martha Maria
cfb979a0d0
Custom busmap for clustering (#193)
* 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>
2020-12-03 15:17:16 +01:00
FabianHofmann
9792069ab3
Update load processing (#211)
* build_load_data

* Add documentation

* updating load data import

* Update Config files

* Update load.csv

* Update add_electricity.py

* change log file name

* Update scripts/add_electricity.py

Co-authored-by: FabianHofmann <hofmann@fias.uni-frankfurt.de>

* Update scripts/build_load_data.py

Co-authored-by: FabianHofmann <hofmann@fias.uni-frankfurt.de>

* Update scripts/build_load_data.py

Co-authored-by: FabianHofmann <hofmann@fias.uni-frankfurt.de>

* Update scripts/build_load_data.py

Co-authored-by: FabianHofmann <hofmann@fias.uni-frankfurt.de>

* Update build_load_data.py

* Update build_load_data.py

* Update scripts/build_load_data.py

Co-authored-by: FabianHofmann <hofmann@fias.uni-frankfurt.de>

* update gap handling in build_load_data

* Update build_load_data.py

* Update config.test1.yaml

* update test.config

* Update config.tutorial.yaml

* update load csv function for load data

* Update build_load_data.py

* Update config.test1.yaml

* Update add_electricity.py

* Update build_load_data.py

* Added error messages if load data contains gaps after modifications

* general adjustments:
	- reduce data source to only entsoe statistics
	- sanitize code
	- adjust logging messages
	- adjust daocstrings

* update Snakefile config and docs

* update release notes
rename build_load -> build_load_data in config

* small follow up

* - reintroduce choice between powerstatistics and transparency
- remove load_ timeseries from databundle
- always build load_data
- reinsert scaling factor in config
- fix url to 2019 version

* update doc: configtable, release notes
update config.yaml

* follow up

Co-authored-by: Jan Frederick <jan.frederick.unnewehr@inatech.uni-freiburg.de>
Co-authored-by: JanFrederickUnnewehr <50404069+JanFrederickUnnewehr@users.noreply.github.com>
2020-12-03 12:49:04 +01:00
Fabian Neumann
f18b7b02cb
StorageUnit correct efficiency_dispatch/store (counter-proposal 2) (#202)
* fix efficiencies of storage units counter proposal

* extra_components: fix roundtrip efficiency

* add_electricity: remove misleading roundtrip efficiency for storageunit

* add release notes
2020-12-03 10:02:23 +01:00
Fabian Neumann
c1447875d5
no defaults channel in environment.yaml (#144)
* 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
2020-12-02 17:48:47 +01:00
lisazeyen
c861ab940d add data sources for building retrofitting 2020-12-02 14:04:38 +01:00
lisazeyen
0187d4d1d4 make retro script work with newer version of pandas 2020-12-02 13:34:33 +01:00
lisazeyen
57aea1db35 drop H2 and battery buses from pypsa-eur 2020-12-02 13:03:13 +01:00
lisazeyen
de33ed3eb5 update mocksnakemake for testing 2020-12-02 12:48:11 +01:00
Tom Brown
2c49b8e3c3 config: Move heat pump sink temp from script to config.yaml 2020-12-02 11:51:27 +01:00
Tom Brown
1ea31f0e57 Redo investment-year-dependent exogenous retrofitting parameter
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.
2020-12-01 14:41:11 +01:00