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:
objectThe
Technologybase class contains the minimum required data to solve an energy systems problem. Many optional data are included here as well. All other technologies inosierinherit 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.DataFrameis 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.DataFrameis 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 MWcapacity_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 MWhlifecycle_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 MWhland_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,
osierdoes not currently have a currency handler, therefore the units are technically [1 / physical unit].The
unytlibrary 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.
Resets the technology's power history for a new simulation.
to_dataframe([cast_to_string])Writes all technology attributes to a
pandas.DataFramefor export and manipulation.variable_cost_ts(size)Returns the total variable cost as an array of length
size.