add monthly prices to network
This commit is contained in:
parent
dfdd116206
commit
024da02f8a
@ -239,7 +239,7 @@ rule build_monthly_prices:
|
|||||||
fuel_price_raw="/home/lisa/Documents/pypsa-eur/data/validation/energy-price-trends-xlsx-5619002.xlsx"
|
fuel_price_raw="/home/lisa/Documents/pypsa-eur/data/validation/energy-price-trends-xlsx-5619002.xlsx"
|
||||||
output:
|
output:
|
||||||
co2_price="data/validation/CO2_price_2019.csv",
|
co2_price="data/validation/CO2_price_2019.csv",
|
||||||
fuel_price="data/validation/onthly_fuel_price.csv"
|
fuel_price="data/validation/monthly_fuel_price.csv"
|
||||||
log:
|
log:
|
||||||
LOGS + "build_monthly_prices.log",
|
LOGS + "build_monthly_prices.log",
|
||||||
threads: 1
|
threads: 1
|
||||||
@ -285,7 +285,8 @@ rule add_electricity:
|
|||||||
powerplants=RESOURCES + "powerplants.csv",
|
powerplants=RESOURCES + "powerplants.csv",
|
||||||
hydro_capacities=ancient("data/bundle/hydro_capacities.csv"),
|
hydro_capacities=ancient("data/bundle/hydro_capacities.csv"),
|
||||||
geth_hydro_capacities="data/geth2015_hydro_capacities.csv",
|
geth_hydro_capacities="data/geth2015_hydro_capacities.csv",
|
||||||
monthly_fuel_price="data/monthly_fuel_price.csv",
|
co2_price="data/validation/CO2_price_2019.csv",
|
||||||
|
fuel_price="data/validation/monthly_fuel_price.csv",
|
||||||
load=RESOURCES + "load.csv",
|
load=RESOURCES + "load.csv",
|
||||||
nuts3_shapes=RESOURCES + "nuts3_shapes.geojson",
|
nuts3_shapes=RESOURCES + "nuts3_shapes.geojson",
|
||||||
output:
|
output:
|
||||||
|
@ -154,7 +154,6 @@ def load_costs(tech_costs, config, elec_config, Nyears=1.0):
|
|||||||
* costs["investment"]
|
* costs["investment"]
|
||||||
* Nyears
|
* Nyears
|
||||||
)
|
)
|
||||||
|
|
||||||
costs.at["OCGT", "fuel"] = costs.at["gas", "fuel"]
|
costs.at["OCGT", "fuel"] = costs.at["gas", "fuel"]
|
||||||
costs.at["CCGT", "fuel"] = costs.at["gas", "fuel"]
|
costs.at["CCGT", "fuel"] = costs.at["gas", "fuel"]
|
||||||
|
|
||||||
@ -353,6 +352,7 @@ def attach_wind_and_solar(
|
|||||||
def attach_conventional_generators(
|
def attach_conventional_generators(
|
||||||
n,
|
n,
|
||||||
costs,
|
costs,
|
||||||
|
fuel_price,
|
||||||
ppl,
|
ppl,
|
||||||
conventional_carriers,
|
conventional_carriers,
|
||||||
extendable_carriers,
|
extendable_carriers,
|
||||||
@ -368,8 +368,16 @@ def attach_conventional_generators(
|
|||||||
.rename(index=lambda s: "C" + str(s))
|
.rename(index=lambda s: "C" + str(s))
|
||||||
)
|
)
|
||||||
ppl["efficiency"] = ppl.efficiency.fillna(ppl.efficiency_r)
|
ppl["efficiency"] = ppl.efficiency.fillna(ppl.efficiency_r)
|
||||||
ppl["marginal_cost"] = (
|
|
||||||
ppl.carrier.map(costs.VOM) + ppl.carrier.map(costs.fuel) / ppl.efficiency
|
|
||||||
|
fuel_price = (fuel_price.assign(OCGT=m_fuel_price['gas'],
|
||||||
|
CCGT=m_fuel_price['gas'])
|
||||||
|
.drop("gas", axis=1))
|
||||||
|
fuel_price = fuel_price.reindex(ppl.carrier, axis=1)
|
||||||
|
fuel_price.fillna(costs.fuel, inplace=True)
|
||||||
|
fuel_price.columns = ppl.index
|
||||||
|
marginal_cost = (
|
||||||
|
(fuel_price.div(ppl.efficiency)).add(ppl.carrier.map(costs.VOM))
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
@ -387,7 +395,7 @@ def attach_conventional_generators(
|
|||||||
p_nom=ppl.p_nom.where(ppl.carrier.isin(conventional_carriers), 0),
|
p_nom=ppl.p_nom.where(ppl.carrier.isin(conventional_carriers), 0),
|
||||||
p_nom_extendable=ppl.carrier.isin(extendable_carriers["Generator"]),
|
p_nom_extendable=ppl.carrier.isin(extendable_carriers["Generator"]),
|
||||||
efficiency=ppl.efficiency,
|
efficiency=ppl.efficiency,
|
||||||
marginal_cost=ppl.marginal_cost,
|
marginal_cost=marginal_cost,
|
||||||
capital_cost=ppl.capital_cost,
|
capital_cost=ppl.capital_cost,
|
||||||
build_year=ppl.datein.fillna(0).astype(int),
|
build_year=ppl.datein.fillna(0).astype(int),
|
||||||
lifetime=(ppl.dateout - ppl.datein).fillna(np.inf),
|
lifetime=(ppl.dateout - ppl.datein).fillna(np.inf),
|
||||||
@ -700,7 +708,7 @@ def add_nice_carrier_names(n, config):
|
|||||||
logger.warning(f"tech_colors for carriers {missing_i} not defined in config.")
|
logger.warning(f"tech_colors for carriers {missing_i} not defined in config.")
|
||||||
n.carriers["color"] = colors
|
n.carriers["color"] = colors
|
||||||
|
|
||||||
|
#%%
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if "snakemake" not in globals():
|
if "snakemake" not in globals():
|
||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
@ -753,9 +761,16 @@ if __name__ == "__main__":
|
|||||||
conventional_inputs = {
|
conventional_inputs = {
|
||||||
k: v for k, v in snakemake.input.items() if k.startswith("conventional_")
|
k: v for k, v in snakemake.input.items() if k.startswith("conventional_")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_fuel_price = pd.read_csv(snakemake.input.fuel_price,
|
||||||
|
index_col=[0], header=[0])
|
||||||
|
m_fuel_price.index = pd.date_range(start='2019-01-01', end='2019-12-01',
|
||||||
|
freq='MS')
|
||||||
|
fuel_price = m_fuel_price.reindex(n.snapshots).fillna(method="ffill")
|
||||||
attach_conventional_generators(
|
attach_conventional_generators(
|
||||||
n,
|
n,
|
||||||
costs,
|
costs,
|
||||||
|
fuel_price,
|
||||||
ppl,
|
ppl,
|
||||||
conventional_carriers,
|
conventional_carriers,
|
||||||
extendable_carriers,
|
extendable_carriers,
|
||||||
|
Loading…
Reference in New Issue
Block a user