Cycle Description
Condenser (Q_out)
2 ──────────────→ 3
↑ ↓
Compressor Expansion Valve
↑ ↓
1 ←──────────── 4
Evaporator (Q_in)
Complete Code
from ThermoSim import (
ThermodynamicModel, Compressor, Expansion_valve, HeatExchanger,
)
from ThermoSim.plotting import CyclePlotter
Model = ThermodynamicModel()
Model.set_dead_state()
wf = 'R134a'
# Design conditions
T_evap = -10 + 273.15 # evaporator temperature (°C → K)
T_cond = 40 + 273.15 # condenser temperature
T_superheat = 5 # superheat at evaporator exit (K)
T_subcool = 5 # subcooling at condenser exit (K)
eta_comp = 0.80
m_dot = 0.1 # kg/s
# Get saturation pressures
from CoolProp.CoolProp import PropsSI
P_evap = PropsSI('P', 'T', T_evap, 'Q', 1, wf)
P_cond = PropsSI('P', 'T', T_cond, 'Q', 0, wf)
# State points
# 1: Compressor inlet (superheated vapour from evaporator)
Model.add_point(wf, '1', P=P_evap, T=T_evap + T_superheat, Mass_flowrate=m_dot)
# 2: Compressor outlet
Model.add_point(wf, '2', P=P_cond)
# 3: Condenser outlet (subcooled liquid)
Model.add_point(wf, '3', P=P_cond, T=T_cond - T_subcool)
# 4: Expansion valve outlet
Model.add_point(wf, '4', P=P_evap)
# Components
Compressor(Model, 'Compressor', '1', '2', n_isen=eta_comp)
HeatExchanger(Model, 'Condenser', PPT=5, HEX_type='SimpleHEX',
HeatAdded=False,
Hot_In_state='2', Hot_Out_state='3',
Cold_In_state=None, Cold_Out_state=None)
Expansion_valve(Model, 'ExpValve', '3', '4')
HeatExchanger(Model, 'Evaporator', PPT=5, HEX_type='SimpleHEX',
HeatAdded=True,
Hot_In_state=None, Hot_Out_state=None,
Cold_In_state='4', Cold_Out_state='1')
# Results
Model.Solve(verbose=1)
Model.ModelSummary()
W_comp = Model.Component['Compressor'].work
Q_evap = Model.Component['Evaporator'].Q
Q_cond = Model.Component['Condenser'].Q
COP = Q_evap / W_comp
print(f"\nCompressor work: {W_comp:.2f} W")
print(f"Cooling capacity: {Q_evap:.2f} W")
print(f"Heat rejected: {Q_cond:.2f} W")
print(f"COP: {COP:.2f}")
# Plots
plotter = CyclePlotter(Model)
plotter.plot_Ts_diagram(['1', '2', '3', '4', '1'],
title='R134a Refrigeration Cycle')
plotter.plot_Ph_diagram(['1', '2', '3', '4', '1'],
title='R134a P-h Diagram')