# 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"]
# 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) #Geoplots #DE 13 ist SH und DE20 SH-angebundes offshore Gebiet d = { 'DE01': 0.7, 'DE02': 0.5, 'DE03': 2,
# Plot 2: MCP new_df = multiple_jdl(erg_mcp) plt.figure() plt.plot(new_df) plt.title('Marginale Grenzkosten', size='large') plt.xlabel('Stunde des Jahres', size='large') plt.ylabel('Kosten in €/MWh', size='large') plt.legend(scens) ## Überschüsse in SH, Entwicklung von emissionen und Vollaststunden flh_all, cost_em_param_all, excess_all, lb_saldo_sh, lb_saldo = pd.DataFrame( ), pd.DataFrame(), pd.DataFrame(), pd.DataFrame(), pd.DataFrame() for n in scens: flh = results.fullloadhours(scens_dict.get(n), dropnan=True)['flh'] cost_em_param = results.fetch_cost_emission(scens_dict.get(n))['emission'] mrbb = results.get_multiregion_bus_balance(scens_dict.get(n)) excess = mrbb.DE13.out.excess['electricity']['all'] #excess = mrbb.DE01.out.excess['electricity']['all'] p_saldo = mrbb.groupby(level=[0, 2], axis=1).sum() lb_saldo_sh[ n] = p_saldo.DE13.trsf + p_saldo.DE13.source - p_saldo.DE13.demand #lb_saldo[n] = p_saldo.DE01.trsf + p_saldo.DE01.source - p_saldo.DE01.demand flh_all[n] = flh cost_em_param_all[n] = cost_em_param excess_all[n] = excess exc_tmp = excess.sort_values(ascending=False) # Plot 3: Leistungsbilanzsaldo plt_df = multiple_jdl(lb_saldo_sh)
'/home/dbeier/reegis/scenarios/deflex/2014/results_cbc/deflex_2014_de21.esys' ) de02_2014 = results.load_es( '/home/dbeier/reegis/scenarios/deflex/2014/results_cbc/deflex_2014_de02.esys' ) #de17_2014 = results.load_es('/home/dbeier/reegis/scenarios/deflex/2014/results_cbc/deflex_2014_de17.esys') #de02_2013 = results.load_es('/home/dbeier/reegis/scenarios/deflex/2013/results_cbc/deflex_2013_de02.esys') results_obj = de21_2014.results['main'] # Results # 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
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