Problem 14.11 Pressure Rise In a Storage Tank Upon Heating

500 kg of propylene is contained in a 1 m^3 vessel stored at 30 °C. The vessel is heated - from solar radiation in the problem statement. What is the initial pressure?

The safety valve of the tank activates at 60 bar. If the cooling system is disabled, what temperature will the contents of the vessel be when the valve actuates?


This is straightforward - an initial solution with total volume, mass, and temperature specified, followed by solving for the end temperature to obtain a specified pressure.

From experience the vessel is known to be liquid. Because of that, we can skip the flash calculations and work directly with the liquid phase object. That is normally much faster than the flash calculations.

from scipy.constants import bar, hour
from thermo import ChemicalConstantsPackage, PRMIX, CEOSLiquid, CoolPropLiquid, CEOSGas, CoolPropGas, FlashPureVLS
fluid = 'propylene'
constants, correlations = ChemicalConstantsPackage.from_IDs([fluid])

T1 = 30 + 273.15
P2 = 60*bar
zs = [1]
V_total = 1 # m^3
m = 500 # kg

backend = 'HEOS'
gas = CoolPropGas(backend, fluid, T=T1, P=1e5, zs=zs)
liquid = CoolPropLiquid(backend, fluid, T=T1, P=1e5, zs=zs)

flasher = FlashPureVLS(constants, correlations, gas=gas, liquids=[liquid], solids=[])

# Calculate the total number of moles
moles = m/(1e-3*constants.MWs[0])
# Calculate the molar volume
Vm_initial = V_total/moles

# We know the phase is liquid, so we can skip the flash and solve for the liquid at this state
state_1 =, V=Vm_initial, zs=zs)
print(f'The initial pressure is {state_1.P/1e6: .3f} MPa')

state_2 =, V=Vm_initial, zs=zs)
print(f'The end tempererature is {state_2.T: .3f} K')
The initial pressure is  1.979 MPa
The end tempererature is  311.102 K