commit
104a9d6d66
@ -139,7 +139,9 @@ sector:
|
|||||||
'dac' : True
|
'dac' : True
|
||||||
'co2_vent' : True
|
'co2_vent' : True
|
||||||
'SMR' : True
|
'SMR' : True
|
||||||
'ccs_fraction' : 0.9
|
'co2_sequestration_potential' : 200 #MtCO2/a sequestration potential for Europe
|
||||||
|
'co2_sequestration_cost' : 20 #EUR/tCO2 for transport and sequestration of CO2
|
||||||
|
'cc_fraction' : 0.9 # default fraction of CO2 captured with post-combustion capture
|
||||||
'hydrogen_underground_storage' : True
|
'hydrogen_underground_storage' : True
|
||||||
'use_fischer_tropsch_waste_heat' : True
|
'use_fischer_tropsch_waste_heat' : True
|
||||||
'use_fuel_cell_waste_heat' : True
|
'use_fuel_cell_waste_heat' : True
|
||||||
@ -314,7 +316,7 @@ plotting:
|
|||||||
"DAC" : "#E74C3C"
|
"DAC" : "#E74C3C"
|
||||||
"co2 stored" : "#123456"
|
"co2 stored" : "#123456"
|
||||||
"CO2 sequestration" : "#123456"
|
"CO2 sequestration" : "#123456"
|
||||||
"CCS" : "k"
|
"CC" : "k"
|
||||||
"co2" : "#123456"
|
"co2" : "#123456"
|
||||||
"co2 vent" : "#654321"
|
"co2 vent" : "#654321"
|
||||||
"solid biomass for industry co2 from atmosphere" : "#654321"
|
"solid biomass for industry co2 from atmosphere" : "#654321"
|
||||||
|
@ -22,7 +22,7 @@ def rename_techs(label):
|
|||||||
"retrofitting" : "building retrofitting",
|
"retrofitting" : "building retrofitting",
|
||||||
"H2" : "hydrogen storage",
|
"H2" : "hydrogen storage",
|
||||||
"battery" : "battery storage",
|
"battery" : "battery storage",
|
||||||
"CCS" : "CCS"}
|
"CC" : "CC"}
|
||||||
|
|
||||||
rename = {"solar" : "solar PV",
|
rename = {"solar" : "solar PV",
|
||||||
"Sabatier" : "methanation",
|
"Sabatier" : "methanation",
|
||||||
|
@ -193,12 +193,10 @@ def add_co2_tracking(n):
|
|||||||
location="EU",
|
location="EU",
|
||||||
carrier="co2 stored")
|
carrier="co2 stored")
|
||||||
|
|
||||||
#TODO move cost to data/costs.csv
|
|
||||||
#TODO move maximum somewhere more transparent
|
|
||||||
n.madd("Store",["co2 stored"],
|
n.madd("Store",["co2 stored"],
|
||||||
e_nom_extendable = True,
|
e_nom_extendable=True,
|
||||||
e_nom_max=2e8,
|
e_nom_max=options['co2_sequestration_potential']*1e6,
|
||||||
capital_cost=20.,
|
capital_cost=options['co2_sequestration_cost'],
|
||||||
carrier="co2 stored",
|
carrier="co2 stored",
|
||||||
bus="co2 stored")
|
bus="co2 stored")
|
||||||
|
|
||||||
@ -210,17 +208,26 @@ def add_co2_tracking(n):
|
|||||||
efficiency=1.,
|
efficiency=1.,
|
||||||
p_nom_extendable=True)
|
p_nom_extendable=True)
|
||||||
|
|
||||||
if options['dac']:
|
def add_dac(n):
|
||||||
#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
|
heat_buses = n.buses.index[n.buses.carrier.isin(["urban central heat",
|
||||||
n.madd("Link",["DAC"],
|
"services urban decentral heat"])]
|
||||||
bus0="co2 atmosphere",
|
locations = n.buses.location[heat_buses]
|
||||||
bus1="co2 stored",
|
|
||||||
carrier="DAC",
|
n.madd("Link",
|
||||||
marginal_cost=75.,
|
locations,
|
||||||
efficiency=1.,
|
suffix=" DAC",
|
||||||
p_nom_extendable=True,
|
bus0="co2 atmosphere",
|
||||||
lifetime=costs.at['DAC','lifetime'])
|
bus1="co2 stored",
|
||||||
|
bus2=locations.values,
|
||||||
|
bus3=heat_buses,
|
||||||
|
carrier="DAC",
|
||||||
|
capital_cost=costs.at['direct air capture','fixed'],
|
||||||
|
efficiency=1.,
|
||||||
|
efficiency2=-(costs.at['direct air capture','electricity-input'] + costs.at['direct air capture','compression-electricity-input']),
|
||||||
|
efficiency3=-(costs.at['direct air capture','heat-input'] - costs.at['direct air capture','compression-heat-output']),
|
||||||
|
p_nom_extendable=True,
|
||||||
|
lifetime=costs.at['direct air capture','lifetime'])
|
||||||
|
|
||||||
|
|
||||||
def add_co2limit(n, Nyears=1.,limit=0.):
|
def add_co2limit(n, Nyears=1.,limit=0.):
|
||||||
@ -938,18 +945,18 @@ def add_storage(network):
|
|||||||
|
|
||||||
if options['SMR']:
|
if options['SMR']:
|
||||||
network.madd("Link",
|
network.madd("Link",
|
||||||
nodes + " SMR CCS",
|
nodes + " SMR CC",
|
||||||
bus0=["EU gas"]*len(nodes),
|
bus0=["EU gas"]*len(nodes),
|
||||||
bus1=nodes+" H2",
|
bus1=nodes+" H2",
|
||||||
bus2="co2 atmosphere",
|
bus2="co2 atmosphere",
|
||||||
bus3="co2 stored",
|
bus3="co2 stored",
|
||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
carrier="SMR CCS",
|
carrier="SMR CC",
|
||||||
efficiency=costs.at["SMR CCS","efficiency"],
|
efficiency=costs.at["SMR CC","efficiency"],
|
||||||
efficiency2=costs.at['gas','CO2 intensity']*(1-options["ccs_fraction"]),
|
efficiency2=costs.at['gas','CO2 intensity']*(1-options["cc_fraction"]),
|
||||||
efficiency3=costs.at['gas','CO2 intensity']*options["ccs_fraction"],
|
efficiency3=costs.at['gas','CO2 intensity']*options["cc_fraction"],
|
||||||
capital_cost=costs.at["SMR CCS","fixed"],
|
capital_cost=costs.at["SMR CC","fixed"],
|
||||||
lifetime=costs.at['SMR CCS','lifetime'])
|
lifetime=costs.at['SMR CC','lifetime'])
|
||||||
|
|
||||||
network.madd("Link",
|
network.madd("Link",
|
||||||
nodes + " SMR",
|
nodes + " SMR",
|
||||||
@ -1243,21 +1250,21 @@ def add_heat(network):
|
|||||||
lifetime=costs.at['central gas CHP','lifetime'])
|
lifetime=costs.at['central gas CHP','lifetime'])
|
||||||
|
|
||||||
network.madd("Link",
|
network.madd("Link",
|
||||||
nodes[name] + " urban central gas CHP CCS",
|
nodes[name] + " urban central gas CHP CC",
|
||||||
bus0="EU gas",
|
bus0="EU gas",
|
||||||
bus1=nodes[name],
|
bus1=nodes[name],
|
||||||
bus2=nodes[name] + " urban central heat",
|
bus2=nodes[name] + " urban central heat",
|
||||||
bus3="co2 atmosphere",
|
bus3="co2 atmosphere",
|
||||||
bus4="co2 stored",
|
bus4="co2 stored",
|
||||||
carrier="urban central gas CHP CCS",
|
carrier="urban central gas CHP CC",
|
||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
capital_cost=costs.at['central gas CHP CCS','fixed']*costs.at['central gas CHP CCS','efficiency'],
|
capital_cost=costs.at['central gas CHP','fixed']*costs.at['central gas CHP','efficiency'] + costs.at['biomass CHP capture','fixed']*costs.at['gas','CO2 intensity'],
|
||||||
marginal_cost=costs.at['central gas CHP CCS','VOM'],
|
marginal_cost=costs.at['central gas CHP','VOM'],
|
||||||
efficiency=costs.at['central gas CHP CCS','efficiency'],
|
efficiency=costs.at['central gas CHP','efficiency'] - costs.at['gas','CO2 intensity']*(costs.at['biomass CHP capture','electricity-input'] + costs.at['biomass CHP capture','compression-electricity-input']),
|
||||||
efficiency2=costs.at['central gas CHP CCS','efficiency']/costs.at['central gas CHP CCS','c_b'],
|
efficiency2=costs.at['central gas CHP','efficiency']/costs.at['central gas CHP','c_b'] + costs.at['gas','CO2 intensity']*(costs.at['biomass CHP capture','heat-output'] + costs.at['biomass CHP capture','compression-heat-output'] - costs.at['biomass CHP capture','heat-output']),
|
||||||
efficiency3=costs.at['gas','CO2 intensity']*(1-options["ccs_fraction"]),
|
efficiency3=costs.at['gas','CO2 intensity']*(1-costs.at['biomass CHP capture','capture_rate']),
|
||||||
efficiency4=costs.at['gas','CO2 intensity']*options["ccs_fraction"],
|
efficiency4=costs.at['gas','CO2 intensity']*costs.at['biomass CHP capture','capture_rate'],
|
||||||
lifetime=costs.at['central gas CHP CCS','lifetime'])
|
lifetime=costs.at['central gas CHP','lifetime'])
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if options["micro_chp"]:
|
if options["micro_chp"]:
|
||||||
@ -1462,21 +1469,21 @@ def add_biomass(network):
|
|||||||
lifetime=costs.at['central solid biomass CHP','lifetime'])
|
lifetime=costs.at['central solid biomass CHP','lifetime'])
|
||||||
|
|
||||||
network.madd("Link",
|
network.madd("Link",
|
||||||
urban_central + " urban central solid biomass CHP CCS",
|
urban_central + " urban central solid biomass CHP CC",
|
||||||
bus0="EU solid biomass",
|
bus0="EU solid biomass",
|
||||||
bus1=urban_central,
|
bus1=urban_central,
|
||||||
bus2=urban_central + " urban central heat",
|
bus2=urban_central + " urban central heat",
|
||||||
bus3="co2 atmosphere",
|
bus3="co2 atmosphere",
|
||||||
bus4="co2 stored",
|
bus4="co2 stored",
|
||||||
carrier="urban central solid biomass CHP CCS",
|
carrier="urban central solid biomass CHP CC",
|
||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
capital_cost=costs.at['central solid biomass CHP CCS','fixed']*costs.at['central solid biomass CHP CCS','efficiency'],
|
capital_cost=costs.at['central solid biomass CHP','fixed']*costs.at['central solid biomass CHP','efficiency'] + costs.at['biomass CHP capture','fixed']*costs.at['solid biomass','CO2 intensity'],
|
||||||
marginal_cost=costs.at['central solid biomass CHP CCS','VOM'],
|
marginal_cost=costs.at['central solid biomass CHP','VOM'],
|
||||||
efficiency=costs.at['central solid biomass CHP CCS','efficiency'],
|
efficiency=costs.at['central solid biomass CHP','efficiency'] - costs.at['solid biomass','CO2 intensity']*(costs.at['biomass CHP capture','electricity-input'] + costs.at['biomass CHP capture','compression-electricity-input']),
|
||||||
efficiency2=costs.at['central solid biomass CHP CCS','efficiency-heat'],
|
efficiency2=costs.at['central solid biomass CHP','efficiency-heat'] + costs.at['solid biomass','CO2 intensity']*(costs.at['biomass CHP capture','heat-output'] + costs.at['biomass CHP capture','compression-heat-output'] - costs.at['biomass CHP capture','heat-output']),
|
||||||
efficiency3=-costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"],
|
efficiency3=-costs.at['solid biomass','CO2 intensity']*costs.at['biomass CHP capture','capture_rate'],
|
||||||
efficiency4=costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"],
|
efficiency4=costs.at['solid biomass','CO2 intensity']*costs.at['biomass CHP capture','capture_rate'],
|
||||||
lifetime=costs.at['central solid biomass CHP CCS','lifetime'])
|
lifetime=costs.at['central solid biomass CHP','lifetime'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1513,18 +1520,18 @@ def add_industry(network):
|
|||||||
efficiency=1.)
|
efficiency=1.)
|
||||||
|
|
||||||
network.madd("Link",
|
network.madd("Link",
|
||||||
["solid biomass for industry CCS"],
|
["solid biomass for industry CC"],
|
||||||
bus0="EU solid biomass",
|
bus0="EU solid biomass",
|
||||||
bus1="solid biomass for industry",
|
bus1="solid biomass for industry",
|
||||||
bus2="co2 atmosphere",
|
bus2="co2 atmosphere",
|
||||||
bus3="co2 stored",
|
bus3="co2 stored",
|
||||||
carrier="solid biomass for industry CCS",
|
carrier="solid biomass for industry CC",
|
||||||
p_nom_extendable=True,
|
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)
|
capital_cost=costs.at["cement capture","fixed"]*costs.at['solid biomass','CO2 intensity'],
|
||||||
efficiency=0.9,
|
efficiency=0.9,
|
||||||
efficiency2=-costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"],
|
efficiency2=-costs.at['solid biomass','CO2 intensity']*costs.at["cement capture","capture_rate"],
|
||||||
efficiency3=costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"],
|
efficiency3=costs.at['solid biomass','CO2 intensity']*costs.at["cement capture","capture_rate"],
|
||||||
lifetime=costs.at['industry CCS','lifetime'])
|
lifetime=costs.at['cement capture','lifetime'])
|
||||||
|
|
||||||
|
|
||||||
network.madd("Bus",
|
network.madd("Bus",
|
||||||
@ -1549,18 +1556,18 @@ def add_industry(network):
|
|||||||
efficiency2=costs.at['gas','CO2 intensity'])
|
efficiency2=costs.at['gas','CO2 intensity'])
|
||||||
|
|
||||||
network.madd("Link",
|
network.madd("Link",
|
||||||
["gas for industry CCS"],
|
["gas for industry CC"],
|
||||||
bus0="EU gas",
|
bus0="EU gas",
|
||||||
bus1="gas for industry",
|
bus1="gas for industry",
|
||||||
bus2="co2 atmosphere",
|
bus2="co2 atmosphere",
|
||||||
bus3="co2 stored",
|
bus3="co2 stored",
|
||||||
carrier="gas for industry CCS",
|
carrier="gas for industry CC",
|
||||||
p_nom_extendable=True,
|
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)
|
capital_cost=costs.at["cement capture","fixed"]*costs.at['gas','CO2 intensity'],
|
||||||
efficiency=0.9,
|
efficiency=0.9,
|
||||||
efficiency2=costs.at['gas','CO2 intensity']*(1-options["ccs_fraction"]),
|
efficiency2=costs.at['gas','CO2 intensity']*(1-costs.at["cement capture","capture_rate"]),
|
||||||
efficiency3=costs.at['gas','CO2 intensity']*options["ccs_fraction"],
|
efficiency3=costs.at['gas','CO2 intensity']**costs.at["cement capture","capture_rate"],
|
||||||
lifetime=costs.at['industry CCS','lifetime'])
|
lifetime=costs.at['cement capture','lifetime'])
|
||||||
|
|
||||||
|
|
||||||
network.madd("Load",
|
network.madd("Load",
|
||||||
@ -1694,18 +1701,18 @@ def add_industry(network):
|
|||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
efficiency=1.)
|
efficiency=1.)
|
||||||
|
|
||||||
#assume enough local waste heat for CCS
|
#assume enough local waste heat for CC
|
||||||
network.madd("Link",
|
network.madd("Link",
|
||||||
["process emissions CCS"],
|
["process emissions CC"],
|
||||||
bus0="process emissions",
|
bus0="process emissions",
|
||||||
bus1="co2 atmosphere",
|
bus1="co2 atmosphere",
|
||||||
bus2="co2 stored",
|
bus2="co2 stored",
|
||||||
carrier="process emissions CCS",
|
carrier="process emissions CC",
|
||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
capital_cost=costs.at["industry CCS","fixed"]*8760, #8760 converts EUR/(tCO2/a) to EUR/(tCO2/h)
|
capital_cost=costs.at["cement capture","fixed"],
|
||||||
efficiency=(1-options["ccs_fraction"]),
|
efficiency=(1-costs.at["cement capture","capture_rate"]),
|
||||||
efficiency2=options["ccs_fraction"],
|
efficiency2=costs.at["cement capture","capture_rate"],
|
||||||
lifetime=costs.at['industry CCS','lifetime'])
|
lifetime=costs.at['cement capture','lifetime'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1898,6 +1905,9 @@ if __name__ == "__main__":
|
|||||||
if "I" in opts and "H" in opts:
|
if "I" in opts and "H" in opts:
|
||||||
add_waste_heat(n)
|
add_waste_heat(n)
|
||||||
|
|
||||||
|
if options['dac']:
|
||||||
|
add_dac(n)
|
||||||
|
|
||||||
if "decentral" in opts:
|
if "decentral" in opts:
|
||||||
decentral(n)
|
decentral(n)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user