Problem 14.14 Refrigeration Cycle Calculation Using the Peng-Robinson EOS

A refrigerator uses the refrigerant R-12, dichlorodifluoromethane. The steps and conditions of the cycle are as follows:

  • Isobaric condensation to saturation temperature 30°C

  • Adiabatic let-down to P2 = 20 degrees subcooling

  • Isobaric evaporation to saturation temperature of 20 °C

  • Isentropic compression to P4 = 30 °C

Use the Peng-Robinson EOS.

Solution

This is quite straightforward, with the only complication coming from the degrees of subcooling.

[1]:
# Set the conditions and imports
from scipy.constants import bar
from thermo import ChemicalConstantsPackage, PRMIX, CEOSLiquid, CEOSGas, FlashPureVLS
fluid = 'dichlorodifluoromethane'
constants, correlations = ChemicalConstantsPackage.from_IDs([fluid])

zs = [1]

eos_kwargs = dict(Tcs=constants.Tcs, Pcs=constants.Pcs, omegas=constants.omegas)
liquid = CEOSLiquid(PRMIX, HeatCapacityGases=correlations.HeatCapacityGases,
                    eos_kwargs=eos_kwargs)
gas = CEOSGas(PRMIX, HeatCapacityGases=correlations.HeatCapacityGases,
              eos_kwargs=eos_kwargs)
flasher = FlashPureVLS(constants, correlations, liquids=[liquid], gas=gas, solids=[])

T1 = 273.15+30
state_1 = flasher.flash(VF=0, T=T1)
saturation_state_1 = flasher.flash(T=-20+273.15, VF=1)
# Wording is unclear for state 2 but thermodynamically his is what makes sense
state_2 = flasher.flash(H=state_1.H(), P=saturation_state_1.P)
# Check the flash lowers the pressure
assert state_2.P < state_1.P
state_3 = flasher.flash(P=state_2.P, VF=1)
saturation_state_2 = flasher.flash(T=30+273.15, VF=1)
state_4 = flasher.flash(P=saturation_state_2.P, S=state_3.S())
states = [state_1, state_2, state_3, state_4]

condensation_duty = (state_1.H() - state_4.H())
heating_duty = state_3.H() - state_2.H()
compressing_duty = state_4.H() - state_3.H()
condensation_duty, heating_duty, compressing_duty
[1]:
(-17242.594866461008, 13841.52397663936, 3401.0708898216462)
[2]:
# Check the cycle convergence
cycle_error = sum([condensation_duty, heating_duty, compressing_duty])
cycle_error
[2]:
-9.094947017729282e-13
[3]:
for state in states:
    print(f'T={state.T:.2f} K, P={state.P:.2f} Pa, VF={state.VF:.2f}, S={state.S():.2f} J/(mol*K), H={state.H():.2f} J/(mol)')
T=303.15 K, P=746445.43 Pa, VF=0.00, S=-72.22 J/(mol*K), H=-17223.28 J/(mol)
T=253.15 K, P=152387.52 Pa, VF=0.29, S=-70.06 J/(mol*K), H=-17223.28 J/(mol)
T=253.15 K, P=152387.52 Pa, VF=1.00, S=-15.38 J/(mol*K), H=-3381.75 J/(mol)
T=312.16 K, P=746445.43 Pa, VF=1.00, S=-15.38 J/(mol*K), H=19.32 J/(mol)