Input files
Please note that in this chapter, we use the following notation conventions regarding units:
[CAP]: Capacity unit of a technology
[ec]: For parameters where there is obviously one energy carrier, [ec] will refer to the unit of that ec.
[ec_in], [ec_out] Units of input/output energy carriers
[ec_in_main], [ec_out_main]: Unit of main input/output energy carriers of conversion technologies
[CAP_sub], [CAP_main]: Capacity units of sub/main techs for coupled technologies.
- We will some of the following units in the list below as stand-ins for the basic units, but these can always be changed to other, equivalent units in the inputs (for example, one could use EUR instead of CHF for currency units, or s instead of h for time units).
CHF: Swiss Franc, stand-in for currency units
kg: kilograms, stand-in for mass units
m: meters, stand-in for length units
h: hours, stand-in for time units
File overview
model
|-- inputs
|-- basic
|-- demands.yaml
|-- ecs.yaml
|-- exports.yaml
|-- hubs.yaml
|-- imports.yaml
|-- stages.yaml
|-- techs.yaml
|-- network
|-- network_links.yaml
|-- network__techs.yaml
|-- renewables
|-- solar_areas.csv
|-- solar_irradiation.csv
Parameter legend
per-year: Whether this parameter can be specified as year-dependent (see parameter types)
per-ts: Whether this parameter can be specified as a timeseries (see parameter types). This will happen by specifying a path to a time series file, and the specific structure is dependent on the parameter itself.
file: File in which this parameter is specified.
stages.yaml
system_params:
interest_rate_def: 0.01
trl_threshold: 4
num_times_horizon: 3
self_sufficiency_calculation_method: quadratic
self_sufficiency_min: 0.1
self_sufficiency_max: 0.9
currency_unit: CHF
length_unit: m
mass_unit: kg
power_unit: kW
stages:
- stage_id: S1
start_year: 2020
co2_price: 0.08 CHF/kg
co2_min: 0 kg
co2_max: 100 kg
- stage_id: S2
start_year: 2025
co2_price: 0.15 CHF/kg
co2_min: 0 kg
co2_max: 20 kg
System parameters:
system_params (mandatory): Dictionary of system-wide parameters
interest_rate_def (mandatory, [-]): Default interest rate used across the system when no other rate is specified.
trl_threshold (optional, default=0, [-]): Technology readiness level (TRL) threshold value above which technologies can be installed and used.
num_times_horizon (mandatory, [-]): Number of time steps in the time horizon.
self_sufficiency_calculation_method (optional, default=”none”): Method how the system’s self-sufficiency value should be calculated. Can be “none” (self-sufficiency is not calcualted), “quadratic” (self-sufficiency value is calculated using its quadratic definition), or “linearized” (self-sufficiency value is calculated using a triangulation-based discretization of the expected domain for internal imports and cross-imports).
self_sufficiency_min (optional, [-], default=0): Minimal value for the overall system self-sufficiency.
self_sufficiency_max (optional, [-], default=1): Maximal value for the overall system self-sufficiency.
curreny_unit (optional, default=”CHF”): Unit for currency values in the result files, see units.
length_unit (optional, default=”m”): Unit for length values in the result files, see units.
mass_unit (optional, default=”kg”): Unit for mass values in the result files, see units.
power_unit (optional, default=”kW”): Unit for power values in the result files, see units.
Stages:
stages (optional, default=[]): Identifiable list of stages
stage_id (mandatory): Stage id
start_year (mandatory, [-]): First year of the stage. This year is used to interpolate year-dependent parameters (see parameter types). Among the stages, each start year must be unique. The stages do not have to be defined in order of their start year.
co2_price (optional, default=0, [CHF/kg]): Price for CO2 emissions.
co2_min (optional, default= -\(\infty\), , [kg]): Minimal amount of CO2 emissions in this stage.
co2_max (optional, default= \(\infty\), [kg]): Maximal amount of CO2 emissions in this stage.
autonomy_allow_unmet_demand (optional, default=False): Specifies whether unmet demand is allowed in autonomy optimization for this stage. If
False(default), unmet demand is strictly forbidden. IfTrue, unmet demand may occur after autonomy failure when the autonomy objective is active.
hubs.yaml
tech_lists:
- tech_list_id: TechList1
techs: [X1, X2, X3, X4, X5, X6, X7, X8]
hubs:
- hub_id: H1
allowed_tech_lists: TechList1
techs:
- tech_id: X1
tech_params:
age_init: 5
cap_init: 150
cap_min: [[2020, 150], [2025, 250]]
cap_max: 1000
last_inst_year: 2050
storage_params:
soc_init: 0.5
- tech_id: X2
conversion_params:
out_sum_min: [[2020, 40], [2025, 60]]
out_sum_max: 500
availability: [[2020, 0.8], [[2025, 0.9]]]
profile_path: hub_profiles.csv
- tech_id: X4
ates_params:
well_pairs_min: 3
well_pairs_max: 5
elec_per_energy_heat: [[2020, 0.1], [2025, 0.09]]
elec_per_energy_cool: [[2020, 0.08], [2025, 0.07]]
well_distance: 100 m
schedule_params:
- schedule_id: AS1
max_pump_rate_per_warm_well: [[2020, 1.2], [2025, 1.1]]
max_pump_rate_per_cold_well: [[2020, 1.1], [2025, 1.0]]
thermal_radius_per_warm_well: [[2020, 150], [2025, 145]]
thermal_radius_per_cold_well: [[2020, 140], [2025, 135]]
max_heat_over_cool: 1.5
max_cool_over_heat: 1.5
availability: [[2020, 0.9], [2025, 0.91]]
profile_path: ates_profiles.csv
- tech_id: X5
ebm_params:
demand_modifier: [[2020, 200], [2025, 600]]
demand_nominal: 1
availability: [[2020, 0.8], [2025, 0.9]]
profile_path: hub_profiles.csv
- tech_id: X7
heatpump_params:
cop: [[2020, 3.5], [2025, 4.0]]
temp_heat_in: 38
temp_heat_out: 65
availability: [[2020, 0.9], [2025, 0.91]]
profile_path: hub_profiles.csv
- tech_id: X8
ebm_params:
num_vehicles: [[2020, 100], [2025, 300]]
soc_init: 0.5
demand_modifier: 1
profiles: ebm_profiles.csv
ates_params:
darcy_velocity: 0.025 m/d
density_rock: 2000 kg/m^3
specific_heat_capacity_rock: 1000 Ws/(kg*K)
thickness_aquifer: 30 m
hydraulic_conductivity_aquifer: 5 m/d
porosity_aquifer: 0.25
max_drawdown: 5 m
max_temperature_spread_warm: 6 K
max_temperature_spread_cold: 6.5 K
available_area: 1 km^2
schedules:
- schedule_id: AS1
phase_w2c_start_id: 10
phase_w2c_end_id: 3
phase_c2w_start_id: 4
phase_c2w_end_id: 9
- hub_id: H2
allowed_tech_lists: []
stage_id, S1, S2, S1, S2, S1, S2, S1, S1
hub_id, H1, H1, H1, H1, H1, H1, H1, H1
tech_id, X2, X2, X5, X5, X5, X5, X7, X7
profile_key, availability, availability, demand_nominal, demand_nominal, availability, availability, cop, availability
unit, 1, 1, kW, kW, 1, 1, 1, 1
1, 0.95, 0.99, 0.40, 0.30, 1.00, 1.00, 3.45, 0.5
2, 0.80, 0.85, 0.40, 0.40, 0.90, 0.80, 3.50, 0.8
3, 0.90, 0.95, 0.20, 0.30, 0.70, 0.60, 3.55, 1.0
stage_id, S1
hub_id, H1
tech_id, X4
ates_schedule_id, AS1
unit, 1
1, 0.5
2, 0.0
3, 1.0
Technology lists:
tech_lists (optional, default=[]): Identifiable list of tech lists.
tech_list_id (mandatory): Tech list id.
techs (mandatory): Tech ids which belong to the tech list.
Hubs:
hubs (optional, default=[]): Identifiable list of hubs.
hub_id (mandatory): Hub id.
allowed_tech_lists (optional, default=[]): List of tech list ids which are allowed for this hub. If a single tech list id (e.g.; TechList1 above) is passed, this is equivalent to passing a list with this element (i.e., TechList1).
techs (optional, default=[]): Identifiable list of techs for which hub-specific parameters are to be defined.
Hub-speficic technology parameters:
tech_params (optional, default={}) Dictionary with parameters for the tech model.
age_init (optional, default=0, [a]): Age of preinstalled technology at this hub.
cap_init (optional, default=0, [CAP]): Capacity amount of preinstalled technology at this hub.
cap_min (optional, default=0, [CAP], per-year): Minimal amount of installed capacity at this hub.
cap_max (optional, default= \(\infty\), [CAP], per-year): Maximal amount of installed capacity at this hub.
last_inst_year (optional, default= \(\infty\), [-]): Last year where installation of this technology is allowed at this hub.
Hub-speficic storage technology parameters:
storage_params (optional, default={}) Dictionary with parameters for the storage model.
soc_init (optional, default= \(\infty\), [-]): Initial state of charge at the beginning of each stage’s time horizon, as a value between 0 and 1, relative to the total installed storage capacity. Alternatively, setting this value to \(\infty\) lets the optimizer choose it without any restriction. Due to the periodicity constraint (see storage model), the initial state of charge will also be the stage of charge at the end of the time horizon.
Hub-specific conversion technology parameters:
conversion_params (optional, default={}): Dictionary with parameters for the conversion model.
out_sum_min (optional, default=0, [ec_out_main], per-year): Minimal value for the summed-up output of the conversion technology’s main output carrier across the time horizon.
out_sum_max (optional, default= \(\infty\), [ec_out_main], per-year): Maximal value for the summed-up output of the conversion technology’s main output carrier across the time horizon.
availability (optional, default=1, [-], per-ts): Multiplier for the conversion technology’s availability to output energy. An availability of 1 means that the technology is able to operate at full capacity, an availability of 0 means that it is not able to produce any output.
- profile_path (optional, default=None, file): File path (relative to hubs.yaml) of a time series file with time-specific data for the time-dependent conversion parameters above. It has to contain the following headers:
stage_id: Stage id
hub_id: Hub id, only the currently active hub is parsed
tech_id: Technology id, only the currentivly active tech is parsed.
profile_key: Name of parameter for which time-dependent data is being defined. Only availability is parsed.
Hub-specific ATES technology parameters:
ates_params (optional, default=[]): Dictionary with parameters for the ates model.
elec_per_energy_heat (optional, [-], per-year): Electricity consumption (in kW) for each amount of heating output (in kW). If this parameter is not set, it will be calculated from the parameter elec_per_flow_heat.
elec_per_energy_cool (optional, [-], per-year): Electricity consumption (in kW) for each amount of cooling output (in kW). If this parameter is not set, it will be calculated from the parameter elec_per_flow_cool.
well_distance (optional, [m], per-year): Well distance between well pairs. This parameter is mandatory if max_pump_rate_per_cold_well or max_pump_rate_per_warm_well are not specified.
schedule_params (optional, default = {}): List with schedule-dependent parameters.
schedule_id (mandatory each schedule block): Id of ATES schedule (as defined in ates_params below).
well_pairs_min (optional, default=0, [-], per-year): Minimal number of well pairs that have to be operating under this schedule for this ATES technology at this hub.
well_pairs_max (optional, default= \(\infty\), , [-], per-year): Maximal number of well pairs that may be operating under this schedule for this ATES technology at this hub.
max_pump_rate_per_warm_well (optional, [m^3/s], per-year): Maximal pumping rate for extraction from a warm well. If this parameter is not specified, the maximal pumping rate is calculated using the Cooper-Jacobs approximation of the Theis equation, based on the parameters well_radius, hydraulic_conductivity_aquifer, max_drawdown, and well_distance.
max_pump_rate_per_cold_well (optional, [m^3/s], per-year): Maximal pumping rate for extraction from a cold well. If this parameter is not specified, the maximal pumping rate is calculated using the Cooper-Jacobs approximation of the Theis equation, based on the parameters well_radius, hydraulic_conductivity_aquifer, thickness_aquifer, and max_drawdown.
thermal_radius_per_warm_well (optional, [m], per-year): Thermal radius, i.e.; approximation of the furthest distance from the well center at which the injection of warm fluid into the well still affects the underground thermal state. If this parameter is not specified, the thermal radius is calculated using the conductive and convective radii, based on the parameters specific_heat_capacity_fluid, max_pump_rate_per_cold_well, specific_heat_capacity_aquifer, thickness_aquifer, and darcy_velocity.
thermal_radius_per_cold_well (optional, [m], per-year): Thermal radius, approximation of the furthest distance from the well center at which the injection of cold fluid into the well still affects the underground thermal state. If this parameter is not specified, the thermal radius is calculated using the conductive and convective radii, based on the parameters specific_heat_capacity_fluid, max_pump_rate_per_warm_well, specific_heat_capacity_aquifer, thickness_aquifer, and darcy_velocity.
max_heat_over_cool (optional, default= \(\infty\), [-], per-year): Maximal quotient of total (i.e.; summed-up over time) ATES heating output over total ATES cooling output for this technology in this schedule. For feasibility reasons, the product between this parameter and max_cool_over_heat must not be smaller than one.
max_cool_over_heat (optional, default= \(\infty\), [-], per-year): Maximal quotient of total (i.e.; summed-up over time) ATES cooling output over total ATES heating output for this technology in this schedule. For feasibility reasons, the product between this parameter and max_heat_over_cool must not be smaller than one.
availability (optional, default=1, [-], per-ts): Multiplier for the ATES technology’s ability to extract and inject energy. An availability of 1 means that the technology is able to operate at full capacity, an availability of 0 means that it is not able to extract or inject any energy.
- profile_path (optional, default=None, file): File path (relative to hubs.yaml) of a time series file with time-specific data for the time-dependent ATES parameters above. It has to contain the following headers:
stage_id: Stage id.
hub_id: Hub id, only the currently active hub is parsed.
tech_id: Technology id, only the currentivly active tech is parsed.
ates_schedule_id: Id of ATES schedule.
profile_key: Name of parameter for which time-dependent data is gathered. Only availability is parsed.
Hub-specific Electricity-Based Mobility (EBM) technology parameters:
ebm_params (mandatory for EBM techs) Dictionary with parameters for the EBM model.
num_vehicles (mandatory, [-], per-year): Number of vehicles in the EBM fleet.
soc_init (optional, default= \(\infty\), [-]): Initial state of charge for the EBM fleet at the beginning of each stage’s time horizon, as a value between 0 and 1, relative to the total storage capacity. Alternatively, setting this value to \(\infty\) lets the optimizer choose it without any restriction. Due to the periodicity constraint (see storage model), the initial state of charge will also be the stage of charge at the end of the time horizon.
demand_modifier (optional, default=1, [-], per-ts): Modifier for the EBM demand curve. The values of demand_nominal are multiplied with this modifier value to obtain the actual demand.
demand_nominal (optional, default=0, [ec/h], per-ts): Nominal EBM demand of a single vehicle. These values are multiplied with demand_modifier to obtain the actual demand of one vehicle. This value is then again multiplied by num_vehicles to determine the demand of the entire fleet.
availability (optional, default=1, [-], per-ts): Multiplier for the technology’s ability to charge and discharge. An availability of 1 means that the entire fleet is available for charging and discharging, an availability of 0 means that the entire fleet is unavailable.
- profile_path (optional, default=None, file): File path (relative to hubs.yaml) of a time series file with time-specific data for the time-dependent EBM parameters above. It has to contain the following headers:
stage_id: Stage id.
hub_id: Hub id, only the currently active hub is parsed.
tech_id: Technology id, only the currentivly active tech is parsed.
profile_key: Name of parameter for which time-dependent data is gathered. Only demand_nominal and availability are parsed.
Hub-specific heat pump technology parameters:
heatpump_params (mandatory for heat pump techs): Dictionary with parameters for the heat pump model.
cop (optional, [-], per-ts): Coefficient of performance for the heat pump. If this parameter is not specified, the COP is calculated using a dampened Carnot efficiency (see heat pump model) with the parameters temp_heat_in, temp_heat_out and cop_factor.
temp_heat_in (optional, [K], per-ts): Temperature of heating mode heat inlet (i.e.; evaporator inlet temperature). This parameter becomes mandatory if the parameter cop is not set, since the inlet temperature is then used to calculate the COP.
temp_heat_out (optional, [K], per-ts): Temperature of heating mode heat outlet (i.e.; condenser outlet temperature). This parameter becomes mandatory if the parameter cop is not set, since the outlet temperature is then used to calculate the COP.
availability (optional, default=1, [-], per-ts): Multiplier for the heat pump’s maximal condenser power. An availability of 1 means that the heat pump is able to operate at full capacity, an availability of 0 means that it is not able to operate at all.
- profile_path (optional, default=None, file): File path (relative to hubs.yaml) of a time series file with time-specific data for the time-dependent heat pump parameters above. It has to contain the following headers:
stage_id: Stage id.
hub_id: Hub id, only the currently active hub is parsed.
tech_id: Technology id, only the currentivly active tech is parsed.
profile_key: Name of parameter for which time-dependent data is gathered. Only cop, temp_heat_in, temp_heat_out and availability are parsed.
ATES parameters (technology-independent):
ates_params (mandatory for hubs with ATES technologies): Dictionary with ATES-specific parameters which are independent of technologies for this hub.
darcy_velocity (optional, [m/d]): Darcy velocity for groundwater flow. This parameter becomes mandatory if the parameters thermal_radius_per_warm_well or thermal_radius_per_cold_well are not set, since the Darcy velocity is then used to calculate these radii.
specific_heat_capacity_aquifer (optional, [Ws/(kg*K)]): Specific heat capacity of the aquifer. This parameter becomes mandatory if the parameters thermal_radius_per_warm_well or thermal_radius_per_cold_well are not set, since the specific heat capacity is then used to calculate these radii.
thickness_aquifer (optional, [m]): Thickness (i.e.; height) of the aquifer. This parameter becomes mandatory if the parameters thermal_radius_per_warm_well or thermal_radius_per_cold_well are not set, since the thickness is then used to calculate these radii.
porosity_aquifer (optional, [-]): Effective porosity of the aquifer, i.e., the fraction of the bulk aquifer volume consisting of interconnected pore space through which groundwater can flow. XXX This parameter becomes mandatory if the parameters max_pump_rate_per_warm_well or max_pump_rate_per_cold_well are not set, since the porosity is then used to calculate these rates.
max_drawdown (optional, [m]): Maximal allowed drawdown (i.e.; surface decline) at the border of an ATES well. This parameter becomes mandatory if the parameters max_pump_rate_per_warm_well or max_pump_rate_per_cold_well are not set, since the maximal drawdown is then used to calculate these rates.
max_temperature_spread_warm (mandatory, [K]): Maximal allowed temperature spread between the natural aquifer temperature and the temperature of fluid in the warm wells.
max_temperature_spread_cold (mandatory, [K]): Maximal allowed temperature spread between the natural aquifer temperature and the temperature of fluid in the cold wells.
available_area (optional, default= \(\infty, [m^2]\), per-year*): Available aquifer area for ATES installation.
schedules (mandatory): List of ATES schedules (see ates model).
schedule_id (mandatory): Id of ATES schedule
phase_w2c_start_id (mandatory): Time id of the start of the warm-to-cold pumping phase.
phase_w2c_end_id (mandatory): Time id of the end of the warm-to-cold pumping phase.
phase_c2w_start_id (mandatory): Time id of the start of the cold-to-warm pumping phase.
phase_c2w_end_id (mandatory): Time id of the end of the cold-to-warm pumping phase.
network_links.yaml
net_tech_lists:
- net_tech_list_id: NetTechList1
net_techs: [N1]
start_hubs:
- start_hub_id: H1
end_hubs:
- end_hub_id: H2
links:
- link_id: L1
ecs: [E1]
length: 100
bidirectional: True
allowed_net_tech_lists: NetTechList1
net_tech_params:
- net_tech_id: N1
age_init: 15
cap_init: 50
ec_params:
- ec_id: E1
cap_min: [[2020, 50], [2025, 75]]
cap_max: 250
sum_min_forward: 200
sum_min_backward: 0
sum_max_forward: 1_000
sum_max_backward: 500
availability: 0.8
profile_path: net_link_profiles.csv
stage_id, S1
net_link_id, L1
ec_id, E1
profile_key, availability
1, 0.95
2, 0.80
3, 0.90
Network technology lists:
net_tech_lists (optional, default=[]): Identifiable list of network tech lists.
net_tech_list_id (mandatory): Network tech list id.
net_techs (mandatory): Network tech ids which belong to the network tech list.
Links:
start_hubs (optional, default=[]): Identifiable list of start hubs for links.
start_hub_id (mandatory): Id of start hub.
end_hubs (optional, default=[]): Identifiable list of end hubs for links.
end_hub_id (mandatory): Id of end hub.
links (optional, default=[]): Identifiable list of links connecting the start hub and the end hub.
link_id (mandatory): Id of link.
ecs (mandatory): List of EC ids which can be transported along this link. Needs to contain at least one EC.
length (mandatory, [m]): Length of link.
bidirectional (optional, default=False): Boolean value indicating whether this link is bidirectional. If the value is True, ECs can be transported along this link in both directions. If the value is False, ECs can only be transported from the start hub to the end hub.
allowed_net_tech_lists (optional, default=[]): List of network tech list ids for which installation and usage is allowed on this link.
Link-specific network technology parameters:
net_tech_params (optional, default={}) Dictionary with link-specific network technology parameters for the network model.
net_tech_id (mandatory): Id of network technology. Must be part of one of the allowed_net_tech_lists on this link.
age_init (optional, default=0, [a]): Age of preinstalled network technology on this link.
cap_init (optional, default=0, [ec/h]): Capacity amount of preinstalled network technology on this link.
Link-specific EC parameters
ec_params (optional, default={}): Dictionary with link-specific EC parameters for the network model.
ec_id (mandatory): Id of EC. Must be part of this link’s ec_ids.
cap_min (optional, default=0, [ec/h], per-year): Minimal amount of cummulative capacity on this link of network techs that can transport this EC.
cap_max (optional, default= \(\infty\), [ec/h], per-year): Maximal amount of cummulative capacity on this link of network techs that can transport this EC.
sum_min_forward (optional, default=0, [ec], per-year): Minimal amount of energy for this EC that is transported along this link from the start hub to the end hub.
sum_min_backward (optional, default=0, [ec], per-year): Minimal amount of energy for this EC that is transported along this link from the end hub to the start hub. This parameter is only taken into consideration if the link is bidirectional.
sum_max_forward (optional, default= \(\infty\), [ec], per-year): Maximal amount of energy for this EC that is transported along this link from the start hub to the end hub.
sum_max_backward (optional, default= \(\infty\), [ec], per-year): Maximal amount of energy for this EC that is transported along this link from the end hub to the start hub. This parameter is only taken into consideration if the link is bidirectional.
availability (optional, default=1, [-], per-ts): Multiplier for all network technology’s ability on this link to transmit energy. An availability of 1 means that each technology is able to operate at full capacity, an availability of 0 means that none is not able to transmit anything.
profile_path (optional, default=None, file): File path (relative to network_links.yaml) of a time series file with time-specific data for the time-dependent network link parameters above. It has to contain the following headers: * stage_id: Stage id, only the currently active stage id is parsed. * link_id: Network link id, only the currently active link id is parsed. * ec_id: EC id, only the currently active EC id is parsed. * profile_key: Name of parameter for which time-dependent data is being defined. Only availability is parsed.
techs.yaml
techs:
- tech_id: X1
type: storage
tech_params:
lifetime: 20 a
unit_cap_min: 0 kWh
trl: [[2020, 3], [2025, 4]]
costs:
interest_rate: 0.1
one_time_capex: 0 CHF
capex_per_cap: 1500 CHF/kWh
one_time_opex: 0.5 CHF
opex_per_cap: 0 CHF/kWh
emissions:
co2_per_cap: 0.2 kg/kWh
storage_params:
ec: E1
in_eff: 0.92
out_eff: 0.92
charge_max: 1 1/h
discharge_max: 1 1/h
soc_min: 0
soc_max: 1
standby_loss: 0 1/h
- tech_id: X2
type: conversion
tech_params:
lifetime: 20 a
costs:
opex_per_energy: 0.5 CHF/kWh
conversion_params:
in_ecs:
- in_id: E1
in_part: 0.7 kWh
- in_id: E2
in_part: 0.3 kWh
main_in_ec: E1
out_ecs:
- ec_id: E3
out_eff: [[2020, 0.61], [2021, 0.66]]
- ec_id: E4
out_eff: efficiency_profiles.csv
main_out_ec: E3
- tech_id: X3
type: solar
tech_params:
lifetime: 30 a
conversion_params:
in_ecs:
- in_id: EG1
in_part: 1 kWh
out_ecs:
- ec_id: E3
out_eff: 0.17
solar_params:
curtail_max_rel: 1
- tech_id: X5
type: ates
tech_params:
lifetime: 30 a
ates_params:
ecs:
elec: E1
heat: E2
cool: E3
density_fluid: 1 kg/m^3
specific_heat_capacity_fluid: 4.2 kWh/(kg*K)
well_radius: 0.5 m
well_pair_area_calc_method: smallest rectangle
elec_per_flow_heat: 0.01 kWh/m^3
elec_per_flow_cool: 0.02 kWh/m^3
- tech_id: X6
tech_params:
lifetime: 30 a
coupling_params:
main_tech_id: X1
cap_factor: 0.5
- tech_id: X7
type: heatpump
tech_params:
lifetime: 30 a
heatpump_params:
ecs:
elec: E10
heat_in: E2
heat_out: E3
cool_in: E4
cool_out: E5
cop_factor: 0.5
- tech_id: X8
type: ebm
tech_params:
lifetime: 20 a
ebm_params:
ec: E0
storage_cap: 52
in_eff: 0.95
out_eff: 1
standby_loss: 0.01 1/h
soc_min: 0.1
soc_max: 1
charge_max: 45 kW
discharge_max: 40 kW
discharge_controllability: 0.8"
techs (optional, default=[]): Identifiable list of technologies
tech_id (mandatory): Technology id.
- type (optional, default=None): Type of technology. If this parameter is set correctly, the technology will be added to the respective submodel. Acceptable values are:
storage(storage model),conversion(conversion model),solar(solar model)ebm(EBM model),ates(ates model) andheatpump(heatpump model)..
Technology parameters:
tech_params (optional, default={}) Dictionary with parameters for the tech model.
lifetime (mandatory, [a]): Lifetime of technology from installation to EOL.
unit_cap_min (optional, default=0, [CAP], per-year): Minimal amount of capacity that has to be installed if any installation takes place (so installed capacity will either be 0 or at least this amount).
trl (optional, default= \(\infty\), , [-], per-year): Technology Readiness Level (TRL) for the technology. Only technologies with a TRL above the threshold value specified in stages.yaml can be installed.
Technology cost parameters:
costs (mandatory): Dictionary with cost parameters for the tech model and the conversion model.
interest_rate (optional, default=None, [-]): Interest rate for this technology. If none is specified, the default interest rate defined in stages.yaml will be used.
one_time_capex (optional, default=0, [CHF], per-year): Fixed CAPEX cost that occurs if any amount of capacity is installed for this technology.
capex_per_cap (optional, default=0, [CHF/CAP], per-year): CAPEX cost per amount of installed capacity for this technology.
one_time_opex (optional, default=0, [CHF], per-year): Operation & maintenance cost that occurs if any amount of this technology is used during the time horizon.
opex_per_cap (optional, default=0, [CHF/CAP], per-year): Operation & maintenance cost per amount of installed capacity for this technology.
opex_per_energy (optional, default=0, [CHF/(ec_out_main)], per-year): Operation & maintenance cost for conversion technologies per amount of output of the conversion technology’s main output carrier (see conversion model for more details)
Technology emission parameters:
emissions (optional, default={}): Dictionary with emission parameters for the tech model.
co2_per_cap (optional, default=0, [kg/CAP], per-year): Embodied CO2 that arises per amount of newly installed capacity for this technology.
Storage parameters:
storage_params (mandatory for storage techs): Dictionary with parameters for the storage model.
ec (mandatory for storage techs): Id of EC that is storable in this technology. The value must be an id which is defined in ecs.yaml.
in_eff (optional, default=1, [-], per-year): Efficiency of storage input, i.e.; percentage of the charging energy that makes it into the storage technology.
out_eff (optional, default=1, [-], per-year): Efficiency of output, i.e.; percentage of the energy that can be used at the end of the discharging process.
charge_max (optional, default=1, [1/h], per-year): Maximal relative charging power per installed capacity.
discharge_max (optional, default=1, [1/h], per-year): Maximal relative discharging power per installed capacity.
soc_min (optional, default=0, [-], per-year): Minimal stage of charge (fraction of total storage capacity) that is allowed in the storage technology.
soc_max (optional, default=1, [-], per-year): Maximal stage of charge (fraction of total storage capacity) that is allowed in the storage technology.
standby_loss (optional, default=0, [1/h], per-year): Fraction of stored energy that is lost per timestep independent of other storage operations.
Conversion parameters:
conversion_params (mandatory for conversion techs): Dictionary with parameters for the conversion model.
in_ecs (mandatory for conversion techs): Identifiable list that defines the composition of conversion inputs.
in_id (mandatory for conversion techs): Id of input EC or input EC group.
in_part (mandatory for conversion techs, [ec_in], per-year): Input part of the conversion technology’s total input energy that consists of the above ec. The relation between all in_parts defines the relation between all input flows into the conversion technology (cf. conversion model)
main_in_ec (mandatory for conversion techs with more than one input ec, default=e for conversion techs with a single in_ec e): Id of input ec that is desgignated the main input ec.
out_ecs (mandatory for conversion techs): Identifiable list that defines the efficiency values of the conversion technology’s energy output.
ec_id (mandatory for conversion techs): Id of output ec.
out_eff (mandatory for conversion techs, [ec_out / ec_in_main], per-year or per-ts): This efficiency value describes the quotient between this output ec’s energy output and the main input ec’s energy input. It can be given as a year-dependent parameter. Alternatively, it can be given by a relative path to a time series file. This csv file must have the three headers: stage, tech and ec.
main_out_ec (mandatory for conversion techs with more than one output ec, default=e, for conversion techs with a single out_ec e): Id of output ec that is designated the main output ec.
stage_id, S1, S2
tech_id, X2, X2
ec_id, E4, E4
unit, 1, 1
1, 0.05, 0.15
2, 0.06, 0.16
3, 0.07, 0.17
Solar parameters
solar_params (optional, default={}): Dictionary with parameters for the solar model.
curtail_max_rel (optional, default=1, [-], per-year): Fraction of solar power that can be curtailed. A value of 0 means that all power has to be used while a value of 1 indicates that any part of the energy can be curtailed.
ATES parameters
ates_params (mandatory for ATES techs): Dictionary with parameters for the ates model
ecs (mandatory): Dictionary with ecs of the ATES technology.
elec (mandatory): Ec that models electricity consumption of the well pumps.
heat (mandatory): Ec that models heating energy extracted from the warm wells.
cool (mandatory): Ec that models cooling energy extracted from the cold wells.
density_fluid (mandatory, [kg/m^3]): Density of the fluid stored in the aquifer.
specific_heat_capacity_fluid (mandatory, [Ws/(kg*K)]): Specific heat capacity of the fluid stored in the aquifer.
well_radius (optional, [m]): Radius of a well. This parameter becomes mandatory if the parameters max_pump_rate_per_warm_well or max_pump_rate_per_cold_well in hubs.yaml are not specified, since the radius is then used to calculate these rates.
well_pair_area_calc_method (optional, default=”smallest rectangle”): Calculation method for the area taken up by a well pair. Acceptable values are “two circles” and “smallest rectangle”.
elec_per_flow_heat (optional, default=0, [kWh/m^3], per-year): Electricity consumption (in kW) for each amount of warm-to-cold volume flow (in \(m^3/h\)). This parameter is used to calculate the ATES electricity consumption per amount of output heating energy if the parameter elec_per_energy_heat is not set.
elec_per_flow_cool (optional, default=0, [kWh/m^3], per-year): Electricity consumption (in kW) for each amount of cold-to-warm volume flow (in \(m^3/h\)). This parameter is used to calculate the ATES electricity consumption per amount of output cooling energy if the parameter elec_per_energy_cool is not set.
Electricity-Based Mobility (EBM) parameters
ebm_params (mandatory for EBM techs): Dictionary with parameters for the EBM model.
ec (mandatory for EBM techs): Id of the ec that powers EBM vehicles.
storage_cap (mandatory, [ec], per-year): Storage capacity of a single EBM vehicle.
in_eff (optional, default=1, [-], per-year): Efficiency of storage input, i.e.; percentage of the charging energy that makes it into the EBM technology.
out_eff (optional, default=1, [-], per-year): Efficiency of output, i.e.; percentage of the energy that can be used at the end of the discharging process.
standby_loss (optional, default=0, [-], per-year): Fraction of stored energy that is lost per timestep independent of other storage operations.
soc_min (optional, default=0, [-], per-year): Minimal stage of charge (fraction of the total storage capacity) that is allowed in the EBM technology.
soc_max (optional, default=1, [-], per-year): Maximal stage of charge (fraction of total storage capacity) that is allowed in the EBM technology.
charge_max (optional, default= \(\infty\), [ec/h], per-year): Maximal charging power of a single EBM vehicle.
discharge_max (optional, default= \(\infty\), [ec/h], per-year): Maximal discharging power of a single EBM vehicle.
discharge_controllability (optional, default=1, [-], per-year): Discharge controllability of the EBM fleet. This is a heuristic factor that dampens the maximal discharge speed of the EBM fleet. A discharge control of 1 means that the available (see hubs.yaml for the EBM availability parameter) portion of the fleet can be discharged at its maximal discharging power. A discharge control of 0 means that discharging is impossible.
Coupling parameters
coupling_params: (mandatory for coupled techs): Dictionary with parameters for coupling (see tech model).
main_tech_id (mandatory): Id of this tech’s main tech.
cap_factor (mandatory, [CAP_sub/CAP_main]): Fraction of this tech’s capacity in relation to the main tech’s capacity.
Heat pump parameters
heatpump_params: (mandatory for heat pump techs): Dictionary with parameters for heat pumps (see heat pump model).
ecs (mandatory): Dictionary with energy carriers for the heat pump.
elec (mandatory): Ec id of the heat pump’s electricity ec.
heat_in (mandatory): Ec id of the heat pump’s input ec in heating mode.
heat_out (mandatory): Ec id of the heat pump’s output ec in heating mode.
cool_in (mandatory): Ec id of the heat pump’s input ec in cooling mode.
cool_out (mandatory): Ec id of the heat pump’s output ec in cooling mode.
cop_factor (optional, default=0.5, [-], per-year): Parameter used to calculate heat pump COP from Carnot efficiency. Used together with temperatures if cop is not directly specified in hubs.yaml.
network_techs.yaml
net_techs:
- net_tech_id: N1
ec: E1
lifetime_years: 30
trl: [[2020, 3], [2025, 4]]
unit_cap_min: 5
trans_decay: 0
costs:
interest_rate_id: low
one_time_capex: 1
capex_per_cap: 1
one_time_opex: 0
opex_per_cap: 0
opex_per_energy: 0
emissions:
co2_per_cap: 25
co2_per_energy: 0.2
Network technology parameters
net_techs (optional, default={}): Dictionary with network technology parameters for the network model.
net_tech_id (mandatory): Network technology id.
ec (mandatory): ID of EC that is being transported with this technology.
lifetime_years (mandatory, [a]): Lifetime of technology from installation to EOL.
trl (optional, default= \(\infty\), [-], per-year): Technology Readiness Level (TRL) for the network technology. Only technologies with a TRL above the threshold value specified in stages.yaml can be installed.
unit_cap_min: (optional, default=0, [ec/h], per-year): Minimal amount of capacity that has to be installed if any installation takes place (so installed capacity will either be 0 or at least this amount).
trans_decay (optional, default=0, [1/m], per-year): Exponential factor in the transmission decay model resulting in a transmission loss along the linkj. A trans_decay value of 0 means that no energy is lost in the transmission process at all.
Network technology cost parameters
costs (mandatory): Dictionary with cost parameters for the network model.
interest_rate (optional, default=None, [-]): Interest rate for this network technology. If none is specified, the default interest rate defined in stages.yaml will be used.
one_time_capex (optional, default=0, [CHF/m], per-year): Fixed CAPEX cost per length that occurs if any amount of capacity is installed for this network technology.
capex_per_cap (optional, default=0, [CHF/((ec/h)*m)], per-year): CAPEX cost per amount of installed capacity and length for this network technology.
one_time_opex (optional, default=0, [CHF/m], per-year): Operation & maintenance cost per length that occurs if any amount of this network technology is used during the time horizon.
opex_per_cap (optional, default=0, [CHF/((ec/h)*m)], per-year): Operation & maintenance cost per amount of installed capacity and length for this technology.
opex_per_energy (optional, default=0, [CHF/(ec*m)], per-year): Operation & maintenance cost per amount of transported energy and length for this technology.
Network technology emissions paramaeters
emissions (optional, default={}): Dictionary with emission parameters for the network model.
co2_per_cap (optional, default=0, [kg/((ec/h)*m)], per-year): Embodied CO2 that arises per length and per amount of newly installed capacity for this technology.
co2_per_energy (optional, default=0, [kg/(ec*m)], per-year): Embodied CO2 that arises per length and per amount of transported energy for this technology.
ecs.yaml
in_ec_groups:
- ec_group_id: EG1
ecs: [E1, E2]
ecs:
- ec_id: E1
is_energy: True
imp_exp_type: cross
unit: kWh
heur_max: 1000 kW
heur_sum_max: 10000 kWh
- ec_id: E2
unit: kWh
- ec_id: E3
unit: kWh
- ec_id: E4
unit: kWh
- ec_id: E5
unit: kWh
Input EC groups:
in_ec_groups (optional, default=[]): Group of ECs which can be used to define a conversion technology group of the same size. One conversion technology will be created for every member of the EC group, and this technology will have this EC as input. In the above example, the technology with id X3 has the EC group EG1 as an input. Since this EC group contains the ECs E1 and E2, ehubX will create two technologies named X3_E1 and X3_E2 which have the input ECs E1 and E2, respectively. All other parameters of these technologies are taken from the yaml node of X3. For the specification of hub-dependent technology parameters in hubs.yaml, these have be specified for the actual technologies X3_E1 and X3_E2. Adding a block for X3 there will not have any effect.
ec_group_id (mandatory): EC group id.
ecs (mandatory): List of EC ids in the EC group. Must have at least one entry.
ECs
ecs (optional, default=[]): Identifiable list of EC ids.
ec_id (mandatory): EC id.
unit (mandatory): Unit of the ec. Must either be a mass unit or an energy unit.
is_energy (optional, default=True): Whether or not this is a “real” energy carrier, i.e.; measured in energy and power units. This parameter is relevant for the self-sufficiency model.
imp_exp_type (optional, default=none): Specification whether import and export of this ec works as as cross-border, internal, or whether it remains unspecified. This setting is relevant for the self-sufficiency model. Acceptable values are “cross” (cross-border), “internal” (internal) or “none” (unspecified).
heur_max (optional, default=None, [ec/h]): Heuristic maximum value per timestep for all streams flowing into or out of a balancing node for this ec. This limit will only be applied if no other, more specific limits are available.
heur_sum_max (optional, default=None, [ec]): Heuristic maximum value for all streams (summed over all timesteps) flowing into or out of a balancing node for this ec. This limit will only be applied if no other, more specific limits are available.
imports.yaml
- stages: S1
hubs: H1
ec: E1
price: 0.1 CHF/kWh
min: 0 kW
max: 1_000 kW
co2: 0.05 kg/kWh
sum_min: 100 kWh
sum_max: 10_000 kWh
- stages: S2
hubs: H1
ec: E1
profile_path: import_profiles.csv
This file contains parameters for the import model.
stages (mandatory): Stage ids for which import data is set in this entry.
hubs (mandatory): Hub ids for which import data is set in this entry.
ecs (mandatory): EC ids for which import data is set in this entry.
price (optional, default=0, [CHF/ec], per-ts): Price for imported energy per timestep.
min (optional, default=0, [ec/h], per-ts): Minimal amount of imported energy per timestep.
max (optional, default= \(\infty\), [ec/h], per-ts): Maximal amount of imported energy per timestep.
co2 (optional, default=0, [kg/ec], per-ts): Embodied CO2 that arises per amount of imported energy per timestep.
sum_min (optional, default=0, [ec]): Minimal value for the summed-up imports across the time horizon.
sum_max (optional, default= \(\infty\), [ec]): Maximal value for the summed-up imports across the time horizon.
profile_path (optional, default=None, file): File path (relative to imports.yaml) of a time series file with time-specific data for the time-dependent import parameters above. It has to contain the following headers: * stage_id: Stage id, only the currently active stage id is parsed. * hub_id: Hub id, only the currently active hub id is parsed. * ec_id: EC id, only the currently active EC id is parsed. * profile_key: Name of parameter for which time-dependent data is being defined. Only price, min, max and co2 are parsed.
stage_id, S2, S2, S2, S2
hub_id, H1, H1, H1, H1
ec_id, E1, E1, E1, E1
profile_key, price, min, max, co2
unit, CHF/kWh, kW, kW, kg/kWh
1, 0.11, 20, 1500, 1.5
2, 0.12, 21, 1550, 1.6
3, 0.13, 22, 1600, 1.7
exports.yaml
The exports file has the exact same syntax and scope as the imports.yaml file. It contains data for the export model.
demands.yaml
demand_profiles:
- demand_profiles.csv
demand_sums:
- stages: S1
hubs: H1
ec: E2
demand_sum: 250 kWh
load_shedding:
- stages: [S1, S2]
hubs: H1
ec: E1
enabled: True
max_abs: 400 kW
max_rel: 0.5
energy_cost: 200_000 CHF/kWh
profile_path: loadshedding_profiles.csv
load_shifting:
- loadshift_id: LS1
stages: [S1, S2]
hubs: H1
ec: E1
interval_length: 2 h
capex_per_cap: 10 CHF/kWh
cap_min: 50 kWh
cap_max: 600 kWh
cap_init: 50 kWh
max_above_abs: 200 kW
max_below_abs: 150 kW
peak_cost_above: 300 CHF/kW
peak_cost_below: 250 CHF/kW
energy_cost_above: 0.50 CHF/kWh
energy_cost_below: 0.25 CHF/kWh
fix_cost: 2_000 CHF/h
profile_path: loadshifting_profiles.csv
Demand parameters
demands (optional, default={}): Identifiable list of demands that contain data for the demand model. Each demand encompasses a set of (stage, hub, EC) tuples for which demand values are defined. If such a tuple occurs in multiple demands, the values are summed up to calculate the actual demand that is used in the model.
demand_id (mandatory): Demand id.
profile_path (mandatory, file): File path (relative to demands.yaml) of a time series file with time-specific data for the demand values. It has to contain the following headers: * stage_id: Stage id. * hub_id: Hub id. * ec_id: EC id.
ec_id, E1, E1
stage_id, S1, S2
hub_id, H1, H1
unit, kW, kW
1, 100, 200
2, 110, 210
3, 120, 220
Load shedding parameters
load_shedding (optional, default={}): Dictionary with parameters for the load shifting model.
stages (mandatory): List of stage ids for this load shedding entry. Can also be a single stage id.
hubs (mandatory): List of hub ids for this load shedding entry. Can also be a single hub id.
ecs (mandatory): List of EC ids for this load shedding entry. Can also be a single EC id.
enabled (optional, default=None): Overwrites enabled (preset).
max_abs (optional, default=None, [ec/h], per-ts): Maximal absolute amount of demand that can be shed in this section. This parameter and max_rel impose upper bounds on how much the demand energy can be reduced, both of which will be respected by the model.
max_rel (optional, default=None, [-], per-ts): Maximal portion of demand that can be shed in this section. This parameter and max_abs impose upper bounds on how much the demand energy can be reduced, both of which will be respected by the model.
energy_cost (optional, default=None, [CHF/ec], per-ts): Penalization cost per amount of energy that is shed in this section, per timestep.
profile_path (optional, default=None, file): File path (relative to demands.yaml) of a time series file with time-specific data for the time-dependent parameters of this manual section above. It has to contain the following headers:
stage_id: Stage id, only the stages occuring in stages above are parsed.
hub_id: Hub id, only the hubs occuring in hubs above are parsed.
ec_id: EC id, only the stages occuring in ecs above are parsed.
profile_key: Name of parameter for which time-dependent data is being defined. Only max_abs, max_rel and energy_cost are parsed.
stage_id, S1, S1, S1
hub_id, H1, H1, H1
ec_id, E1, E1, E1
profile_key, max_abs, max_rel, energy_cost
unit, kW, 1, CHF/kWh
1, 300, 0.30, 120_000
2, 310, 0.31, 121_000
3, 320, 0.32, 122_000
Load shifting parameters
load_shifting (optional, default={}): Identifiable list with parameters for the load shifting model.
load_shift_id (mandatory): Load shift id.
stages (mandatory): List of stage ids for this load shifting element. Can also be a single stage id.
hubs (mandatory): List of hub ids for this load shifting element. Can also be a single hub id.
ecs (mandatory): List of EC ids for this load shifting element. Can also be a single EC id.
interval_length (mandatory, [-]): Number of timesteps that are included in the load shift interval.
capex_per_cap (optional, default=0, [CHF/ec]): CAPEX cost for load shifting capacity installation.
cap_min (optional, default=0, [ec]): Minimal amount of load shifting capacity that has to be available for this load shift element.
cap_max (optional, default= \(\infty\), [ec]): Maximal amount of load shifting capacity that is allowed for this load shift element.
cap_init (optional, default=0, [ec]): Initial amount of load shifting capacity that is available for this load shift element.
max_above_abs (optional, default= \(\infty\), [ec/h], per-ts): Maximal amount of load shifting that can occur above the demand curve. This parameter and max_above_rel impose upper bounds how much the supplied energy is allowed to exceed the demand curve, both of which will be respected by the model.
max_above_rel (optional, default= \(\infty\), [-], per-ts): Maximal amount of load shifting that can occur above the demand curve, relative to the demand curve itself. A value of max_above_rel=0 means that no energy beyond the demand is allowed to be delivered. A value of max_above_rel=1 means that twice the value of the demand curve is allowed to be delivered. This parameter and max_above_abs impose upper bounds on how much the supplied energy is allowed to exceed the demand curve, both of which will be respected by the model.
max_below_abs (optional, default= \(\infty\), [ec/h], per-ts): Maximal amount of load shifting that can occur below the demand curve. This parameter and max_below_rel impose upper bounds on how much of the demand energy can be withheld by the system, both of which will be respected by the model.
max_below_rel (optional, default=1, [-], per-ts): Maximal amount of load shifting that can occur below the demand curve, relative to the demand curve itself. A value of max_below_rel=0 means that no part of the demand energy is allowed to be withheld. A value of max_above_rel=1 means that all of the demand energy can be withheld. This parameter and max_below_abs impose upper bounds how much of the demand energy can be withheld, both of which will be respected by the model.
peak_cost_above (optional, default=0, [CHF/(ec/h)]): Cost for the largest supply excess above the demand curve on the time horizon.
peak_cost_below (optional, default=0, [CHF/(ec/h)]): Cost for the largest amount of withheld demand energy on the time horizon.
energy_cost_above (optional, default=0, [CHF/ec], per-ts): Penalization cost per amount of excess energy beyond the demand curve, per timestep.
energy_cost_below (optional, default=0, [CHF/ec], per-ts): Penalization cost per amount of energy withheld from the demand curve, per timestep.
fix_cost (optional, default=0, [CHF/h], per-ts): Fixed cost that arises per timestep when any amount of load shifting (either over or under the demand curve) occurs. Be aware: For each load shift element where this parameter is set, one binary variable will be added to the MILP model for each time step. This will drastically increase the complexity and solving speed of the model, and should only be used for comparably small systems.
profile_path (optional, default=None, file): File path (relative to demands.yaml) of a time series file with time-specific data for the time-dependent parameters of this load shift element. It has to contain the following headers:
loadshift_id: Load shift id, only the current load shift id will be parsed.
profile_key: Name of parameter for which time-dependent data is being defined. Only max_above_abs, max_above_rel, max_below_abs, max_below_rel, energy_cost_above and energy_cost_below are parsed.
loadshift_id, LS1, LS1, LS1, LS1, LS1, LS1
profile_key, max_above_abs, max_above_rel, max_below_abs, max_below_rel, energy_cost_above, energy_cost_below
unit, kW, 1, kW, 1, CHF/kWh, CHF/kWh
1, 150, 0.10, 100, 0.20, 0.50, 0.30
2, 151, 0.11, 101, 0.21, 0.51, 0.31
3, 152, 0.12, 102, 0.22, 0.52, 0.32
solar_areas.csv
stage_id,S1
hub_id, H2
E3, 500
This file contains the amount of available area [m^2] that can be used for the installation of solar technologies. It is required by the solar model and needs to contain the headers
stage_id: Stage id.
hub_id: Hub id.
Furthermore, each main row contains the solar area values for a specific energy carrier.
solar_irradiation.csv
stage_id, S1, S1, S2, S2
ec_id, E1, E2, E1, E2
1, 5.0, 8.0, 6.0, 9.0
2, 5.1, 8.1, 6.0, 9.1
3, 5.2, 8.2, 6.0, 9.2
This file contains time series for solar irradiation [(ec/h)/m^2] which are required parameters for the solar model. It needs to contain the headers
stage_id: Stage id.
ec_id: EC id.