Commit Graph

314 Commits

Author SHA1 Message Date
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
916aa5e0d9 Generate today's industry demand per ct and per sector
Only covers EU28 at the moment.

Uses the energy balances sheets from JRC-IDEES.
2020-09-07 16:48:06 +02:00
Tom Brown
aa3ffb9ac2 Remove biomass from chemicals, cement; increase in PPA, FBT
Remove non-existing biomass from chemicals and cement, since these
need higher temperatures than achievable with residues and waste.

Increase biomass in pulp and paper (since already used extensively
here and T < 500), and replace methane with biomass in food, beverages
and tobacco, since temperatures needed are low (T < 500).
2020-09-07 14:49:20 +02:00
Tom Brown
f3dcda9179 Include integrated steelworks in industry_sector_ratio
Also switch it from sep=";" to ","
2020-09-07 11:04:50 +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
Tom Brown
851142fe0f Separate script for industrial production per ct from energy demand 2020-08-26 13:12:16 +02:00
Tom Brown
37f36047ca Industry demand: Also record material production per industry 2020-08-26 12:06:01 +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
18ffb38bb1 doc: release notes for Version 0.2.0 2020-08-21 12:16:15 +02:00
Tom Brown
beefb57c25 Fix plotting of maps and balances; move log/benchmark to results/ 2020-08-21 12:15:01 +02:00
Tom Brown
fa767772d6 Remove onshore wind land costs, since included in latest DEA data 2020-08-20 18:41:19 +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
95e676828a Remove old data/costs.csv and dependencies on it 2020-08-20 14:26:39 +02:00
Tom Brown
3f5aa60ad2 solve_network: Refactor land use constraints for renewables 2020-08-19 20:25:04 +02:00
Tom Brown
6b40504159 add_existing_baseyears: Correct for p_nom data is thermal output
p_nom in PyPSA is capacity on the input side (from final energy),
whereas existing capacities are given on output side (i.e. heat
delivered).
2020-08-19 12:51:53 +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
35e1d4b03b fix bug when determining elec_buses 2020-08-17 12:08:49 +02:00
martavp
8fbcea1ac4 Merge branch 'master' of https://github.com/martavp/pypsa-eur-sec 2020-08-17 12:05:45 +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
martavp
59f2a8b09d
Update myopic.rst 2020-08-17 11:56:29 +02:00
martavp
20512754ce
Update myopic.rst 2020-08-14 12:32:00 +02:00
martavp
661804da7c add rough description of myopic code 2020-08-14 12:18:18 +02:00
martavp
6037882dbb small change in commented line 2020-08-14 11:04:35 +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
7e6c7b3dd3 Merge branch 'master' of github.com:martavp/pypsa-eur-sec into martavp-master 2020-08-12 18:10:41 +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
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
9012125585 Snakefile: Force configs to be copied before solving
This reinstates old behaviour for both myopic and overnight foresight
settings.

Also account for the fact that the planning_horizon is now integer in
config.yaml rather than a string.
2020-08-11 11:41:53 +02:00
Tom Brown
16b05a570d Distribute heating technologies within each country by population 2020-08-11 11:09:39 +02:00
Tom Brown
a59b2bce19 Add location attribute to each bus
E.g. "DE0 0 residential rural heat" has location "DE0 0", and "EU gas"
and "co2 atmosphere" have location "EU".
2020-08-11 11:07:55 +02:00
Tom Brown
1d6b6483e0 add_existing_baseyear: Divide p_nom by efficiency for Links
This is because the p_nom of a Link is the thermal capacity at bus0,
whereas the capacities we have are the electrical capacity at bus1.
2020-08-11 09:55:39 +02:00
martavp
e7cf956902
Merge pull request #1 from PyPSA/master
Update my fork
2020-08-11 09:00:24 +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
Tom Brown
ece21bfdfa add_existing_baseyear.py: Add carrier to conventional generators 2020-07-30 08:22:27 +02:00
Tom Brown
7abe928337 prepare_sector_network: Fix costs bug and carrier bug
In prepare_costs, you need the min_count=1 in the sum so that it
generates NaNs for missing data (rather than 0) so that NaNs can be
subsituted by .fillna in the next line. Otherwise many values
(discount rates and efficiencies for solar, wind) are set to zero.

Also added carriers, storage and generators for coal, nuclear and
oil. (This needs to be organized better soon so that the carriers are
defined in config.yaml.)
2020-07-29 15:50:40 +02:00
Tom Brown
9ad61eb8de README: Fix GitHub release badge 2020-07-20 10:13:00 +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
17a348d1e6 Add lifetime attribute to generators, links and stores in prepare_sector_network and use that attribute to check if a generator optimized in a previous time step should be added in add_brownfield (or if its lifetime has expired) 2020-07-17 15:20:20 +02:00
martavp
fa0b88a9b1 Add lifetime and build_year attributes to generators, links and stores. 2020-07-14 20:04:36 +02:00
martavp
d66105a6dd Load 2 level multindex costs file in prepares_sector_network rule 2020-07-14 20:03:08 +02:00
martavp
7d1500604f import prepare_cost function from prepare_sector_network 2020-07-14 13:28:10 +02:00
Tom Brown
34123088c8 README: Include zenodo DOI and other badges 2020-07-10 09:22:41 +02:00
Tom Brown
b16eb41d7c README: Link to readthedocs and remove info in documentation
I.e. avoid duplication of text.
2020-07-08 18:52:18 +02:00
Tom Brown
c24728279c PyPSA-Eur-Sec Version 0.1.0
Please see the release notes in the documentation for more
information.
2020-07-08 18:37:12 +02:00
martavp
201e4d2f57 simplify make_summary and plot_summary since now overnight also includes planning_horizons and carbon_budget_name 2020-07-08 16:35:50 +02:00
martavp
b23b7a143c Add carbon_budget_name and planning_horizons to the wildcards also for the overnight option (they are not used in this case). Also, rename prenetworks_bf to prenetworks_brownfield 2020-07-08 16:34:15 +02:00