new_modeling_toolkit.system.fuel package
Submodules
new_modeling_toolkit.system.fuel.candidate_fuel module
- class CandidateFuel
Bases:
_EnergyCarrier
A candidate fuel is one type of fuel that can be used to meet a final fuel demand, be produced by a fuel production plant, or consumed by a plant or thermal resource.
Gasoline is a final fuel; E85 ethanol and fossil gasoline are candidate fuels.
Every candidate fuel is either a commodity, which can be parametrized to have an upper limit of availability and prices, or can be produced via a fuel conversion plant. Currently, the only form of fuel conversion possible is fuel-to-fuel or electricity-to-fuel.
- Fields:
annual_price (new_modeling_toolkit.core.temporal.timeseries.NumericTimeseries | None)
availability (new_modeling_toolkit.core.temporal.timeseries.NumericTimeseries | None)
electrolyzers (dict[str, new_modeling_toolkit.core.linkage.Linkage])
emission_types (dict[str, new_modeling_toolkit.core.linkage.Linkage])
emissions_policies (dict[str, new_modeling_toolkit.core.linkage.EmissionsContribution])
final_fuels (dict[str, new_modeling_toolkit.core.linkage.Linkage])
fuel_production_plants (dict[str, new_modeling_toolkit.core.linkage.Linkage])
fuel_storages (dict[str, new_modeling_toolkit.core.linkage.Linkage])
fuel_transportations (dict[str, new_modeling_toolkit.core.linkage.Linkage])
fuel_zones (dict[str, new_modeling_toolkit.core.linkage.Linkage])
include (Annotated[bool, Metadata(category=FieldCategory.BUILD)])
monthly_price_multiplier (new_modeling_toolkit.core.temporal.timeseries.NumericTimeseries | None)
pollutants (dict[str, new_modeling_toolkit.core.linkage.Linkage])
price_per_unit (new_modeling_toolkit.core.temporal.timeseries.NumericTimeseries | None)
resources (dict[str, new_modeling_toolkit.core.linkage.CandidateFuelToResource])
- field annual_energy_policies: dict[str, AnnualEnergyStandardContribution] = {}
- Constraints:
category = FieldCategory.OPERATIONS
units =
excel_short_title =
warning_bounds = (None, None)
show_year_headers = True
linkage_order = to
default_exclude = False
- field annual_price: NumericTimeseries | None = None
- Constraints:
category = FieldCategory.OPERATIONS
units = dollar / MMBtu
excel_short_title = Annual Price
warning_bounds = (None, None)
show_year_headers = True
default_exclude = False
- field attr_path: str | pathlib.Path | None = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/e3-resolve/checkouts/latest/docs/source')
the path to the attributes file
- field availability: NumericTimeseries | None = None
This input sets the maximum potential for this commodity product. If the commodity product is used in RESOLVE, consumption of this product will never exceed the availability in a given year.
- Constraints:
category = FieldCategory.OPERATIONS
units = MMBtu_per_year
excel_short_title = Availability
warning_bounds = (None, None)
show_year_headers = True
default_exclude = False
- field commodity: bool = True (alias 'fuel_is_commodity_bool')
Set to False if this fuel is endogenously produced; otherwise, it will be considered a ‘commodity’ with a fixed price stream and potentially a fixed consumption limit.
- Constraints:
category = FieldCategory.OPERATIONS
units =
excel_short_title =
warning_bounds = (None, None)
show_year_headers = True
default_exclude = False
- field electrolyzers: dict[str, Linkage] = {}
- field emission_types: dict[str, Linkage] = {}
- field emissions_policies: dict[str, EmissionsContribution] = {}
- Constraints:
category = FieldCategory.OPERATIONS
units =
excel_short_title =
warning_bounds = (None, None)
show_year_headers = True
linkage_order = to
default_exclude = False
- field final_fuels: dict[str, Linkage] = {}
- field fuel_production_plants: dict[str, Linkage] = {}
- field fuel_storages: dict[str, Linkage] = {}
- field fuel_transportations: dict[str, Linkage] = {}
- field fuel_zones: dict[str, Linkage] = {}
- field include: Annotated[bool, Metadata(category=FieldCategory.BUILD)] = True
Include component in system.
- Constraints:
category = FieldCategory.BUILD
units =
excel_short_title =
warning_bounds = (None, None)
show_year_headers = True
default_exclude = False
- field monthly_price_multiplier: NumericTimeseries | None = None
- Constraints:
category = FieldCategory.OPERATIONS
units =
excel_short_title = Multiplier
warning_bounds = (None, None)
show_year_headers = True
default_exclude = False
- field pollutants: dict[str, Linkage] = {}
- field price_per_unit: NumericTimeseries | None = None (alias 'fuel_price_per_mmbtu')
- Constraints:
category = FieldCategory.OPERATIONS
units = dollar / MMBtu
excel_short_title = Price
warning_bounds = (None, None)
show_year_headers = True
default_exclude = False
- field processes: Annotated[dict[Union[tuple[str, str], str], Process], Metadata(category=FieldCategory.OPERATIONS)] [Optional]
These three-way linkages define the input-output relationships between products on a plant
- Constraints:
category = FieldCategory.OPERATIONS
units =
excel_short_title =
warning_bounds = (None, None)
show_year_headers = True
default_exclude = False
- field resources: dict[str, CandidateFuelToResource] = {}
- Constraints:
units =
excel_short_title =
warning_bounds = (None, None)
show_year_headers = True
linkage_order = to
default_exclude = False
- field sector_candidate_fuel_blending: dict[tuple[str, str] | str, ThreeWayLinkage] = {}
- calc_energy_demand(sector: str, final_fuel_energy_demand: Series) Series
CandidateFuel energy demand = FinalFuel energy demand * candidate fuel blending %
- Parameters:
sector – str of Sector name, used for filtering input data
final_fuel_energy_demand – pd.Series of energy demand for the FinalFuel
Returns: pd.Series of energy demand for the CandidateFuel
- calc_fuel_cost(candidate_fuel_energy_demand: Series)
CandidateFuel fuel cost = CandidateFuel energy demand * candidate fuel fuel_price per mmbtu
- Parameters:
candidate_fuel_energy_demand – pd.Series of calculated CandidateFuel energy demand in mmbtu
Returns: pd.Series of CandidateFuel fuel cost in $
- candidate_fuel_blend(sector: str) Series
- Parameters:
sector – str of Sector name
Returns: pd.Series of blend_override data for the input sector name saved on the SectorCandidateFuelBlending ThreeWayLinkage
new_modeling_toolkit.system.fuel.final_fuel module
- class FinalFuel
Bases:
Component
A final fuel represents a type of energy that can be consumed by a device, or by an energy demand subsector. A final fuel may represent several unique fuels– for example, the “diesel” final fuel might actually represent the sum of fossil diesel and renewable diesel. The purpose of a final fuel is to aggregate all fuels which have common combustion characteristics from the perspective of a device or energy demand subsector. The term “final” refers to the fact that this is the fuel that is seen at the “final” point in the energy supply chain, i.e. the point of combustion.
This component exists mainly so that the fuel share of service demand for devices can be specified via a linkage to fuels. The fuel_switchings attribute defined on a three-way linkage between final fuels and energy demand subsectors that dictates the extent, efficiency, and cost of fuel switching within a given energy demand subsector. Fuel efficiency occurs after fuel switching.
- Fields:
annual_demand (new_modeling_toolkit.core.temporal.timeseries.NumericTimeseries | None)
candidate_fuels (dict[str, new_modeling_toolkit.core.linkage.Linkage])
ccs_plants (dict[str, new_modeling_toolkit.core.linkage.Linkage])
demand (new_modeling_toolkit.core.temporal.timeseries.NumericTimeseries | None)
devices (dict[str, new_modeling_toolkit.core.linkage.Linkage])
energy_demand_subsectors (dict[str, new_modeling_toolkit.core.linkage.Linkage])
fuel_zones (dict[str, new_modeling_toolkit.core.linkage.Linkage])
include (Annotated[bool, Metadata(category=FieldCategory.BUILD)])
negative_emissions_technologies (dict[str, new_modeling_toolkit.core.linkage.Linkage])
policies (dict[str, new_modeling_toolkit.core.linkage.Linkage])
- field annual_demand: NumericTimeseries | None = None
Annual fuel demand.
- field attr_path: str | pathlib.Path | None = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/e3-resolve/checkouts/latest/docs/source')
the path to the attributes file
- field candidate_fuels: dict[str, Linkage] = {}
- field ccs_plants: dict[str, Linkage] = {}
- field demand: NumericTimeseries | None = None
Annual fuel demand.
- field devices: dict[str, Linkage] = {}
- field energy_demand_subsector_to_final_fuel_to_ccs_plant: dict[tuple[str, str] | str, ThreeWayLinkage] | None = None
- field energy_demand_subsectors: dict[str, Linkage] = {}
- field fuel_price_per_mmbtu_override: NumericTimeseries | None = None
- field fuel_switchings: dict[tuple[str, str] | str, ThreeWayLinkage] | None = None
- field fuel_zones: dict[str, Linkage] = {}
- field include: Annotated[bool, Metadata(category=FieldCategory.BUILD)] = True
Include component in system.
- Constraints:
category = FieldCategory.BUILD
units =
excel_short_title =
warning_bounds = (None, None)
show_year_headers = True
default_exclude = False
- field negative_emissions_technologies: dict[str, Linkage] = {}
- field policies: dict[str, Linkage] = {}
- field sector_candidate_fuel_blending: dict[tuple[str, str] | str, ThreeWayLinkage] | None = None
- calc_energy_demand_cost_and_emissions(sector: str, energy_demand: Series)
Loop through CandidateFuels linked to the FinalFuel. For each candidate fuel, calculate the energy demand. Then loop through each pollutant on each candidate fuel and calculate emissions by pollutant type. Results are temporarily saved on the linkages (ex: FinalFuelToCandidateFuel and CandidateFuelToPollutant). After looping, results are then aggregated (by calling the `self._return_{result type}_by_candidate_fuel’ functions) and saved permanently on the linked component. Another option is to save aggregated results on the 1:1 XToFinalFuel linkage because it will not be overwritten.
- Parameters:
sector – name of sector for filtering. Ex: “Residential” or “Industrial”
energy_demand – pd.Series of energy demand of FinalFuel in mmbtu
Returns:
- property candidate_fuels_list: list[CandidateFuel]
list of CandidateFuel components linked to the FinalFuel object
- Type:
Returns