placades

class placades.Battery(label, bus_electricity, storage_capacity, max_charge_rate=1.0, max_discharge_rate=1.0, charge_efficiency=0.95, discharge_efficiency=0.95, self_discharge_rate=0.001, capex_capacity=None, capex_power=None, opex=None, initial_storage_level=0.5)[source]

Batteriespeicher basierend auf GenericStorage

__init__(label, bus_electricity, storage_capacity, max_charge_rate=1.0, max_discharge_rate=1.0, charge_efficiency=0.95, discharge_efficiency=0.95, self_discharge_rate=0.001, capex_capacity=None, capex_power=None, opex=None, initial_storage_level=0.5)[source]

Batteriespeicher Facade

Parameters:
  • label (str or tuple) – Eindeutige Bezeichnung der Batterie

  • bus_electricity (oemof.solph.Bus or placades.CarrierBus) – Strom-Bus für Laden/Entladen

  • storage_capacity (float) – Speicherkapazität in kWh

  • max_charge_rate (float) – Maximale Laderate als C-Rate (default: 1C = 1h Vollladung)

  • max_discharge_rate (float) – Maximale Entladerate als C-Rate

  • charge_efficiency (float) – Ladewirkungsgrad (default: 95%)

  • discharge_efficiency (float) – Entladewirkungsgrad (default: 95%)

  • self_discharge_rate (float) – Selbstentladung pro Stunde in % (default: 0.1%/h)

  • capex_capacity (float, optional) – Investitionskosten Speicher in €/kWh

  • capex_power (float, optional) – Investitionskosten Leistung in €/kW

  • opex (float, optional) – Betriebskosten in €/kWh Durchsatz

  • initial_storage_level (float) – Anfänglicher Ladestand (0-1)

Examples

>>> from oemof.solph import Bus
>>> electricity_bus = Bus(label="my_electricity_bus")
class placades.CHP(label, bus_gas, bus_electricity, bus_heat, electrical_capacity=None, electrical_efficiency=0.35, thermal_efficiency=0.5, opex=0)[source]

Blockheizkraftwerk (BHKW) basierend auf Converter

__init__(label, bus_gas, bus_electricity, bus_heat, electrical_capacity=None, electrical_efficiency=0.35, thermal_efficiency=0.5, opex=0)[source]

Blockheizkraftwerk (BHKW) Facade

Parameters:
  • label (str or tuple) – Eindeutige Bezeichnung des BHKW

  • bus_gas (oemof.solph.Bus or placades.CarrierBus) – Gas-Bus (Input)

  • bus_electricity (oemof.solph.Bus or placades.CarrierBus) – Strom-Bus (Output)

  • bus_heat (oemof.solph.Bus or placades.CarrierBus) – Wärme-Bus (Output)

  • electrical_capacity (float, optional) – Elektrische Nennleistung in kW

  • electrical_efficiency (float) – Elektrischer Wirkungsgrad (default: 35%)

  • thermal_efficiency (float) – Thermischer Wirkungsgrad (default: 50%)

  • opex (float, optional) – Betriebskosten in €/kWh_el, alle Arten von spezifischen Kosten bezogen auf die Stromproduktion. Auch zusätzliche Abgaben auf z.B. Gas können über die Wirkungsgrade umgerechnet und damit auf die Stromproduktion umgerechnet werden

Examples

>>> from oemof.solph import Bus
>>> electricity_bus = Bus(label="my_electricity_bus")
>>> heat_bus = Bus(label="my_heat_bus")
>>> gas_bus = Bus(label="my_gas_bus")
class placades.CarrierBus(name, carrier=None, balanced=None, excess=None, excess_costs=None)[source]

Bus mit Medium-Attribut

__init__(name, carrier=None, balanced=None, excess=None, excess_costs=None)[source]

Bus mit Energieträger-Information

Parameters:
  • name (str or tuple) – Eindeutige Bezeichnung des Bus

  • carrier (str) – Energieträger/Medium (z.B. ‘electricity’, ‘gas’, ‘heat’, ‘hydrogen’)

  • **kwargs – Weitere Parameter für Bus

Examples

>>> electricity_bus = CarrierBus(name="grid", carrier="electricity")
>>> gas_bus = CarrierBus(name="gas_grid", carrier="natural_gas")
>>> heat_bus = CarrierBus(name="district_heating", carrier="heat")
>>> h2_bus = CarrierBus(name="h2_network", carrier="hydrogen")
class placades.DSO(name, bus_electricity, energy_price=0.3, feedin_tariff=0.1, peak_demand_pricing=0, peak_demand_pricing_period=1, renewable_share=0.44, feedin_cap=None)[source]
__init__(name, bus_electricity, energy_price=0.3, feedin_tariff=0.1, peak_demand_pricing=0, peak_demand_pricing_period=1, renewable_share=0.44, feedin_cap=None)[source]

Energy provider for electricity distribution.

This class represents a distribution system operator (DSO) that provides electricity from the utility grid with pricing and feedin capabilities.

Important

The renewable share affects the overall system renewable factor calculation.

Structure:
input & output

bus : Electricity

Parameters:
  • name (str) – Name of the asset. [-] (Input the names in a computer friendly format, preferably with underscores instead of spaces, and avoiding special characters).

  • energy_price (float, default=0.3) – Price of the energy carrier sourced from the utility grid. Can be also a timeseries in €/kWh.

  • feedin_tariff (float, default=0.1) – Price received for feeding electricity into the grid. Can be also a timeseries in €/kWh.

  • peak_demand_pricing (float, default=0) – Grid fee to be paid based on the peak demand of a given period in €/kW.

  • peak_demand_pricing_period (int, default=1) – Number of reference periods in one year for peak demand pricing in times per year (Only one of the following are acceptable values: 1 (yearly), 2, 3 ,4, 6, 12 (monthly)).

  • renewable_share (float, default=0.44) – Share of renewables in the generation mix of the energy supplied by the DSO utility. [Factor] (Real number between 0 and 1).

  • feedin_cap (float or None, default=None) – Maximum flow for feeding electricity into the grid at any given timestep in kW (Acceptable values are either a positive real number or None).

Examples

>>> from oemof.solph import Bus
>>> ebus = Bus(label="electricity_bus")
>>> my_dso = DSO(
...     name="main_grid",
...     bus_electricity=ebus,
...     energy_price=0.25,
...     feedin_tariff=0.08,
... )
class placades.Demand(name, bus_in_electricity, input_timeseries)[source]

Electricity demand/consumption component.

This class represents an electricity demand that consumes electrical energy according to a specified time series pattern.

Structure:
input
  1. from_bus : Electricity

Parameters:
  • name (str) – Name of the asset. [-] (Input the names in a computer friendly format, preferably with underscores instead of spaces, and avoiding special characters).

  • bus_in_electricity (placades.CarrierBus) – Connected Bus component for the electricity input flow. [object].

  • input_timeseries (array-like) – Timeseries. Timeseries in :unit:.

Examples

>>> from placades import CarrierBus as Bus
>>> ebus = Bus(name="electricity_bus")
>>> my_demand = Demand(
...     name="office_demand",
...     bus_in_electricity=ebus,
...     input_timeseries="electricity_demand.csv",
... )
__init__(name, bus_in_electricity, input_timeseries)[source]
class placades.Excess(name, bus_in, cost)[source]

Short description

Long description about the facade and how to use it.

Important

Some important information about this facade.

Parameters:
  • name (str) – Name of the asset. [-] (Input the names in a computer friendly format, preferably with underscores instead of spaces, and avoiding special characters).

  • bus_in (oemof.solph.Bus or placade.CarrierBus) – Connected Bus component for an input flow. [object].

  • cost (float or array-like) – Price of the energy carrier sourced from the utility grid. Can be also a timeseries in €/kWh.

Examples

__init__(name, bus_in, cost)[source]
class placades.Project(name, lifetime, tax, discount_factor, shortage_cost=999, excess_cost=99, disable_shortage=False, disable_excess=False, latitude=50.587031, longitude=10.165876)[source]
__init__(name, lifetime, tax, discount_factor, shortage_cost=999, excess_cost=99, disable_shortage=False, disable_excess=False, latitude=50.587031, longitude=10.165876)[source]
calculate_epc(capex_var, lifetime, age_installed, method='mvs')[source]
class placades.PvPlant(project_data, bus_out_electricity, input_timeseries, name, age_installed=0, installed_capacity=0, capex_fix=0, capex_var=1000, opex_fix=10, opex_var=0, lifetime=20, optimize_cap=False, maximum_capacity=None, renewable_asset=True)[source]
__init__(project_data, bus_out_electricity, input_timeseries, name, age_installed=0, installed_capacity=0, capex_fix=0, capex_var=1000, opex_fix=10, opex_var=0, lifetime=20, optimize_cap=False, maximum_capacity=None, renewable_asset=True)[source]

Photovoltaic power plant for solar electricity generation.

This class represents a photovoltaic plant that converts solar irradiation into electrical energy using photovoltaic panels.

Important

This is a renewable energy source that contributes to the renewable share of the system.

Structure:
output
  1. to_bus : Electricity

Optimization:

The characteristic quantity of the optimization is the nominal power-output of the PV-plant given in kWp

Parameters:
  • project_data (Project object) – The framework of the project in which the asset is ought to be optimized.

  • bus_out_electricity (bus object) – Connected Bus component for the electricity output flow. [object].

  • input_timeseries (array-like) – Timeseries. Timeseries in :unit:.

  • name (str) – Name of the asset. [-] (Input the names in a computer friendly format, preferably with underscores instead of spaces, and avoiding special characters).

  • age_installed (int, default=0) – Number of years the asset has already been in operation. If the project lasts longer than its remaining lifetime, the replacement costs of the asset will be taken into account in a (Natural number).

  • installed_capacity (float, default=0) – Already existing installed capacity. If the project lasts longer than its remaining lifetime, the replacement costs of the asset will be taken into account in :unit:.

  • capex_fix (float, default=0) – Planning and development costs. This could be planning and development costs which do not depend on the (optimized) capacities of the assets in € (Positive real number).

  • capex_var (float, default=1000) – Specific investment costs of the asset related to the installed capacity (CAPEX) in €/:unit:.

  • opex_fix (float, default=10) – Specific operational and maintenance costs of the asset related to the installed capacity (OPEX_fix) in €/(:unit: • a)

  • opex_var (float, default=0) – Costs associated with a flow through/from the asset (OPEX_var or fuel costs). This could be fuel costs for fuel sources like biogas or oil or operational costs for thermal power plants which only occur when operating the plant in €/kWh.

  • lifetime (int, default=20) – Number of operational years of the asset until it has to be replaced in a (Natural number).

  • optimize_cap (bool, default=False) – Choose if capacity optimization should be performed for this asset. [-] (Acceptable values are either Yes or No.).

  • maximum_capacity (float or None, default=None) – Maximum total capacity of an asset that can be installed at the project site. This includes the already existing installed and additional capacity possible. An example would be that a roof can only carry 50 kW PV (maximum capacity), whereas the installed capacity is already 10 kW. The optimization would only be allowed to add 40 kW PV at maximum in :unit: (Acceptable values are either a positive real number or None.).

  • renewable_asset (bool, default=True) – Choose if this asset should be considered as renewable. This parameter is necessary to consider the renewable share constraint correctly. [-] (Acceptable values are either Yes or No.).

Examples

>>> from placades import Project
>>> from placades import CarrierBus
>>> my_project = Project(
...         name="my_project",
...         lifetime=20,
...         tax=0,
...         discount_factor=0.01
...     )
>>> el_bus = CarrierBus(name="my_electricity_bus")
>>> my_pv = PvPlant(
...     bus_out_electricity=el_bus,
...     name="my_pv_plant",
...     age_installed=0, # a
...     installed_capacity=0, # kW
...     capex_fix=0, # €
...     capex_var=1000, # €/kWp
...     opex_fix=10, # €/kWp/a
...     opex_var=0, # €/kWh
...     lifetime=25, # a
...     optimize_cap=True,
...     maximum_capacity=1000, # kWp
...     renewable_asset=True,
...     input_timeseries=[1,2,3],
...     project_data=my_project,
...  )
class placades.Shortage(name, bus_out, cost)[source]

Short description

Long description about the facade and how to use it.

Important

Some important information about this facade.

Parameters:
  • name (str) – Name of the asset. [-] (Input the names in a computer friendly format, preferably with underscores instead of spaces, and avoiding special characters).

  • bus_out (oemof.solph.Bus or placade.CarrierBus) – Connected Bus component for an input flow. [object].

  • cost (float or array-like) – Price of the energy carrier sourced from the utility grid. Can be also a timeseries in €/kWh.

Examples

__init__(name, bus_out, cost)[source]
class placades.WindTurbine(project_data, bus_out_electricity, input_timeseries, name, age_installed=0, installed_capacity=0, capex_fix=0, capex_var=1000, opex_fix=10, opex_var=0, lifetime=20, optimize_cap=False, maximum_capacity=None, renewable_asset=True)[source]
__init__(project_data, bus_out_electricity, input_timeseries, name, age_installed=0, installed_capacity=0, capex_fix=0, capex_var=1000, opex_fix=10, opex_var=0, lifetime=20, optimize_cap=False, maximum_capacity=None, renewable_asset=True)[source]

Wind turbine for electricity generation.

This class represents a wind turbine that converts kinetic energy of wind into electrical energy.

Important

This is a renewable energy source that contributes to the renewable share of the system.

Structure:
output
  1. to_bus : Electricity

Optimization:

The characteristic quantity of the optimization is the nominal power-output of the wind turbine given in kW

Parameters:
  • project_data (Project object) – The framework of the project in which the asset is ought to be optimized.

  • bus_out_electricity (bus object) – Connected Bus component for the electricity output flow. [object].

  • input_timeseries (array-like) – Timeseries. Timeseries in :unit:.

  • name (str) – Name of the asset. [-] (Input the names in a computer friendly format, preferably with underscores instead of spaces, and avoiding special characters).

  • age_installed (int, default=0) – Number of years the asset has already been in operation. If the project lasts longer than its remaining lifetime, the replacement costs of the asset will be taken into account in a (Natural number).

  • installed_capacity (float, default=0) – Already existing installed capacity. If the project lasts longer than its remaining lifetime, the replacement costs of the asset will be taken into account in :unit:.

  • capex_fix (float, default=0) – Planning and development costs. This could be planning and development costs which do not depend on the (optimized) capacities of the assets in € (Positive real number).

  • capex_var (float, default=1000) – Specific investment costs of the asset related to the installed capacity (CAPEX) in €/:unit:.

  • opex_fix (float, default=10) – Specific operational and maintenance costs of the asset related to the installed capacity (OPEX_fix) in €/(:unit: • a)

  • opex_var (float, default=0) – Costs associated with a flow through/from the asset (OPEX_var or fuel costs). This could be fuel costs for fuel sources like biogas or oil or operational costs for thermal power plants which only occur when operating the plant in €/kWh.

  • lifetime (int, default=20) – Number of operational years of the asset until it has to be replaced in a (Natural number).

  • optimize_cap (bool, default=False) – Choose if capacity optimization should be performed for this asset. [-] (Acceptable values are either Yes or No.).

  • maximum_capacity (float or None, default=None) – Maximum total capacity of an asset that can be installed at the project site. This includes the already existing installed and additional capacity possible. An example would be that a roof can only carry 50 kW PV (maximum capacity), whereas the installed capacity is already 10 kW. The optimization would only be allowed to add 40 kW PV at maximum in :unit: (Acceptable values are either a positive real number or None.).

  • renewable_asset (bool, default=True) – Choose if this asset should be considered as renewable. This parameter is necessary to consider the renewable share constraint correctly. [-] (Acceptable values are either Yes or No.).

Examples

>>> from placades import Project
>>> from placades import CarrierBus
>>> my_project = Project(
...         name="my_project",
...         lifetime=20,
...         tax=0,
...         discount_factor=0.01
...     )
>>> el_bus = CarrierBus(name="my_electricity_bus")
>>> my_wind = WindTurbine(
...     bus_out_electricity=el_bus,
...     name="my_wind_plant",
...     age_installed=0, # a
...     installed_capacity=0, # kW
...     capex_fix=0, # €
...     capex_var=1000, # €/kW
...     opex_fix=10, # €/kW/a
...     opex_var=0, # €/kWh
...     lifetime=25, # a
...     optimize_cap=True,
...     maximum_capacity=1000, # kW
...     renewable_asset=True,
...     input_timeseries=[1,2,3],
...     project_data=my_project,
...  )