EnergySystem - ptidejteam/tools4cities-metamenth GitHub Wiki

MetamEnTh EnergySystem models energy systems within buildings. It has classes to model renewable and non-renewable energy sources and energy storage systems.

Figure 1.0: MetamEnTh EnergySystem, showing the various classes and their relationships

Figure 2.0: MetamEnTh EnergySystem, showing classes and the methods they possess

Classes and Their Relationships

All classes (entities) have auto-generated IDs (UID) to uniquely identify objects created from them.

AbstractCommonEnergySystem

This class serves as the parent class for most EnergySystem classes. All energy systems inherit the attributes of this class.

Parent Class

AbstractDynamicEntity

Relationships

  • AbstractCommonEnergySystem has a one-to-one relationship with SchedulableEntity

Attributes

  • name: string, the name of the energy system
  • model: string (Optional), the model of the energy system
  • manufacturer: string (Optional), the manufacturer of the energy system
  • meter: AbstractReader (Optional), a meter that may be installed on the energy system

Behaviours (Methods)

None

AbstractEnergySystem

This class serves as the parent class for renewable and non-renewable energy systems.

Parent Class

AbstractCommonEnergySystem

Relationships

None

Attributes

  • inverter: bool, indicates whether an energy system has inverter or not
  • unit: MeasurementUnit, the measurement unit for whatever phenomenon measured from the energy system
  • manufacturing_year: int (Optional), the manufacturing year of the energy system
  • capacity: AbstractMeasure (Optional), the capacity of the energy system for the measured phenomenon

Behaviours (Methods)

None

AbstractElectrical

This class serves as the parent class for a subset of energy systems categorised as electricals.

Parent Class

AbstractCommonEnergySystem

Relationships

None

Attributes

  • power_state: PowerState, the power state of the electrical system

Behaviours (Methods)

None

ImmobileStorageEnergySystem

This class serves as the parent class for immobile storage systems.

Parent Class

AbstractEnergySystem

Relationships

  • ImmobileStorageEnergySystem has a one-to-many relationship with RenewableEnergySystem

Attributes

  • energy_source: EnergySource, the source of energy for the storage system
  • technology: Union[BatteryTech, CapacitorTech], the energy storage technology
  • renewable_sources: List[RenewableEnergySystem], the renewable energy sources for the storage system

Behaviours (Methods)

  • add_renewable_energy_source(renewable_energy_source: RenewableEnergySystem): adds a renewable energy source to a mobile storage system
  • remove_renewable_energy_source(renewable_energy_source: RenewableEnergySystem): removes a renewable energy source from a mobile storage system
  • get_renewable_energy_source(name: str): searches for an immobile storage system given its name

MobileStorageEnergySystem

This class serves as the parent class for mobile storage systems.

Parent Class

AbstractEnergySystem

Relationships

None

Attributes

None

Behaviours (Methods)

None

Battery

This class models battery energy storage systems.

Parent Class

ImmobileStorageEnergySystem

Relationships

None

Attributes

None

Behaviours (Methods)

None

ElectricVehicle

ElectricVehicle class models electric vehicles as storage energy systems (e.g., for charging and/or discharging their energy).

Parent Class

MobileStorageEnergySystem

Relationships

None

Attributes

  • v2g_capability: bool (default is False), indicates whether the electric vehicle can return electricity to the grid
  • v2g_power_limit: BinaryMeasure (optional), the maximum amount of power that the electric vehicle to draw from or give to the grid
  • v2g_mode: V2GMode (optional), the operational mode of the electrical vehicle, e.g., FREQUENCY_REGULATION

Behaviours (Methods)

None

SuperCapacitor

The SuperCapacitor class models supercapacitors in built environments.

Parent Class

ImmobileStorageEnergySystem

Relationships

None

Attributes

None

Behaviours (Methods)

None

Alternator

The Alternator class models electrical alternators in built environments.

Parent Class

AbstractElectrical

Relationships

None

Attributes

  • power_rating: BinaryMeasure (optional), the power rating of the alternator

Behaviours (Methods)

None

AutomaticTransferSwitch

The AutomaticTransferSwitch class models automatic transfer switches (ATS) in built environments.

Parent Class

AbstractElectrical

Relationships

None

Attributes

  • power_source_type: ATSPowerSourceType (optional), the power source type of the ATS, e.g., UTILITY_GENERATOR
  • transition_type: ATSTransitionType (optional), the transition type of the ATS, e.g., OPEN
  • operation_mode: ATSOperationMode (optional), the operation mode of the ATS, e.g., MANUAL
  • switching_mechanism: ATSSwitchingMechanism (optional), the switching mechanism of the ATS, e.g., CONTRACTOR

Behaviours (Methods)

None

UninterruptiblePowerSupply

The UninterruptiblePowerSupply class models uninterruptible power supplies (UPS) in built environments.

Parent Class

AbstractElectrical

Relationships

  • UninterruptiblePowerSupply has a one-to-many relationship with ImmobileStorageEnergySystem

Attributes

  • phase: UPSPhase, the phase used by the UPS, e.g., SPLIT
  • noise_filtering: bool (default is False), indicates whether the UPS has noise filtering capabilities
  • surge_suppression: bool (default is False), indicates whether the UPS has surge suppression capabilities
  • power_rating: BinaryMeasure (optional), the power rating of the UPS
  • storage_systems: List[ImmobileStorageEnergySystem], the storage systems associated with the UPS

Behaviours (Methods)

  • add_storage_system(storage_system: ImmobileStorageEnergySystem): adds a storage system to a UPS
  • remove_storage_system(storage_system: ImmobileStorageEnergySystem): removes a storage system from a UPS
  • get_storage_system_by_name(name) -> ImmobileStorageEnergySystem: searches for an immobile storage system given its name

Engine

The Engine class models engines that are part of HVAC and energy systems in built environments.

Parent Class

NonRenewableEnergySystem

Relationships

None

Attributes

  • engine_type: EngineType, the type of engine, e.g., FUEL_CELL
  • engine_mode: EngineMode, the engine mode of operation, e.g., CO_GENERATION
  • engine_sub_type: EngineSubType, the type of engine indicated by the fuel used, e.g., PROPANE

Behaviours (Methods)

None

SolarPV

The SolarPV class models solar panels that may be installed on some buildings.

Parent Class

RenewableEnergySystem

Relationships

None

Attributes

  • solar_pv_type: SolarPVType, the type of solar panel, e.g., BUILDING_INTEGRATED_PHOTOVOLTAIC
  • cell_type: CellType, the cell type used by the solar panels, e.g., POLYCRYSTALLINE
  • thermal_capacity: BinaryMeasure (optional), the thermal capacity of the solar panels
  • module_area: BinaryMeasure (optional), the module area of the solar panel

Behaviours (Methods)

None

WindMill

The WindMill class models windmills that may serve as renewable energy sources for buildings.

Parent Class

RenewableEnergySystem

Relationships

None

Attributes

  • number_of_turbines: int, the number of turbines for the windmill
  • turbine_type: WindTurbineType, the turbine type of the windmill, e.g., VERTICAL_AXIS_WIND_TURBINE_ON_SHORE

Behaviours (Methods)

None

NonRenewableEnergySystem

The NonRenewableEnergySystem serves as the parent class for all non-renewable energy system classes in MetamEnTh.

Parent Class

AbstractEnergySystem

Relationships

None

Attributes

None

Behaviours (Methods)

None

RenewableEnergySystem

The RenewableEnergySystem serves as the parent class for all renewable energy system classes in MetamEnTh.

Parent Class

AbstractEnergySystem

Relationships

None

Attributes

None

Behaviours (Methods)

None