diff --git a/config.yaml b/config.yaml index 59fa084b..74e7c3c6 100644 --- a/config.yaml +++ b/config.yaml @@ -2,7 +2,7 @@ logging_level: INFO results_dir: 'results/' summary_dir: results -run: '190512-underground_h2' +run: '190513-h2_waste_heat' scenario: sectors: [E] # ,E+EV,E+BEV,E+BEV+V2G] # [ E+EV, E+BEV, E+BEV+V2G ] @@ -86,7 +86,8 @@ sector: 'SMR' : True 'ccs_fraction' : 0.9 'hydrogen_underground_storage' : True - + 'use_fischer_tropsch_waste_heat' : True + 'use_fuel_cell_waste_heat' : True costs: year: 2030 diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index a0186c45..a5417270 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -533,7 +533,6 @@ def add_storage(network): else: h2_capital_cost = costs.at["hydrogen storage","fixed"] - network.madd("Store", ["EU H2 Store"], bus="EU H2", @@ -1253,6 +1252,21 @@ def add_industry(network): bus="co2 stored", p_set = -industrial_demand.loc[nodes,"process emissions"].sum()*options["ccs_fraction"]/8760.) +def add_waste_heat(network): + + print("adding possibility to use industrial waste heat in district heating") + + #AC buses with district heating + central_buses = n.buses.index[n.buses.index.str.contains("central CHP")].str[:-12] + + if options['use_fischer_tropsch_waste_heat']: + n.links.loc[central_buses + " Fischer-Tropsch","bus3"] = central_buses + " urban heat" + n.links.loc[central_buses + " Fischer-Tropsch","efficiency3"] = 0.95 - n.links.loc[central_buses + " Fischer-Tropsch","efficiency"] + + if options['use_fuel_cell_waste_heat']: + n.links.loc[central_buses + " H2 Fuel Cell","bus2"] = central_buses + " urban heat" + n.links.loc[central_buses + " H2 Fuel Cell","efficiency2"] = 0.95 - n.links.loc[central_buses + " H2 Fuel Cell","efficiency"] + def restrict_technology_potential(n,tech,limit): print("restricting potentials (p_nom_max) for {} to {} of technical potential".format(tech,limit)) @@ -1318,6 +1332,9 @@ if __name__ == "__main__": if "I" in opts: add_industry(n) + if "I" in opts and "H" in opts: + add_waste_heat(n) + for o in opts: m = re.match(r'^\d+h$', o, re.IGNORECASE) if m is not None: