Commit Graph

50 Commits

Author SHA1 Message Date
Fabian Neumann
df285a001e merge master 2022-02-18 11:25:38 +01:00
Tim Pedersen
0d7ad643bc
Resolved error whith /tmp (#224) 2022-01-24 14:34:54 +01:00
Fabian Neumann
d1762919c5
add option 'seqXXX' to sweep global co2 sequestration potentials (#208)
* add option 'seqXXX' to sweep global co2 sequestration potentials

* add release notes
2021-12-10 12:05:38 +01:00
Fabian Neumann
82096f92e8
fix for GlobalConstraints mu with "co2_sequestration_limit" (#211)
* fix for GlobalConstraints mu with co2_sequestration_limit

* add release notes
2021-12-06 11:31:48 +01:00
Fabian Neumann
a2459881ef
allow H2 retrofitting from CH4 pipelines without endogenous CH4 grid (#204)
* allow H2 retrofitting from CH4 pipelines without endogenous CH4 grid

* add small capital cost to gas pipelines to incentivise decommissioning

* add release notes
2021-11-29 12:42:10 +01:00
Fabian Neumann
6a00d5bfca revision gas infrastructure representation 2021-11-03 20:34:43 +01:00
Fabian Neumann
37e2e53486
Merge branch 'master' into retrofit-gas-pipelines 2021-11-02 19:03:26 +01:00
Fabian Neumann
4375083838 create parallel structures for land-use constraints w/wo m 2021-10-02 10:40:49 +02:00
Fabian Neumann
ff6d736a89
Merge branch 'master' into myopic-low-clustering-gens 2021-09-30 14:51:45 +02:00
Fabian Neumann
54a509f3dd
Merge branch 'master' into co2-network 2021-08-06 15:51:40 +02:00
Fabian Neumann
3754643e81 add co2 sequestration potential global constraint 2021-08-06 12:46:03 +02:00
Fabian Neumann
e1f1d71b8d apply option for retrofitted pipe capacity per CH4 capacity in solve_network 2021-08-04 10:49:06 +02:00
Leon
85111e2ae3
Omitting unnecessary constraints on the CHP units (#155)
* Omitting unnecessary constraints on the CHP units

All CHPs in pypsa-eur-sec are operating on the backpressure line and this set of extra constraints to ensure working in the operational space of the CHPs is hence not necessary at the moment.

* remove chp constraints function call
2021-08-04 09:20:09 +02:00
lisazeyen
554b55ff3d
Update solve_network.py
fix bug in pipe retroftting constraint
2021-07-13 08:50:15 +02:00
Fabian Neumann
195cabba0c merge master 2021-07-06 09:55:41 +02:00
martavp
103ad49671 Enable use of lower generators clustering than network clustering 2021-07-05 12:19:43 +02:00
Fabian Neumann
89eccd4f70 merge master 2021-07-02 15:00:19 +02:00
Fabian Neumann
1fc1d2a17d
Revision complete (#139)
* ammonia_production: minor cleaning and move into __main__ (#106)

* biomass_potentials: code cleaning and automatic country index inferral (#107)

* Revision: build energy totals (#111)

* blacken

* energy_totals: preliminaries

* energy_totals: update build_swiss

* energy_totals: update build_eurostat

* energy_totals: update build_idees

* energy_totals: update build_energy_totals

* energy_totals: update build_eea_co2

* energy_totals: update build_eurostat_co2

* energy_totals: update build_co2_totals

* energy_totals: update build_transport_data

* energy_totals: add tqdm progressbar to idees

* energy_totals: adjust __main__ section

* energy_totals: handle inputs via Snakefile and config

* energy_totals: handle data and emissions year via config

* energy_totals: fix reading in eurostat for different years

* energy_totals: fix erroneous drop duplicates
This caused problems for waste management in HU and SI

* energy_totals: make scope selection of CO2 or GHG a config option

* Revision: build industrial production per country (#114)

* industry-ppc: format

* industry-ppc: rewrite for performance

* industry-ppc: move reference year to config

* industry-ppct: tidy up and format (#115)

* remove stale industry demand rules (#116)

* industry-epc: rewrite for performance (#117)

* Revision: industrial distribution key (#118)

* industry-distribution: first tidying

* industry-distribution: first tidying

* industry-distribution: fix syntax

* Revision: industrial energy demand per node today (#119)

* industry-epn: minor code cleaning

* industry-epn: remove accidental artifact

* industry-epn: remove accidental artifact II

* industry-ppn: code cleaning (#120)

* minor code cleaning (#121)

* Revision: industry sector ratios (#122)

* sector-ratios: basic reformatting

* sector-ratios: add new read_excel function that filters year already

* sector-ratios: rename jrc to idees

* sector-ratios: rename conv_factor to toe_to_MWh

* sector-ratios: modularise into functions

* Move overriding of component attributes to function and into data (#123)

* move overriding of component attributes to central function and store in separate folder

* fix return of helper.override_component_attrs

* prepare: fix accidental syntax error

* override_component_attrs: bugfix that aligns with pypsa components

* Revision: build population layout (#108)

* population_layouts: move inside __main__ and blacken

* population_layouts: misc code cleaning and multiprocessing

* population_layouts: fix fill_values assignment of urban fractions

* population_layouts: bugfig for UK-GB naming ambiguity

* population_layouts: sort countries alphabetically for better overview

* config: change path to atlite cutout

* Revision: build clustered population layouts (#112)

* population_layouts: move inside __main__ and blacken

* population_layouts: misc code cleaning and multiprocessing

* population_layouts: fix fill_values assignment of urban fractions

* population_layouts: bugfig for UK-GB naming ambiguity

* population_layouts: sort countries alphabetically for better overview

* cl_pop_layout: blacken

* cl_pop_layout: turn GeoDataFrame into GeoSeries + code cleaning

* cl_pop_layout: add fraction column which is repeatedly calculated downstream

* Revision: build various heating-related time series (#113)

* population_layouts: move inside __main__ and blacken

* population_layouts: misc code cleaning and multiprocessing

* population_layouts: fix fill_values assignment of urban fractions

* population_layouts: bugfig for UK-GB naming ambiguity

* population_layouts: sort countries alphabetically for better overview

* cl_pop_layout: blacken

* cl_pop_layout: turn GeoDataFrame into GeoSeries + code cleaning

* gitignore: add .vscode

* heating_profiles: update to new atlite and move into __main__

* heating_profiles: remove extra cutout

* heating_profiles: load regions with .buffer(0) and remove clean_invalid_geometries

* heating_profiles: load regions with .buffer(0) before squeeze()

* heating_profiles: account for transpose of dataarray

* heating_profiles: account for transpose of dataarray in add_exiting_baseyear

* Reduce verbosity of Snakefile (2) (#128)

* tidy Snakefile light

* Snakefile: fix indents

* Snakefile: add missing RDIR

* tidy config by removing quotes and expanding lists (#109)

* bugfix: reorder squeeze() and buffer()

* plot/summary: cosmetic changes including: (#131)

- matplotlibrc for default style and backend
- remove unused config options
- option to configure geomap colors
- option to configure geomap bounds

* solve: align with pypsa-eur using ilopf (#129)

* tidy myopic code scripts (#132)

* use mock_snakemake from pypsa-eur (#133)

* Snakefile: add benchmark files to each rule

* Snakefile: only run build_retro_cost if endogenously optimised

* Snakefile: remove old {network} wildcard constraints

* WIP: Revision: prepare_sector_network (#124)

* population_layouts: move inside __main__ and blacken

* population_layouts: misc code cleaning and multiprocessing

* population_layouts: fix fill_values assignment of urban fractions

* population_layouts: bugfig for UK-GB naming ambiguity

* population_layouts: sort countries alphabetically for better overview

* cl_pop_layout: blacken

* cl_pop_layout: turn GeoDataFrame into GeoSeries + code cleaning

* move overriding of component attributes to central function and store in separate folder

* prepare: sort imports and remove six dependency

* prepare: remove add_emission_prices

* prepare: remove unused set_line_s_max_pu
This is a function from prepare_network

* prepare: remove unused set_line_volume_limit
This is a PyPSA-Eur function from prepare_network

* prepare: tidy add_co2limit

* remove six dependency

* prepare: tidy code first batch

* prepare: extend override_component_attrs to avoid hacky madd

* prepare: remove hacky madd() for individual components

* prepare: tidy shift function

* prepare: nodes and countries from n.buses not pop_layout

* prepare: tidy loading of pop_layout

* prepare: fix prepare_costs function

* prepare: optimise loading of traffic data

* prepare: move localizer into generate_periodic profiles

* prepare: some formatting of transport data

* prepare: eliminate some code duplication

* prepare: fix remove_h2_network
- only try to remove EU H2 store if it exists
- remove readding nodal Stores because they are never removed

* prepare: move cost adjustment to own function

* prepare: fix a syntax error

* prepare: add investment_year to get() assuming global variable

* prepare: move co2_totals out of prepare_data()

* Snakefile: remove unused prepare_sector_network inputs

* prepare: move limit p/s_nom of lines/links into function

* prepare: tidy add_co2limit file handling

* Snakefile: fix tabs

* override_component_attrs: add n/a defaults

* README: Add network picture to make scope clear

* README: Fix date of preprint (was too optimistic...)

* prepare: move some more config options to config.yaml

* prepare: runtime bugfixes

* fix benchmark path

* adjust plot ylims

* add unit attribute to bus, correct cement capture efficiency

* bugfix: land usage constrained missed inplace operation

Co-authored-by: Tom Brown <tom@nworbmot.org>

* add release notes

* remove old fix_branches() function

* deps: make geopy optional, remove unused imports

* increase default BarConvTol

* get ready for upcoming PyPSA release

* re-remove ** bug

* amend release notes

Co-authored-by: Tom Brown <tom@nworbmot.org>
2021-07-01 20:09:04 +02:00
lisazeyen
e7b55d034e modify constraint for pipe retrofitting according to H2 backbone strategy 2021-06-23 14:55:21 +02:00
lisazeyen
447c2119a6 add constraint for retrofitting existing gas pipes to H2 pipes 2021-06-21 12:34:47 +02:00
lisazeyen
c5b3551687 fix spelling mistake 2021-06-18 09:45:51 +02:00
lisazeyen
dbec103593 add mock_snakemake from pypsa-eur 2021-06-18 09:41:18 +02:00
Fabian Neumann
a156d44f28
remove unused {network} wildcard (#104) 2021-04-29 16:52:35 +02: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
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
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
4fef5616e8 scripts: change mock snakemake defaults 2020-11-10 09:48:13 +01:00
lisazeyen
7fe7dc381f read config.yaml for testing with yaml.safe_load() 2020-09-22 09:32:24 +02:00
Tom Brown
3f5aa60ad2 solve_network: Refactor land use constraints for renewables 2020-08-19 20:25:04 +02:00
Tom Brown
6444f7fde9 Weight offshore connection costs with aggregation weight
Rather than taking a mean of the clustered connection costs.

Apply cost update also for overnight scenarios based on planning year.

Add land costs for onshore wind.
2020-08-19 12:41:17 +02:00
martavp
d4be632e7a add add_land_constraint. The constraint is now imposed in a simplified way.
The p_nom for already installed capacities are substrated from the p_nom_max of extendable capacities.
2020-08-17 12:04:45 +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
Tom Brown
663e1195e1 Add suffix -year to optimized components before solving
This simplifies the structure of add_brownfield.py dramatically.

Some other changes need to be make elsewhere because of name
changes (e.g. battery constraints in solve_network.py).
2020-08-12 18:08:01 +02:00
martavp
dedabe695e Add conditional use of add_land_use_constraint (only for config['foresight']='myopic') 2020-07-08 16:32:17 +02:00
martavp
059d1daed8 activate rule add_land_use constraint 2020-07-08 08:53:17 +02:00
martavp
0f85f18e86 Add land use constraint to e.g. all the solar installed in different years 2020-07-07 18:40:17 +02:00
Tom Brown
bd85f751ac Include home battery for low voltage node 2020-03-26 14:54:10 +01:00
Tom Brown
5dc572c35e solve_network.py: Remove hacked installation of conda libraries 2020-03-04 18:10:57 +01:00
lisazeyen
36a57222f7 Clip p min pu (#50)
* changes for retrofitting

* changed Snakefile to work with new pypsa-eur version, change solve_network.py to clip also n.generators_t.p_min_pu

* removed retrofitting data files
2020-01-24 15:31:17 +01:00
Tom Brown
9ed2cbffa8 Update code to PyPSA 0.16.1 2020-01-10 18:13:01 +01:00
Tom Brown
9a5ae01a92 Adjust code to use version 0.16.0 of PyPSA for nomopyomo framework 2019-12-26 10:19:26 +00:00
Tom Brown
c525e2a6ae Install package dependencies nomopyomo branch PyPSA and gurobipy
Inelegant - installed by hand in solve_network.py.

Should replace with environment.yaml.
2019-12-19 11:38:43 +01:00
Tom Brown
41f7f44dcf Make CCS optional for SMR and industry process emissions 2019-12-13 18:06:38 +01:00
Tom Brown
49a68bdd35 Separate CHP gas/solid biomass, with/without CCS
Also fix CHP p_nom_ratio constraint, and battery charger/discharger
constraint.
2019-12-12 15:03:51 +01:00
Tom Brown
066f1b0bb5 Fix solve_network.py to use nomopyomo for LV > 1.0 2019-12-06 16:55:28 +01:00
Tom Brown
8982147706 Convert code to use PyPSA nomopyomo branch; only works for LV=1.0
Will extend to LV > 1.0 soon.
2019-11-27 18:34:53 +01:00
Tom Brown
8d68146e7c Switch to BDEW-based weekday/end space heating demand profiles
These are different for residential and services demand.

Also include Snakefile in config files copied for each run.

Use gurobi settings from gurobi support for speed.

Commented out settings for testing randomness for noise.
2019-08-07 19:08:06 +02:00
Tom Brown
32af25df62 Backup config files before solve_network rather than after
For debugging cases where solving failed.
2019-07-20 10:55:23 +02:00
Tom Brown
ddca9afcc7 Give all loads a carrier; rename heat buses; fix district h losses
Heat buses renamed to:

rural (for low-density areas where district heating not possible)

urban decentral (for high-density areas without district heating and
individual heating technologies) (used to be called "urban")

urban central (for high-density areas with district heating) (used to
be called "central")

District heating losses applied only to urban central.
2019-07-16 16:00:21 +02:00
Tom Brown
cfe44ce702 Copy solve_network.py and *_summary.py from pypsa-eur sector branch 2019-04-18 11:39:17 +02:00