# Rechne NEP 1-Knoten-Szenario #main.model_scenario('/home/dbeier/reegis/scenarios/deflex/2014/deflex_2014_de02_NEP.xls', name="NEP2030", rmap="de02", year=2014) main.model_scenario('/home/dbeier/reegis/scenarios/deflex/2014/deflex_2014_de02.xls') #main.model_scenario('/home/dbeier/reegis/scenarios/deflex/2014/deflex_2014_de21_no-heat_no-reg-merit.xls') #scenario_tools.DeflexScenario() path= '/home/dbeier/reegis/scenarios/deflex/2014/results_cbc/NEP2030.esys' de02_NEP = results.load_es(path) results_obj = de02_NEP.results['main'] # Auswertung cost_em = upstream_analysis.get_emissions_and_costs(de02_NEP,with_chp=True) vlh = results.fullloadhours(de02_NEP) mrbb = results.get_multiregion_bus_balance(de02_NEP) # Extrahiere relevante Größen demand = mrbb.DE01['out']['demand']['electricity']['all'] transformer = mrbb.DE01['in']['trsf'] ee_single = mrbb.DE01['in']['source']['ee'] ee_single["bioenergy"] = transformer["pp"]["bioenergy"] + transformer["chp"]["bioenergy"] ee_single["offshore"] = mrbb.DE02['in']['source']['ee']['wind'] residual_load = demand - ee_single.sum(axis=1) excess = mrbb.DE01['out']['excess']+mrbb.DE02['out']['excess'] shortage = mrbb.DE01['in']['shortage'] fossil = pd.DataFrame() fossil_em=pd.DataFrame() fossil["hard_coal"]=transformer["chp"]["hard_coal"]+transformer["pp"]["hard_coal"] fossil["lignite"]=transformer["chp"]["lignite"]+transformer["pp"]["lignite"]
# multi_reg_res[('out', 'losses')] = (multi_reg_res[('out', 'export')] - # multi_reg_res[('in', 'import')]) # del multi_reg_res[('out', 'export')] # del multi_reg_res[('in', 'import')] # # oev.plot.io_plot(df_in=multi_reg_res['in'], # df_out=multi_reg_res['out'], # smooth=True) # plt.show() # Deckung der Last mit "run" my_reegis.reegis_plot.plot_multiregion_io(sc_calc) plt.show() # Mittlere Emissionen mrbb = results.get_multiregion_bus_balance(sc_calc).groupby(level=[0, 3], axis=1).sum() EE = mrbb.DE01['ee'] + mrbb.DE02['ee'] share_ee = EE / mrbb.DE01['electricity'] em_mean = (1 - share_ee) * cost_em.emission # Vollaststunden der Technologien ausgeben lassen flh = results.fullloadhours(sc_calc) # Emissionen nach Energeiträgern aufgelöst results.emissions(sc_calc) # Plot all buses reegis_plot.plot_bus_view(es=sc_calc) # Für Konsole #reegis_plot.plot_bus_view2(es=sc_calc)
scens = [x for x in scens_dict.keys()] # Jahresdauerlinie der Strompreise / Emissionen im Vergleich erg_em, erg_mcp, em_total, new_df, em_mean = pd.DataFrame(), pd.DataFrame( ), pd.DataFrame(), pd.DataFrame(), pd.DataFrame() for n in scens: cost_em = upstream_analysis.get_emissions_and_costs(scens_dict.get(n), with_chp=True) #tmp_em, tmp_mcp= cost_em.emission.sort_values(ascending=False), cost_em.mcp.sort_values(ascending=False) erg_em[n] = cost_em.emission erg_mcp[n] = cost_em.mcp em_total[n] = cost_em.emission_absolute mrbb = results.get_multiregion_bus_balance(scens_dict.get(n)).groupby( level=[0, 3], axis=1).sum() EE = mrbb.DE01['ee'] + mrbb.DE02['ee'] share_ee = EE / mrbb.DE01['electricity'] tmp = (1 - share_ee) * cost_em.emission em_mean[n] = tmp #plt.plot(np.arange(8760),tmp_em) #plt.plot(np.arange(8760),tmp_mcp) # Plot 0: Mittlere Emissionen plt_df = multiple_jdl(em_mean) plt.figure() plt.plot(plt_df) plt.title('Mittlere Emissionen Strommix', size='large') plt.xlabel('Stunde des Jahres', size='large') plt.ylabel('Emissionen in g/kWh', size='large') plt.legend(scens)
# Kosten und Emissionen des Gesamtsystems cost_em = upstream_analysis.get_emissions_and_costs(de02_2014, with_chp=True) # Vollaststunden je Erzeugungseinheit vlh = results.fullloadhours(de02_2014) # Index des DataFrame auslesen index = vlh.index # Überprüfe alle indexlevel auf den Bestandteil DE13 = SH sh = [x for x in index if 'DE13' in x[0:4]] # Filtere DataFrame mit erstelltem Index sh_data = vlh.loc[sh] # Zeitreihen # Filter:In- und Exporte nach source/storage/shortage etc. multi_reg_res = results.get_multiregion_bus_balance(de02_2014).groupby( level=[1, 2], axis=1).sum() # Vollständige Multiindex DF # Level 0 = Regionen # Level 1 = in / out flow # Level 2 = Flüsse sortiert nach oemof Klassen # Level 3 = chp / ee / electricity / pp # Level 4 = Energieträger (bio/geo/coal/hydro/solar/wind etc.) mrr0 = results.get_multiregion_bus_balance(de02_2014) test = mrr0['DE01'] # Zeigt level 2: oemof objects mrr1 = results.get_multiregion_bus_balance(de21_2014).groupby(level=[0, 4], axis=1).sum()
def prepare_deflex_for_comparison(path_to_results): # Load energy system from results de_dispatch = results.load_es(path_to_results) results_obj = de_dispatch.results['main'] # Auswertung cost_em = upstream_analysis.get_emissions_and_costs(de_dispatch, with_chp=True) vlh = results.fullloadhours(de_dispatch) mrbb = results.get_multiregion_bus_balance(de_dispatch) # Extrahiere relevante Größen demand = mrbb.DE01['out']['demand']['electricity']['all'] transformer = mrbb.DE01['in']['trsf'] generation = pd.DataFrame(index=transformer.index) ee_single = mrbb.DE01['in']['source']['ee'] generation["Biomass"] = transformer["pp"]["bioenergy"] + transformer[ "chp"]["bioenergy"] generation[ "Wind"] = ee_single["wind"] + mrbb.DE02['in']['source']['ee']['wind'] generation["Hydro"] = ee_single["hydro"] generation["PV"] = ee_single["solar"] generation["Nuclear"] = transformer["pp"]["nuclear"] #generation["Nuclear"] = mrbb.DE01['in']['source']['ee']['geothermal'] generation["Hard Coal"] = transformer["chp"]["hard_coal"] + transformer[ "pp"]["hard_coal"] generation["Lignite"] = transformer["chp"]["lignite"] + transformer["pp"][ "lignite"] generation["Natural Gas"] = transformer["chp"][ "natural_gas"] + transformer["pp"]["natural_gas"] generation["Others"]=transformer["chp"]["other"]+transformer["pp"]["other"] + transformer["chp"]["oil"] + \ transformer["pp"]["oil"] + mrbb.DE01['in']['source']['ee']['geothermal'] generation["Pump"] = mrbb.DE01["out"]["storage"] # Emissionszeitreihe em_per_technology = results.fetch_cost_emission(de_dispatch, with_chp=True) em_mix = pd.DataFrame() em_mix[ "hardcoal_chp"] = transformer["chp"]["hard_coal"] * em_per_technology[ "emission"]["hard_coal"]["DE01"]["chp"] em_mix["hardcoal_pp"] = transformer["pp"]["hard_coal"] * em_per_technology[ "emission"]["hard_coal"]["DE01"]["pp"] em_mix["lignite_chp"] = transformer["chp"]["lignite"] * em_per_technology[ "emission"]["lignite"]["DE01"]["chp"] em_mix["lignite_pp"] = transformer["pp"]["lignite"] * em_per_technology[ "emission"]["lignite"]["DE01"]["pp"] em_mix["natural_gas_chp"] = transformer["chp"]["natural_gas"] * \ em_per_technology["emission"]["natural_gas"]["DE01"]["chp"] em_mix["natural_gas_pp"] = transformer["pp"][ "natural_gas"] * em_per_technology["emission"]["natural_gas"]["DE01"][ "pp"] em_mix["oil_chp"] = transformer["chp"]["oil"] * em_per_technology[ "emission"]["oil"]["DE01"]["chp"] em_mix["oil_pp"] = transformer["pp"]["oil"] * em_per_technology[ "emission"]["oil"]["DE01"]["pp"] em_mix["other_chp"] = transformer["chp"]["other"] * em_per_technology[ "emission"]["other"]["DE01"]["chp"] em_mix["other_pp"] = transformer["pp"]["other"] * em_per_technology[ "emission"]["other"]["DE01"]["pp"] em_factor_deflex = em_mix.sum(axis=1) / demand p_spot_deflex = cost_em["mcp"] return generation, p_spot_deflex, em_factor_deflex