Source code for relsad.simulation.sequence.history

import os

from relsad.network.components import MainController
from relsad.network.systems import PowerSystem
from relsad.results.storage import save_history
from relsad.Time import TimeUnit
from relsad.visualization.plotting import plot_history


[docs]def plot_obj_history( obj_list: list, time_unit: TimeUnit, save_dir: str, ): """ Plots the history of a list of objects in the power system Parameters ---------- obj_list : list List of objects time_unit : TimeUnit The time unit of the simulation save_dir : str The saving directory Returns ---------- None """ for attribute in obj_list[0].history: plot_history( obj_list=obj_list, time_unit=time_unit, attribute=attribute, save_dir=save_dir)
[docs]def save_obj_history( obj_list: list, time_unit: TimeUnit, save_dir: str, ): """ Saves the history of a list of objects in the power system Parameters ---------- obj_list : list List of objects time_unit : TimeUnit The time unit of the simulation save_dir : str The saving directory Returns ---------- None """ for attribute in obj_list[0].history: save_history( obj_list=obj_list, attribute=attribute, time_unit=time_unit, save_dir=save_dir, )
[docs]def save_sequence_history( power_system: PowerSystem, time_unit: TimeUnit, save_dir: str, ): """ Saves the history from an sequence Parameters ---------- power_system : PowerSystem A power system element time_unit : TimeUnit The time unit of the simulation save_dir : str The saving path Returns ---------- None """ if not os.path.isdir(save_dir): os.makedirs(save_dir) # Power system save_obj_history( obj_list=[power_system], time_unit=time_unit, save_dir=os.path.join(save_dir, power_system.name), ) # Child networks for network in power_system.child_network_list: save_obj_history( obj_list=[network], time_unit=time_unit, save_dir=os.path.join(save_dir, network.name), ) # Buses comp_save_dict = { "bus": power_system.buses, "ev_parks": power_system.ev_parks, "battery": power_system.batteries, "line": power_system.lines, "circuitbreaker": power_system.circuitbreakers, "disconnector": power_system.disconnectors, "intelligent_switch": power_system.intelligent_switches, "sensor": power_system.sensors, "distribution_controllers": power_system.controller.distribution_controllers, "microgrid_controllers": power_system.controller.microgrid_controllers, "main_controller": ( [power_system.controller] if isinstance(power_system.controller, MainController) else [] ), "ict_line": power_system.ict_lines, "ict_node": power_system.ict_nodes, } for obj_name, obj_list in comp_save_dict.items(): if len(obj_list) > 0: save_obj_history( obj_list=obj_list, time_unit=time_unit, save_dir=os.path.join(save_dir, obj_name), )