Make CCS optional for SMR and industry process emissions
This commit is contained in:
parent
49a68bdd35
commit
41f7f44dcf
@ -2,7 +2,7 @@ logging_level: INFO
|
||||
|
||||
results_dir: 'results/'
|
||||
summary_dir: results
|
||||
run: '191212-chp'
|
||||
run: '191212-ccs'
|
||||
|
||||
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]#, 1.125, 1.25, 1.5, 2.0]# or opt
|
||||
clusters: [50] #[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,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]
|
||||
sector_opts: [Co2L0-3H-T-H-B-I,Co2L0p2-3H-T-H-B-I,Co2L0p5-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
|
||||
|
||||
|
||||
|
@ -73,15 +73,15 @@ CCGT,2030,efficiency,0.5,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
|
||||
biomass,2030,efficiency,0.468,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
|
||||
geothermal,2030,efficiency,0.239,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
|
||||
nuclear,2030,efficiency,0.337,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
|
||||
gas,2030,CO2 intensity,0.187,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
|
||||
gas,2030,CO2 intensity,0.187,tCO2/MWhth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
|
||||
coal,2030,efficiency,0.464,per unit,DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
|
||||
lignite,2030,efficiency,0.447,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
|
||||
oil,2030,efficiency,0.393,per unit,DIW DataDoc http://hdl.handle.net/10419/80348 CT
|
||||
coal,2030,CO2 intensity,0.354,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
|
||||
lignite,2030,CO2 intensity,0.4,tCO2/MWth,German sources
|
||||
oil,2030,CO2 intensity,0.248,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
|
||||
geothermal,2030,CO2 intensity,0.026,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
|
||||
solid biomass,2030,CO2 intensity,0.3,tCO2/MWth,TODO
|
||||
coal,2030,CO2 intensity,0.354,tCO2/MWhth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
|
||||
lignite,2030,CO2 intensity,0.4,tCO2/MWhth,German sources
|
||||
oil,2030,CO2 intensity,0.248,tCO2/MWhth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
|
||||
geothermal,2030,CO2 intensity,0.026,tCO2/MWhth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
|
||||
solid biomass,2030,CO2 intensity,0.3,tCO2/MWhth,TODO
|
||||
electrolysis,2030,investment,350,EUR/kWel,Palzer Thesis
|
||||
electrolysis,2030,FOM,4,%/year,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
|
||||
electrolysis,2030,lifetime,18,years,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
|
||||
@ -109,6 +109,14 @@ SMR,2030,investment,540.56,EUR/kWCH4,https://www.gov.uk/government/publications/
|
||||
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
|
||||
SMR CCS,2030,investment,1032,EUR/kWCH4,https://www.gov.uk/government/publications/hydrogen-supply-chain-evidence-base; slide 42 assumption for 2030; GBP 466 exchange 1.16; CCS costed at 300 EUR/tCO2/a
|
||||
SMR CCS,2030,lifetime,25,years,TODO
|
||||
SMR CCS,2030,FOM,5.4,%/year,https://www.gov.uk/government/publications/hydrogen-supply-chain-evidence-base; slide 42 assumption for 2030
|
||||
SMR CCS,2030,efficiency,0.67,per unit,https://www.gov.uk/government/publications/hydrogen-supply-chain-evidence-base; slide 42 assumption for 2030; CCS uses 10% of gas
|
||||
industry CCS,2030,investment,300,EUR/tCO2/a,Saygin et al 2013 https://doi.org/10.1016/j.ijggc.2013.05.032
|
||||
industry CCS,2030,FOM,2,%/year,Saygin et al 2013 https://doi.org/10.1016/j.ijggc.2013.05.032
|
||||
industry CCS,2030,lifetime,25,years,Saygin et al 2013 https://doi.org/10.1016/j.ijggc.2013.05.032
|
||||
industry CCS,2030,efficiency,0.9,per unit,Saygin et al 2013 https://doi.org/10.1016/j.ijggc.2013.05.032
|
||||
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
|
||||
@ -118,7 +126,7 @@ DAC,2030,lifetime,30,years,Fasihi
|
||||
DAC,2030,FOM,4,%/year,Fasihi
|
||||
battery inverter,2030,investment,411,USD/kWel,budischak2013
|
||||
battery inverter,2030,lifetime,20,years,budischak2013
|
||||
battery inverter,2030,efficiency,0.81,per unit,budischak2013; Lund and Kempton (2008) http://dx.doi.org/10.1016/j.enpol.2008.06.007
|
||||
battery inverter,2030,efficiency,0.81,per unit,budischak2013; Lund and Kempton (2008) https://doi.org/10.1016/j.enpol.2008.06.007
|
||||
battery inverter,2030,FOM,3,%/year,budischak2013
|
||||
battery storage,2030,investment,192,USD/kWh,budischak2013
|
||||
battery storage,2030,lifetime,15,years,budischak2013
|
||||
@ -191,22 +199,22 @@ central gas CHP CCS,2030,c_b,0.7,per unit,DEA (backpressure ratio)
|
||||
central gas CHP CCS,2030,c_v,0.17,per unit,DEA (loss of fuel for additional heat)
|
||||
central gas CHP CCS,2030,p_nom_ratio,1.,per unit,
|
||||
central gas CHP CCS,2030,VOM,0.82,EUR/MWh,DEA
|
||||
central solid biomass CHP,2030,lifetime,40,years,DEA
|
||||
central solid biomass CHP,2030,investment,1990,EUR/kWel,DEA
|
||||
central solid biomass CHP,2030,FOM,3,%/year,DEA
|
||||
central solid biomass CHP,2030,efficiency,0.52,per unit,DEA (condensation mode)
|
||||
central solid biomass CHP,2030,c_b,1.01,per unit,DEA (backpressure ratio)
|
||||
central solid biomass CHP,2030,c_v,0.15,per unit,DEA (loss of fuel for additional heat)
|
||||
central solid biomass CHP,2030,lifetime,40,years,DEA for wood pellets CHP
|
||||
central solid biomass CHP,2030,investment,1990,EUR/kWel,DEA for wood pellets CHP
|
||||
central solid biomass CHP,2030,FOM,3,%/year,DEA for wood pellets CHP
|
||||
central solid biomass CHP,2030,efficiency,0.52,per unit,DEA for wood pellets CHP (condensation mode)
|
||||
central solid biomass CHP,2030,c_b,1.01,per unit,DEA for wood pellets CHP (backpressure ratio)
|
||||
central solid biomass CHP,2030,c_v,0.15,per unit,DEA for wood pellets CHP (loss of fuel for additional heat)
|
||||
central solid biomass CHP,2030,p_nom_ratio,1.,per unit,
|
||||
central solid biomass CHP,2030,VOM,2.2,EUR/MWh,DEA
|
||||
central solid biomass CHP CCS,2030,lifetime,40,years,DEA
|
||||
central solid biomass CHP CCS,2030,investment,2590,EUR/kWel,DEA + DIW extra for CCS on gas plant
|
||||
central solid biomass CHP CCS,2030,FOM,3,%/year,DEA
|
||||
central solid biomass CHP CCS,2030,efficiency,0.468,per unit,DEA (condensation mode + efficiency loss due to capture)
|
||||
central solid biomass CHP CCS,2030,c_b,1.01,per unit,DEA (backpressure ratio)
|
||||
central solid biomass CHP CCS,2030,c_v,0.15,per unit,DEA (loss of fuel for additional heat)
|
||||
central solid biomass CHP,2030,VOM,2.2,EUR/MWh,DEA for wood pellets CHP
|
||||
central solid biomass CHP CCS,2030,lifetime,40,years,DEA for wood pellets CHP
|
||||
central solid biomass CHP CCS,2030,investment,2590,EUR/kWel,DEA for wood pellets CHP + DIW extra for CCS on gas plant
|
||||
central solid biomass CHP CCS,2030,FOM,3,%/year,DEA for wood pellets CHP
|
||||
central solid biomass CHP CCS,2030,efficiency,0.468,per unit,DEA for wood pellets CHP (condensation mode + efficiency loss due to capture)
|
||||
central solid biomass CHP CCS,2030,c_b,1.01,per unit,DEA for wood pellets CHP (backpressure ratio)
|
||||
central solid biomass CHP CCS,2030,c_v,0.15,per unit,DEA for wood pellets CHP (loss of fuel for additional heat)
|
||||
central solid biomass CHP CCS,2030,p_nom_ratio,1.,per unit,
|
||||
central solid biomass CHP CCS,2030,VOM,2.2,EUR/MWh,DEA
|
||||
central solid biomass CHP CCS,2030,VOM,2.2,EUR/MWh,DEA for wood pellets CHP
|
||||
micro CHP,2030,lifetime,20,years,DEA for PEMFC with methane (for unit consuming 2kW CH4)
|
||||
micro CHP,2030,investment,4500,EUR/kWCH4,DEA for PEMFC with methane (for unit consuming 2kW CH4)
|
||||
micro CHP,2030,FOM,6,%/year,DEA for PEMFC with methane (for unit consuming 2kW CH4)
|
||||
|
|
@ -623,16 +623,27 @@ def add_storage(network):
|
||||
|
||||
if options['SMR']:
|
||||
network.madd("Link",
|
||||
nodes + " SMR",
|
||||
nodes + " SMR CCS",
|
||||
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"],
|
||||
carrier="SMR CCS",
|
||||
efficiency=costs.at["SMR CCS","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 CCS","fixed"])
|
||||
|
||||
network.madd("Link",
|
||||
nodes + " SMR",
|
||||
bus0=["EU gas"]*len(nodes),
|
||||
bus1=nodes+" H2",
|
||||
bus2="co2 atmosphere",
|
||||
p_nom_extendable=True,
|
||||
carrier="SMR",
|
||||
efficiency=costs.at["SMR","efficiency"],
|
||||
efficiency2=costs.at['gas','CO2 intensity'],
|
||||
capital_cost=costs.at["SMR","fixed"])
|
||||
|
||||
|
||||
@ -1123,43 +1134,70 @@ def add_industry(network):
|
||||
solid_biomass_by_country = industrial_demand["solid biomass"].groupby(pop_layout.ct).sum()
|
||||
countries = solid_biomass_by_country.index
|
||||
|
||||
network.madd("Bus",
|
||||
["solid biomass for industry"],
|
||||
carrier="solid biomass for industry")
|
||||
|
||||
network.madd("Load",
|
||||
["solid biomass for industry"],
|
||||
bus="EU solid biomass",
|
||||
bus="solid biomass for industry",
|
||||
carrier="solid biomass for industry",
|
||||
p_set=solid_biomass_by_country.sum()/8760.)
|
||||
|
||||
#Net transfer of CO2 from atmosphere to stored
|
||||
network.madd("Load",
|
||||
["solid biomass for industry co2 from atmosphere"],
|
||||
bus="co2 atmosphere",
|
||||
carrier="solid biomass for industry co2 from atmosphere",
|
||||
p_set=solid_biomass_by_country.sum()*costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"]/8760.)
|
||||
network.madd("Link",
|
||||
["solid biomass for industry"],
|
||||
bus0="EU solid biomass",
|
||||
bus1="solid biomass for industry",
|
||||
carrier="solid biomass for industry",
|
||||
p_nom_extendable=True,
|
||||
efficiency=1.)
|
||||
|
||||
network.madd("Load",
|
||||
["solid biomass for industry co2 to stored"],
|
||||
bus="co2 stored",
|
||||
carrier="solid biomass for industry co2 to stored",
|
||||
p_set=-solid_biomass_by_country.sum()*costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"]/8760.)
|
||||
network.madd("Link",
|
||||
["solid biomass for industry CCS"],
|
||||
bus0="EU solid biomass",
|
||||
bus1="solid biomass for industry",
|
||||
bus2="co2 atmosphere",
|
||||
bus3="co2 stored",
|
||||
carrier="solid biomass for industry CCS",
|
||||
p_nom_extendable=True,
|
||||
capital_cost=costs.at["industry CCS","fixed"]*costs.at['solid biomass','CO2 intensity']*8760, #8760 converts EUR/(tCO2/a) to EUR/(tCO2/h)
|
||||
efficiency=0.9,
|
||||
efficiency2=-costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"],
|
||||
efficiency3=costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"])
|
||||
|
||||
|
||||
network.madd("Bus",
|
||||
["gas for industry"],
|
||||
carrier="gas for industry")
|
||||
|
||||
network.madd("Load",
|
||||
["gas for industry"],
|
||||
bus="EU gas",
|
||||
bus="gas for industry",
|
||||
carrier="gas for industry",
|
||||
p_set=industrial_demand.loc[nodes,"methane"].sum()/8760.)
|
||||
|
||||
network.madd("Load",
|
||||
["gas for industry co2 to atmosphere"],
|
||||
bus="co2 atmosphere",
|
||||
carrier="gas for industry co2 to atmosphere",
|
||||
p_set=-industrial_demand.loc[nodes,"methane"].sum()*costs.at['gas','CO2 intensity']*(1-options["ccs_fraction"])/8760.)
|
||||
network.madd("Link",
|
||||
["gas for industry"],
|
||||
bus0="EU gas",
|
||||
bus1="gas for industry",
|
||||
bus2="co2 atmosphere",
|
||||
carrier="gas for industry",
|
||||
p_nom_extendable=True,
|
||||
efficiency=1.,
|
||||
efficiency2=costs.at['gas','CO2 intensity'])
|
||||
|
||||
network.madd("Load",
|
||||
["gas for industry co2 to stored"],
|
||||
bus="co2 stored",
|
||||
carrier="gas for industry co2 to stored",
|
||||
p_set=-industrial_demand.loc[nodes,"methane"].sum()*costs.at['gas','CO2 intensity']*options["ccs_fraction"]/8760.)
|
||||
network.madd("Link",
|
||||
["gas for industry CCS"],
|
||||
bus0="EU gas",
|
||||
bus1="gas for industry",
|
||||
bus2="co2 atmosphere",
|
||||
bus3="co2 stored",
|
||||
carrier="gas for industry CCS",
|
||||
p_nom_extendable=True,
|
||||
capital_cost=costs.at["industry CCS","fixed"]*costs.at['gas','CO2 intensity']*8760, #8760 converts EUR/(tCO2/a) to EUR/(tCO2/h)
|
||||
efficiency=0.9,
|
||||
efficiency2=costs.at['gas','CO2 intensity']*(1-options["ccs_fraction"]),
|
||||
efficiency3=costs.at['gas','CO2 intensity']*options["ccs_fraction"])
|
||||
|
||||
|
||||
network.madd("Load",
|
||||
@ -1250,17 +1288,37 @@ def add_industry(network):
|
||||
carrier="industry new electricity",
|
||||
p_set = (industrial_demand.loc[nodes,"electricity"]-industrial_demand.loc[nodes,"current electricity"])/8760.)
|
||||
|
||||
network.madd("Load",
|
||||
["process emissions to atmosphere"],
|
||||
bus="co2 atmosphere",
|
||||
carrier="process emissions to atmosphere",
|
||||
p_set = -industrial_demand.loc[nodes,"process emission"].sum()*(1-options["ccs_fraction"])/8760.)
|
||||
network.madd("Bus",
|
||||
["process emissions"],
|
||||
carrier="process emissions")
|
||||
|
||||
#this should be process emissions fossil+feedstock
|
||||
#then need load on atmosphere for feedstock emissions that are currently going to atmosphere via Link Fischer-Tropsch demand
|
||||
network.madd("Load",
|
||||
["process emissions to stored"],
|
||||
bus="co2 stored",
|
||||
carrier="process emissions to stored",
|
||||
p_set = -industrial_demand.loc[nodes,"process emission"].sum()*options["ccs_fraction"]/8760.)
|
||||
["process emissions"],
|
||||
bus="process emissions",
|
||||
carrier="process emissions",
|
||||
p_set = -industrial_demand.loc[nodes,"process emission"].sum()/8760.)
|
||||
|
||||
network.madd("Link",
|
||||
["process emissions"],
|
||||
bus0="process emissions",
|
||||
bus1="co2 atmosphere",
|
||||
carrier="process emissions",
|
||||
p_nom_extendable=True,
|
||||
efficiency=1.)
|
||||
|
||||
#assume enough local waste heat for CCS
|
||||
network.madd("Link",
|
||||
["process emissions CCS"],
|
||||
bus0="process emissions",
|
||||
bus1="co2 atmosphere",
|
||||
bus2="co2 stored",
|
||||
carrier="process emissions CCS",
|
||||
p_nom_extendable=True,
|
||||
capital_cost=costs.at["industry CCS","fixed"]*8760, #8760 converts EUR/(tCO2/a) to EUR/(tCO2/h)
|
||||
efficiency=(1-options["ccs_fraction"]),
|
||||
efficiency2=options["ccs_fraction"])
|
||||
|
||||
|
||||
|
||||
|
@ -126,7 +126,7 @@ def add_battery_constraints(n):
|
||||
link_p_nom = get_var(n, "Link", "p_nom")
|
||||
|
||||
lhs = linexpr((1,link_p_nom[nodes + " charger"]),
|
||||
(-n.links.loc[nodes + " discharger", "efficiency"],
|
||||
(-n.links.loc[nodes + " discharger", "efficiency"].values,
|
||||
link_p_nom[nodes + " discharger"].values))
|
||||
define_constraints(n, lhs, "=", 0, 'Link', 'charger_ratio')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user