You are on page 1of 22

1

Cascaded Refrigeration Cycle


EN317 (2021 Offering) Course Project, IIT Bombay

Group 1
Rishabh Jain (19D170023)
Sanidhya Anand (19D170027)
Srushti Bhamare (19D170006)
Vedant Chandak (19D170034)

Ref : Didatech technologies


2

Contents
1. Abstract ...3
2. Introduction …3
3. Assumptions ...4
4. Working Principle ...4
5. Working Fluids ...4
6. Selection of Components ...5
7. Mass & Energy Balance Equations ...7
8. Simulating the System ...7
9. Design of Components ...8
10. Results ...10
11. References ...10
12. Appendix ...13
3

Abstract
The cascade vapour compression cycle is a widely used refrigeration cycle in low-temperature
cooling applications. They exploit the comparatively superior thermophysical properties of CO2
in the low-temperature evaporators while NH3 in the high-temperature condenser keep the
overall operating pressure low. We provide a review, design methodology and simulation for a
simple cascaded vapour compression system with a cooling load of surimi fishes, and present
results matching state-of-the-art literature.

Introduction
A Cascade Vapor-Compression Cycle is a two-stage thermodynamic cycle. It consists of two
separate subsystems – high-temperature cycle(HTC), low-temperature cycle(LTC). Both the
cycles are connected to each other through a heat exchanger, which is used as the evaporator in
the HTC and the condenser in the LTC. A single-stage compression system is limited by low
evaporation pressure which can even solidify the refrigerant, thus a two-stage compression
system cascaded by a heat exchanger can be used to solve this problem. It has a wide range of
applications in the field of hypothermal medicine, cryopreservation for instruments, and
cryogenics. It is also widely used in the storage and distribution of foods, supermarkets, air
conditioning, etc.

Schematic Diagram

Fig 1: Cascaded CO2 /NH3 refrigeration cycle [1]


4

Assumptions [1]
Each stage of the cascaded vapour compression cycle is an ideal vapour compression
refrigeration cycle. Thus the compression process is isentropic, and the refrigerant enters the
compressor as a saturated vapour at the evaporator pressure. Also, the refrigerant leaves the
condenser as a saturated liquid at the condenser pressure.

1. Steady Operating Conditions exist.


2. Kinetic and potential energy changes are negligible.
3. The heat exchanger piping is adiabatic with no pressure drops.
4. All throttling devices are isenthalpic.
5. The outlet states of the condenser and the cascade condenser are at saturated liquid states
and that of the evaporator is at saturated vapour state.
6. The high- and low-temperature circuit compressors are non-isentropic, and their
isentropic efficiency can be expressed as a function of the pressure ratio.
7. Refrigerant is superheated vapour at the inlet of the compressor.​
8. Power consumption of fan and water circulation pump is negligible.

Working Principle [2]


To solve the impracticality of using a single-stage refrigeration cycle at lower temperatures (-40°
to -50° C) due to low COP and high-temperature differences (as a consequence of low operating
temperatures), a CCRS operates with two cycles at differing temperatures and refrigerants, thus
regulating the operating temperatures.

The two circuits are thermally connected to each other via a cascaded heat exchanger, which acts
as an evaporator for the HTC and a condenser for the LTC.

1. The condenser in this cascade refrigeration system rejects a heat of Qh from the working
fluid at a condensing temperature of Tc, to its warm environment at a temperature of To.
2. The evaporator of this cascade system absorbs a refrigerated load Ql from the cold
refrigerated space at Tcl to the evaporating temperature Te.
3. The heat absorbed by the evaporator of the LTC plus the work input to the LTC compressor
equals the heat absorbed by the evaporator of the HTC heat exchanger.

Working fluids [3]

Importance of working fluids: The selection of working fluids has a great influence on the
system performance. In the selection of working fluids, besides thermodynamic properties,
physical and chemical properties of working fluids should also be considered, such as toxicity,
combustibility, explosivity, interaction with metal materials, interaction with lubricants, low
boiling temperature, and atmospheric environmental friendliness.In a two-stage auto-cascade
system two different working fluids; a low boiling point (low temperature) refrigerant and a high
boiling point (high temperature) refrigerant are used. The vapour mixture consisting of both
5

these refrigerants is compressed in the compressor to a discharge pressure (P-discharge).

Selection of working fluids [4]


In CCRS, NH3-CO2, Ammonia (R717) etc. are commonly used as refrigerants. We will be using
NH3-CO2 as a refrigerant as it has a better Coefficient of performance (COP) and lowers the
charge amount of ammonia. NH3 & CO2 have negligible GWP & ODP values which place them
in the highest rank among environment-friendly refrigerants.NH3 has a very high latent heat of
vaporization i.e. 6-8 times than other common refrigerants at 0 ºC.CO2 as a refrigerant has
favourable properties such as high liquid and vapour density, high volumetric refrigeration
capacity, low compression ratio, lower normal boiling temperature, A1 safety group rating, and it
is a biosphere gas. The higher value of vapour density and volumetric refrigeration capacity of
CO2 helps to maintain components size smaller.

Properties :

At 0oC NH3 CO2

Vapour Density 3.48 kg/m3 97.6 kg/m3

Volumetric Refrigeration 4509 kJ/m3 22,545 kJ/m3


Capacity

Selection of components [5]


Cascade Condenser - Heat exchanger: The condenser’s function is to remove heat from the hot
vapour refrigerant discharged from the compressor, at a condensing temperature of Tmc. The
superheated vapour from the compressor enters the cascade condenser then it gets condensed.
Simultaneously that heat is passed to the evaporator in the HTC at Tme. We have chosen a
Counterflow Double pipe heat exchanger for our system.

Compressor: It is present in both stages of the refrigeration cycle; the refrigerant enters the
compressor as a low-pressure vapour. The compressor compresses the refrigerants to a
high-pressure vapour, causing them to become superheated. Once the refrigerants are
compressed and heated, they leave the compressor and enter the next stage of the cycle. For this
purpose, we have chosen a Rotary Screw Compressor.

Condenser: It consists of tubes through which the hot working fluid flows and heat are rejected
to the surrounding medium to be used by the evaporator of the HTC.We have chosen a
Counterflow Double pipe condenser.

Evaporator: The liquid refrigerant (for HTC) from the expansion valve (throttling device) enters
the evaporator, where it boils and changes into a saturated vapour. The function of the
evaporator is to absorb heat from the surrounding media (to which heat is rejected by the
6

condenser).

Expansion Valve: The third stage consists of the high-pressure liquid refrigerant entering a
metering device or expansion valve. The expansion works to maintain high pressure on the inlet
side, while also expanding the liquid refrigerant and lowering the pressure on the outlet side.
During the process of expansion, the temperature of the liquid refrigerant is also reduced.

Input & Output Parameters:

Stream Stream Stream Stream Stream Stream Stream Stream


1 2 3 4 5 6 7 8

Temperature

Q(vapour NA NA
fraction)

Pressure

Enthalpy

Mass-flow
rate

Input Parameters

Output Parameters(Calculated)
7

Mass balance & energy balance equations:


The mass and energy balance equations are referenced from Li. et al. [1], and can be seen here:

Fig 3: Balance equations[1]


Simulating the system:
For a comprehensive design of the system and designing the individual components, we used the
Python programming language. Components are individually designed with their relevant
parameters and the operating parameters are:

1. Tc (Temperature at which condensation occurs in the condenser)


2. Tmc (Temperature at which condensation occurs in cascade condenser)
3. Tme (Temperature at which evaporation occurs in cascade condensor)
4. Te (Temperature at which evaporation occurs in refrigerative load evaporator)

The simulation is carried out as per the refrigerative load required by the 10 tonne per day Surimi
production capacity plant[3], with operating parameters taken as Te = -53°C, Tc = 35°C, Tme =
-20°C and Tmc = -15°C. Li et al. [1] uses a parameter ΔTmc to define the difference between the
two temperatures in the cascade condenser, which we generalise for our purposes. All the other
parameters are defined by quality fractions or the cooling load at the evaporator, with the only
exception being the superheated vapour enthalpy. This parameter is defined using the isentropic
efficiency method as shown in [1]. Adequate comments have been provided throughout the code
for documentation of our process. Refer to the Results section for more on this.
8

Design of Components
Design of two components from our cycle has been done, a screw-type compressor and a
cascaded heat exchanger acting as a condenser for the LTC and an evaporator for the HTC.

1. Cascade Condenser: The type of heat exchanger chosen for our purposes is a double pipe
heat exchanger with refrigerant grade Carbon Dioxide as the hot fluid (Inner Heat Tube) and
refrigerant grade Ammonia as the cold fluid (Outer Tube). The temperatures at the inlets and
outlets are as defined in the operating parameters. Note that since evaporation happens in the
outer tube throughout, it is an isothermal process and heat gain is completely in the form of latent
heat.

Fig 5: Double Pipe Heat Exchanger (Counter Flow)​


https://www.alternative-energy-tutorials.com/images/stories/heating/alt124.gif​

Assumptions:
● There is no heat loss/gain to or from the surroundings.
● Negligible thickness for heat exchanger walls & no conduction losses.
● The overall heat transfer coefficient is constant for each discretized section.
● Steady flow conditions.
● Specific heats of hot & cold fluids are constant, where applicable.
● Flow rates of hot & cold fluids are constant.

Assumed dimensions[6]:
Diameter of inner pipe: 16.7 mm
Diameter of outer pipe: 28.7 mm

Equations & Correlations[7]: We split the entire heat exchanger into three sections, for a more
feasible calculation of the required area of heat exchange, through which the length required may
be calculated. The length of the superheated region’s heat exchange is later presented in the
Results section. The chosen sections are:
1. For superheated region:
a. For superheated to saturated vapour region: The Colburn Correlation for
superheated carbon dioxide is used with parameters calculated from the assumed
9

values.
b. For condensing region: The Zalewski Correlation for condensation of refrigerant
grade carbon dioxide may be used here along with the methodology presented in
[4].
2. For evaporation region: The Zalewski Correlation for refrigerant grade Ammonia may be
employed with the methodology presented in [4].

Area Calculation: Area calculation is done using the LMTD method, with results mentioned in
the Results section. A thing to note here is that, the inside heat transfer coefficient is taken to be
dominating in all cases. When viscous liquids are heated in a standard tubular heat exchanger by
condensing steam or hot fluid of low viscosity, the film heat transfer coefficient of the viscous
liquid will be much smaller than that of the hot fluid side. Therefore, it will become the
controlling resistance for heat transfer. This condition is also present in case of air or gas heaters
where the gas side film heat transfer coefficient will be very low (typically of the order of 0.01 to
0.002 times condensing vapor on the other side.

Cost Calculation:

● Heat transfer rate : 3.727 KJ/sec


● Area of heat exchanger : 0.426 m2
● Material : Aluminium
−6 3
● Volume of heat exchanger = 451.29× 10 𝑚
● Required mass of material= 1.2 kg
● Total material cost = 1000 Rs
● Assembling & design cost = 9000 Rs
● Total cost = 10000Rs (Ref. Indiamart)

2. Rotary-Screw compressor: The refrigerant enters as a low-pressure vapor. ​The compressor


compresses the refrigerants to a high-pressure vapor, causing them to become superheated. ​The
best choice of Compressor for the Cascade Refrigeration Cycle would be a Rotary screw
compressor. Advantages of Rotary screw compressor are as follows:
● Continuous airflow/100% duty cycle
● Larger quantities of air
● Higher CFM per hp
● Longer lifespan
● Better warranties
● Quieter
● Energy efficient
10

Conditions for which we were selecting Compressor

Mass Flow Rate 0.0109 kg/s

Suction Pressure 6 Bar

Discharge Pressure 22.8 Bar

Suction Temperature 220 K

Discharge Temperature 321.05 K

Mass flow rate = 0.9 CFM

Selection of compressor:

We were not able to find a compressor satisfying exactly our needs but found 2 compressors
which were close to our requirements.

Cost Calculations:
We assume we buy the first compressor mentioned above.

Principle cost = Rs 6,00,000 / unit

Operating Cost
Nominal Power 4-11 kW
Average Power Consumed 8kW
Average cost of Electricity = Rs. 9 / kWhr (Tariff from Adani Electricity)

Electricity Consumed per month = 8*24*30 = 5760 kWhr

Cost of Electricity = 5760*9 = Rs. 51,840 / month


Auxillary Costs = Rs15,000 / month

Net Operating Cost = Rs. 66,840 / month


11

Results
The first set of results are obtained from simulating the system at the parameters mentioned in
the above sections. They are logged as follows:

Fig 4: Simulation Results for Cascaded Vapour Compression Cycle

Values obtained from the above simulation almost exactly match those in [1], except for our COP
values which are much lower than those reported in the paper. The reason behind this may be
that our cooling load may be significantly different, but that does not explain the huge gap.

From the above simulation and employing the Colburn Correlation for superheated Carbon
Dioxide, we obtained a length of 8m for the superheated region heat exchanger (with
aforementioned diameters). This length is on par with other heat exchangers used in the literature
[6].

REFERENCES
[1] Tzong Shin Lee et. al, Thermodynamic analysis of optimal condensing temperature of
cascade-condenser in CO2/NH3 cascade refrigeration systems
[2] Mingzhang Pan et. al, A Review of the Cascade Refrigeration System; Lee, T.S et. al,
Thermodynamic analysis of optimal condensing temperature of cascade-condenser in CO2/NH3
cascade refrigeration systems.
[3] Multi-Evaporator And Cascade Systems : Lesson 13 (IIT KGP NPTEL)
[4] Santosh Kumar Saini , Mani Sankar Dasgupta , Kristina N. Widell , Souvik Bhattacharyya,
Comparative Analysis of a Few Novel Multi-evaporator CO2-NH3
Cascade Refrigeration System for Seafood Processing & Storage
[5] Mingzhang Pan et. al, A Review of the Cascade Refrigeration System, Cascade Refrigeration
System “For Blood Storage”
[6] Shuvam Mohant, Shofique Uddin Ahmed, Computational Modeling of Counter Flow Heat
Exchanger for LMTD Analysis.
[7] Experimental Study on Heat and Mass Transfer in Ammonia Evaporative Condensers,
Dumitrescu et. Al​
12

APPENDIX

Modelling Python Code

import numpy as np
import os
import sys
import matplotlib.pyplot as plt
import argparse

'''
In anaconda, run:
conda install -c conda-forge CoolProp
conda install -c ptable
'''
from CoolProp.CoolProp import PropsSI
from prettytable import PrettyTable

'''
Parameters for our modelled Cascaded Vapour-Compression Cycle
are defined. Unless specified otherwise, the key is XY where
X is the quantity being studied and Y is the position of the
stream in the cascaded compression cycle.
'''

class Evap():
'''
Evaporator (Cooling Load)
Attributes:
- QL: Cooling load
- mL: Mass flow rate of working fluid in evaporator
- Te: Evaporating temperature
'''
def __init__(self):
self.QL = 0
self.mL = 0
self.Te = 0

'''
Variables for Cycle (both combined)
1: Output point of Evaporative Load
2: Output point of LTC Compressor
3: Output point of Cascade Condensor
4: Output point of LTC Throttling Device
5: Output point of Cascade Evaporator
6: Output point of HTC Compressor
7: Output point of HTC Condensor
13

8: Output point of HTC Throttling Device

Unless specified otherwise,


m: mass flow rate, Q: Quality Fraction of woring fluid
T: Temperature of woring fluid, P: Pressure of working fluid
h: Specific Enthalpy of working fluid
'''
class LTC():
'''
Low temperature cycle
'''
def __init__(self):
self.fluid = 'CarbonDioxide'

self.m1 = None
self.Q1 = 1 # saturated vapour after compression
self.T1 = None
self.P1 = None
self.h1 = None

self.m2 = None
self.Q2 = 'NA'
self.T2 = None
self.P2 = None
self.h2 = None

self.m3 = None
self.Q3 = 0 # saturated liquid after condensation
self.T3 = None
self.P3 = None
self.h3 = None

self.m4 = None
self.Q4 = None
self.T4 = None
self.P4 = None
self.h4 = None

class HTC():
'''
High temperature cycle
'''
def __init__(self):
self.fluid = 'Ammonia'

self.m5 = None
self.Q5 = 1 # saturated vapour after compression
14

self.T5 = None
self.P5 = None
self.h5 = None

self.m6 = None
self.Q6 = "NA"
self.T6 = None
self.P6 = None
self.h6 = None

self.m7 = None
self.Q7 = 0 # saturated liquid after condensation
self.T7 = None
self.P7 = None
self.h7 = None

self.m8 = None
self.Q8 = None
self.T8 = None
self.P8 = None
self.h8 = None

class LTCComp():
'''
LTC Compressor
Attributes:
- neta_m: Mechanical efficiency of compressor
- neta_e: Electrical efficiency of compressor
- Wl: Work input to compressor
'''
def __init__(self):
self.neta_m = 0.65
self.neta_e = 1
self.Wl = 0
self.neta_s = 0

class Cond():
'''
Condenser
Attributes:
- Qh: Heat transferred from working fluid to condenser sink
- mH: Mass flow rate of working fluid passing through
condenser
- Tc: Condensing temperature
'''
def __init__(self):
self.Qh = 0
15

self.mH = 0
self.Tc = 0

#Cascade Condenser
class CascadeCond():
'''
Cascade Condenser
Attributes:
- delT: Difference in temperature between evaporating and
condensing units
- Qm: Heat exchanges between evaporating and condensing units
'''
def __init__(self):
self.delT = 0
self.Qm = 0

class HTCComp():
'''
HTC Compressor
Attributes:
- neta_m: Mechanical efficiency of compressor
- neta_e: Electrical efficiency of compressor
- Wl: Work input to compressor
'''
def __init__(self):
self.neta_m=0.65
self.neta_e=1
self.Wh = 0
self.neta_s = 0

class COP():

def __init__(self):
self.NTC=0
self.HTC=0
self.net=0
self.LTC_list=[]
self.HTC_list=[]
self.net_list=[]

def getKelvin(temp):
'''
Converts Celsius scale temperature to Kelvin scale
Inputs:
- temp: Temperature in Celsius
Returns:
- Temperature in Kelvin
16

'''
return temp + 273

def setParameters(Te, Tc, Tmc, Tme, ltc_mfr, htc, ltc, evap,


cond, cc):
'''
Sets essential stream parameters for cascaded vapour
compression cycle
Inputs:
- Te: Evaporating temperature at LTC evaporator (Cooling load)
- Tc: Condensing temperature at HTC condenser
- Tmc: Condensing temperature in cascade condenser
- Tme: Evaporating temperature cascade evaporator
- ltc_mfr: Mass flow rate of working fluid in low temperature
cycle
- htc: High temperature circuit object
- ltc: Low temperature circuit object
- evap: Evaporator object
- cond: Condenser object
- cc: Cascade condenser object
Returns:
- mH: Mass flow rate of high temperature cycle working fluid
corresponding to required parameters
'''
# Temperatures
# ------------------------------
'''
Parameters set are Tx for x in (1,3,4,5,7,8).
T1: Set equal to evaporating temperature (Te) of working fluid
in LTC evaporator, assuming isothermic process of evaporation
T3: Set equal to condensing temperature (Tmc) of working fluid
in cascade condenser
T4: Set equal to evaporating temperature (Te) of working fluid
in LTC evaporator, under the same assumption as T1

T5: Set equal to evaporating temperature (Tme) of working


fluid in cascade evaporator, assuming isothermic process of
evaporation
T7: Set equal to condensing temperature (Tc) of working fluid
in HTC condenser
T8: Set equal to evaporating temperature (Tme) of working
fluid in cascade evaporator, assuming isothermic process of
evaporation
'''
evap.Te = ltc.T4 = ltc.T1 = Te
ltc.T3 = Tmc
17

cc.delT = Tmc - Tme


htc.T8 = htc.T5 = Tme
cond.Tc = htc.T7 = Tc

# Pressures
# ------------------------------
'''
Parameters set are Px for x in (1,2,3,4,5,6,7,8).
P1: Equals the pressure at output of evaporator (Saturation
pressure of vapour CO2 at Te)
P2: Equals the pressure at output of LTC compressor
P3: Equals the pressure at output of cascade condenser
(Saturation pressure of liquid CO2 at Tmc)
P4: Equals the pressure at output of LTC throttling valve
(assuming isenthalpic throttling)

P5: Equals the pressure at output of cascade evaporator


(Saturation pressure of vapour NH3 at Tme)
P6: Equals the pressure at output of HTC compressor
P7: Equals the pressure at output of condenser (Saturation
pressure of liquid NH3 at Tc)
P8: Equals the pressure at output of HTC throttling valve
(assuming isenthalpic throttling)
'''
ltc.P1 = ltc.P4 = PropsSI("P","Q",ltc.Q1,"T",ltc.T1,ltc.fluid)
ltc.P2 = ltc.P3 = PropsSI("P","Q",ltc.Q3,"T",ltc.T3,ltc.fluid)

htc.P5 = htc.P8 = PropsSI("P","Q",htc.Q5,"T",htc.T5,htc.fluid)


htc.P6 = htc.P7 = PropsSI("P","Q",htc.Q7,"T",htc.T7,htc.fluid)

'''
Difference in temperature between saturation temperature and
temperature of superheated fluid
'''
# Degree of Superheat = 5
# -------------------------------
# ltc.T2 = PropsSI("T","Q",1,"P",ltc.P2,ltc.fluid) + 10
# htc.T6 = PropsSI("T","Q",1,"P",htc.P6,htc.fluid) + 10

# Enthalpies
# -------------------------------
ltc.h1 = PropsSI("H","Q",ltc.Q1,"T",ltc.T1,ltc.fluid)
# ltc.h2 = PropsSI("H","T",ltc.T2,"P",ltc.P2,ltc.fluid)
ltc.h3 = PropsSI("H","Q",ltc.Q3,"T",ltc.T3,ltc.fluid)
ltc.h4 = ltc.h3 # isenthalpic throttling
htc.h5 = PropsSI("H","Q",htc.Q5,"P",htc.P5,htc.fluid)
# htc.h6 = PropsSI("H","T",htc.T6,"P",htc.P6,htc.fluid)
18

htc.h7 = PropsSI("H","Q",htc.Q7,"T",htc.T7,htc.fluid)
htc.h8 = htc.h7 # isenthalpic throttling

# Quality Factors
# -------------------------------
#ltc.Q2 = PropsSI("Q","T", ltc.T2,"P", ltc.P2, ltc.fluid)
ltc.Q4 = PropsSI("Q","H", ltc.h4,"P", ltc.P4, ltc.fluid)
#htc.Q6 = PropsSI("Q","T", htc.T6,"P", htc.P6, htc.fluid)
htc.Q8 = PropsSI("Q","H", htc.h8,"P", htc.P8, htc.fluid)

# calculate mfr for htc fluid for the given parameters


mH = LTC_Compressor(ltc_mfr, ltc, ltc_comp, True)
return mH

def Evaporator(mL, ltc, evap):


# Between stream 1 and 4
ltc.m1 = evap.mL = mL
ltc.m4 = mL
evap.QL = evap.mL*(ltc.h1-ltc.h4)
#print("QL = ", evap.QL," units")
return

def LTC_Compressor(mL, ltc, ltc_comp, flag = False):


# Between stream 1 and 2
ltc.m2 = mL
# ltc_comp.Wl = 90000 * ltc_comp.neta_m * ltc_comp.neta_e
ltc_comp.neta_s = -0.00097 * (ltc.P2 / ltc.P1) ** 2 - 0.01026
* (ltc.P2 / ltc.P1) + 0.83955
entropy_2 = PropsSI("Smolar", "T", ltc.T1, "P", ltc.P1,
ltc.fluid)
h2_s = PropsSI("H", "Smolar", entropy_2, "P", ltc.P2,
ltc.fluid)
ltc.h2 = ltc.h1 + (h2_s - ltc.h1) / ltc_comp.neta_s
ltc_comp.Wl = mL * (ltc.h2 - ltc.h1) / (ltc_comp.neta_m *
ltc_comp.neta_e)
ltc.T2 = PropsSI("T","H",ltc.h2,"P",ltc.P2,ltc.fluid)
#print("WL = ", ltc_comp.Wl, " Units")
mH = mL * (ltc.h2 - ltc.h3) / (htc.h5 - htc.h8)
if(flag):
return mH
else:
return

def Cascade_Condensor(mH, mL, ltc, htc, cc):


# Between stream 2 and 3, 5 and 8
ltc.m3 = mL
19

htc.m8 = htc.m5 = mH
cc.Qm = mL*(ltc.h2 - ltc.h3)
#print("Qm = ",cc.Qm," Units")
return

def LTC_Throttling(mL, ltc):


# Between stream 3 and 4
ltc.m4 = mL
try:
if(ltc.h4 != ltc.h3):
raise ValueError()
except ValueError:
print("Assumptions for isenthalpic throttling failing")
return

def HTC_Compressor(mH, htc, htc_comp):


# Between stream 5 and 6
htc.m6 = mH
htc_comp.neta_s = 0.00476 * (htc.P6 / htc.P5) ** 2 - 0.09238 *
(htc.P6 / htc.P5) + 0.89810
entropy_6 = PropsSI("Smolar", "Q", 1, "P", htc.P5, htc.fluid)
h6_s = PropsSI("H", "Smolar", entropy_6, "P", htc.P6,
htc.fluid)
htc.h6 = htc.h5 + (h6_s - htc.h5) / htc_comp.neta_s

htc_comp.Wh = mH * (htc.h6 - htc.h5) / (htc_comp.neta_m *


htc_comp.neta_e)

htc.T6 = PropsSI("T","H",htc.h6,"P",htc.P6,htc.fluid)
#print("Wh = ",htc_comp.Wh," Units")
return

def HTC_Condenser(mH, htc, cond):


# Between stream 6 and 7
htc.m7 = mH
cond.Qh = mH*(htc.h6 - htc.h7)
#print("Qh = ", cond.Qh," Units")
return

def HTC_ThrottlingDevice(htc):
# Between stream 7 and 8
try:
if(htc.h7 != htc.h8):
raise ValueError()
except ValueError:
print("Assumptions for isenthalpic throttling failing")
20

def runSimulation(mH, mL, htc, ltc, evap, cond, cc, htc_comp,


ltc_comp):
Evaporator(mL, ltc, evap)
LTC_Compressor(mL, ltc, ltc_comp)
Cascade_Condensor(mH, mL, ltc, htc, cc)
LTC_Throttling(mL, ltc)
HTC_Compressor(mH, htc, htc_comp)
HTC_Condenser(mH, htc, cond)
HTC_ThrottlingDevice(htc)

return

def printSimulation(evap,ltc_comp,cc,htc_comp,cond):
print("QL = ", round(evap.QL*0.001,3)," KJ/s")
print("WL = ", round(ltc_comp.Wl*0.001,3), "KJ/s")
print("Qm = ",round(cc.Qm*0.001,3),"KJ/s")
print("Wh = ",round(htc_comp.Wh*0.001,3),"KJ/s")
print("Qh = ", round(cond.Qh*0.001,3),"KJ/s")

def printValues(htc, ltc):


x = PrettyTable()
x.field_names = ["Stream","Mass Flow Rate (Kg/s)",
"Temperature (K) ", "Pressure (MPa)", "Enthalpy
(KJ/Kg)","Quality of Fluid Q"]
x.add_row(["Stream 1",
ltc.m1,ltc.T1,round(ltc.P1*(10**(-6)),2),round(ltc.h1*(10**(-3))
,2),ltc.Q1])
x.add_row(["Stream 2",
ltc.m2,round(ltc.T2,2),round(ltc.P2*(10**(-6)),2),round(ltc.h2*(
10**(-3)),2),ltc.Q2])
x.add_row(["Stream 3",
ltc.m3,ltc.T3,round(ltc.P3*(10**(-6)),2),round(ltc.h3*(10**(-3))
,2),ltc.Q3])
x.add_row(["Stream 4",
ltc.m4,ltc.T4,round(ltc.P4*(10**(-6)),2),round(ltc.h4*(10**(-3))
,2),round(ltc.Q4,2)])
x.add_row(["Stream 5",
htc.m5,htc.T5,round(htc.P5*(10**(-6)),2),round(htc.h5*(10**(-3))
,2),htc.Q5])
x.add_row(["Stream 6",
htc.m6,round(htc.T6,2),round(htc.P6*(10**(-6)),2),round(htc.h6*(
10**(-3)),2),htc.Q6])
x.add_row(["Stream 7",
htc.m7,htc.T7,round(htc.P7*(10**(-6)),2),round(htc.h7*(10**(-3))
,2),htc.Q7])
x.add_row(["Stream 8",
htc.m8,htc.T8,round(htc.P8*(10**(-6)),2),round(htc.h8*(10**(-3))
21

,2),round(htc.Q8,2)])
print(x)

def calculateCOP(evap,ltc_comp,cc,htc_comp,COP):
COP.LTC=(evap.QL)/(ltc_comp.Wl)
COP.HTC=(cc.Qm)/htc_comp.Wh
COP.net = (evap.QL)/(ltc_comp.Wl+htc_comp.Wh)

def CalculateCOPForGraph(evap,ltc_comp,cc,htc_comp,COP):
COP.LTC_list.append(evap.QL/ltc_comp.Wl)
COP.HTC_list.append(cc.Qm/htc_comp.Wh)
COP.net_list.append(evap.QL/(ltc_comp.Wl+htc_comp.Wh))

def printCOPValues(COP):
print("COP Values:")
print("COP (LTC) = ",round(COP.LTC,2))
print("COP (HTC) = ",round(COP.HTC,2))
print("COP (Net) = ",round(COP.net,2))

def COPvsTmc(COP):
Tmc_list=list(range(-25,0,1))
for i in Tmc_list:
Tmc=getKelvin(i)
Tme=getKelvin(i-5)
mH = setParameters(Te, Tc, Tmc, Tme, mL, htc, ltc, evap,
cond, cc)
runSimulation(mH, mL, htc, ltc, evap, cond, cc, htc_comp,
ltc_comp)
CalculateCOPForGraph(evap,ltc_comp,cc,htc_comp,COP)
plt.plot(Tmc_list,COP.LTC_list,label="COP(LTC)")
plt.plot(Tmc_list,COP.HTC_list,label="COP(HTC)")
plt.plot(Tmc_list,COP.net_list,label="COP(net)")
plt.legend(bbox_to_anchor=(1,1))
plt.xlabel('Tmc in Celsius')
plt.ylabel('COP_HTC, COP_LTC,COP_net')
plt.show()
Tmc=getKelvin(-15)
Tme=getKelvin(-20)
mH = setParameters(Te, Tc, Tmc, Tme, mL, htc, ltc, evap, cond,
cc)
runSimulation(mH, mL, htc, ltc, evap, cond, cc, htc_comp,
ltc_comp)
COP.LTC_list.clear()
COP.HTC_list.clear()
COP.net_list.clear()

def COPvsTc(COP):
22

Te = getKelvin(-53)
Tmc = getKelvin(-15)
Tme = getKelvin(-20)
Tc_list=list(range(30,40,1))
for i in Tc_list:
Tc=getKelvin(i)
mH = setParameters(Te, Tc, Tmc, Tme, mL, htc, ltc, evap,
cond, cc)
runSimulation(mH, mL, htc, ltc, evap, cond, cc, htc_comp,
ltc_comp)
CalculateCOPForGraph(evap,ltc_comp,cc,htc_comp,COP)
plt.plot(Tc_list,COP.LTC_list,label="COP(LTC)")
plt.plot(Tc_list,COP.HTC_list,label="COP(HTC)")
plt.plot(Tc_list,COP.net_list,label="COP(net)")
plt.legend(bbox_to_anchor=(1,1))
plt.xlabel('Tc in Celsius')
plt.ylabel('COP_HTC, COP_LTC,COP_net')
plt.show()
Tcc=getKelvin(35)
mH = setParameters(Te, Tc, Tmc, Tme, mL, htc, ltc, evap, cond,
cc)
runSimulation(mH, mL, htc, ltc, evap, cond, cc, htc_comp,
ltc_comp)
COP.LTC_list.clear()
COP.HTC_list.clear()
COP.net_list.clear()

if __name__ == "__main__":
htc, ltc = HTC(), LTC()
evap, cond, cc = Evap(), Cond(), CascadeCond()
htc_comp, ltc_comp = HTCComp(), LTCComp()
COP=COP()
mL = 0.0109
Te = getKelvin(-53)
Tc = getKelvin(35)
Tmc = getKelvin(-15)
Tme = getKelvin(-20)

mH = setParameters(Te, Tc, Tmc, Tme, mL, htc, ltc, evap, cond,


cc)
runSimulation(mH, mL, htc, ltc, evap, cond, cc, htc_comp,
ltc_comp)
printSimulation(evap,ltc_comp,cc,htc_comp,cond)

calculateCOP(evap,ltc_comp,cc,htc_comp,COP)
printCOPValues(COP)
printValues(htc, ltc)

You might also like