Commit Graph

321 Commits

Author SHA1 Message Date
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
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
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
Tom Brown
974155bd46 Merge branch 'master' into retro 2020-11-30 17:07:43 +01:00
Tom Brown
17bf0dfbb1 prepare_costs: use default lifetime from config.yaml
Rather than hard-coding 25 years.
2020-11-30 17:01:14 +01:00
Tom Brown
90e1d75df6 land transport: allow share of fossil-FCEV-EV to change over time
Allow share of land transport to be set exogenously in config.yaml.
2020-11-30 16:20:26 +01:00
Tom Brown
801f0a403d Remove config.myopic.yaml to avoid many duplicated parameters
It is identical to config.default.yaml except for two parameters
(foresight and planning_horizons) so I decided to consolidate the
example configs. Instructions for how to use the myopic foresight can
be found in the documentation (now updated).
2020-11-30 16:10:11 +01:00
Tom Brown
abbaa0d098 Move CO2 budgets from data/co2_budget.csv to dict in config.yaml
Strategy is too keep as much of configuration in config.yaml as
possible.

We also aim to allow exogenous investment-year-dependent
configurations to be done in a similar manner (e.g. share of district
heating or FCEV transport).
2020-11-30 13:21:38 +01:00
Fabian Neumann
de0478968c
config: make storage modelling with Store and Link default (#205) 2020-11-25 13:18:30 +01:00
Tom Brown
9721dccc0f Make micro CHP optional, option to reduce non-NH3 basic chemicals
Also add option to limit extension of HVAC and HVDC transmission
lines.

Also fix bug that option to limit solar & wind potential was bypassed.
2020-10-28 18:21:28 +01:00
lisazeyen
1e2895023b add script for building retro costs per country and sector, add retrofitting parameters to config.yaml 2020-10-21 16:04:27 +02:00
lisazeyen
301d74f059 add option for exogenously retrofitting, space heat demand is reduced before adding losses in DH 2020-10-21 14:30:26 +02:00
lisazeyen
4f2135a43a add option for solid biomass transport 2020-10-21 07:23:52 +02:00
lisazeyen
3944e19c51 config.yaml: add color for biomass transport 2020-10-20 13:48:05 +02:00
lisazeyen
50b4e822c4 config: add missing color for industry electricity 2020-10-20 13:00:41 +02:00
Fabian Neumann
8a323b7267 cost: move defaults to config and improve documentation 2020-10-16 11:38:26 +02:00
Tom Brown
72653c3a42 PyPSA-Eur-Sec Version 0.3.0
Please see the release notes:

https://pypsa-eur-sec.readthedocs.io/en/latest/release_notes.html#pypsa-eur-sec-0-3-0-27th-september-2020

for more information.
2020-09-27 18:01:52 +02:00
Fabian Neumann
ab6dc633bf
Options for regional equity and autarky (#166)
* solve: add option for equity constraints

* solve: scale more

* prepare: add option to limit line/link capacity

* solve: add inflow to EQ constraints

* solve: reindex inflow to match load

* update config files and references

* add autarky option

* move release notes

* add spillage to equity requirements

* prepare: fix accidental code removal

* prepare: add country autarky option

* consider snapshot_weightings for inflow

* trigger CI
2020-09-26 13:10:50 +02:00
Tom Brown
a1904886ac
Merge branch 'master' into distribution 2020-09-22 20:18:21 +02:00
Tom Brown
791a58fc6b Make selection of biomass classes (solid, biogas) more explicit
List classes in config.yaml, rather than integer selection in
build_biomass_potentials.py.

Also output potentials for all years and scenarios for analysis.
2020-09-21 18:35:45 +02:00
lisazeyen
6d440499d5 add option to add costs for gas distribution. Caution, currently assuming same costs for gas distribution as the ones for electricity distribution 2020-09-15 18:03:33 +02:00
Tom Brown
04629b5113 For DRI+EAF route for primary steel, add electricity for DRI shaft 2020-09-07 17:23:31 +02:00
Tom Brown
f45b9a37ae Separate ammonia from other "Basic chemicals"
This allows us to control the substitution of natural gas for hydrogen
in NH3 production.

Remaining basic chemicals are olefins, BTX and chlorine.

For 2015 NH3 production, we use the USGS data source.
2020-08-28 19:13:18 +02:00
Tom Brown
b761281b3d Move changes to primary/secondary routes for Al/St to new script
This was handled before in industry_sector_ratios.csv which was
confusing.

Now industry_sector_ratios.csv represents the genuine energy
consumption per tonne of material for each industrial route
(MWh/tMaterial).

An new file is created with ktMaterial/a in
industrial_production_per_country_tomorrow.csv which contains changes
to the fraction of primary/secondary routes compared to today's
production in industrial_production_per_country.csv.

This is less confusing I think.
2020-08-26 16:13:01 +02:00
Fabian
e9617bca64 store cost data in resources
enable retrievement in config
2020-08-26 10:06:10 +02:00
FabianHofmann
04f19f214d
fix emission prices (#171)
* fix emission prices

I'm not sure if the previous setup was intentional, but regarding that different generators might have different efficiencies and the emissions are carrier specific only, it makes more sense set net emission price.

* small fix

* update release_notes and config
2020-08-25 12:12:00 +02:00
Tom Brown
515416fd75 PyPSA-Eur-Sec Version 0.2.0
Please see the release notes:

https://pypsa-eur-sec.readthedocs.io/en/latest/release_notes.html#pypsa-eur-sec-0-2-0-21st-august-2020

for more information.
2020-08-21 12:34:20 +02:00
Tom Brown
d4368a966a Replace _ with - in technology_data and prenetworks_brownfield
Preferred by kubernetes.

Also updated the documentation accordingly.
2020-08-20 18:00:27 +02:00
Tom Brown
9b2fa7c140 config.default.yaml: overnight, new config.myopic.yaml for myopic 2020-08-20 17:12:20 +02:00
Tom Brown
8c196a7a21 Take care of CHPs when doing p_nom < threshold & extra_functionality
- add_brownfield.py: Have to make sure that for each CHP there is both
  a heat and electric link, but they have different p_nom for each
  CHP, so have to make sure we don't remove one without the other.

- solve_network.py: Make sure extra_functionality constraints for CHP
  power-heat feasibility graph also work for non-extendable CHPs.
2020-08-14 09:11:19 +02:00
martavp
89a48bfad3 include existing conventional carriers in config file 2020-08-12 11:24:15 +02:00
martavp
18ff256811 Update cost for wind and solar, including the AC and DC connection costs for offshore.
In order to calculate connection costs, average values for underground_fraction and average_distance are calculated for all the buses in the initial network mapped to the clustered network.
2020-08-12 11:08:09 +02:00
Tom Brown
658f8ad00c Distribute existing power plants to the correct nodes
Previously they were distributed only by country to the first node in
the country.

Now conventional power plants are assigned to the correct node using
the bus map from PyPSA-Eur.

Wind and solar are distributed in each country by capacity factor.

The code has been refactored and a bug was fixed whereby total
capacities of wind and solar in each country were not correct.

Now the years in the config.yaml for myopic are integers not strings.
2020-08-10 20:30:29 +02:00
Tom Brown
b57a6c18f8 Make directory for costs files configurable
Default to parallel directory for technology_data repository.
2020-07-30 08:27:33 +02:00
martavp
4523f324cd Group the generators existing before base year into categories and add them to the network as e.g. solar-2005, solar-2010, solar-2015 2020-07-18 11:22:30 +02:00
martavp
2b3dc60f11 Add default lifetime to config.file 2020-07-08 16:24:23 +02:00
martavp
8e243c5d23 Add myopic option, planning horizons, and name of co2 budget path to default config file 2020-07-07 18:18:45 +02:00
Fabian Neumann
2627c96a9e
Prepare Release v0.2.0 (#165)
* prepare release v0.2.0

* prepare release v0.2.0 v2 [skip travis]
2020-06-08 20:43:35 +02:00
Fabian Neumann
5ea29551b9
add REUSE.software license information (#160)
* add REUSE.software license information

* add release note on licensing

* Update doc/index.rst

Co-authored-by: euronion <42553970+euronion@users.noreply.github.com>

* Update doc/index.rst

Co-authored-by: euronion <42553970+euronion@users.noreply.github.com>

* Update doc/release_notes.rst [skip travis]

Co-authored-by: euronion <42553970+euronion@users.noreply.github.com>
2020-05-29 09:50:55 +02:00
Tom Brown
2bee13fe40 plot_summary: Plot energy / CO2 balances for each carrier
Take data from supply_energy.csv and plot the balances for each
carrier.

One summary for energy excludes CO2 flows (unlike graphs/energy.pdf).
2020-05-13 13:40:00 +02:00
Tom Brown
1c5f471acb Include option for grid connection cost for onshore and utility PV
Only include these technologies since they are connected at new
locations.

Other technologies can fit in at existing connections.
2020-05-11 13:37:10 +02:00
Tom Brown
17bf1e8c33 config: add back in some parameters needed by make_summary.py 2020-05-07 18:15:36 +02:00
Tom Brown
e92558716e config.yaml: Remove unnecessary settings
Adjustments made to scripts to read correct settings.

Documentation of scenario options improved.
2020-04-30 18:38:55 +02:00
Tom Brown
8cbd3992ff Move config.yaml to a static place; "Getting Started" in README.md
config.default.yaml should be copied to config.yaml by new users.

That way config.yaml doesn't change every time the developers use new
settings.

A basic "Getting Started" section is added to the README.

Changes to be committed:
	modified:   .gitignore
	modified:   README.md
	renamed:    config.yaml -> config.default.yaml
2020-04-30 09:56:24 +02:00
euronion
2f85b0ede5
Separate retrieval and building of cutouts, natura raster into distinct configurations each. (#136)
* Separate config switches for retrieving and building cutout, natura raster.

* Include new switches in tutorial and test configs.

* Update release_notes.rst

* Update toplevel.csv

* Update tutorial.rst

* Update configuration.rst
2020-03-16 15:51:47 +01:00
Fabian Neumann
69fd46290f
solve: include {min,max}_iterations parameters (#130)
* solve: include {min,max}_iteration parameters

* solve: iterations fix defaults
2020-02-25 22:00:36 +01:00
Fabian Neumann
c2d3cd283f environment: add lxml for pd.read_html (closes #129) 2020-02-25 11:28:38 +01:00
Fabian Neumann
8bed137ca5 unify skip_iterations & skip_iterating to skip_iterations 2020-02-19 17:03:19 +01:00
Martha Maria
b63c19ebc4
solving options skip_iterations
change to "skip_iterating", as required in scripts/solve_network.py
2020-02-19 09:48:40 +01:00
FabianHofmann
1ecca802f3 Nomopyomo (#116)
* play around, add new nomopyomo feature

* fix constraints

* fix constraints

* set solver to cbc due to error with gurobi900

* update environments
shift lv and lc constraints to prepare_network
start modifying opt constraints

* correct BAU

* correct environment

* fix import

* fix SAFE constraint

* fix battery charger ratio constraint

* code cleaning

* restructure solve scripts

* fix CCL constraint

* adjust doc

* solve_network: update doc string

* revert unwanted changes

* update environment.yaml

* update environment.yaml II

* force conda update, revert last commit

* revert last change, use other channel priority

* remove trace_sove_network

* add skip_iterating and track_iterations options to config file

* revert last commit, fix environment to current pypsa master

* line break, trigger CI with updated pypsa

* nomopyomo: PR review

Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
2020-02-10 12:06:43 +01:00
FabianHofmann
1e9f8717ee add names to config, add color column to n.carriers 2020-01-29 17:01:57 +01:00
Fabian Neumann
5934f4f7a1
prepare release v0.1.0 (#117) 2020-01-09 14:09:28 +01:00
FabianHofmann
eaf30a9b65
Introduce mocksnakemake which acutally parses Snakefile (#107)
* rewrite mocksnakemake for parsing real Snakefile

* continue add function to scripts

* going through all scripts, setting new mocksnakemake

* fix plotting scripts

* fix build_country_flh

* fix build_country_flh II

* adjust config files

* fix make_summary for tutorial network

* create dir also for output

* incorporate suggestions

* consistent import of mocksnakemake

* consistent import of mocksnakemake II

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/plot_network.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/plot_network.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* Update scripts/retrieve_databundle.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* use pathlib for mocksnakemake

* rename mocksnakemake into mock_snakemake

* revert change in data

* Update scripts/_helpers.py

Co-Authored-By: euronion <42553970+euronion@users.noreply.github.com>

* remove setting logfile in mock_snakemake, use Path in configure_logging

* fix fallback path and base_dir
fix return type of make_io_accessable

* reformulate mock_snakemake

* incorporate suggestion, fix typos

* mock_snakemake: apply absolute paths again, add assertion error
*.py: make hard coded io path accessable for mock_snakemake

* retrieve_natura_raster: use snakemake.output for fn_out

* include suggestion

* Apply suggestions from code review

Co-Authored-By: Jonas Hörsch <jonas.hoersch@posteo.de>

* linting, add return ad end of file

* Update scripts/plot_p_nom_max.py

Co-Authored-By: Jonas Hörsch <jonas.hoersch@posteo.de>

* Update scripts/plot_p_nom_max.py

fixes #112

Co-Authored-By: Jonas Hörsch <jonas.hoersch@posteo.de>

* plot_p_nom_max: small correction

* config.tutorial.yaml fix snapshots end

* use techs instead of technology

* revert try out from previous commit, complete replacing

* change clusters -> clusts in plot_p_nom_max due to wildcard constraints of clusters

* change clusters -> clusts in plot_p_nom_max due to wildcard constraints of clusters II
2019-12-09 21:29:15 +01:00
Fabian Neumann
7ddc153bd2
ec: attach hydrogen pipelines (#108) 2019-12-02 12:22:30 +01:00
euronion
85c356297a Add logging to logfiles to all snakemake workflow scripts. (#102)
* Add logging to logfiles to all snakemake workflow scripts.

* Fix missing quotation marks in Snakefile.

* Apply suggestions from code review

Co-Authored-By: Fabian Neumann <fabian.neumann@outlook.de>

* Apply suggestions from code review

Co-Authored-By: Fabian Neumann <fabian.neumann@outlook.de>

* doc: fix _ec_ filenames in docs

* Allow logging message format to be specified in config.yaml.

* Add logging for Snakemake rule 'retrieve_databundle '.

* Add limited logging to STDERR only for retrieve_*.py scripts.

* Import progressbar module only on demand.

* Fix logging to file and enable concurrent printing to STDERR for most scripts.

* Add new 'logging_format' option to Travis CI test config.yaml.

* Add missing parenthesis (bug fix) and cross-os compatible paths.

* Fix typos in messages.

* Use correct log files for logging (bug fix).

* doc: fix line references

* config: logging_format in all configs

* doc: add doc for logging_format

* environment: update to powerplantmatching 0.4.3

* doc: update line references for tutorial.rst

* Change logging configuration scheme for config.yaml.

* Add helper function for doing basic logging configuration.

* Add logpath for prepare_links_p_nom rule.

* Outsource basic logging configuration for all scripts to _helper submodule.

* Update documentation for changed config.yaml structure.

Instead of 'logging_level' and 'logging_format', now 'logging' with subcategories is used.

* _helpers: Change configure_logging signature.
2019-11-28 08:22:52 +01:00
Fabian Neumann
81d9d2ab4d
battery+H2: option for stores and links instead of storage_units (#97)
* add_electricity: stores and links instead of storageunits

* move code for attaching in add_extra_stores.py

* Update Snakefile

Co-Authored-By: Fabian Neumann <fabian.neumann@outlook.de>

* Update Snakefile

Co-Authored-By: Fabian Neumann <fabian.neumann@outlook.de>

* Update Snakefile

Co-Authored-By: Fabian Neumann <fabian.neumann@outlook.de>

* rename to add_extra_components.py

* incorporate suggestions

* Snakefile: update script name

* extra_components: import _add_missing_carriers_from_costs

* Add '_ec" infix in Snakefile

* Snakefile add infix at missing spot

* remove unintendetely inserted data.bundle, correct import in add_extra_components

* environment: fix pyyaml version

* set powerplantmatching as conda-dependency

* environment fix minimal ppm version

* environment reinsert pyyaml

* environment: carry over changes to environment.docs.yaml

* extra_components: add carriers

* update docstring

* Update scripts/add_extra_components.py

* Update scripts/add_extra_components.py

* tutorial: fix hyperlink [skip travis]

* update release notes

* update documentation

* add_electricity: merge removal of suptech
2019-11-19 19:36:28 +01:00
JanFrederickUnnewehr
6cde3e902b own databundle (#96)
* config.default.yaml

* retrieve_databundle: docs, config and defaults

* fix capitalisation of true/false
2019-11-19 15:56:44 +01:00
Fabian Neumann
99cb4a4354
Merge pull request #86 from PyPSA/workflow
Integrate data retrieving into snakemake workflow
2019-11-06 16:06:11 +01:00
Fabian Neumann
82392c6c07 Merge branch 'co2limit' of https://github.com/fneum/pypsa-eur into fneum-co2limit 2019-11-06 11:19:41 +01:00
Fabian
f6e44d2805 include data retrieving in workflow 2019-11-05 12:53:21 +01:00
Fabian
eb14486e29 config add tiny description for powerplantfilter and custom_powerplants 2019-11-04 16:45:41 +01:00
FabianHofmann
8f5415f69c test: add electricity changes to config 2019-10-31 18:35:18 +01:00
FabianHofmann
5cd7a46339 fully enable powerplantmatching 2019-10-31 16:45:13 +01:00
FabianHofmann
324ededa66 fix typo 2019-10-31 14:59:51 +01:00
Fabian Hofmann
4ee18ea9fa incorporate suggestions of #69 2019-10-31 14:48:10 +01:00
Fabian Hofmann
65700000f7 Merge branch 'add_own_carriers' of https://github.com/eb5194/pypsa-eur into eb5194-add_own_carriers 2019-10-31 14:23:43 +01:00
Fabian Neumann
0fef13ee86 resolve merge conflicts 2019-10-24 16:22:57 +02:00
Fabian Neumann
6f27e753e5 default and tutorial config.x.yaml - cf. #49 2019-10-03 12:37:23 +02:00