Attach conventional generators to base model
This commit is contained in:
parent
082b483820
commit
21968a5d77
@ -28,6 +28,8 @@ electricity:
|
|||||||
battery: 6
|
battery: 6
|
||||||
H2: 168
|
H2: 168
|
||||||
|
|
||||||
|
conventional_carriers: [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass]
|
||||||
|
|
||||||
renewable:
|
renewable:
|
||||||
onwind:
|
onwind:
|
||||||
cutout: europe-2012-2016-era5
|
cutout: europe-2012-2016-era5
|
||||||
|
@ -143,8 +143,28 @@ def attach_wind_and_solar(n, costs):
|
|||||||
# # Generators
|
# # Generators
|
||||||
|
|
||||||
|
|
||||||
def attach_existing_generators(n, costs):
|
def attach_conventional_generators(n, costs, ppl):
|
||||||
raise NotImplementedError("comes later")
|
carriers = snakemake.config['electricity']['conventional_carriers']
|
||||||
|
_add_missing_carriers_from_costs(n, costs, carriers)
|
||||||
|
ppl = ppl.rename(columns={'Name': 'name', 'Capacity': 'p_nom'})
|
||||||
|
ppm_fuels = {'OCGT': 'OCGT', 'CCGT': 'CCGT',
|
||||||
|
'oil': 'Oil', 'nuclear': 'Nuclear',
|
||||||
|
'geothermal': 'Geothermal', 'biomass': 'Bioenergy',
|
||||||
|
'coal': 'Hard Coal', 'lignite': 'Lignite'}
|
||||||
|
|
||||||
|
for tech in carriers:
|
||||||
|
p = pd.DataFrame(ppl.loc[ppl['Fueltype'] == ppm_fuels[tech]])
|
||||||
|
p.index = 'C' + p.index.astype(str)
|
||||||
|
logger.info('Adding {} generators of type {} with capacity {}'
|
||||||
|
.format(len(p), tech, p.p_nom.sum()))
|
||||||
|
|
||||||
|
n.madd("Generator", p.index,
|
||||||
|
carrier=tech,
|
||||||
|
bus=p['bus'],
|
||||||
|
p_nom=p['p_nom'],
|
||||||
|
efficiency=costs.at[tech, 'efficiency'],
|
||||||
|
marginal_cost=costs.at[tech, 'marginal_cost'],
|
||||||
|
capital_cost=costs.at[tech, 'capital_cost'])
|
||||||
|
|
||||||
|
|
||||||
def attach_hydro(n, costs, ppl):
|
def attach_hydro(n, costs, ppl):
|
||||||
@ -358,7 +378,7 @@ if __name__ == "__main__":
|
|||||||
attach_load(n)
|
attach_load(n)
|
||||||
|
|
||||||
update_transmission_costs(n, costs)
|
update_transmission_costs(n, costs)
|
||||||
# attach_existing_generators(n, costs)
|
attach_conventional_generators(n, costs, ppl)
|
||||||
|
|
||||||
attach_wind_and_solar(n, costs)
|
attach_wind_and_solar(n, costs)
|
||||||
attach_hydro(n, costs, ppl)
|
attach_hydro(n, costs, ppl)
|
||||||
|
@ -19,7 +19,18 @@ logging.basicConfig(level=snakemake.config['logging_level'])
|
|||||||
|
|
||||||
n = pypsa.Network(snakemake.input.base_network)
|
n = pypsa.Network(snakemake.input.base_network)
|
||||||
|
|
||||||
ppl = ppm.collection.MATCHED_dataset(include_unavailables=True)
|
ppl = (ppm.collection.MATCHED_dataset(include_unavailables=True)
|
||||||
|
[lambda df : ~df.Fueltype.isin(('Solar', 'Wind'))]
|
||||||
|
.pipe(ppm.cleaning.clean_technology)
|
||||||
|
.assign(Fueltype=lambda df: (
|
||||||
|
df.Fueltype.where(df.Fueltype != 'Natural Gas',
|
||||||
|
df.Technology.replace('Steam Turbine', 'OCGT').fillna('OCGT'))))
|
||||||
|
.pipe(ppm.utils.fill_geoposition, parse=True, only_saved_locs=True)
|
||||||
|
.pipe(ppm.heuristics.fill_missing_duration))
|
||||||
|
|
||||||
|
# ppl.loc[(ppl.Fueltype == 'Other') & ppl.Technology.str.contains('CCGT'), 'Fueltype'] = 'CCGT'
|
||||||
|
# ppl.loc[(ppl.Fueltype == 'Other') & ppl.Technology.str.contains('Steam Turbine'), 'Fueltype'] = 'CCGT'
|
||||||
|
|
||||||
ppl = ppl.loc[ppl.lon.notnull() & ppl.lat.notnull()]
|
ppl = ppl.loc[ppl.lon.notnull() & ppl.lat.notnull()]
|
||||||
|
|
||||||
substation_lv_i = n.buses.index[n.buses['substation_lv']]
|
substation_lv_i = n.buses.index[n.buses['substation_lv']]
|
||||||
|
Loading…
Reference in New Issue
Block a user