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.energy.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 """ conditions = segment.state.conditions.energy # loop through battery modules in networks for network in segment.analyses.energy.vehicle.networks: # if network has busses for bus in network.busses: bus.append_segment_conditions(conditions, segment) for battery_module in bus.battery_modules: battery_module.append_battery_segment_conditions(bus, conditions, segment) 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, conditions) if tag == 'heat_exchangers': for heat_exchanger in item: heat_exchanger.append_segment_conditions(segment,bus,coolant_line, conditions) if tag == 'reservoirs': for reservoir in item: reservoir.append_segment_conditions(segment, coolant_line, conditions) # if network has fuel lines for fuel_line in network.fuel_lines: for fuel_tank in fuel_line.fuel_tanks: fuel_tank_conditions = conditions[fuel_line.tag][fuel_tank.tag] if segment.state.initials: fuel_tank_initials = segment.state.initials.conditions.energy[fuel_line.tag][fuel_tank.tag] fuel_tank_conditions.mass[:,0] = fuel_tank_initials.mass[-1,0] else: fuel_tank_conditions.mass[:,0] = segment.analyses.energy.vehicle.networks[network.tag].fuel_lines[fuel_line.tag].fuel_tanks[fuel_tank.tag].fuel.mass_properties.mass