Core component classes

The core component classes of this framework are the

  • Source and Sink (inherits from Source) classes
  • Conversion class
  • Transmission class
  • Storage class

Each of these classes inherits from the Component class. Instances (with concrete values) of these classes can be added to an EnergySystemModel class to specify a concrete energy system.

Component class

Class description:

class component.Component(esM, name, dimension, hasCapacityVariable, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Doc

__init__(esM, name, dimension, hasCapacityVariable, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Constructor for creating an Conversion class instance.

Required arguments:

Parameters:
  • esM (EnergySystemModel instance from the FINE package) – energy system model to which the component should be added. Used for unit checks.
  • name (string) – name of the component. Has to be unique (i.e. no other components with that name can already exist in the EnergySystemModel instance to which the component is added).
  • hasCapacityVariable (boolean) –

    specifies if the component should be modeled with a capacity or not. Examples:

    • An electrolyzer has a capacity given in GW_electric -> hasCapacityVariable is True.
    • In the energy system, biogas can, from a model perspective, be converted into methane (and then used in conventional power plants which emit CO2) by getting CO2 from the environment. Thus, using biogas in conventional power plants is, from a balance perspective, CO2 free. This conversion is purely theoretical and does not require a capacity -> hasCapacityVariable is False.
    • A electricity cable has a capacity given in GW_electric -> hasCapacityVariable is True.
    • If the transmission capacity of a component is unlimited hasCapacityVariable is False.
    • A wind turbine has a capacity given in GW_electric -> hasCapacityVariable is True.
    • Emitting CO2 into the environment is not per se limited by a capacity -> hasCapacityVariable is False.

Default arguments:

Parameters:
  • capacityVariableDomain (string ('continuous' or 'discrete')) – the mathematical domain of the capacity variables, if they are specified. By default, the domain is specified as ‘continuous’ and thus declares the variables as positive (>=0) real values. The second input option that is available for this parameter is ‘discrete’, which declares the variables as positive (>=0) integer values.
    * the default value is ‘continuous’
  • capacityPerPlantUnit (strictly positive float) – capacity of one plant of the component (in the specified physicalUnit of the plant). The default is 1, thus the number of plants is equal to the installed capacity. This parameter should be specified when using a ‘discrete’ capacityVariableDomain. It can be specified when using a ‘continuous’ variable domain.
    * the default value is 1
  • hasIsBuiltBinaryVariable (boolean) –

    specifies if binary decision variables should be declared for

    • each eligible location of the component, which indicate if the component is built at that location or not (dimension=1dim).
    • each eligible connection of the transmission component, which indicate if the component is built between two locations or not (dimension=2dim).

    The binary variables can be used to enforce one-time investment cost or capacity-independent annual operation cost. If a minimum capacity is specified and this parameter is set to True, the minimum capacities are only considered if a component is built (i.e. if a component is built at that location, it has to be built with a minimum capacity of XY GW, otherwise it is set to 0 GW).
    * the default value is False

  • bigM (None or strictly positive float) – the bigM parameter is only required when the hasIsBuiltBinaryVariable parameter is set to True. In that case, it is set as a strictly positive float, otherwise it can remain a None value. If not None and the ifBuiltBinaryVariables parameter is set to True, the parameter enforces an artificial upper bound on the maximum capacities which should, however, never be reached. The value should be chosen as small as possible but as large as necessary so that the optimal values of the designed capacities are well below this value after the optimization.
    * the default value is None
  • locationalEligibility

    Pandas

    • Series that indicates if a component can be built at a location (=1) or not (=0) (dimension=1dim) or
    • Pandas DataFrame that indicates if a component can be built between two locations (=1) or not (=0) (dimension=2dim).

    If not specified and a maximum or fixed capacity or time series is given, the parameter will be set based on these inputs. If the parameter is specified, a consistency check is done to ensure that the parameters indicate the same locational eligibility. If the parameter is not specified and also no other of the parameters is specified it is assumed that the component is eligible in each location and all values are set to 1. This parameter is key for ensuring small built times of the optimization problem by avoiding the declaration of unnecessary variables and constraints.
    * the default value is None

  • capacityMin – if specified, Pandas Series (dimension=1dim) or Pandas DataFrame (dimension=2dim) indicating minimum capacities else None. If binary decision variables are declared the minimum capacity is only enforced if the component is built .
    * the default value is None
  • capacityMax – if specified, Pandas Series (dimension=1dim) or Pandas DataFrame (dimension=2dim) indicating maximum capacities else None.
    * the default value is None
  • sharedPotentialID (string) – if specified, indicates that the component has to share its maximum potential capacity with other components (i.e. due to space limitations). The shares of how much of the maximum potential is used have to add up to less then 100%.
    * the default value is None
  • capacityFix – if specified, Pandas Series (dimension=1dim) or Pandas DataFrame (dimension=2dim) indicating fixed capacities else None.
    * the default value is None
  • isBuiltFix – if specified, Pandas Series (dimension=1dim) or Pandas DataFrame (dimension=2dim) indicating fixed decisions in which or between which locations the component is built (i.e. sets the isBuilt binary variables) else None.
    * the default value is None
  • investPerCapacity

    the invest of a component is obtained by multiplying the built capacities of the component (in the physicalUnit of the component) with the investPerCapacity factor. The investPerCapacity can either be given as

    • a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro) (dimension=1dim) or
    • a float or a Pandas DataFrame with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model divided by the there specified lengthUnit (i.e. Euro/m, Dollar/m, 1e6 Euro/km) (dimension=2dim)


    * the default value is 0

  • investIfBuilt

    a capacity-independent invest which only arises in a location if a component is built at that location. The investIfBuilt can either be given as

    • a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro) (dimension=1dim) or
    • a float or a Pandas DataFrame with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model divided by the there specified lengthUnit (i.e. Euro/m, Dollar/m, 1e6 Euro/km) (dimension=2dim)


    * the default value is 0

  • opexPerCapacity

    annual operational cost which are only a function of the capacity of the component (in the physicalUnit of the component) and not of the specific operation itself are obtained by multiplying the capacity of the component at a location with the opexPerCapacity factor. The opexPerCapacity can either be given as

    • a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro) (dimension=1dim) or
    • a float or a Pandas DataFrame with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model divided by the there specified lengthUnit (i.e. Euro/m, Dollar/m, 1e6 Euro/km) (dimension=2dim)


    * the default value is 0

  • opexIfBuilt

    a capacity-independent annual operational cost which only arises in a location if a component is built at that location. The opexIfBuilt can either be given as

    • a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro) (dimension=1dim) or
    • a float or a Pandas DataFrame with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model divided by the there specified lengthUnit (i.e. Euro/m, Dollar/m, 1e6 Euro/km) (dimension=2dim)


    * the default value is 0

  • interestRate – interest rate which is considered for computing the annuities of the invest of the component (depreciates the invests over the economic lifetime). A value of 0.08 corresponds to an interest rate of 8%.
    * the default value is 0.08
  • economicLifetime – economic lifetime of the component which is considered for computing the annuities of the invest of the component (aka depreciation time).
    * the default value is 10
  • modelingClass (a class inherting from ComponentModeling) – to the Component connected modeling class.
    * the default value is ModelingClass

Inheritance diagram:

Inheritance diagram of Component

Source and Sink class

Class description:

class sourceSink.Source(esM, name, commodity, hasCapacityVariable, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, operationRateMax=None, operationRateFix=None, tsaWeight=1, commodityLimitID=None, yearlyLimit=None, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerOperation=0, commodityCost=0, commodityRevenue=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Doc

__init__(esM, name, commodity, hasCapacityVariable, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, operationRateMax=None, operationRateFix=None, tsaWeight=1, commodityLimitID=None, yearlyLimit=None, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerOperation=0, commodityCost=0, commodityRevenue=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Constructor for creating an Source class instance. The Source component specific input arguments are described below. The general component input arguments are described in the Component class. Note: the Sink class inherits from the Source class and is initialized with the same parameter set

Required arguments:

Parameters:
  • commodity (string) – to the component related commodity.
  • hasCapacityVariable (boolean) –

    specifies if the component should be modeled with a capacity or not. Examples:

    • A wind turbine has a capacity given in GW_electric -> hasCapacityVariable is True.
    • Emitting CO2 into the environment is not per se limited by a capacity -> hasCapaityVariable is False.

Default arguments:

Parameters:
  • operationRateMax (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices have to match the in the energy system model specified locations.) – if specified indicates a maximum operation rate for each location and each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the commodityUnit for each time step.
    * the default value is None
  • operationRateFix (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices have to match the in the energy system model specified locations.) – if specified indicates a fixed operation rate for each location and each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the commodityUnit for each time step.
    * the default value is None
  • tsaWeight (positive (>= 0) float) – weight with which the time series of the component should be considered when applying time series aggregation.
    * the default value is 1
  • commodityLimitID (string) – can be specified to limit an annual commodity import/export over the energySystemModel’s boundaries for one or multiple Source/Sink components. If the same ID is used in multiple components, the sum of all imports and exports is considered. If a commoditiyLimitID is specified, the yearlyLimit parameters has to be set as well.
    * the default value is None
  • yearlyLimit (float) –

    if specified, yearly import/export commodity limit for all components with the same commodityLimitID. If positive, the commodity flow leaving the energySystemModel is limited. If negative, the commodity flow entering the energySystemModel is limited. If a yearlyLimit is specified, the commoditiyLimitID parameters has to be set as well. Examples:

    • CO2 can be emitted in power plants by burning natural gas or coal. The CO2 which goes into the atmosphere over the energy system’s boundaries is modelled as a Sink. CO2 can also be a Source, taken directly from the atmosphere (over the energy system’s boundaries) for a methanation process. The commodityUnit for CO2 is tonnes_CO2. Overall, +XY tonnes_CO2 are allowed to be emitted during the year. All Sources/Sinks producing or consuming CO2 over the energy system’s boundaries have the same commodityLimitID and the same yearlyLimit of +XY.
    • The maximum annual import of a certain chemical (commodityUnit tonnes_chem) is limited to XY tonnes_chem. The Source component modeling this import has a commodityLimitID “chemicalComponentLimitID” and a yearlyLimit of -XY.


    * the default value is None

  • opexPerOperation (positive (>=0) float or Pandas Series with positive (>=0) values. The indices of the series have to equal the in the energy system model specified locations.) – cost which is directly proportional to the operation of the component is obtained by multiplying the opexPerOperation parameter with the annual sum of the operational time series of the components. The opexPerOperation can either be given as a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro).
    * the default value is 0
  • commodityCost (positive (>=0) float or Pandas Series with positive (>=0) values. The indices of the series have to equal the in the energy system model specified locations.) –

    cost which is directly proportional to the operation of the component is obtained by multiplying the commodityCost parameter with the annual sum of the time series of the components. The commodityCost can either be given as a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro). Example:

    • In a national energy system, natural gas could be purchased from another country with a certain cost.


    * the default value is 0

  • commodityRevenue (positive (>=0) float or Pandas Series with positive (>=0) values. The indices of the series have to equal the in the energy system model specified locations.) –

    revenue which is directly proportional to the operation of the component is obtained by multiplying the commodityRevenue parameter with the annual sum of the time series of the components. The commodityRevenue can either be given as a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro). Example:

    • Modeling a PV electricity feed-in tariff for a household


    * the default value is 0

Inheritance diagram:

Inheritance diagram of Source

Class description:

class sourceSink.Sink(esM, name, commodity, hasCapacityVariable, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, operationRateMax=None, operationRateFix=None, tsamWeight=1, commodityLimitID=None, yearlyLimit=None, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerOperation=0, commodityCost=0, commodityRevenue=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]
__init__(esM, name, commodity, hasCapacityVariable, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, operationRateMax=None, operationRateFix=None, tsamWeight=1, commodityLimitID=None, yearlyLimit=None, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerOperation=0, commodityCost=0, commodityRevenue=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Constructor for creating an Sink class instance.

The Sink class inherits from the Source class. They coincide with there input parameters (see Source class for the parameter description) and differentiate themselves by the sign parameters, which is equal to -1 for Sink objects and +1 for Source objects.

Inheritance diagram:

Inheritance diagram of Sink

Conversion class

Class description:

class conversion.Conversion(esM, name, physicalUnit, commodityConversionFactors, hasCapacityVariable=True, capacityVariableDomain='continuous', capacityPerPlantUnit=1, linkedConversionCapacityID=None, hasIsBuiltBinaryVariable=False, bigM=None, operationRateMax=None, operationRateFix=None, tsaWeight=1, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerOperation=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Conversion class

The functionality of the the Conversion class is fourfold: * ...

The parameter which are stored in an instance of the class refer to: * ...

Instances of this class provide function for * ...

Last edited: July 27, 2018
@author: Lara Welder

__init__(esM, name, physicalUnit, commodityConversionFactors, hasCapacityVariable=True, capacityVariableDomain='continuous', capacityPerPlantUnit=1, linkedConversionCapacityID=None, hasIsBuiltBinaryVariable=False, bigM=None, operationRateMax=None, operationRateFix=None, tsaWeight=1, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerOperation=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Constructor for creating an Conversion class instance. Capacities are given in the plants physicalUnit. The Conversion component specific input arguments are described below. The general component input arguments are described in the Component class.

Required arguments:

Parameters:
  • physicalUnit (string) – reference physical unit of the plants to which maximum capacity limitations, cost parameters and the operation time series refer to.
  • commodityConversionFactors (dictionary, assigns commodities (string) to a conversion factors (float)) –

    conversion factors with which commodities are converted into each other with one unit of operation (dictionary). Each commodity which is converted in this component is indicated by a string in this dictionary. The conversion factor related to this commodity is given as a float. A negative value indicates that the commodity is consumed. A positive value indicates that the commodity is produced. Check unit consistency when specifying this parameter! Examples:

    • An electrolyzer converts, simply put, electricity into hydrogen with an electrical efficiency of 70%. The physicalUnit is given as GW_electric, the unit for the ‘electricity’ commodity is given in GW_electric and the ‘hydrogen’ commodity is given in GW_hydrogen_lowerHeatingValue -> the commodityConversionFactors are defined as {‘electricity’:-1,’hydrogen’:0.7}.
    • A fuel cell converts, simply put, hydrogen into electricity with an efficiency of 60%.

    The physicalUnit is given as GW_electric, the unit for the ‘electricity’ commodity is given in GW_electric and the ‘hydrogen’ commodity is given in GW_hydrogen_lowerHeatingValue -> the commodityConversionFactors are defined as {‘electricity’:1,’hydrogen’:-1/0.6}.

Default arguments:

Parameters:
  • linkedConversionCapacityID (string) – if specifies, indicates that all conversion components with the this ID have to have the same capacity.
    * the default value is None
  • operationRateMax (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices have to match the in the energy system model specified locations.) – if specified indicates a maximum operation rate for each location and each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the physicalUnit of the plant for each time step.
    * the default value is None
  • operationRateFix (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices have to match the in the energy system model specified locations.) – if specified indicates a fixed operation rate for each location and each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the physicalUnit of the plant for each time step.
    * the default value is None
  • tsaWeight (positive (>= 0) float) – weight with which the time series of the component should be considered when applying time series aggregation.
    * the default value is 1
  • opexPerOperation (positive (>=0) float or Pandas Series with positive (>=0) values. The indices of the series have to equal the in the energy system model specified locations.) – cost which is directly proportional to the operation of the component is obtained by multiplying the opexPerOperation parameter with the annual sum of the operational time series of the components. The opexPerOperation can either be given as a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro).
    * the default value is 0

Inheritance diagram:

Inheritance diagram of Conversion

Transmission class

Class description:

class transmission.Transmission(esM, name, commodity, losses=0, distances=None, hasCapacityVariable=True, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, operationRateMax=None, operationRateFix=None, tsaWeight=1, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerOperation=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Doc

__init__(esM, name, commodity, losses=0, distances=None, hasCapacityVariable=True, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, operationRateMax=None, operationRateFix=None, tsaWeight=1, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerOperation=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Constructor for creating an Conversion class instance. The Transmission component specific input arguments are described below. The general component input arguments are described in the Component class.

Required arguments:

Parameters:commodity (string) – to the component related commodity.

Default arguments:

Parameters:
  • losses (positive float (0 <= float <= 1) or Pandas DataFrame with positive values (0 <= float <= 1) The row and column indices of the DataFrame have to equal the in the energy system model specified locations.) – losses per lengthUnit (lengthUnit as specified in the energy system model). This loss factor can capture simple linear losses trans_in_ij=(1-losses*distance)*trans_out_ij (with trans being the commodity flow at a certain point in time and i and j being locations in the energy system). The losses can either be given as a float or a Pandas DataFrame with location specific values.
    * the default value is 0
  • distances (positive float (>= 0) or Pandas DataFrame with positive values (>= 0) The row and column indices of the DataFrame have to equal the in the energy system model specified locations.) – distances between locations, given in the lengthUnit (lengthUnit as specified in the energy system model).
    * the default value is None
  • operationRateMax (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices are combinations of locations (as defined in the energy system model), separated by a underscore (i.e. "location1_location2") The first location indicates where the commodity is coming from. The second one location indicates where the commodity is going too. If a flow is specified from location i to location j, it also has to be specified from j to i.) – if specified, indicates a maximum operation rate for all possible connections (both directions) of the transmission component at each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the commodityUnit, referring to the transmitted commodity (before considering losses) during one time step.
    * the default value is None
  • operationRateFix (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices are combinations of locations (as defined in the energy system model), separated by a underscore (i.e. "location1_location2") The first location indicates where the commodity is coming from. The second one location indicates where the commodity is going too. If a flow is specified from location i to location j, it also has to be specified from j to i.) – if specified, indicates a fixed operation rate for all possible connections (both directions) of the transmission component at each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the commodityUnit, referring to the transmitted commodity (before considering losses) during one time step.
    * the default value is None
  • tsaWeight (positive (>= 0) float) – weight with which the time series of the component should be considered when applying time series aggregation.
    * the default value is 1
  • opexPerOperation (positive (>=0) float or Pandas DataFrame with positive (>=0) values. The row and column indices of the DataFrame have to equal the in the energy system model specified locations.) – cost which is directly proportional to the operation of the component is obtained by multiplying the opexPerOperation parameter with the annual sum of the operational time series of the components. The opexPerOperation can either be given as a float or a Pandas DataFrame with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro).
    * the default value is 0

Inheritance diagram:

Inheritance diagram of Transmission

Storage class

Class description:

class storage.Storage(esM, name, commodity, chargeRate=1, dischargeRate=1, chargeEfficiency=1, dischargeEfficiency=1, selfDischarge=0, cyclicLifetime=None, stateOfChargeMin=0, stateOfChargeMax=1, hasCapacityVariable=True, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, doPreciseTsaModeling=False, chargeOpRateMax=None, chargeOpRateFix=None, chargeTsaWeight=1, dischargeOpRateMax=None, dischargeOpRateFix=None, dischargeTsaWeight=1, isPeriodicalStorage=False, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerChargeOperation=0, opexPerDischargeOperation=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Doc

__init__(esM, name, commodity, chargeRate=1, dischargeRate=1, chargeEfficiency=1, dischargeEfficiency=1, selfDischarge=0, cyclicLifetime=None, stateOfChargeMin=0, stateOfChargeMax=1, hasCapacityVariable=True, capacityVariableDomain='continuous', capacityPerPlantUnit=1, hasIsBuiltBinaryVariable=False, bigM=None, doPreciseTsaModeling=False, chargeOpRateMax=None, chargeOpRateFix=None, chargeTsaWeight=1, dischargeOpRateMax=None, dischargeOpRateFix=None, dischargeTsaWeight=1, isPeriodicalStorage=False, locationalEligibility=None, capacityMin=None, capacityMax=None, sharedPotentialID=None, capacityFix=None, isBuiltFix=None, investPerCapacity=0, investIfBuilt=0, opexPerChargeOperation=0, opexPerDischargeOperation=0, opexPerCapacity=0, opexIfBuilt=0, interestRate=0.08, economicLifetime=10)[source]

Constructor for creating an Storage class instance. The Storage component specific input arguments are described below. The general component input arguments are described in the Component class.

Required arguments:

Parameters:commodity (string) – to the component related commodity.

Default arguments:

Parameters:
  • chargeRate (0 <= float <=1) –

    ratio of the maximum storage inflow (in commodityUnit/hour) and the storage capacity (in commodityUnit). Example:

    • A hydrogen salt cavern which can store 133 GWh_H2_LHV can be charged 0.45 GWh_H2_LHV during one hour. The chargeRate thus equals 0.45/133.


    * the default value is 1

  • dischargeRate (0 <= float <=1) –

    ratio of the maximum storage outflow (in commodityUnit/hour) and the storage capacity (in commodityUnit). Example:

    • A hydrogen salt cavern which can store 133 GWh_H2_LHV can be discharged 0.45 GWh_H2_LHV during one hour. The dischargeRate thus equals 0.45/133.


    * the default value is 1

  • chargeEfficiency (0 <= float <=1) – defines the efficiency with which the storage can be charged (equals the percentage of the injected commodity that is transformed into stored commodity). Enter 0.98 for 98% etc.
    * the default value is 1
  • dischargeEfficiency (0 <= float <=1) – defines the efficiency with which the storage can be discharged (equals the percentage of the withdrawn commodity that is transformed into stored commodity). Enter 0.98 for 98% etc.
    * the default value is 1
  • selfDischarge (0 <= float <=1) – percentage of self-discharge from the storage during one hour
    * the default value is 0
  • cyclicLifetime (positive float) – if specified, the total number of full cycle equivalents that are supported by the technology.
    * the default value is None
  • stateOfChargeMin (0 <= float <=1) – threshold (percentage) that the state of charge can not drop under
    * the default value is 0
  • stateOfChargeMax (0 <= float <=1) – threshold (percentage) that the state of charge can not exceed
    * the default value is 1
  • doPreciseTsaModeling (boolean) – determines whether the state of charge is limited precisely (True) or with a simplified method (False). The error is small if the selfDischarge is small.
    * the default value is False
  • chargeOpRateMax (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices have to match the in the energy system model specified locations.) – if specified indicates a maximum charging rate for each location and each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the commodityUnit, referring to the charged commodity (before multiplying the charging efficiency) during one time step.
    * the default value is None
  • chargeOpRateFix (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices have to match the in the energy system model specified locations.) – if specified indicates a fixed charging rate for each location and each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the commodity, referring to the charged commodity (before multiplying the charging efficiency) during one time step.
    * the default value is None
  • chargeTsaWeight (positive (>= 0) float) – weight with which the chargeOpRate (max/fix) time series of the component should be considered when applying time series aggregation.
    * the default value is 1
  • dischargeOpRateMax (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices have to match the in the energy system model specified locations.) – if specified indicates a maximum discharging rate for each location and each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the commodityUnit, referring to the discharged commodity (after multiplying the discharging efficiency) during one time step.
    * the default value is None
  • dischargeOpRateFix (None or Pandas DataFrame with positive (>= 0) entries. The row indices have to match the in the energy system model specified time steps. The column indices have to match the in the energy system model specified locations.) – if specified indicates a fixed discharging rate for each location and each time step by a positive float. If hasCapacityVariable is set to True, the values are given relative to the installed capacities (i.e. in that case a value of 1 indicates a utilization of 100% of the capacity). If hasCapacityVariable is set to False, the values are given as absolute values in form of the commodityUnit, referring to the charged commodity (after multiplying the discharging efficiency) during one time step.
    * the default value is None
  • dischargeTsaWeight (positive (>= 0) float) – weight with which the dischargeOpRate (max/fix) time series of the component should be considered when applying time series aggregation.
    * the default value is 1
  • isPeriodicalStorage (boolean) – indicates if the state of charge of the storage has to be at the same value after the end of each period. This is especially relevant when using daily periods where short term storage can be restrained to daily cycles. Benefits the run time of the model.
    * the default value is False
  • opexPerChargeOperation (positive (>=0) float or Pandas Series with positive (>=0) values. The indices of the series have to equal the in the energy system model specified locations.) – cost which is directly proportional to the charge operation of the component is obtained by multiplying the opexPerOperation parameter with the annual sum of the operational time series of the components. The opexPerOperation can either be given as a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro).
    * the default value is 0
  • opexPerDischargeOperation (positive (>=0) float or Pandas Series with positive (>=0) values. The indices of the series have to equal the in the energy system model specified locations. component (in the physicalUnit of the component) and not of the specific operation itself are obtained by multiplying the capacity of the component at a location with the opexPerCapacity factor. The opexPerCapacity can either be given as a float or a Pandas Series with location specific values.) – cost which is directly proportional to the discharge operation of the component is obtained by multiplying the opexPerOperation parameter with the annual sum of the operational time series of the components. The opexPerOperation can either be given as a float or a Pandas Series with location specific values. The cost unit in which the parameter is given has to match the one specified in the energy system model (i.e. Euro, Dollar, 1e6 Euro).
    * the default value is 0

Inheritance diagram:

Inheritance diagram of Storage