fixed cost calculation for EGS
This commit is contained in:
parent
c1f44ea86f
commit
4569af2647
@ -3334,13 +3334,24 @@ def add_enhanced_geothermal(
|
|||||||
|
|
||||||
egs_annuity = calculate_annuity(lt, dr)
|
egs_annuity = calculate_annuity(lt, dr)
|
||||||
|
|
||||||
|
# under egs optimism, the expected cost reductions also cover costs for ORC
|
||||||
|
# hence, the ORC costs are no longer taken from technology-data
|
||||||
|
orc_capex = (
|
||||||
|
costs.at["organic rankine cycle", "investment"]
|
||||||
|
if not snakemake.params.sector["enhanced_geothermal_optimism"]
|
||||||
|
else 0.
|
||||||
|
)
|
||||||
|
|
||||||
# cost for ORC is subtracted, as it is already included in the geothermal cost.
|
# cost for ORC is subtracted, as it is already included in the geothermal cost.
|
||||||
# The orc cost are attributed to a separate link representing the ORC.
|
# The orc cost are attributed to a separate link representing the ORC.
|
||||||
|
# also capital_cost conversion Euro/kW -> Euro/MW
|
||||||
|
|
||||||
egs_potentials["capital_cost"] = (
|
egs_potentials["capital_cost"] = (
|
||||||
(egs_annuity + FOM / (1.0 + FOM))
|
(egs_annuity + FOM / (1.0 + FOM))
|
||||||
* (egs_potentials["CAPEX"] * 1000. - costs.at["organic rankine cycle", "investment"])
|
* (egs_potentials["CAPEX"] * 1000. - orc_capex)
|
||||||
* Nyears
|
* Nyears
|
||||||
)
|
)
|
||||||
|
|
||||||
assert (
|
assert (
|
||||||
egs_potentials["capital_cost"] > 0
|
egs_potentials["capital_cost"] > 0
|
||||||
).all(), "Error in EGS cost, negative values found."
|
).all(), "Error in EGS cost, negative values found."
|
||||||
@ -3348,7 +3359,7 @@ def add_enhanced_geothermal(
|
|||||||
plant_annuity = calculate_annuity(costs.at["organic rankine cycle", "lifetime"], dr)
|
plant_annuity = calculate_annuity(costs.at["organic rankine cycle", "lifetime"], dr)
|
||||||
plant_capital_cost = (
|
plant_capital_cost = (
|
||||||
(plant_annuity + FOM / (1 + FOM))
|
(plant_annuity + FOM / (1 + FOM))
|
||||||
* costs.at["organic rankine cycle", "investment"]
|
* orc_capex
|
||||||
* Nyears
|
* Nyears
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -3356,9 +3367,7 @@ def add_enhanced_geothermal(
|
|||||||
efficiency_dh = costs.at["geothermal", "efficiency residential heat"]
|
efficiency_dh = costs.at["geothermal", "efficiency residential heat"]
|
||||||
|
|
||||||
# p_nom_max conversion GW -> MW
|
# p_nom_max conversion GW -> MW
|
||||||
# capital_cost conversion Euro/kW -> Euro/MW
|
|
||||||
egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0
|
egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0
|
||||||
egs_potentials["capital_cost"] = egs_potentials["capital_cost"] * 1000.0
|
|
||||||
|
|
||||||
# not using add_carrier_buses, as we are not interested in a Store
|
# not using add_carrier_buses, as we are not interested in a Store
|
||||||
n.add("Carrier", "geothermal heat")
|
n.add("Carrier", "geothermal heat")
|
||||||
@ -3388,7 +3397,8 @@ def add_enhanced_geothermal(
|
|||||||
efficiency = pd.Series(1, overlap.index)
|
efficiency = pd.Series(1, overlap.index)
|
||||||
|
|
||||||
# if urban central heat exists, adds geothermal as CHP
|
# if urban central heat exists, adds geothermal as CHP
|
||||||
as_chp = "urban central heat" in n.buses.carrier
|
as_chp = "urban central heat" in n.loads.carrier.unique()
|
||||||
|
|
||||||
if as_chp:
|
if as_chp:
|
||||||
logger.info("Adding Enhanced Geothermal as Combined Heat and Power.")
|
logger.info("Adding Enhanced Geothermal as Combined Heat and Power.")
|
||||||
|
|
||||||
@ -3441,7 +3451,7 @@ def add_enhanced_geothermal(
|
|||||||
carrier="geothermal heat",
|
carrier="geothermal heat",
|
||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
p_nom_max=p_nom_max.set_axis(well_name) / efficiency_orc,
|
p_nom_max=p_nom_max.set_axis(well_name) / efficiency_orc,
|
||||||
capital_cost=capital_cost.set_axis(well_name),
|
capital_cost=capital_cost.set_axis(well_name) * efficiency_orc,
|
||||||
efficiency=bus_eta,
|
efficiency=bus_eta,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -3492,6 +3502,7 @@ def add_enhanced_geothermal(
|
|||||||
p_min_pu=-1.0 - boost,
|
p_min_pu=-1.0 - boost,
|
||||||
max_hours=max_hours,
|
max_hours=max_hours,
|
||||||
)
|
)
|
||||||
|
n.links.to_csv('links.csv')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user