osier.Technology#

class osier.Technology(technology_name, technology_type='production', technology_category='base', dispatchable=True, renewable=False, capital_cost=0.0, om_cost_fixed=0.0, om_cost_variable=0.0, fuel_cost=0.0, fuel_type=None, capacity=0.0, capacity_factor=1.0, capacity_credit=1.0, co2_rate=0.0, lifecycle_co2_rate=0.0, land_intensity=0.0, efficiency=1.0, lifetime=25.0, default_power_units=MW, default_time_units=hr, default_energy_units=None, default_length_units=km, default_volume_units=m**3, default_mass_units=megatonnes)[source]#

Bases: object

The Technology base class contains the minimum required data to solve an energy systems problem. Many optional data are included here as well. All other technologies in osier inherit from this class.

Parameters:
  • technology_name (str) – The name identifier of the technology.

  • technology_type (str) – The string identifier for the type of technology. Two common types are: [“production”, “storage”].

  • technology_category (str) – The string identifier the the technology category. For example: “renewable,” “fossil,” or “nuclear.”

  • dispatchable (bool) – Indicates whether the technology can be dispatched by a grid operator, or if it produces variable electricity that must be used or stored the moment it is produced. For example, solar panels and wind turbines are not dispatchable, but nuclear and biopower are dispatchable. Default value is true.

  • renewable (bool) – Indicates whether the technology is considered “renewable.” Useful for determining if a technology will contribute to a renewable portfolio standard (RPS).

  • capital_cost (float or unyt.array.unyt_quantity) – Specifies the capital cost. If float, the default unit is $/MW.

  • om_cost_fixed (float or unyt.array.unyt_quantity) – Specifies the fixed operating costs. If float, the default unit is $/MW.

  • om_cost_variable (float, unyt.array.unyt_quantity, or array-like) – Specifies the variable operating costs. Users may pass timeseries data. However, pandas.DataFrame is not supported by this feature. If float, the default unit is $/MWh.

  • fuel_cost (float, unyt.array.unyt_quantity, or array-like) – Specifies the fuel costs. Users may pass timeseries data. However, pandas.DataFrame is not supported by this feature. If float, the default unit is $/MWh.

  • fuel_type (str) – Specifies the type of fuel consumed by the technology.

  • capacity (float or unyt.array.unyt_quantity) – Specifies the technology capacity. If float, the default unit is MW

  • capacity_factor (Optional, float) – Specifies the ‘usable’ fraction of a technology’s capacity. Default is 1.0, i.e. all of the technology’s capacity is usable all of the time.

  • capacity_credit (Optional, float) – Specifies the fraction of a technology’s capacity that counts towards reliability requirements. Most frequently used for renewable technologies. For example, a solar farm might have a capacity credit of 0.2. This means that in order to meet a capacity requirement of 1 GW, 1.25 GW of solar would need to be installed. Default is 1.0, i.e. all of the technology’s capacity contributes to capacity requirements.

  • co2_rate (float or unyt.array.unyt_quantity) – Specifies the rate at which carbon dioxide is emitted during operation. Generally only applicable for fossil fueled plants. If float, the default units are megatonnes per MWh

  • lifecycle_co2_rate (float or unyt.array.unyt_quantity) – Specifies the rate at which of CO2eq emissions over a typical lifetime. Unless you are reading this in a future where the economy is fully decarbonized, all technologies should have a non-zero value for this attribute. If float, the default units are megatonnes per MWh

  • land_intensity (float or unyt.array.unyt_quantity) – The amount of land required per unit capacity. May be either lifecycle land use or from direct use. However, consistency between technologies is incumbent on the user.

  • efficiency (float) – The technology’s energy conversion efficiency expressed as a fraction. Default is 1.0.

  • lifetime (float) – The technology’s operational lifetime in years. Default is 25 years.

  • default_power_units (str or unyt.unit_object.Unit) – An optional parameter, specifies the units for power. Default is megawatts [MW].

  • default_time_units (str or unyt.unit_object.Unit) – An optional parameter, specifies the units for time. Default is hours [hr].

  • default_mass_units (str or unyt.unit_object.Unit) – An optional parameter, specifies the units for mass. Default is hours [kg].

  • default_energy_units (str or unyt.unit_object.Unit) – An optional parameter, specifies the units for energy. Default is megawatt-hours [MWh] Currently, default_energy_units is derived from the time and power units.

Notes

Cost values are listed in the docs as [$ / physical unit]. However, osier does not currently have a currency handler, therefore the units are technically [1 / physical unit].

The unyt library may not be able to interpret strings for inverse units. For example:

>>> my_unit = "10 / MW"
>>> my_unit = unyt_quantity.from_string(my_unit)
ValueError: Received invalid quantity expression '10/MW'.

Instead, try the more explicit approach:

>>> my_unit = "10 MW**-1"
>>> my_unit = unyt_quantity.from_string(my_unit)
unyt_quantity(10., '1/MW')

However, inverse MWh cannot be converted from a string.

Methods

power_output(demand, **kwargs)

Raise or lower the power level to meet demand.

reset_history()

Resets the technology's power history for a new simulation.

to_dataframe([cast_to_string])

Writes all technology attributes to a pandas.DataFrame for export and manipulation.

variable_cost_ts(size)

Returns the total variable cost as an array of length size.