Source code for RCAIDE.Library.Methods.Powertrain.Distributors.Electrical_Bus.initialize_bus_properties

#  RCAIDE/Methods/Energy/Distributors/Electrical_Bus/initialize_bus_properties.py
# 
# Created:  Sep 2024, S. Shekar
# Modified: Jan 2025, M. Clarke
#
from RCAIDE.Library.Methods.Powertrain.Sources.Batteries.Common          import compute_module_properties 
from RCAIDE.Library.Methods.Powertrain.Converters.Fuel_Cells.Common             import compute_stack_properties

# ----------------------------------------------------------------------------------------------------------------------
#  METHODS
# ---------------------------------------------------------------------------------------------------------------------- 
[docs] def initialize_bus_properties(bus): """ Initializes the bus electrical properties based on what is appended onto the bus. Parameters ---------- bus : ElectricalBus The electrical bus component with the following attributes: - battery_modules : list List of battery modules connected to the bus - battery_module_electric_configuration : str Configuration of battery modules ('Series' or 'Parallel') - fuel_cell_stacks : list List of fuel cell stacks connected to the bus - fuel_cell_stack_electric_configuration : str Configuration of fuel cell stacks ('Series' or 'Parallel') Returns ------- None This function modifies the bus object in-place, setting the following attributes: - voltage : float Bus voltage [V] - nominal_capacity : float Nominal capacity [Ah] - maximum_energy : float Maximum energy storage capacity [J] Notes ----- This function calculates the electrical properties of the bus based on the connected energy sources (battery modules and fuel cell stacks). It handles both series and parallel configurations. For battery modules: - In series configuration: voltages add, capacity is the maximum of all modules - In parallel configuration: voltage is the maximum voltage of all modules, capacities add For fuel cell stacks: - In series configuration: voltages add - In parallel configuration: voltage is the maximum voltage of all stacks The function first computes properties for each individual module/stack by calling their respective property computation functions. See Also -------- RCAIDE.Library.Methods.Powertrain.Sources.Batteries.Common.compute_module_properties RCAIDE.Library.Methods.Powertrain.Converters.Fuel_Cells.Common.compute_stack_properties """ if len(bus.battery_modules) > 0: if bus.battery_module_electric_configuration == 'Series': bus.nominal_capacity = 0 bus.maximum_energy = 0 for battery_module in bus.battery_modules: compute_module_properties(battery_module) bus.voltage += battery_module.voltage bus.maximum_energy += battery_module.maximum_energy bus.nominal_capacity = max(battery_module.nominal_capacity, bus.nominal_capacity) elif bus.battery_module_electric_configuration == 'Parallel': bus.voltage = 0 bus.maximum_energy = 0 for battery_module in bus.battery_modules: compute_module_properties(battery_module) bus.voltage = max(battery_module.voltage, bus.voltage) bus.nominal_capacity += battery_module.nominal_capacity bus.maximum_energy += battery_module.initial_maximum_energy cumulative_fuel_cell_stack = 0 if len(bus.fuel_cell_stacks) > 0: if bus.fuel_cell_stack_electric_configuration == 'Series': bus.maximum_energy = 0 for fuel_cell_stack in bus.fuel_cell_stacks: compute_stack_properties(fuel_cell_stack) cumulative_fuel_cell_stack += fuel_cell_stack.voltage bus.voltage = min(fuel_cell_stack.voltage, cumulative_fuel_cell_stack) elif bus.fuel_cell_stack_electric_configuration == 'Parallel': for fuel_cell_stack in bus.fuel_cell_stacks: compute_stack_properties(fuel_cell_stack) bus.voltage = max(fuel_cell_stack.voltage, bus.voltage) return