Source code for RCAIDE.Library.Methods.Aerodynamics.Common.Drag.cooling_drag
# RCAIDE/Methods/Aerodynamics/Common/cooling_drag.py
#
#
# Created: May 2024, S S. Shekar
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
from RCAIDE.Framework.Core import Data
# python
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# cooling_drag
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def cooling_drag(state,settings,geometry):
"""
Computes the cooling drag based on the results of the Heat Exchanger operation
Inputs:
state.
conditions.freestream.
density [kg/m^3]
velocity [Knots]
pressure [Pascal]
energy.coolant_line.heat_exchanger.
pressure_differential [Pascal]
mass_flow_hex [kg/s]
analyses.aerodynamics.vehicle.reference_area [m^2]
Outputs:
cooling_drag [Unitless]
Assumptions:
The density across the duct is equal to the freestream density of air.
Inlet area is varied based of required inflow required
Source:
Brelje, Benjamin & Jasa, John & Martins, Joaquim & Gray, Justin. (2019).
Development of a conceptual-level thermal management system design capability in OpenConcept.
Properties Used:
None
"""
# Unpack Inputs
conditions = state.conditions
density = conditions.freestream.density
velocity = conditions.freestream.velocity
pressure = conditions.freestream.pressure
reference_area = geometry.reference_area
# Create an empty array for cooling drag coefficient
cd_cooling = np.zeros_like(density)
for network in geometry.networks:
for coolant_line in network.coolant_lines:
for tag, item in coolant_line.items():
if tag == 'heat_exchangers':
for heat_exchanger in item:
# unpack
HEX_results = conditions.energy[coolant_line.tag][heat_exchanger.tag]
mass_flow_hex = HEX_results.air_mass_flow_rate
hex_pressure_diff = HEX_results.pressure_diff_air
# Compute the Inlet area of the Ram
inlet_area = mass_flow_hex/(density*velocity)
outlet_area = inlet_area*heat_exchanger.atmospheric_air_inlet_to_outlet_area_ratio
eta_e = 0.5*(1-outlet_area/inlet_area)
# Compute Exit Parameters
exit_velocity = mass_flow_hex/(density*outlet_area)
exit_pressure = 0.5*density*((1+eta_e)*exit_velocity**2-velocity)+pressure-hex_pressure_diff
# Compute Drag due to cooling.
F_cooling_drag = mass_flow_hex*(exit_velocity*heat_exchanger.duct_losses -velocity) + outlet_area*heat_exchanger.duct_losses *(exit_pressure-pressure)
cd_cooling = F_cooling_drag/(0.5 * density * (velocity**2) * reference_area)
# Check if fan operation is active
cd_cooling[state.conditions.freestream.velocity<heat_exchanger.minimum_air_speed] = 0
# dump to results
conditions.aerodynamics.coefficients.drag.cooling.total= cd_cooling
return