Source code for RCAIDE.Library.Mission.Common.Update.weights
# RCAIDE/Library/Missions/Common/Update/weights.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# Imports
# ----------------------------------------------------------------------------------------------------------------------
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# Update Weights
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def weights(segment):
""" Updates the weight of the vehicle
Assumptions:
N/A
Inputs:
segment.state.
numerics.time.integrate [-]
conditions.weights.total_mass [kg]
conditions.weights.vehicle_mass_rate [kg/s]
conditions.freestream.gravity [m/s^2]
Outputs:
segment.state.conditions.
weights.total_mass
frames.inertial.gravity_force_vector
Properties Used:
N/A
"""
# unpack
conditions = segment.state.conditions
I = segment.state.numerics.time.integrate
m0 = conditions.weights.total_mass[0,0]
mdot = conditions.weights.vehicle_mass_rate
g = conditions.freestream.gravity
networks = segment.analyses.energy.vehicle.networks
for network in networks:
if 'fuel_lines' in network:
for fuel_line in network.fuel_lines:
fuel_line_results = conditions.energy[fuel_line.tag]
for fuel_tank in fuel_line.fuel_tanks:
fuel_line_results[fuel_tank.tag].mass[:,0] = fuel_line_results[fuel_tank.tag].mass[0,0] + np.dot(I, -fuel_line_results[fuel_tank.tag].mass_flow_rate[:,0])
# calculate
m = m0 + np.dot(I, -mdot)
# weight
W = m*g
# pack
conditions.weights.total_mass[1:,0] = m[1:,0]
conditions.frames.inertial.gravity_force_vector[:,2] = W[:,0]
return