Skip to content

Commit 51f6af1

Browse files
Merge pull request CenterHighPerformanceBuildingsPurdue#27 from bo3mrh/Update-supercritical-gas-cooler
Update supercritical gas cooler
2 parents 17057a9 + 8770c63 commit 51f6af1

File tree

3 files changed

+234
-133
lines changed

3 files changed

+234
-133
lines changed

ACHP/Correlations.py

+72-28
Original file line numberDiff line numberDiff line change
@@ -431,55 +431,99 @@ def ShahCondensation(x,AS,G,D,p):
431431
#A single value is given
432432
return ShahCondensation(x_min,AS,G,D,p)
433433

434-
def f_h_cp_supercritical(Tout,Tin,AS,OD,ID,mdot,p):
435-
436-
def SuperCriticalCondensation(T,AS,OD,ID,mdot,p):
434+
def Petterson_supercritical_average(Tout,Tin,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w):
435+
'''
436+
Petterson et al. (2000), Heat transfer and pressure drop for flow supercritical and subcritical CO2 in microchannel tubes
437+
All details for this correlation are available in Ding Li Thesis (Appendix B):
438+
"INVESTIGATION OF AN EJECTOR-EXPANSION DEVICE IN A TRANSCRITICAL CARBON DIOXIDE CYCLE FOR MILITARY ECU APPLICATIONS"
439+
'''
440+
441+
def Petterson_supercritical(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w):
442+
AS.update(CP.PT_INPUTS,p,T_w)
443+
h_w = AS.hmass() #[J/kg]
444+
mu_w = AS.viscosity() #[Pa-s OR kg/m-s]
445+
cp_w = AS.cpmass() #[J/kg-K]
446+
k_w = AS.conductivity() #[W/m-K]
447+
rho_w = AS.rhomass() #[kg/m^3]
448+
Pr_w = cp_w * mu_w / k_w #[-]
449+
437450
AS.update(CP.PT_INPUTS,p,T)
451+
h = AS.hmass() #[J/kg]
438452
mu = AS.viscosity() #[Pa-s OR kg/m-s]
439453
cp = AS.cpmass() #[J/kg-K]
440454
k = AS.conductivity() #[W/m-K]
441455
rho = AS.rhomass() #[kg/m^3]
442456
Pr = cp * mu / k #[-]
443-
457+
444458
Dh = OD - ID
445459
Area=pi*(OD**2-ID**2)/4.0
446460
u=mdot/(Area*rho)
447461
Re=rho*u*Dh/mu
448-
449-
# Friction factor of Churchill (Darcy Friction factor where f_laminar=64/Re)
450-
e_D = 0
451-
A = ((-2.457 * log( (7.0 / Re)**(0.9) + 0.27 * e_D)))**16
452-
B = (37530.0 / Re)**16
453-
f = 8 * ((8/Re)**12.0 + 1 / (A + B)**(1.5))**(1/12)
454-
455-
# Heat Transfer coefficient of Gnielinski
456-
Nu = (f/8)*(Re-1000)*Pr/(1+12.7*sqrt(f/8)*(Pr**(2/3)-1)) #[-]
457-
h = k*Nu/Dh #W/m^2-K
462+
Re_w=Re#rho_w*u*Dh/mu_w
463+
464+
if G > 350:
465+
e_D = 0 #smooth pipe
466+
f = (-1.8*log(6.9/Re + (1/3.7*e_D)**1.11))**(-2)
467+
Nu_m = (f/8)*(Re-1000)*Pr/(1+12.7*sqrt(f/8)*(Pr**(2/3)-1)) *(1+(D_l)**(2/3))
468+
Nu = Nu_m * (Pr/Pr_w)**0.11
469+
470+
else: # G<350
471+
472+
M = 0.001 #[kg/J]
473+
K = 0.00041 #[kg/J]
474+
475+
cp_avg = (h-h_w)/(T-T_w)
476+
477+
if cp_avg/cp_w <= 1:
478+
n = 0.66 - K*(q_flux_w/G)
479+
else: #cp_avg/cp_w <1
480+
n = 0.9 - K*(q_flux_w/G)
481+
482+
f0 = (0.79*log(Re)-1.64)**(-2)
483+
484+
g =9.81
485+
#coefficient of thermal expansion
486+
beta = AS.isobaric_expansion_coefficient() #[1/K]
487+
#Grashoff number
488+
Gr = g*beta*(T_w-T)*Dh**3/(mu/rho)**2
489+
if Gr/Re**2 < 5e-4:
490+
f = f0 * (mu_w/mu)**0.22
491+
elif Gr/Re**2 >= 5e-4 and G/Re**2 < 0.3:
492+
f = 2.15 * f0 * (mu_w/mu)**0.22 * (Gr/Re)**0.1
493+
else: #use f0 for friction factor
494+
f = f0
495+
496+
Nu_w_ppk = (f0/8)*Re_w*Pr_w/(1.07+12.7*sqrt(f/8)*(Pr_w**(2/3)-1))
497+
498+
Nu = Nu_w_ppk * (1-M*q_flux_w/G) * (cp_avg/cp_w)**n
499+
500+
h = k*Nu/Dh #[W/m^2-K]
501+
458502
return (h,f,cp,rho)
459-
460-
def SuperCriticalCondensation_h(T,AS,OD,ID,mdot,p):
503+
504+
def SuperCriticalCondensation_h(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w):
461505
'''return h value'''
462-
return SuperCriticalCondensation(T,AS,OD,ID,mdot,p)[0]
463-
def SuperCriticalCondensation_f(T,AS,OD,ID,mdot,p):
506+
return Petterson_supercritical(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w)[0]
507+
def SuperCriticalCondensation_f(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w):
464508
'''return f value'''
465-
return SuperCriticalCondensation(T,AS,OD,ID,mdot,p)[1]
466-
def SuperCriticalCondensation_cp(T,AS,OD,ID,mdot,p):
509+
return Petterson_supercritical(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w)[1]
510+
def SuperCriticalCondensation_cp(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w):
467511
'''return cp value'''
468-
return SuperCriticalCondensation(T,AS,OD,ID,mdot,p)[2]
469-
def SuperCriticalCondensation_rho(T,AS,OD,ID,mdot,p):
512+
return Petterson_supercritical(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w)[2]
513+
def SuperCriticalCondensation_rho(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w):
470514
'''return rho value'''
471-
return SuperCriticalCondensation(T,AS,OD,ID,mdot,p)[3]
515+
return Petterson_supercritical(T,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w)[3]
472516

473517
if not Tout==Tin:
474518
#A proper range is given
475-
h = quad(SuperCriticalCondensation_h,Tin,Tout,args=(AS,OD,ID,mdot,p))[0]/(Tout-Tin)
476-
f = quad(SuperCriticalCondensation_f,Tin,Tout,args=(AS,OD,ID,mdot,p))[0]/(Tout-Tin)
477-
cp = quad(SuperCriticalCondensation_cp,Tin,Tout,args=(AS,OD,ID,mdot,p))[0]/(Tout-Tin)
478-
rho = quad(SuperCriticalCondensation_rho,Tin,Tout,args=(AS,OD,ID,mdot,p))[0]/(Tout-Tin)
519+
h = quad(SuperCriticalCondensation_h,Tin,Tout,args=(T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w))[0]/(Tout-Tin)
520+
f = quad(SuperCriticalCondensation_f,Tin,Tout,args=(T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w))[0]/(Tout-Tin)
521+
cp = quad(SuperCriticalCondensation_cp,Tin,Tout,args=(T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w))[0]/(Tout-Tin)
522+
rho = quad(SuperCriticalCondensation_rho,Tin,Tout,args=(T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w))[0]/(Tout-Tin)
479523
return (h,f,cp,rho)
480524
else:
481525
#A single value is given
482-
return SuperCriticalCondensation(Tout,AS,OD,ID,mdot,p)
526+
return Petterson_supercritical(Tout,T_w,AS,G,OD,ID,D_l,mdot,p,q_flux_w)
483527

484528
def f_h_1phase_Tube(mdot,ID,T, p,AS,Phase='Single'):
485529
"""

ACHP/DryWetSegment.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -387,4 +387,5 @@ def DryWetSegment(DWS):
387387

388388
DWS.hout_a=hout_a
389389
DWS.hin_a=hin_a
390-
DWS.Tout_r=Tout_r
390+
DWS.Tout_r=Tout_r
391+
DWS.Twall_s=Tout_r - Q/UA_i #inner wall temperature for gas cooler model

0 commit comments

Comments
 (0)