Source code for RCAIDE.Library.Methods.Thermal_Management.Batteries.Air_Cooled.air_cooled_performance
# RCAIDE/Methods/Thermal_Management/Batteries/Heat_Acquisition_System/Direct_Air_Heat_Acquisition/direct_convection_model.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# Compute Net Convected Heat
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def air_cooled_performance(HAS,battery,bus,coolant_line, Q_heat_gen,T_cell,state,delta_t,t_idx):
'''Computes the net heat removed by direct air heat acquisition system.
Assumptions:
1) Battery pack cell heat transfer can be modelled as a cooling columns in a cross-flow
2) Isothermal battery cell - the temperature at the center of the cell is the same at
the surface of the cell
Source:
Heat Transfer Model:
Pakowski, Zdzisław. "Fundamentals of Heat and Mass Transfer, Frank P Incropera,
David P DeWitt, Theodore L Bergman, Adrienne S Lavine, J. Wiley & Sons, Hoboken
NJ (2007), 997 pp." (2007): 1683-1684., Chapter 7 pg 437-446
Inputs:
h (heat transfer coefficient) [W/(m^2*K)]
As_cell (battery cell surface area) [meters^2]
H_cell (battery cell height) [meters]
T_ambient (ambient temperature) [Kelvin]
T_current (pack temperature) [Kelvin]
T_cell (battery cell temperature) [Kelvin]
heat_transfer_efficiency [unitless]
Outputs:
T_cell (Updated battery cell temperature) [Kelvin]
Properties Used:
None
'''
# battery properties
As_cell = battery.cell.surface_area
D_cell = battery.cell.diameter
H_cell = battery.cell.height
cell_mass = battery.cell.mass
Cp = battery.cell.specific_heat_capacity
Nn = battery.geometrtic_configuration.normal_count
Np = battery.geometrtic_configuration.parallel_count
n_total_module = Nn*Np
h = HAS.convective_heat_transfer_coefficient
heat_transfer_efficiency = HAS.heat_transfer_efficiency
T_ambient = state.conditions.freestream.temperature[t_idx,:]
if n_total_module == 1:
# Using lumped model
Q_convec = h*As_cell*(T_cell - T_ambient)
Q_heat_gen_tot = Q_heat_gen
else:
K_coolant = state.conditions.freestream.thermal_conductivity[t_idx,:]
nu_coolant = state.conditions.freestream.kinematic_viscosity[t_idx,:]
Pr_coolant = state.conditions.freestream.prandtl_number[t_idx,:]
rho_coolant = state.conditions.freestream.density[t_idx,:]
Cp_coolant = HAS.cooling_fluid.compute_cp(state.conditions.freestream.temperature[t_idx,:],state.conditions.freestream.pressure[t_idx,:] )
V_coolant = HAS.cooling_fluid.flowspeed
# Chapter 7 pg 437-446 of Fundamentals of heat and mass transfer
S_T = battery.geometrtic_configuration.normal_spacing
S_L = battery.geometrtic_configuration.parallel_spacing
S_D = np.sqrt(S_T**2+S_L**2)
if 2*(S_D-D_cell) < (S_T-D_cell):
V_max = V_coolant*(S_T/(2*(S_D-D_cell)))
else:
V_max = V_coolant*(S_T/(S_T-D_cell))
T = (T_ambient+T_cell)/2
Re_max = V_max*D_cell/nu_coolant
if all(Re_max) > 10E2:
C = 0.35*((S_T/S_L)**0.2)
m = 0.6
else:
C = 0.51
m = 0.5
Pr_w_coolant = HAS.cooling_fluid.compute_prandtl_number(T)
Nu = C*(Re_max**m)*(Pr_coolant**0.36)*((Pr_coolant/Pr_w_coolant)**0.25)
h = Nu*K_coolant/D_cell
Tw_Ti = (T - T_ambient)
Tw_To = Tw_Ti * np.exp((-np.pi*D_cell*n_total_module*h)/(rho_coolant*V_coolant*Nn*S_T*Cp_coolant))
dT_lm = (Tw_Ti - Tw_To)/np.log(Tw_Ti/Tw_To)
Q_convec = heat_transfer_efficiency*h*np.pi*D_cell*H_cell*n_total_module*dT_lm
Q_convec[Tw_Ti == 0.] = 0.
Q_heat_gen_tot = Q_heat_gen*n_total_module
Q_net = Q_heat_gen_tot - Q_convec
dT_dt = Q_net/(cell_mass*n_total_module*Cp)
T_current = T_cell + dT_dt*delta_t
heat_transfer_efficiency = (Tw_To - T_ambient) / (T_cell - T_ambient)
state.conditions.energy[coolant_line.tag][HAS.tag].total_heat_removed[t_idx+1] = Q_convec
state.conditions.energy[coolant_line.tag][HAS.tag].effectiveness[t_idx+1] = heat_transfer_efficiency
return T_current