fix cross border flow coloring, country color are more contrasted, and update the config documentations
This commit is contained in:
parent
269a08006f
commit
6bf6ec603c
@ -1,17 +1,18 @@
|
|||||||
,Unit,Values,Description
|
,Unit,Values,Description
|
||||||
simplify_network,,,
|
simplify_network,,,
|
||||||
-- to_substations,bool,"{'true','false'}","Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones"
|
-- to_substations,bool,"{'true','false'}","Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones"
|
||||||
-- algorithm,str,"One of {‘kmeans’, ‘hac’, ‘modularity‘}",
|
-- algorithm,str,"One of {‘kmeans’, ‘hac’, ‘modularity‘}",
|
||||||
-- feature,str,"Str in the format ‘carrier1+carrier2+...+carrierN-X’, where CarrierI can be from {‘solar’, ‘onwind’, ‘offwind’, ‘ror’} and X is one of {‘cap’, ‘time’}.",
|
-- feature,str,"Str in the format ‘carrier1+carrier2+...+carrierN-X’, where CarrierI can be from {‘solar’, ‘onwind’, ‘offwind’, ‘ror’} and X is one of {‘cap’, ‘time’}.",
|
||||||
-- exclude_carriers,list,"List of Str like [ 'solar', 'onwind'] or empy list []","List of carriers which will not be aggregated. If empty, all carriers will be aggregated."
|
-- exclude_carriers,list,"List of Str like [ 'solar', 'onwind'] or empy list []","List of carriers which will not be aggregated. If empty, all carriers will be aggregated."
|
||||||
-- remove stubs,bool,"true/false","Controls whether radial parts of the network should be recursively aggregated. Defaults to true."
|
-- remove stubs,bool,"{'true','false'}",Controls whether radial parts of the network should be recursively aggregated. Defaults to true.
|
||||||
-- remove_stubs_across_borders,bool,"true/false","Controls whether radial parts of the network should be recursively aggregated across borders. Defaults to true."
|
-- remove_stubs_across_borders,bool,"{'true','false'}",Controls whether radial parts of the network should be recursively aggregated across borders. Defaults to true.
|
||||||
cluster_network,,,
|
cluster_network,,,
|
||||||
-- algorithm,str,"One of {‘kmeans’, ‘hac’}",
|
-- algorithm,str,"One of {‘kmeans’, ‘hac’}",
|
||||||
-- feature,str,"Str in the format ‘carrier1+carrier2+...+carrierN-X’, where CarrierI can be from {‘solar’, ‘onwind’, ‘offwind’, ‘ror’} and X is one of {‘cap’, ‘time’}.",
|
-- feature,str,"Str in the format ‘carrier1+carrier2+...+carrierN-X’, where CarrierI can be from {‘solar’, ‘onwind’, ‘offwind’, ‘ror’} and X is one of {‘cap’, ‘time’}.",
|
||||||
-- exclude_carriers,list,"List of Str like [ 'solar', 'onwind'] or empy list []","List of carriers which will not be aggregated. If empty, all carriers will be aggregated."
|
-- exclude_carriers,list,"List of Str like [ 'solar', 'onwind'] or empy list []","List of carriers which will not be aggregated. If empty, all carriers will be aggregated."
|
||||||
aggregation_strategies,,,
|
-- consider_efficiency_classes,bool,"{'true','false'}","Aggregated each carriers into the top 10-quantile (high), the bottom 90-quantile (low), and everything in between (medium)."
|
||||||
-- generators,,,
|
aggregation_strategies,,,
|
||||||
-- -- {key},str,"{key} can be any of the component of the generator (str). It’s value can be any that can be converted to pandas.Series using getattr(). For example one of {min, max, sum}.","Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new generator."
|
-- generators,,,
|
||||||
-- buses,,,
|
-- -- {key},str,"{key} can be any of the component of the generator (str). It’s value can be any that can be converted to pandas.Series using getattr(). For example one of {min, max, sum}.","Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new generator."
|
||||||
-- -- {key},str,"{key} can be any of the component of the bus (str). It’s value can be any that can be converted to pandas.Series using getattr(). For example one of {min, max, sum}.","Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new bus."
|
-- buses,,,
|
||||||
|
-- -- {key},str,"{key} can be any of the component of the bus (str). It’s value can be any that can be converted to pandas.Series using getattr(). For example one of {min, max, sum}.","Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new bus."
|
||||||
|
|
@ -1,3 +1,7 @@
|
|||||||
,Unit,Values,Description
|
,Unit,Values,Description
|
||||||
{name},--,"string","For any carrier/technology overwrite attributes as listed below."
|
{name},--,string,For any carrier/technology overwrite attributes as listed below.
|
||||||
-- {attribute},--,"string or float","For any attribute, can specify a float or reference to a file path to a CSV file giving floats for each country (2-letter code)."
|
-- {attribute},--,string or float,"For any attribute, can specify a float or reference to a file path to a CSV file giving floats for each country (2-letter code)."
|
||||||
|
unit_commitment ,bool,"{true, false}","Allow the overwrite of ramp_limit_up, ramp_limit_start_up, ramp_limit_shut_down, p_min_pu, min_up_time, min_down_time, and start_up_cost of conventional generators. Refer to the CSV file „unit_commitment.csv“."
|
||||||
|
dynamic_fuel_price ,bool,"{true, false}","Consider the monthly fluctuating fuel prices for each conventional generator. Refer to the CSV file ""data/validation/monthly_fuel_price.csv""."
|
||||||
|
nuclear ,,,
|
||||||
|
-- p_max_pu,--,string or float ,Specify a float or reference to a file path to a CSV file the maximum dispatch for nuclear power plants in each country (2-letter code)
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
,Unit,Values,Description
|
,Unit,Values,Description
|
||||||
cutout,--,"Must be 'europe-2013-era5'","Specifies the directory where the relevant weather data ist stored."
|
cutout,--,Must be 'europe-2013-era5',Specifies the directory where the relevant weather data ist stored.
|
||||||
carriers,--,"Any subset of {'ror', 'PHS', 'hydro'}","Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams."
|
carriers,--,"Any subset of {'ror', 'PHS', 'hydro'}","Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams."
|
||||||
PHS_max_hours,h,float,"Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom``. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_."
|
PHS_max_hours,h,float,Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom``. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_.
|
||||||
hydro_max_hours,h,"Any of {float, 'energy_capacity_totals_by_country', 'estimate_by_large_installations'}","Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom`` or heuristically determined. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_."
|
hydro_max_hours,h,"Any of {float, 'energy_capacity_totals_by_country', 'estimate_by_large_installations'}",Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom`` or heuristically determined. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_.
|
||||||
clip_min_inflow,MW,float,"To avoid too small values in the inflow time series, values below this threshold are set to zero."
|
flatten_dispatch,bool or float,"{true, false, float}","Enables the flattening of the hydro-dispatch. If bool is specified, it represents the buffer value where the maximum hydro dispatch is equal to the average capacity factor plus the buffer with a maximum value of 1. If true is specified, the buffer value is 0.2. Otherwise, the maximum hydro dispatch remains equal to 1."
|
||||||
|
clip_min_inflow,MW,float,"To avoid too small values in the inflow time series, values below this threshold are set to zero."
|
||||||
|
|
@ -1,17 +1,19 @@
|
|||||||
,Unit,Values,Description
|
,Unit,Values,Description
|
||||||
options,,,
|
options,,,
|
||||||
-- load_shedding,bool/float,"{'true','false', float}","Add generators with very high marginal cost to simulate load shedding and avoid problem infeasibilities. If load shedding is a float, it denotes the marginal cost in EUR/kWh."
|
-- clip_p_max_pu,p.u.,float,To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.
|
||||||
-- transmission_losses,int,"[0-9]","Add piecewise linear approximation of transmission losses based on n tangents. Defaults to 0, which means losses are ignored."
|
-- load_shedding,bool/float,"{'true','false', float}","Add generators with very high marginal cost to simulate load shedding and avoid problem infeasibilities. If load shedding is a float, it denotes the marginal cost in EUR/kWh."
|
||||||
-- noisy_costs,bool,"{'true','false'}","Add random noise to marginal cost of generators by :math:`\mathcal{U}(0.009,0,011)` and capital cost of lines and links by :math:`\mathcal{U}(0.09,0,11)`."
|
-- noisy_costs,bool,"{'true','false'}","Add random noise to marginal cost of generators by :math:`\mathcal{U}(0.009,0,011)` and capital cost of lines and links by :math:`\mathcal{U}(0.09,0,11)`."
|
||||||
-- min_iterations,--,int,"Minimum number of solving iterations in between which resistance and reactence (``x/r``) are updated for branches according to ``s_nom_opt`` of the previous run."
|
-- skip_iterations,bool,"{'true','false'}","Skip iterating, do not update impedances of branches. Defaults to true."
|
||||||
-- max_iterations,--,int,"Maximum number of solving iterations in between which resistance and reactence (``x/r``) are updated for branches according to ``s_nom_opt`` of the previous run."
|
-- rolling_horizon,bool,"{'true','false'}",
|
||||||
-- nhours,--,int,"Specifies the :math:`n` first snapshots to take into account. Must be less than the total number of snapshots. Rather recommended only for debugging."
|
-- seed,--,int,Random seed for increased deterministic behaviour.
|
||||||
-- clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero."
|
-- track_iterations,bool,"{'true','false'}",Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in ``network.lines['s_nom_opt_X']`` (where ``X`` labels the iteration)
|
||||||
-- skip_iterations,bool,"{'true','false'}","Skip iterating, do not update impedances of branches. Defaults to true."
|
-- min_iterations,--,int,Minimum number of solving iterations in between which resistance and reactence (``x/r``) are updated for branches according to ``s_nom_opt`` of the previous run.
|
||||||
-- track_iterations,bool,"{'true','false'}","Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in ``network.lines['s_nom_opt_X']`` (where ``X`` labels the iteration)"
|
-- max_iterations,--,int,Maximum number of solving iterations in between which resistance and reactence (``x/r``) are updated for branches according to ``s_nom_opt`` of the previous run.
|
||||||
-- seed,--,int,"Random seed for increased deterministic behaviour."
|
-- transmission_losses,int,[0-9],"Add piecewise linear approximation of transmission losses based on n tangents. Defaults to 0, which means losses are ignored."
|
||||||
solver,,,
|
-- linearized_unit_commitment,bool,"{'true','false'}",
|
||||||
-- name,--,"One of {'gurobi', 'cplex', 'cbc', 'glpk', 'ipopt'}; potentially more possible","Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow."
|
-- horizon,--,int,
|
||||||
-- options,--,"Key listed under ``solver_options``.","Link to specific parameter settings."
|
solver,,,
|
||||||
solver_options,,"dict","Dictionaries with solver-specific parameter settings."
|
-- name,--,"One of {'gurobi', 'cplex', 'cbc', 'glpk', 'ipopt'}; potentially more possible",Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow.
|
||||||
mem,MB,"int","Estimated maximum memory requirement for solving networks."
|
-- options,--,Key listed under ``solver_options``.,Link to specific parameter settings.
|
||||||
|
solver_options,,dict,Dictionaries with solver-specific parameter settings.
|
||||||
|
mem,MB,int,Estimated maximum memory requirement for solving networks.
|
||||||
|
|
@ -1,6 +1,12 @@
|
|||||||
,Unit,Values,Description
|
,Unit,Values,Description
|
||||||
version,--,0.x.x,"Version of PyPSA-Eur. Descriptive only."
|
version,--,0.x.x,Version of PyPSA-Eur. Descriptive only.
|
||||||
tutorial,bool,"{true, false}","Switch to retrieve the tutorial data set instead of the full data set."
|
tutorial,bool,"{true, false}",Switch to retrieve the tutorial data set instead of the full data set.
|
||||||
logging,,,
|
logging,,,
|
||||||
-- level,--,"Any of {'INFO', 'WARNING', 'ERROR'}","Restrict console outputs to all infos, warning or errors only"
|
-- level,--,"Any of {'INFO', 'WARNING', 'ERROR'}","Restrict console outputs to all infos, warning or errors only"
|
||||||
-- format,--,"","Custom format for log messages. See `LogRecord <https://docs.python.org/3/library/logging.html#logging.LogRecord>`_ attributes."
|
-- format,--,,Custom format for log messages. See `LogRecord <https://docs.python.org/3/library/logging.html#logging.LogRecord>`_ attributes.
|
||||||
|
private,,,
|
||||||
|
-- keys,,,
|
||||||
|
-- -- entsoe_api,--,,Specify the ENTSO-E API key. See the guidelines to get `ENTSO-E API key <https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html>`_
|
||||||
|
remote,,,
|
||||||
|
-- ssh,--,,Specify the SSH of a remote cluster to be synchronized.
|
||||||
|
-- path,--,,Specify the file path within the remote cluster to be synchronized.
|
||||||
|
|
@ -16,12 +16,13 @@ PyPSA-Eur has several configuration options which are documented in this section
|
|||||||
Top-level configuration
|
Top-level configuration
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
|
"Private" refers to local, machine-specific settings or data meant for personal use, not to be shared. "Remote" indicates the address of a server used for data exchange, often for clusters and data pushing/pulling.
|
||||||
|
|
||||||
.. literalinclude:: ../config/config.default.yaml
|
.. literalinclude:: ../config/config.default.yaml
|
||||||
:language: yaml
|
:language: yaml
|
||||||
:start-at: version:
|
:start-at: version:
|
||||||
:end-before: # docs
|
:end-before: # docs
|
||||||
|
|
||||||
|
|
||||||
.. csv-table::
|
.. csv-table::
|
||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
:widths: 22,7,22,33
|
:widths: 22,7,22,33
|
||||||
|
File diff suppressed because one or more lines are too long
@ -40,18 +40,17 @@ color_country = {
|
|||||||
"LV": "#f3758d",
|
"LV": "#f3758d",
|
||||||
"ME": "#f37685",
|
"ME": "#f37685",
|
||||||
"MK": "#f37b7c",
|
"MK": "#f37b7c",
|
||||||
"NL": "#f28774",
|
"NL": "#FF6666",
|
||||||
"NO": "#f1976b",
|
"NO": "#FF3333",
|
||||||
"PL": "#efaa63",
|
"PL": "#eb0000",
|
||||||
"PT": "#ebb160",
|
"PT": "#d70000",
|
||||||
"RO": "#e6c260",
|
"RO": "#c00000",
|
||||||
"RS": "#e2d75e",
|
"RS": "#a50000",
|
||||||
"SE": "#dedc5b",
|
"SE": "#8a0000",
|
||||||
"SI": "#d9e35a",
|
"SI": "#6f0000",
|
||||||
"SK": "#d3e75a",
|
"SK": "#550000",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def sort_one_country(country, df):
|
def sort_one_country(country, df):
|
||||||
indices = [link for link in df.columns if country in link]
|
indices = [link for link in df.columns if country in link]
|
||||||
df_country = df[indices].copy()
|
df_country = df[indices].copy()
|
||||||
@ -142,7 +141,6 @@ def cross_border_bar(countries, data):
|
|||||||
else:
|
else:
|
||||||
title = "Optimized"
|
title = "Optimized"
|
||||||
|
|
||||||
color = [color_country[link[5:]] for link in df_country.columns] + color
|
|
||||||
df_positive_new = pd.DataFrame(data=df_pos.sum()).T.rename(
|
df_positive_new = pd.DataFrame(data=df_pos.sum()).T.rename(
|
||||||
{0: title + " " + cc.convert(country, to="name_short")}
|
{0: title + " " + cc.convert(country, to="name_short")}
|
||||||
)
|
)
|
||||||
@ -155,6 +153,8 @@ def cross_border_bar(countries, data):
|
|||||||
|
|
||||||
order = order + 1
|
order = order + 1
|
||||||
|
|
||||||
|
color = [color_country[link[5:]] for link in df_positive.columns]
|
||||||
|
|
||||||
fig, ax = plt.subplots(figsize=(15, 60))
|
fig, ax = plt.subplots(figsize=(15, 60))
|
||||||
|
|
||||||
df_positive.plot.barh(ax=ax, stacked=True, color=color, zorder=2)
|
df_positive.plot.barh(ax=ax, stacked=True, color=color, zorder=2)
|
||||||
|
Loading…
Reference in New Issue
Block a user