cycleParse = mat.parse(`
c = [{},{},{},{}];
#Short function to get fluid properties
p(DesiredProperty, FluidState) = props(DesiredProperty, fluid, FluidState);
#Define low and high pressure
pLow = p('P', {'T|gas': evap.T, Q: 100%});
pHigh = p('P', {'T|liquid': cond.T, Q: 0% });
#4 to 1 Evaporation
c[1].P = pLow;
c[1].T = evap.T + evap.superHeating;
c[1].D = p('D', {'T|gas':c[1].T, P:c[1].P});
c[1].H = p('H', {'T|gas':c[1].T, P:c[1].P});
c[1].S = p('S', {'T|gas':c[1].T, P:c[1].P});
#1 to 2 Compression of vapor
c[2].P = pHigh + cond.P_drop ;
H_i = p('H',{P:c[2].P, S:c[1].S});
c[2].H = (H_i-c[1].H)/etaS + c[1].H;
c[2].T = p('T', c[2]);
c[2].D = p('D', c[2]);
c[2].S = p('S', c[2]);
#2 to 3 Condensation
c[3].P = pHigh;
c[3].T = cond.T - cond.subCooling;
c[3].D = p('D', {'T|liquid':c[3].T, P:c[3].P});
c[3].H = p('H', {'T|liquid':c[3].T, P:c[3].P});
c[3].S = p('S', {'T|liquid':c[3].T, P:c[3].P});
#3 to 4 Expansion
c[4].H = c[3].H;
c[4].P = c[1].P + evap.P_drop;
c[4].T = p('T', c[4]);
c[4].D = p('D', c[4]);
c[4].S = p('S', c[4]);
#Work, Energy and Performance
W_comp = mDot*(c[2].H - c[1].H);
Q_h = mDot*(c[2].H - c[3].H);
Q_c = mDot*(c[1].H - c[4].H);
evap_COP = Q_c/W_comp;
cond_COP = Q_h/W_comp;
`)