# Cycle CalculationsΒΆ

It is also possible to carry out simple thermodynamic cycle calculations with the CoolProp classes. These calculations are based on the utility classes CoolProp.Plots.SimpleCycles.StatePoint and CoolProp.Plots.SimpleCycles.StateContainer, which can be used on their own as demonstrated below. Note that the utility classes support numerous notations to access their members and you can chose the one you like best or mix them:

In [1]: from __future__ import print_function

In [2]: import CoolProp

In [3]: from CoolProp.Plots import StateContainer

In [4]: T0 = 300.000; p0 = 200000.000; h0 = 112745.749; s0 = 393.035

In [5]: cycle_states = StateContainer()

In [6]: cycle_states[0,'H'] = h0

In [7]: cycle_states[0]['S'] = s0

In [8]: cycle_states[0][CoolProp.iP] = p0

In [9]: cycle_states[0,CoolProp.iT] = T0

In [10]: cycle_states[1,"T"] = 300.064

In [11]: print(cycle_states)
Stored State Points:
state        T (K)       p (Pa)    d (kg/m3)     h (J/kg)   s (J/kg/K)
0      300.000   200000.000            -   112745.749      393.035
1      300.064            -            -            -            -


The utility classes were designed to work well with the plotting objects described above and this example illustrates how a simple Rankine cycle can be added to to a $$T,s$$ graph, note how the unit conversion is handled:

import CoolProp
from CoolProp.Plots import PropertyPlot
from CoolProp.Plots import SimpleCompressionCycle
pp = PropertyPlot('HEOS::R134a', 'PH', unit_system='EUR')
pp.calc_isolines(CoolProp.iQ, num=11)
cycle = SimpleCompressionCycle('HEOS::R134a', 'PH', unit_system='EUR')
T0 = 280
pp.state.update(CoolProp.QT_INPUTS,0.0,T0-10)
p0 = pp.state.keyed_output(CoolProp.iP)
T2 = 310
pp.state.update(CoolProp.QT_INPUTS,1.0,T2+15)
p2 = pp.state.keyed_output(CoolProp.iP)
pp.calc_isolines(CoolProp.iT, [T0-273.15,T2-273.15], num=2)
cycle.simple_solve(T0, p0, T2, p2, 0.7, SI=True)
cycle.steps = 50
sc = cycle.get_state_changes()
pp.draw_process(sc)
import matplotlib.pyplot as plt
plt.close(cycle.figure)
pp.show()