diff --git a/config.yaml b/config.yaml index ca215446..3e16d18a 100644 --- a/config.yaml +++ b/config.yaml @@ -2,7 +2,7 @@ logging_level: INFO results_dir: 'results/' summary_dir: results -run: '190508-test_fossil' +run: '190510-fix_fossil' scenario: sectors: [E] # ,E+EV,E+BEV,E+BEV+V2G] # [ E+EV, E+BEV, E+BEV+V2G ] @@ -10,7 +10,7 @@ scenario: lv: [1.0]# or opt clusters: [128] #[90, 128, 181] #[45, 64, 90, 128, 181, 256] #, 362] # (2**np.r_[5.5:9:.5]).astype(int) minimum is 37 opts: [''] #for pypsa-eur - sector_opts: [Co2L0-3H-T-H-B-I,Co2L0p1-3H-T-H-B-I,Co2L0p25-3H-T-H-B-I,Co2L0p50-3H-T-H-B-I]#[Co2L0-3H-T-H-B-I-onwind0-solar3,Co2L0-3H-T-H-B-I-onwind0p125-solar3,Co2L0-3H-T-H-B-I-onwind0p25-solar3,Co2L0-3H-T-H-B-I-onwind0p50-solar3,Co2L0-3H-T-H-B-I-solar3]#,Co2L0-3H-T-H-B-I-onwind0p25-solar3]#,Co2L0p05-3H-T-H-B-I,Co2L0p10-3H-T-H-B-I,Co2L0p20-3H-T-H-B-I,Co2L0p30-3H-T-H-B-I,Co2L0p50-3H-T-H-B-I]#[Co2L-3H-T-H,Co2L0p10-3H-T-H,Co2L0-3H-T-H,Co2L0p20-3H-T-H] #Co2L-3H-T-H,Co2L0p10-3H-T-H,Co2L0p20-3H-T-HCo2L-3H-T-H,Co2L0p10-3H-T-H,Co2L0p30-3H-T-H,Co2L0p50-3H-T-H] #Co2L-3H,Co2L-3H-T,, LC-FL, LC-T, Ep-T, Co2L-T] + sector_opts: [Co2L0-3H-T-H-B-I,Co2L0p1-3H-T-H-B-I,Co2L0p25-3H-T-H-B-I,Co2L0p5-3H-T-H-B-I]#[Co2L0-3H-T-H-B-I-onwind0-solar3,Co2L0-3H-T-H-B-I-onwind0p125-solar3,Co2L0-3H-T-H-B-I-onwind0p25-solar3,Co2L0-3H-T-H-B-I-onwind0p50-solar3,Co2L0-3H-T-H-B-I-solar3]#,Co2L0-3H-T-H-B-I-onwind0p25-solar3]#,Co2L0p05-3H-T-H-B-I,Co2L0p10-3H-T-H-B-I,Co2L0p20-3H-T-H-B-I,Co2L0p30-3H-T-H-B-I,Co2L0p50-3H-T-H-B-I]#[Co2L-3H-T-H,Co2L0p10-3H-T-H,Co2L0-3H-T-H,Co2L0p20-3H-T-H] #Co2L-3H-T-H,Co2L0p10-3H-T-H,Co2L0p20-3H-T-HCo2L-3H-T-H,Co2L0p10-3H-T-H,Co2L0p30-3H-T-H,Co2L0p50-3H-T-H] #Co2L-3H,Co2L-3H-T,, LC-FL, LC-T, Ep-T, Co2L-T] # Co2L will give default (5%); Co2L0p25 will give 25% CO2 emissions; Co2Lm0p05 will give 5% negative emissions @@ -82,6 +82,8 @@ sector: 'methanation' : True 'helmeth' : True 'dac' : True + 'co2_vent' : True + 'SMR' : True 'ccs_fraction' : 0.9 @@ -192,6 +194,8 @@ plotting: "gas-to-power/heat" : "orange" "gas" : "brown" "natural gas" : "brown" + "SMR" : "#4F4F2F" + "oil" : "#B5A642" "lines" : "k" "transmission lines" : "k" "H2" : "m" diff --git a/data/costs.csv b/data/costs.csv index 324bed63..2756f737 100644 --- a/data/costs.csv +++ b/data/costs.csv @@ -100,6 +100,10 @@ helmeth,2030,investment,2000,EUR/kW,no source helmeth,2030,lifetime,25,years,no source helmeth,2030,FOM,3,%/year,no source helmeth,2030,efficiency,0.8,per unit,HELMETH press release +SMR,2030,investment,540.56,EUR/kWCH4,https://www.gov.uk/government/publications/hydrogen-supply-chain-evidence-base; slide 42 assumption for 2030; GBP 466 exchange 1.16 +SMR,2030,lifetime,25,years,TODO +SMR,2030,FOM,5.4,%/year,https://www.gov.uk/government/publications/hydrogen-supply-chain-evidence-base; slide 42 assumption for 2030 +SMR,2030,efficiency,0.74,per unit,https://www.gov.uk/government/publications/hydrogen-supply-chain-evidence-base; slide 42 assumption for 2030 Fischer-Tropsch,2030,investment,677.6,EUR/kWH2,Fasihi doi:10.3390/su9020306 (60 kEUR/bpd = 847 EUR/kWL (1b = 1.7 MWh) 847*0.8 = 677.6) Fischer-Tropsch,2030,lifetime,30,years,doi:10.3390/su9020306 Fischer-Tropsch,2030,FOM,3,%/year,doi:10.3390/su9020306 diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 5b89a5f6..39c600f5 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -76,15 +76,23 @@ def add_co2_tracking(n): n.add("Bus","co2 stored", carrier="co2 stored") - #NB: can also be negative - #cost of 10 euro/tCO2 for whatever stays #TODO move cost to data/costs.csv + #TODO move maximum somewhere more transparent n.madd("Store",["co2 stored"], e_nom_extendable = True, - marginal_cost=-1000., + e_nom_max=2e8, + capital_cost=20., carrier="co2 stored", bus="co2 stored") + if options['co2_vent']: + n.madd("Link",["co2 vent"], + bus0="co2 stored", + bus1="co2 atmosphere", + carrier="co2 vent", + efficiency=1., + p_nom_extendable=True) + if options['dac']: #direct air capture consumes electricity to take CO2 from the air to the underground store #TODO do with cost from Breyer - later use elec and heat and capital cost @@ -575,6 +583,20 @@ def add_storage(network): capital_cost=costs.at["helmeth","fixed"]) + if options['SMR']: + network.madd("Link", + nodes + " SMR", + bus0=["EU gas"]*len(nodes), + bus1=nodes+" H2", + bus2="co2 atmosphere", + bus3="co2 stored", + p_nom_extendable=True, + carrier="SMR", + efficiency=costs.at["SMR","efficiency"], + efficiency2=costs.at['gas','CO2 intensity']*(1-options["ccs_fraction"]), + efficiency3=costs.at['gas','CO2 intensity']*options["ccs_fraction"], + capital_cost=costs.at["SMR","fixed"]) + def add_transport(network): print("adding transport")