new_modeling_toolkit.system.electric package

Subpackages

Submodules

new_modeling_toolkit.system.electric.elcc module

class ELCCFacet

Bases: Component

A single ELCC facet, representing a plane equation.

axis_0 is the intercept axis_1 and axis_2 are the β€œslopes”

Fields:
field axis_0: NumericTimeseries | None = None
field axis_1: NumericTimeseries | None = None
field axis_2: NumericTimeseries | None = None
field axis_3: NumericTimeseries | None = None
field surface: dict[str, ELCCFacetToSurface] = {}
SAVE_PATH: ClassVar[str] = 'elcc_surfaces/facets'
class ELCCSurface

Bases: Component

Fields:
field assets: dict[str, AssetToELCC] = {}
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 class_name: str | None = None
field facets: dict[str, ELCCFacetToSurface] = {}
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 name: str | tuple [Required]
field prm_policies: dict[str, ELCCReliabilityContribution] = {}
revalidate()

Abstract method to run additional validations after Linkage.announce_linkage_to_instances.

SAVE_PATH: ClassVar[str] = 'elcc_surfaces'

new_modeling_toolkit.system.electric.load_component module

class Load

Bases: Component

Fields:
field annual_energy_forecast: NumericTimeseries | None = None
Constraints:
  • category = FieldCategory.OPERATIONS

  • units = hour * megawatt

  • excel_short_title = Forecast

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field annual_energy_policies: dict[str, AllToPolicy] [Optional]
field annual_peak_forecast: NumericTimeseries | None = None
Constraints:
  • category = FieldCategory.OPERATIONS

  • units = megawatt

  • excel_short_title = Peak

  • 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 class_name: str | None = None
field devices: dict[str, Linkage] [Optional]
field emissions_policies: dict[str, AllToPolicy] [Optional]
field energy_demand_subsectors: dict[str, Linkage] [Optional]
field erm_policies: dict[str, AllToPolicy] [Optional]
field hourly_energy_policies: dict[str, AllToPolicy] [Optional]
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 model_year_profiles: dict[int, NumericTimeseries] = {}

Model year profiles scaled to annual peak and/or annual energy forecasts

field name: str | tuple [Required]
field prm_policies: dict[str, AllToPolicy] [Optional]
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field profile: NumericTimeseries | None = None

Weather year(s) load profile to be scaled. Must have either weather year OR model year profile, but not both.

Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title = Profile

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field profile_model_years: NumericTimeseries | None = None

Model year(s) load profile to be scaled. Datetime index should include modeled years. Must have either weather year OR model year profile, but not both.

Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title = Modeled Year Profile

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field reserves: dict[str, LoadToReserve] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field scale_by_capacity: bool = False (alias 'scale_by_peak')

If true, calculate model year profiles by scaling profile to median annual peak

field scale_by_energy: bool = False

If true, calculate model year profiles by scaling profile to mean annual energy

field td_losses_adjustment: NumericTimeseries | None [Optional]

T&D loss adjustment to gross up to system-level loads. For example, a DER may be able to serve 8% more load (i.e., 1.08) than an equivalent bulk system resource due to T&D losses. Adjustment factor is directly multiplied against load (as opposed to 1 / (1 + td_losses_adjustment).

Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title = T&D Factor

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field zones: dict[str, LoadToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

forecast_load(modeled_years: tuple[int, int], weather_years: tuple[int, int], custom_scalars: Series | None = None)

Calculate the scaling coefficient and scaling offset for the load series in order to scale them to any future between the first model year and last model year. The coefficient and offset is determine by the future peak load series and energy series, and the load scaling method defined by the user.

Parameters:
  • modeled_years – tuple first model year to last model year

  • weather_years – tuple first weather year to last weather year (only used for profile_modeled_years)

  • custom_scalars – Optional series of scalars to be applied to annual energy forecast. Only used if scale_by_energy is true. Intended to ensure annual energy forecast is still true when weighted dispatch windows are applied.

Returns: Updated modeled_year_profile dict

get_load(modeled_year: int, weather_year_timestamp: Timestamp)

Based on the model year, first find the future load series belonging to that model year. And based on the period and hour, query the specific hourly load for that hour in the model year. :param system: System.system. current power system :param modeled_year: int. model year being queried :param weather_year_timestamp: model hour being queried

Returns: int. load for the tp under query.

normalize_profile(normalize_by)

Normalize profile by capacity or by energy

resample_ts_attributes(modeled_years: tuple[int, int], weather_years: tuple[int, int], resample_weather_year_attributes=True, resample_non_weather_year_attributes=True)

Resample timeseries attributes to the default frequencies to make querying via slice_by_timepoint and slice_by_year more consistent later.

  1. Downsample data by comparing against a β€œcorrect index” with the correct default_freq

  2. If data start year > modeled start year, fill timeseries backward

  3. Create a temporary timestamp for the first hour of the year after the modeled end year to make sure we have all the hours, minutes (e.g., 23:59:59) filled in in step (4)

  4. Resample to fill in any data (particularly at end of timeseries) and drop temporary timestamp from (3)

revalidate()

Abstract method to run additional validations after Linkage.announce_linkage_to_instances.

static scale_load(profile: NumericTimeseries, to_peak: bool | float, to_energy: bool | float, td_losses_adjustment: float, leap_year: bool) β†’ NumericTimeseries

Scale timeseries by energy and/or median peak.

Scaling to energy assumes to_energy forecast value will match whether it is/is not a leap year. In other words, the energy forecast for a leap day includes an extra day’s worth of energy.

Parameters:
  • profile – Hourly timeseries to be scaled

  • to_peak – Median annual peak to be scaled to

  • to_energy – Mean annual energy to be scaled to

  • td_losses_adjustment – T&D losses adjustment (simple scalar on load profile)

  • leap_year – If year being scaled to is a leap year (affecting energy scaling)

Returns:

Scaled hourly timeseries

Return type:

new_profile

update_load_components(**kwargs)
SAVE_PATH: ClassVar[str] = 'loads'
property annual_results_column_order

This property defines the ordering of columns in the component’s annual results summary out of Resolve. The name of the model field or formulation_block pyomo component can be used.

property policies
property timeseries_attrs
property zone_names_string: str

This property concatenates the keys in the zones dictionary for results reporting.

new_modeling_toolkit.system.electric.reserve module

class Reserve

Bases: Component

Fields:
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 category: str | None = None
field class_name: str | None = None
field custom_constraints: dict[str, CustomConstraintLinkage] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = 3

  • default_exclude = True

field direction: ReserveDirection [Required]
field exclusive: bool = True
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 load_following_percentage: float | None = None
field loads: dict[str, LoadToReserve] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field name: str | tuple [Required]
field penalty_unserved_reserve: float = 10000

Modeled penalty for unserved operating reserves.

field requirement: NumericTimeseries [Optional]
field resources: dict[str, ResourceToReserve] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field zones: dict[str, ReserveToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

model_post_init(_ModelMetaclass__context: Any) β†’ None

We need to both initialize private attributes and call the user-defined model_post_init method.

revalidate()

Abstract method to run additional validations after Linkage.announce_linkage_to_instances.

SAVE_PATH: ClassVar[str] = 'reserves'
class ReserveDirection(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

DOWN = 'down'
UP = 'up'

new_modeling_toolkit.system.electric.resource_group module

class ResourceGroup

Bases: Component

Fields:
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 category: ResourceGroupCategory | None = None

[RECAP only]. string. Category of all resources in the group. Must be linked to a ResourceGroup. Used to upsample resources and simulate outages in RECAP.

field class_name: str | None = None
field fixed_annual_shape: bool | None = False

[RECAP only]. TRUE/FALSE. boolean. Whether or not resources in this group have a fixed annual shape. Typically used when you do not want a resource to got through RECAP’s day draw algorithm.

field flexible_resources: dict[str, Linkage] = {}
field hybrid_variable_resources: dict[str, Linkage] = {}
field hydro_resources: 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 name: str | tuple [Required]
field random_seed: float | None = None

Random seed used for outage simulation in RECAP.

field resources: dict[str, Linkage] = {}
field shed_dr_resources: dict[str, Linkage] = {}
field storage_resources: dict[str, Linkage] = {}
field thermal_resources: dict[str, Linkage] = {}
field variable_resources: dict[str, Linkage] = {}
draw_days_by_group(load_calendar, model_year, day_window_variable_draws, draw_random_seed)

Randomly draw the days for resource groups with a category of β€œvariable”. Default probability function is normal multivariate :returns:

day}: i is the datetimeindex of the full load profile,

group is the variable profile group, and day is a datetime.datetime representing the random day draw for that variable profile group

Return type:

dict {(i,group)

get_aggregated_generation_profile(model_year) β†’ Series
get_start_and_end_date()

Get the start and end date for the overlapping section of profiles for the group :returns: start_date and end_date (Timestamp) for the group of profiles :rtype: (start_date, end_date)

SAVE_PATH: ClassVar[str] = 'resource_groups'
property resource_dict
class ResourceGroupCategory(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

DEMAND_RESPONSE = 'dr'
FIRM = 'firm'
FLEXIBLE_LOAD = 'flexible_load'
GENERIC = 'generic'
HYBRID_STORAGE = 'hybrid_storage'
HYBRID_VARIABLE = 'hybrid_variable'
HYDRO = 'hydro'
STORAGE = 'storage'
THERMAL = 'thermal'
VARIABLE = 'variable'

new_modeling_toolkit.system.electric.tx_path module

class TxPath

Bases: Asset

Fields:
field annual_energy_policies: Annotated[dict[str, linkage.AnnualEnergyStandardContribution], Metadata(linkage_order='to', category=FieldCategory.OPERATIONS)] = {}
Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field annualized_capital_cost: Annotated[float, Metadata(category=FieldCategory.BUILD, units=units.dollar / units.kW_year, excel_short_title='Capital Cost', warning_bounds=(0, 1000))] = 0
Constraints:
  • category = FieldCategory.BUILD

  • units = dollar / kiloW_year

  • excel_short_title = Capital Cost

  • warning_bounds = (0, 1000)

  • show_year_headers = True

  • default_exclude = False

field annualized_fixed_om_cost: Annotated[ts.NumericTimeseries, Metadata(category=FieldCategory.BUILD, units=units.dollar / units.kW_year, excel_short_title='Fixed O&M', warning_bounds=(0, 100))] [Optional]
Constraints:
  • category = FieldCategory.BUILD

  • units = dollar / kiloW_year

  • excel_short_title = Fixed O&M

  • warning_bounds = (0, 100)

  • show_year_headers = True

  • default_exclude = False

field asset_groups: Annotated[dict[str, linkage.AssetToAssetGroup], Metadata(linkage_order='to')] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • 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 build_year: Annotated[pd.Timestamp, Metadata(category=FieldCategory.BUILD)] = Timestamp('2000-01-01 00:00:00') (alias 'commission_date')
Constraints:
  • category = FieldCategory.BUILD

  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field caiso_tx_constraints: Annotated[dict[str, linkage.AssetToCaisoTxConstraint], Metadata(linkage_order='to')] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field can_build_new: Annotated[bool, Metadata(category=FieldCategory.BUILD)] = False

Whether resource can be expanded (for now only linear capacity expansion).

Constraints:
  • category = FieldCategory.BUILD

  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field can_retire: Annotated[bool, Metadata(category=FieldCategory.BUILD)] = False

Whether resource can be retired. By default, resources cannot be retired.

Constraints:
  • category = FieldCategory.BUILD

  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field class_name: str | None = None
field cumulative_retired_capacity: ts.NumericTimeseries | None = None
field custom_constraints: Annotated[dict[str, CustomConstraintLinkage], Metadata(linkage_order=3, default_exclude=True)] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = 3

  • default_exclude = True

field elcc_surfaces: Annotated[dict[str, linkage.AssetToELCC], Metadata(linkage_order='to')] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field emissions_policies: Annotated[dict[str, linkage.EmissionsContribution], Metadata(linkage_order='to', category=FieldCategory.OPERATIONS)] = {}
Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field erm_policies: Annotated[dict[str, linkage.ERMContribution], Metadata(linkage_order='to')] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field forward_rating_profile: FractionalTimeseries | None [Optional]

Normalized fixed shape of TXPath’s potential forward rating

Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title = Forward Rating

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field hourly_energy_policies: Annotated[dict[str, linkage.HourlyEnergyStandardContribution], Metadata(linkage_order='to', category=FieldCategory.OPERATIONS)] = {}
Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field hurdle_rate_forward_direction: NumericTimeseries [Optional]
Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title = Forward Hurdle

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field hurdle_rate_reverse_direction: NumericTimeseries [Optional]
Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title = Reverse Hurdle

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

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 integer_build_increment: Annotated[float | None, Metadata(category=FieldCategory.BUILD, units=units.megawatt)] = None

If not None, consider integer (rather than linear) build decisions. If set equal to potential, this will force an all or nothing choice. Otherwise, this can be used to build certain increments of assets

Constraints:
  • ge = 0

  • category = FieldCategory.BUILD

  • units = megawatt

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field mean_time_to_repair: Annotated[float | None, Metadata(category=FieldCategory.RELIABILITY, units=units.hour)] = None

Mean time to repair

Constraints:
  • category = FieldCategory.RELIABILITY

  • units = hour

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field min_operational_capacity: Annotated[ts.NumericTimeseries | None, Metadata(units=units.MW)] = None

These three attributes are outputs, not inputs. They are initialized to None and are updated to their chosen optimal values after the RESOLVE model is solved. The attributes are used to give build and retirement decisions to a model run in production simulation mode.

Minimum required operational capacity (planned+selected) by model year for this asset

Constraints:
  • units = megawatt

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field name: str | tuple [Required]
field operational_capacity: ts.NumericTimeseries | None = None
field physical_lifetime: Annotated[int, Metadata(category=FieldCategory.BUILD, units=units.year)] = 100

Number of years after commission date that asset is operational.

Constraints:
  • ge = 0

  • category = FieldCategory.BUILD

  • units = year

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field planned_capacity: Annotated[ts.NumericTimeseries, Metadata(category=FieldCategory.BUILD, units=units.megawatt)] [Optional]
Constraints:
  • category = FieldCategory.BUILD

  • units = megawatt

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field pollutants: dict[str, Linkage] = {}
field potential: Annotated[float | None, Metadata(category=FieldCategory.BUILD, units=units.megawatt)] = inf
Constraints:
  • ge = 0

  • category = FieldCategory.BUILD

  • units = megawatt

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field prm_policies: Annotated[dict[str, linkage.ReliabilityContribution], Metadata(linkage_order='to')] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = to

  • default_exclude = False

field random_seed: Annotated[int | None, Metadata(category=FieldCategory.RELIABILITY)] = None

Random seed

Constraints:
  • category = FieldCategory.RELIABILITY

  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field retired_capacity: ts.NumericTimeseries | None = None
field reverse_rating_profile: FractionalTimeseries | None [Optional]

Normalized fixed shape of TXPath’s potential reverse rating

Constraints:
  • category = FieldCategory.OPERATIONS

  • units =

  • excel_short_title = Reverse Rating

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field selected_capacity: float | None = None
field stochastic_outage_rate: Annotated[float | None, Metadata(category=FieldCategory.RELIABILITY)] = None

Stochastic forced outage rate

Constraints:
  • category = FieldCategory.RELIABILITY

  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field vintage_parent_group: str | None = None
field zones: dict[str, ZoneToTransmissionPath] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

revalidate()

Abstract method to run additional validations after Linkage.announce_linkage_to_instances.

SAVE_PATH: ClassVar[str] = 'tx_paths'
property annual_results_column_order

This property defines the ordering of columns in the component’s annual results summary out of Resolve. The name of the model field or formulation_block pyomo component can be used.

property from_zone
property to_zone
class TxPathGroup

Bases: AssetGroup, TxPath

Fields:
  • aggregate_operations ()

  • annual_energy_policies ()

  • annualized_capital_cost ()

  • annualized_fixed_om_cost ()

  • asset_groups ()

  • assets ()

  • attr_path ()

  • build_year ()

  • caiso_tx_constraints ()

  • can_build_new ()

  • can_retire ()

  • class_name ()

  • cumulative_potential ()

  • cumulative_retired_capacity ()

  • custom_constraints ()

  • elcc_surfaces ()

  • emissions_policies ()

  • erm_policies ()

  • forward_rating_profile ()

  • hourly_energy_policies ()

  • hurdle_rate_forward_direction ()

  • hurdle_rate_reverse_direction ()

  • include ()

  • integer_build_increment ()

  • mean_time_to_repair ()

  • min_cumulative_new_build ()

  • min_operational_capacity ()

  • name ()

  • operational_capacity ()

  • physical_lifetime ()

  • planned_capacity ()

  • pollutants ()

  • potential ()

  • prm_policies ()

  • random_seed ()

  • retired_capacity ()

  • reverse_rating_profile ()

  • selected_capacity ()

  • stochastic_outage_rate ()

  • vintage_parent_group ()

  • vintages_to_construct ()

  • zones (dict[str, new_modeling_toolkit.core.linkage.ZoneToTransmissionPath])

field zones: dict[str, ZoneToTransmissionPath] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

model_post_init(_ModelMetaclass__context: Any) β†’ None

We need to both initialize private attributes and call the user-defined model_post_init method.

revalidate()

Abstract method to run additional validations after Linkage.announce_linkage_to_instances.

SAVE_PATH: ClassVar[str] = 'tx_paths/groups'

new_modeling_toolkit.system.electric.zone module

class Zone

Bases: Component

Fields:
field annual_energy_policies: dict[str, AllToPolicy] = {}
field assets: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • 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 biomass_resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field class_name: str | None = None
field consuming_fuel_production_plants: dict[str, ZoneToPlant] = {}
field consuming_fuel_storage_plants: dict[str, FromZoneToFuelStorage] = {}
field consuming_generic_demands: dict[str, ZoneToDemand] = {}
field consuming_generic_plants: dict[str, ZoneToPlant] = {}
field electrofuel_resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field emissions_policies: dict[str, AllToPolicy] = {}
field energy_demand_subsectors: dict[str, Linkage] = {}
field erm_policies: dict[str, AllToPolicy] = {}
field final_fuel_demands: dict[str, Linkage] = {}
field flexible_resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field hourly_energy_policies: dict[str, AllToPolicy] = {}
field hydro_resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

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 loads: dict[str, LoadToZone] = {}
field name: str | tuple [Required]
field non_energy_subsectors: dict[str, Linkage] = {}
field penalty_overgen: float = 10000

Modeled penalty for overgeneration.

Constraints:
  • category = FieldCategory.OPERATIONS

  • units = dollar / megawatt_hour

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field penalty_unserved_energy: float = 10000

Modeled penalty for unserved load.

Constraints:
  • category = FieldCategory.OPERATIONS

  • units = dollar / megawatt_hour

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • default_exclude = False

field prm_policies: dict[str, AllToPolicy] = {}
field producing_fuel_production_plants: dict[str, ZoneToPlant] = {}
field producing_fuel_storage_plants: dict[str, ToZoneToFuelStorage] = {}
field producing_generic_demands: dict[str, ZoneToDemand] = {}
field producing_generic_plants: dict[str, ZoneToPlant] = {}
field products: dict[str, ZoneToProduct] = {}
field reserves: dict[str, ReserveToZone] = {}
field resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field shed_dr_resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field stock_rollover_subsectors: dict[str, Linkage] = {}
field storage_resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field thermal_resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

field transportations: dict[str, ZoneToTransportation] = {}
field tx_paths: dict[str, ZoneToTransmissionPath] = {}
field variable_resources: dict[str, AssetToZone] = {}
Constraints:
  • units =

  • excel_short_title =

  • warning_bounds = (None, None)

  • show_year_headers = True

  • linkage_order = from

  • default_exclude = False

get_aggregated_load(modeled_year: int, weather_year_timestamp: Timestamp) β†’ float

Queries aggregated load in zone at given timepoint

get_aggregated_load_profile(modeled_year) β†’ Series

Queries aggregated load profile in zone

SAVE_PATH: ClassVar[str] = 'zones'

This class defines a zone object and its methods.

property annual_results_column_order

This property defines the ordering of columns in the component’s annual results summary out of Resolve. The name of the model field or formulation_block pyomo component can be used.

property consuming_demands

All demands in the zone that consume products

property consuming_plants

All plants in the zone that consume products

property electricity_products
property load_instances: Dict[str, Load]
property non_electricity_products
property policies
property producing_demands

All demands in the zone that produce products

property producing_plants

All plants in the zone that produce products

property resource_instances: Dict[str, GenericResource]
property sequestering_plants

All plants in the zone that sequester products (specific type of production)

property transportation_instances_from_zone: dict | None

All transportations from zone

property transportation_instances_to_zone: dict | None

All transportations to zone

property tx_path_instances_from_zone: Dict
property tx_path_instances_to_zone: Dict

Module contents