* 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
* 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>
* Propagate the solver log file name to the solver
Previously, the PyPSA network solving functions were not told about
the solver logfile specified in the Snakemake file.
* Pass solver_logfile on as kwargs
The `solve_network` function passes any additional arguments on to the
pypsa `network_lopf` and `ilopf` functions. Now we also pass
`solver_logfile` on as part of kwargs.
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
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
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).
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.
- 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.
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).
* 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
* 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
* 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.
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.
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.
* skip_iterating flag: solve network only once without updating impedances
* extra_functionality parameter: add function to modify pyomo model
* extra_functionality args: function arguments for extra_functionality
* extra_postprocessing: add function for postprocessing steps depending on n.model
elec_s_37_lc1.25_... adds a constraint on the total line cost for an extension
by a 25%, compare with elec_s_37_lv1.25_... for the line volume limit.
`ll` is an acronym for line limit.