|
100 | 100 | 'hydrogen storage underground': '151c Hydrogen Storage - Caverns',
|
101 | 101 | 'hydrogen storage tank type 1 including compressor': '151a Hydrogen Storage - Tanks',
|
102 | 102 | 'micro CHP': '219 LT-PEMFC mCHP - natural gas',
|
103 |
| - 'biogas' : '81 Biogas Plant, Basic conf.', |
104 |
| - 'biogas CC' : '81 Biogas Plant, Basic conf.', |
105 |
| - 'biogas upgrading': '82 Biogas, upgrading', |
| 103 | + 'biogas' : '81 Biogas, Basic plant, small', |
| 104 | + 'biogas CC' : '81 Biogas, Basic plant, small', |
| 105 | + 'biogas upgrading': '82 Upgrading 3,000 Nm3 per h', |
106 | 106 | 'battery': '180 Lithium Ion Battery',
|
107 | 107 | 'industrial heat pump medium temperature': '302.a High temp. hp Up to 125 C',
|
108 | 108 | 'industrial heat pump high temperature': '302.b High temp. hp Up to 150',
|
|
111 | 111 | 'solid biomass boiler steam': '311.1e Steam boiler Wood',
|
112 | 112 | 'solid biomass boiler steam CC': '311.1e Steam boiler Wood',
|
113 | 113 | 'biomass boiler': '204 Biomass boiler, automatic',
|
114 |
| - 'electrolysis': '86 AEC 100MW', #'88 Alkaline Electrolyser', |
| 114 | + 'electrolysis': '86 AEC 100 MW', |
115 | 115 | 'direct air capture': '403.a Direct air capture',
|
116 | 116 | 'biomass CHP capture': '401.a Post comb - small CHP',
|
117 | 117 | 'cement capture': '401.c Post comb - Cement kiln',
|
118 | 118 | 'BioSNG': '84 Gasif. CFB, Bio-SNG',
|
119 | 119 | 'BtL': '85 Gasif. Ent. Flow FT, liq fu ',
|
120 | 120 | 'biomass-to-methanol': '97 Methanol from biomass gasif.',
|
121 | 121 | 'biogas plus hydrogen': '99 SNG from methan. of biogas',
|
122 |
| - 'methanolisation': '98 Methanol from power', |
| 122 | + 'methanolisation': '98 Methanol from hydrogen', |
123 | 123 | 'Fischer-Tropsch': '102 Hydrogen to Jet',
|
124 | 124 | 'central hydrogen CHP': '12 LT-PEMFC CHP',
|
125 | 125 | 'Haber-Bosch': '103 Hydrogen to Ammonia',
|
@@ -269,7 +269,7 @@ def get_data_DEA(tech, data_in, expectation=None):
|
269 | 269 | usecols += f",{uncrtnty_lookup[tech]}"
|
270 | 270 |
|
271 | 271 |
|
272 |
| - if (tech in new_format) and (tech!="electrolysis"): |
| 272 | + if (tech in new_format) or ("renewable_fuels" in excel_file): |
273 | 273 | skiprows = [0]
|
274 | 274 | else:
|
275 | 275 | skiprows = [0,1]
|
@@ -404,30 +404,26 @@ def get_data_DEA(tech, data_in, expectation=None):
|
404 | 404 | df.drop(df.loc[df.index.str.contains("Variable O&M (EUR /t Ammonia)", regex=False)].index, inplace=True)
|
405 | 405 |
|
406 | 406 | if tech == "air separation unit":
|
407 |
| - # Bugfix: DEA renewable fuels 04/2022 has wrong unit (MEUR instead of kEUR) |
408 |
| - df.index = df.index.str.replace("Fixed O&M (MEUR /TPD Ammonia)", "Fixed O&M (kEUR /TPD Ammonia)", regex=False) |
409 |
| - |
| 407 | + |
410 | 408 | # Calculate ASU cost separate to HB facility in terms of t N2 output
|
| 409 | + # To add the cost of an ASU a multiplication factor of 1.06-1.09 |
| 410 | + # should be applied to the total Specific Investment |
411 | 411 | df.loc[[
|
412 |
| - "Specific investment (MEUR /TPD Ammonia output)", |
413 |
| - "Fixed O&M (kEUR /TPD Ammonia)", |
414 |
| - "Variable O&M (EUR /t Ammonia)" |
415 |
| - ]] *= (df.loc["Specific investment mark-up factor optional ASU"] - 1.) / excel.loc["N2 Consumption, t/t Ammonia"] |
416 |
| - # Convert output to hourly generation |
417 |
| - df.loc[[ |
418 |
| - "Specific investment (MEUR /TPD Ammonia output)", |
419 |
| - "Fixed O&M (kEUR /TPD Ammonia)", |
420 |
| - ]] *= 24 |
421 |
| - |
| 412 | + "Specific investment [MEUR /MW Ammonia output]", |
| 413 | + "Fixed O&M [kEUR/MW Ammonia/year]", |
| 414 | + "Variable O&M [EUR/MWh Ammonia]" |
| 415 | + ]] *= df.loc["Specific investment mark-up factor optional ASU"] |
| 416 | + # / excel.loc["N2 Consumption, [t/t] Ammonia"] |
| 417 | + |
422 | 418 | # Rename costs for correct units
|
423 |
| - df.index = df.index.str.replace("MEUR /TPD Ammonia output", "MEUR/t_N2/h") |
424 |
| - df.index = df.index.str.replace("kEUR /TPD Ammonia", "kEUR/t_N2/h/year") |
425 |
| - df.index = df.index.str.replace("EUR /t Ammonia", "EUR/t_N2") |
| 419 | + # df.index = df.index.str.replace("MEUR /MW Ammonia output", "MEUR/MW_N2/h") |
| 420 | + # df.index = df.index.str.replace("kEUR/MW Ammonia/year", "kEUR/MW_N2/h/year") |
| 421 | + # df.index = df.index.str.replace("EUR/MWh Ammonia", "EUR/MWh_N2") |
426 | 422 |
|
427 | 423 | df.drop(df.loc[df.index.str.contains("Specific investment mark-up factor optional ASU")].index, inplace=True)
|
428 |
| - df.drop(df.loc[df.index.str.contains("Specific investment (MEUR /MW Ammonia output)", regex=False)].index, inplace=True) |
429 |
| - df.drop(df.loc[df.index.str.contains("Fixed O&M (kEUR/MW Ammonia/year)", regex=False)].index, inplace=True) |
430 |
| - df.drop(df.loc[df.index.str.contains("Variable O&M (EUR/MWh Ammonia)", regex=False)].index, inplace=True) |
| 424 | + # df.drop(df.loc[df.index.str.contains("Specific investment [MEUR /MW Ammonia output]", regex=False)].index, inplace=True) |
| 425 | + # df.drop(df.loc[df.index.str.contains("Fixed O&M [kEUR/MW Ammonia/year]", regex=False)].index, inplace=True) |
| 426 | + # df.drop(df.loc[df.index.str.contains("Variable O&M [EUR/MWh Ammonia]", regex=False)].index, inplace=True) |
431 | 427 |
|
432 | 428 | if "solid biomass power" in tech:
|
433 | 429 | df.index = df.index.str.replace("EUR/MWeh", "EUR/MWh")
|
@@ -913,7 +909,7 @@ def order_data(tech_data):
|
913 | 909 | """
|
914 | 910 |
|
915 | 911 | clean_df = {}
|
916 |
| - for tech in tech_data.index.levels[0]: |
| 912 | + for tech in tech_data.index.get_level_values(0).unique(): |
917 | 913 | clean_df[tech] = pd.DataFrame()
|
918 | 914 | switch = False
|
919 | 915 | df = tech_data.loc[tech]
|
@@ -1123,6 +1119,7 @@ def add_description(data):
|
1123 | 1119 | # add excel sheet names to data frame
|
1124 | 1120 | wished_order = list(years) + ["unit", "source", "further description"]
|
1125 | 1121 | data = data.reindex(columns=wished_order)
|
| 1122 | + data.index.set_names(["technology", "parameter"], inplace=True) |
1126 | 1123 | sheets = data.reset_index()["technology"].map(sheet_names).fillna("")
|
1127 | 1124 | sheets.index = data.index
|
1128 | 1125 | data["further description"] = sheets + ": " + data["further description"]
|
@@ -1280,6 +1277,7 @@ def add_manual_input(data):
|
1280 | 1277 | l.append(s)
|
1281 | 1278 |
|
1282 | 1279 | new_df = pd.DataFrame(l).set_index(['technology','parameter'])
|
| 1280 | + data.index.set_names(["technology", "parameter"], inplace=True) |
1283 | 1281 | # overwrite DEA data with manual input
|
1284 | 1282 | data = new_df.combine_first(data)
|
1285 | 1283 |
|
|
0 commit comments