assetra.system

class assetra.system.EnergySystem(unit_datasets: dict[slice(<class 'type'>, <class 'xarray.core.dataarray.DataArray'>, None)]={})[source]

Class responsible for managing unit datasets (built energy systems)

Parameters:

(dict[Type (unit_datasets) – xr.Dataset]) : Mapping from derived energy unit type to its associated unit dataset

property size: float

Total number of units in system

property system_capacity: float

Total nameplate capacity of a system

property unit_datasets: dict[slice(<class 'type'>, <class 'xarray.core.dataset.Dataset'>, None)]

Mapping from derived energy unit type to unit dataset

get_system_by_type(unit_type: list[type] | type) EnergySystem[source]

Return a system comprised of the subset of unit datasets corresponding to one (or more) energy unit types.

For example, get a [sub]system with only the responsive or non-responsive units of a system

Parameters:

unit_type (list[type] | type) – Either a derived energy unit type or a list of derived energy unit types.

Returns:

An energy system whose unit datasets are a sub-set of

of this energy system.

Return type:

EnergySystem

save(directory: Path, overwrite=False) None[source]

Save energy system to a directory. Unit datasets are saved as netcdf files

Parameters:
  • directory (Path) – Path to which energy system is saved. This path should either be empty or not exist yet.

  • overwrite (bool, optional) – _description_. Defaults to False.

load(directory: Path) None[source]

Load energy system from a saved directory

Parameters:

directory (Path) – Path from which energy system is loaded. This should be the same path passed to EnergySystem.save

class assetra.system.EnergySystemBuilder[source]

Class responsible for managing energy units and building energy systems

property energy_units: tuple[EnergyUnit]

Energy units added to builder object

property size: int

Number of energy units added to builder object

add_unit(energy_unit: EnergyUnit) None[source]

Add an energy unit to the system builder object.

Parameters:

energy_unit (EnergyUnit) – Energy unit to add to system builder

Raises:
  • RuntimeWarning – Invalid energy unit type added to system builder

  • RuntimeWarning – Duplicate unit added to energy system builder

remove_unit(energy_unit: EnergyUnit) None[source]

Remove an energy unit from the system builder object.

Parameters:

energy_unit (EnergyUnit) – Energy unit to remove from system builder

build() EnergySystem[source]

Return a populated EnergySystem instance. Take energy units added to the builder object, compile each unit type into a unit dataset (fleet), and instantiate an EnergySystem with the resulting unit dataset dictionary.

This is the recommended method to instantiate EnergySystem objects

Returns:

Populated energy system instance

Return type:

EnergySystem

static from_energy_system(energy_system: EnergySystem) EnergySystemBuilder[source]

Return a populated EnergySystemBuilder instance. Take energy unit datasets from an energy system, convert datasets into individual energy units, and add units to a new EnergySystemBuilder object

This is the inverse to EnergySystem.build, and is useful for modifying energy systems which have been loaded directly from file using the EnergySystem.load function

Parameters:

energy_system (EnergySystem) – Populated energy system

Returns:

Populated builder instance

Return type:

EnergySystemBuilder