Source code for RCAIDE.Library.Mission.Common.Initialize.energy

# RCAIDE/Library/Missions/Common/Initialize/energy.py
# 
# 
# Created:  Jul 2023, M. Clarke
# Modified: Sep 2024, S. Shekar

# ----------------------------------------------------------------------------------------------------------------------
#  energy
# ----------------------------------------------------------------------------------------------------------------------  
[docs] def energy(segment): """ Initializes energy states for vehicle networks at mission segment start Parameters ---------- segment : Segment The mission segment being analyzed Notes ----- This function initializes energy-related conditions for all energy networks in the vehicle, including batteries, fuel systems, and thermal management systems. It handles both electrical and fuel-based energy storage systems. The function processes: 1. Electrical networks with busses - Battery module conditions - Thermal management systems * Battery cooling systems * Heat exchangers * Coolant reservoirs 2. Fuel-based networks - Fuel tank conditions - Fuel mass tracking **Required Segment Components** segment.analyses.vehicle.networks: Network configurations containing: - Electrical busses with battery modules - Cooling systems and heat exchangers - Fuel lines and tanks **State Variables** conditions.energy: For electrical systems: - Battery states - Thermal conditions - Coolant properties For fuel systems: - Fuel mass - Tank conditions **Major Assumptions** * Well-defined network architecture * Valid initial conditions * Compatible energy storage systems * Proper thermal management setup Returns ------- None Updates segment conditions directly See Also -------- RCAIDE.Framework.Mission.Segments """ ones_row = segment.state.ones_row conditions = segment.state.conditions vehicle = segment.analyses.vehicle # loop through battery modules in networks for network in vehicle.networks: # if network has busses for bus in network.busses: for fuel_tank in bus.fuel_tanks: fuel = fuel_tank.fuel if segment.state.initials: conditions.weights.components.mass[fuel.tag][:,0] = segment.state.initials.conditions.weights.components.mass[fuel.tag][-1,0] elif vehicle.networks[network.tag].busses[bus.tag].fuel_tanks[fuel_tank.tag].fuel != None: conditions.weights.components.mass[fuel.tag][:,0] = vehicle.networks[network.tag].busses[bus.tag].fuel_tanks[fuel_tank.tag].fuel.mass_properties.mass bus.append_segment_conditions(segment) for battery_module in bus.battery_modules: battery_module.append_battery_segment_conditions(segment, bus) for coolant_line in network.coolant_lines: for tag, item in coolant_line.items(): if tag == 'battery_modules': for battery in item: for btms in battery: btms.append_segment_conditions(segment,coolant_line) if tag == 'heat_exchangers': for heat_exchanger in item: heat_exchanger.append_segment_conditions(segment,bus,coolant_line) if tag == 'reservoirs': for reservoir in item: reservoir.append_segment_conditions(segment, coolant_line) # if network has fuel lines for fuel_line in network.fuel_lines: fuel_line.append_segment_conditions(segment)