In [1]:

```
import math
# Variables
n = 1000.; #[mol]
T = 400.; #[K]
P_1 = 100.; #[kPa]
P_2 = 1000.; #[kPa]
R = 8.314; #[J/mol*K] - Universal gas constant
# Calculations and Results
#(a)
T_surr = 400.; #[K] - surrounding temperature
# Total change in entropy of the system is given by
# delta_S_sys = n*(Cp_0*math.log(T_2/T_1) - R*math.log(P_2/P_1))
# The process being isothermal the first term is zero and the total entropy change of the system is
delta_S_sys_a = - n*R*math.log(P_2/P_1); #[J/K]
delta_S_sys_a = delta_S_sys_a*10**(-3); #[kJ/K]
# Since the process is reversible therefore
Q_sys = T_surr*delta_S_sys_a; #[kJ] - Heat change in the system
Q_surr = - Q_sys; #[kJ] - Heat change in the surrounding
delta_S_surr_a = Q_surr/T_surr; #[kJ/K]
delta_S_univ_a = delta_S_sys_a + delta_S_surr_a; #[kJ/K]
# We get delta_S_univ = 0, which is true for a reversible process
print " a).The entropy change of the gas is given by delta_S_sys = %f kJ/K "%(delta_S_sys_a);
print " The entropy change of the surrounding is delta_S_surr = %f kJ/K "%(delta_S_surr_a);
print " The total entropy change of the gas is delta_S_univ = %f kJ/K "%(delta_S_univ_a);
#(b)
T_surr_b = 300.; #[K] - surrounding temperature
delta_S_sys_b = delta_S_sys_a;
# Work done under reversible condition is given by
# W = integral(P*dV) = integral(((R*T)/V)*dV) = R*T*math.log(V_2/V_1)
# For ideal gas we have, P1*V1/T1 = P2*V2/T2 or, V2/V1 = P1/P2 (for isothermal conditions)
W = R*T*math.log(P_1/P_2); #[J/mol]
W = W*10**(-3); #[kJ/mol]
W = W*(120./100); #[kJ/mol]
W = W*n; #[kJ] - Total work done for n moles
# Using the first law we have delta_U = Q - W. Now under isothermal conditions for ideal gas, delta_U = 0. Therefore,
Q = -W;
# Since heat is gained by the surroundings therefore
delta_S_surr_b = Q/T_surr_b; #[kJ/K]
delta_S_univ_b = delta_S_sys_b + delta_S_surr_b; #[kJ/K]
print " b).The entropy change of the gas is given by delta_S_sys = %f kJ/K "%(delta_S_sys_b);
print " The entropy change of the surrounding is delta_S_surr = %f kJ/K "%(delta_S_surr_b);
print " The total entropy change of the gas is delta_S_univ = %f kJ/K "%(delta_S_univ_b);
```

In [2]:

```
# Variables
T = 400.; #[K] - Temperature
P_1 = 500.*10**(3); #[Pa] - Initial pressure
P_2 = 100.*10**(3); #[Pa] - Final pressure
V_1 = 750.*10**(-6); #[m**(3)] - Initial volume
W_actual = 0.55*10**(3); #[J] - Actual work done
R = 8.314; #[J/mol*K] - Universal fas constant
# Calculations
# Suppose that the surroundings are at 400 K.
# The number of moles is given by
n = (P_1*V_1)/(R*T); #[mol]
# The entropy change of ideal gas under isothermal condition is given by
delta_S_sys = - n*R*math.log(P_2/P_1); #[J/mol]
# The heat supplied to the system in the internally reversible process is
Q_theot = T*delta_S_sys; #[J]
# Since the process is isothermal therefore, workdone is given by
W_theot = Q_theot; #[J] - Theoritical work done
# Since actual work done by the gas is 0.55 kJ therefore actual heat supplied is also 0.55 kJ because under isothermal conditions delta_U = 0
Q_actual = W_actual;
# Results
# Since Q_theot > Q_actual, so the process is irreversible
print " Since Q_theot = %f J is greater than Q_actual = %f J"%(Q_theot,Q_actual);
print " Therefore, the process is internally irreversible"
# delta_S_sys = Q/T_b + S_gen
S_gen = delta_S_sys - (Q_theot/T); #[J/K]
# The entropy generated may be due to friction and other dissipayive effects or due to non-quasi-static expansion
```

In [3]:

```
R = 8.314; #[J/mol*K] - Universal gas constant
# For side A
V_A = 1; #[L] - Volume
V_A = V_A*10**(-3); #[m**(3)]
T_A = 300; #[K] - Temperature
P_A = 2; #[atm] - Pressure
P_A = P_A*101325; #[Pa]
# For side B
V_B = 1; #[L] - volume
V_B = V_B*10**(-3); #[m**(3)]
T_B = 300; #[K] - Temperature
P_B = 1; #[atm] - Pressure
P_B = P_B*101325; #[Pa]
# Calculations and Results
# From first law final temperature and pressure are given by (example 3.30)
# T = ((n_A*T_A) + (n_B*T_B))/(n_A + n_B)
# P = ((P_A*V_A) + (P_A*V_B))/(V_A + V_B)
# Since in this case T_A = T_B, therefore final pressure is given by
P = ((P_A*V_A) + (P_B*V_B))/(V_A + V_B); #[Pa]
P = P/101325; #[atm]
print " The final temperature is %f K"%(T_A);
print " The final pressure is %f atm"%(P);
# The number of moles of air on each side are
n_A = (P_A*V_A)/(R*T_A); #[mol]
n_B = (P_B*V_B)/(R*T_B); #[mol]
delta_S_A = -n_A*R*math.log((P*101325)/P_A); #[J/K] - Entropy change on side A
delta_S_B = -n_B*R*math.log((P*101325)/P_B); #[J/K] - Entropy change on side B
delta_S_sys = delta_S_A + delta_S_B; #[J/K] - Total entropy change of system
# Since the system is insulated there is no heat exchange with the surroundings, therefore entropy change of surrounding is zero
delta_S_surr = 0; #[J/K]
delta_S_univ = delta_S_sys + delta_S_surr; #[J/K]
print " The total increase in entropy is %f J/K"%(delta_S_univ);
# The entropy change of the system can also be writtten as
# delta_s_sys = Q/T_b + S_gen
# Since there is no heat transfer, therefore
S_gen = delta_S_univ; #[J/K]
# The process is reversible because of entropy generation due to spontaneous release of piston.
```

In [4]:

```
V_vessel = 0.2; #[m**(3)] - Volume of the vessel
P_1 = 10; #[bar] - Initial pressure inside the vessel
P_1 = P_1*10**(5); #[Pa]
P_2 = 3.5; #[bar] - Final pressure inside the vessel
P_2 = P_2*10**(5); #Pa
T_1 = 250 + 273.15; #[K] - Initial temperature of the vesssel
R = 8.314; #[J/mol*K] - Universal gas constant
# Calculations and Results
# (a)
# At 10 bar and 250 C the steam is superheated. From steam table as reported in book we have
V_1 = 0.2327; #[m**(3)/kg] - specific volume
U_1 = 2709.9; #[kJ/kg] - specific internal energy
H_1 = 2942.6; #[kj/kg] - Specific enthalpy
S_1 = 6.9247; #[kJ/kg-K] - Specific entropy
# the quantity of steam is given by
m = V_vessel/V_1; #[kg]
# At final state
V_2 = 0.2327; #[m**(3)/kg] - Molar volume
V_liq_2 = 0.001079; # [m**(3)/kg]
V_vap_2 = 0.5243; # [m**(3)/kg]
# Since overall volume lies between saturated liquid and saturated vapour therefore the steam is saturated and its dryness fraction at final state is given by
x = (V_2 - V_liq_2)/(V_vap_2 - V_liq_2);
# Final temperature = T_sat (at 3 bar) from steam table
T_final = 138.88; #[C]
# At 3.5 bar saturated conditions
S_liq = 1.7275; #[kJ/kg-K] - Entropy of saturated liquid
S_vap = 6.9405; #[kJ/kg-K] - Entropy of saturated vapour
U_liq = 583.95; #[kJ/kg] - Internal energy of saturated liquid
U_vap = 2548.9; #[kJ/kg] - Internal energy of saturated vapour
# Therefore at final state
U_2 = U_liq*(1 - x) + x*U_vap; #[kJ/kg]
S_2 = S_liq*(1 - x) + x*S_vap; #[kJ/kg-K]
Q_1 = m*(U_2 - U_1); #[kJ]
delta_S_1 = m*(S_2 - S_1); #[kJ/kg-K]
print " a).The final temperature is %f C"%(T_final);
print " The amount of heat transfer is %f kJ"%(Q_1);
print " The change of entropy is %f kJ/kg-K"%(delta_S_1);
# (b)
Y = 1.4; # Ratio of heat capacities for air
# (P_1*V_1)/T_1 = (P_2*V_2)/T_2 and since V_1 = V_2
T_2 = (P_2/P_1)*T_1; #[K]
# Since the volume is fixed therefore work done (W) = 0 and from first law we get
# Q = delta_U = n*Cv_0*(T_2 - T_1)
Cv_0 = R/(Y - 1); #[J/mol-K] - Heat capacity at constant volume
Cp_0 = (Y*R)/(Y - 1); #[J/mol-K] - Heat capacity at constant pressure
n = (P_1*V_vessel)/(R*T_1); #[mol] - No. of moles
Q_2 = n*Cv_0*(T_2 - T_1); #[J] - Heat change
Q_2 = Q_2*10**(-3); #[kJ]
delta_S_2 = Cp_0*math.log(T_2/T_1) - R*math.log(P_2/P_1); #[J/mol-K]
delta_S_2 = n*delta_S_2*10**(-3); #[kJ/K]
print " b).The final temperature is %f C"%(T_2);
print " The amount of heat transfer is %f kJ"%(Q_2);
print " The change of entropy is %f kJ/K"%(delta_S_2);
```

In [4]:

```
from math import *
# Variables
m = 1000.; #[g] - Mass of fluid
P_1 = 20.; #[bar] - Initial pressure
P_1 = P_1*10.**(5); #[Pa]
P_2 = 2; #[bar] - Final pressure
P_2 = P_2*10.**(5); #Pa
T_1 = 250 + 273.15; #[K] - Initial temperature
n = 1.25;
R = 8.314; #[J/mol*-] - Universal gas constant
Y = 1.4; # Index of expansion
Cv_0 = R/(Y- 1); #[J/mol-K]
Cp_0 = R + Cv_0; #[J/mol-K]
# Calculations and Results
#(a)
# For steam at 20 bar and 250 C, from steam table as reported in the book
V_1 = 0.11144; #[m**(3)/kg]
U_1 = 2679.6; #[kJ/kg]
S_1 = 6.5453; #[kJ/kg-K]
# P_1*V_1**(n) = P_2*V_2**(n)
V_2 = ((P_1*V_1**(n))/P_2)**(1/n); #[m**(3)/kg]
# At 2 bar under saturated conditions,from steam table as reported in the book
V_liq = 0.001061; #[m**(3)/kg]
V_vap = 0.8857; #[m**(3)/kg]
x = (V_2 - V_liq)/(V_vap - V_liq); # Dryness fraction
T_sat = 120.23; #[C] - The final temperature
U_liq = 504.49; #[kJ/kg] - Internal energy of saturate liquid
U_vap = 2529.5; #[kJ/kg] - Internal energy of saturate vapour
# Therefore, internal energy at state 2 is given by
U_2 = U_liq*(1 - x) + x*U_vap; #[kJ/kg]
# Work transfer is given by
W = (P_1*V_1 - P_2*V_2)/(n - 1); #[J/kg]
W = W*10**(-3); #[kJ/kg]
delta_U = U_2 - U_1; #[kJ/kg]
# From first law, q - W = delta_U
q = W + delta_U; #[kJ/kg]
# At final state (2 bar saturated), as reported in the book
S_liq = 1.5301; #[kJ/kg-K] - Entropy of saturated liquid
S_vap = 7.1271; #[kJ/kg-K] - Entropy of saturated vapour
# Therefore, entropy at state 2 is given by
S_2 = S_liq*(1 - x) + x*S_vap; #[kJ/kg-K]
delta_S = S_2 - S_1; #[kJ/kg-K]
print " a).The final temperature is %f C"%(T_sat);
print " The work done is equal to %f kJ/kg"%(W);
print " The heat change is equal to %f kJ/kg"%(q);
print " The entropy change is equal to %f kJ/kg-K"%(delta_S);
#(b)
# P*V**(n) = constant
# Since the gas behaves as ideal we can write
# P_1**(1-n)*T_1**(n) = P_2**(1-n)*T_2**(n)
T_2 = T_1*(P_1/P_2)**((1-n)/n); #[K]
# Molar volume is given by
V_2_1 = (R*T_1)/P_1; #[m**(3)/mol] - At state 1
V_2_2 = (R*T_2)/P_2; #[m**(3)/mol] - At state 2
# Work transfer is given by
w_2 = ((P_1*V_2_1) - (P_2*V_2_2))/(n-1); #[J/mol]
Mol_wt_air = 0.21*32 + 0.79*28; #[g/mol] - Molecular weight of air
n_mole = m/Mol_wt_air;
# Total work transfer is given by
W_2 = w_2*n_mole*10**(-3); #[kJ]
# Internal energy change is given by
delta_U = n_mole*Cv_0*(T_2 - T_1)*10**(-3); #[kJ]
# Heat transfer is given by
Q = W_2 + delta_U; #[kJ]
# Entropy change is given by
delta_S_2 = Cp_0*log(T_2/T_1) - R*log(P_2/P_1); #[J/mol-K]
delta_S_2 = delta_S_2*n_mole; #[J/mol]
print " b).The final temperature is %f C"%(T_2);
print " The work done is equal to %f kJ/kg"%(W_2);
print " The total heat change is equal to %f kJ"%(Q);
print " The entropy change is equal to %f J/kg-K"%(delta_S_2);
```

In [6]:

```
# Variables
m = 1000; #[g] - Mass of fluid
P_1 = 20; #[bar] - Initial pressure
P_2 = 2; #[bar] - Final ressure
T_1 = 250 + 273.15; #[K] - Initial tempearture
R = 8.314; #[J/mol*K] - Universal gas constant
# (a).
# At 20 bar and 250 C as reported in the book
V_1 = 0.11144; #[m**(3)/kg] - Specific volume
U_1 = 2679.6; #[kJ/kg] - Specific internal energy
S_1 = 6.5453; #[kJ/kg-K] - Specific entropy
S_2 = S_1; # Isentropic expansion
# Calculations and Results
# At 2 bar under saturated conditions
S_liq = 1.5301; #[kJ/kg-K]
S_vap = 7.1271; #[kJ/kg-K]
U_liq = 504.49; #[kJ/kg-K]
U_vap = 2529.5; #[kJ/kg-K]
# Therefore dryness factor can be determined as
x = (S_1 - S_liq)/(S_vap - S_liq);
U_2 = U_liq*(1 - x) + x*U_vap; #[kJ/kg] - Specific internal energy at final state
delta_U = U_2 - U_1; #[kJ/kg] - change in internal energy
W = - delta_U; # - Work done
# The final saturated temperature at 2 bar from steam table is
T_2 = 120.23; #[C]
print " a).The final temperature is %f C"%(T_2);
print " The work done is equal to %f kJ/kg"%(W);
# (b).
Y = 1.4; # Index of expansion for air
Cv_0 = R/(Y-1); #[J/mol*K] - Specific heat capacity at constant volume
# Ideal gas under isentropic expansion P_1**(1-Y)*T_1**(Y) =P_2**(1-Y)*T_2**(Y)
T_2_prime = T_1*(P_1/P_2)**((1-Y)/Y); #[K] - Final temperature
delta_U_prime = Cv_0*(T_2_prime - T_1); #[J/mol] - change in internal energy
# Number of moles is given by
n = m/28.84; #[mol]
delta_U_prime = delta_U_prime*n*10**(-3); #[kJ]
W_prime = - delta_U_prime; # Work done
print " b).The final temperature is %f C"%(T_2_prime);
print " The work done is equal to %f kJ/kg"%(W_prime);
```

In [17]:

```
# Variables
P_1 = 15.; #[bar] - Initial pressure
P_2 = 0.15; #[bar] - Final pressure
# We know that during isentropic expansion
# W = ((P_1*V_1) - (P_2*V_2))/(Y - 1)
# At 15 bar (saturated vapour), from steam table as reported in the book
V_1 = 0.13177; #[m**(3)/kg]
U_1 = 2594.5; #[kJ/kg]
S_1 = 6.4448; #[kJ/kg-K]
# Now at state 2 (P_2 = 0.15 bar),from steam table as reported in the book
S_2 = S_1; # Isentropic expansion
S_liq = 0.7549; #[kJ/kg-K]
S_vap = 8.0085; #[kJ/kg-K]
U_liq = 225.92; #[kJ/kg]
U_vap = 2448.7; #[kJ/kg]
V_liq = 0.001014; #[m**(3)/kg]
V_vap = 10.02; #[m**(3)/kg]
# Calculations
# Therefore dryness factor can be calculated as
x = round((S_1 - S_liq)/(S_vap - S_liq),3);
U_2 = round(U_liq*(1 - x) + x*U_vap,2); #[kJ/kg] - Specific internal energy at final state
delta_U = U_2 - U_1; #[kJ/kg] - change in internal energy
W = - delta_U; # - Work done
# The specific volume at the final state is
V_2 = round(V_liq*(1 - x) + x*V_vap,3); #[m**(3)/kg]
# From work done under adiabatic conditions we get
# W = ((P_1*V_1) - (P_2*V_2))/(Y - 1)
Y = (((P_1*V_1) - (P_2*V_2))*10**2/W) + 1;
# Results
print " The index of expansion is given by Y = %.4f"%(Y);
```

In [8]:

```
P_1 = 40; #[bar] - Initial pressure
T_1 = 500; #[C] - Initial temperature
Vel_1 = 140; #[m/s] - Initial velocity
T_2 = 100; #[C] - Final temperature
Vel_2 = 80; #[m/s] - Final velocity
W = 746.0; #[kJ/kg] - Work output
# Calculations and Results
# (a).
# From steam table as reported in the book
H_1 = 3445.3; #[kJ/kg]
H_2 = 2676.1; #[kJ/kg]
S_1 = 7.0901; #[kJ/kh-K]
S_2 = 7.3549; #[kJ/kg-K]
# The temperature at which heat exchange take place is given by
T_b =(T_1 + T_2)/2 + 273.15; #[K]
# From first law in a control volume
# q - W = delta_H + (delta_V**(2))/2 , therefore
q = W*10**(3) + (H_2 - H_1)*10**(3) + (Vel_2**(2) - Vel_1**(2))/2; #[J/kg]
q = q*10**(-3); #[kJ/kg]
S_gen = (S_2 - S_1) - (q/T_b); #[kJ/kg-K]
print " a).The specific entropy production within turbine is %f kJ/kg-K"%(S_gen);
#(b)
# If control volume is too large to include the turbine and the environment then T_b becomes equal to 289 K. In this case
T_b_prime = 298; #[K]
# The entropy change of the sysytem is given by
#delta_S = q/T_b + S_gen
S_gen = (S_2 - S_1) - (q/T_b_prime); #[kJ/kg-K]
print " b).The specific entropy production within turbine is %f kJ/kg-K"%(S_gen);
# In the first part only irreversibilities within the turbine are evaluated
# whereas in part (2) irreversible heat transfer between the turbine cover and environment are also included.
```

In [30]:

```
P_1 = 1.; #[MPa] - Initial pressure
T_1 = 200 + 273.15; #[K] - Initial temperature
P_2 = 8.; #[MPa] - Final pressure
Y = 1.4; # Index of expansion of gas
R = 8.314; #[J/mol-K] - Universal gas constant
# Calculations and Results
#(1)
# The exit temperature for ideal gas under isentropic conditions is given by
T_2 = round(T_1*(round((P_2/P_1)**((Y-1)/Y),2)),1); #[K] - Exit temperature
Cp_0 = round(Y*R/(Y-1),1); #[J/mol-K] - Specific heat capacity at constant pressure
# For isentropic conditions the enthalpy change for ideal gas is given by
delta_H_s = Cp_0*(T_2 - T_1); #[J/mol]
# Therefore work is given by
W = - delta_H_s; #[J/mol]
print " 1).The exit temperature of steam is %.2f K"%(T_2);
print " The required work is %.2f J/mol"%(W);
#(2)
eff = 0.8; # Adiabatic efficiency
# delta_H_s/delta_H_a = 0.8
delta_H_a = delta_H_s/eff; #[J/mol] - Actual enthalpy change
W_a = - delta_H_a; #[J/mol]
# The ideal gas enthalpy is a function only of temperature,therefore actual exit temperature T_2a is given by
# delta_H_a = Cp_0*(T_2a - T_1)
T_2a = (delta_H_a/Cp_0) + T_1;
print " 2).The exit temperature of steam is %.2f K"%(T_2a);
print " The required work is %.2f J/mol"%(W_a);
```

In [31]:

```
from scipy.optimize import fsolve
import math
from scipy.integrate import quad
# Variables
P_1 = 1; #[MPa] - Initial pressure
T_1 = 200 + 273.15; #[K] - Initial temperature
P_2 = 8; #[MPa] - Final pressure
Y = 1.4; # Index of expansion of gas
R = 1.987; #[cal/mol*K] - Universal gas constant
# Cp_0 = 7.7 + 0.04594*10**(-2)*T + 0.2521*10**(-5)*T**(2) - 0.8587*10**(-9)*T**(3), here T is in K and Cp_0 is in cal/mol-K
a = 7.7;
b = 0.04594*10**(-2);
c = 0.2521*10**(-5);
d = - 0.8587*10**(-9);
# Calculations and Results
# delta_S = integral((Cp_0/T)*dT) - R*math.log(P_2/P_1) = 0
# delta_S = integral(((a + b*T + c*T**(2) + d*T**(3))/T)*dT) - R*math.log(P_2/P_1) = 0
# delta_S = a*math.log(T_2/T_1) + b*(T_2 - T_1) + (c/2)*(T_2**(2) - T_1**(2)) + (d/3)*(T_2**(3) - T_1**(3)) - R*math.log(P_2/P_1) = 0
# Solving for T_2 in the above equation we get
def f(T_2):
return a*math.log(T_2/T_1)+b*(T_2-T_1)+(c/2)*(T_2**(2)-T_1**(2))+(d/3)*(T_2**(3)-T_1**(3))-R*math.log(P_2/P_1)
T_2 = fsolve(f,100)
# Now let us calculate the enthalpy change under these conditions
def f0(T):
return 7.7+0.04594*10**(-2)*T+0.2521*10**(-5)*T**(2)-0.8587*10**(-9)*T**(3)
delta_H_s = quad(f0,T_1,T_2)[0]
delta_H_s = delta_H_s*4.184; #[J/mol]
# Therefore isentropic work done is
W = - delta_H_s;
print " 1).The exit temperature of steam is %f K"%(T_2);
print " The required work is %f J/mol"%(W);
#(2)
eff = 0.8;
delta_H_a = delta_H_s/eff; #[J/mol] - Actual enthalpy change
# Therefore actual work done is given by
W_a = - delta_H_a; #[J/mol]
# Now we have to determine the exit temperature under actual conditions
# delta_H_a = integral(Cp_0*dT) from limit T_1 = 473.15 K to T_2
# On putting the values and simplifying we get
# 7.7*T_2 + 0.02297*10**(-2)*T_2**(2) + 0.084*10**(-5)*T_2**(3) - 0.214675*10**(-9)*T_2**(4) - 6907.106 = 0
def f1(T_2_prime):
return a*(T_2_prime-T_1)+(b/2)*(T_2_prime**(2)-T_1**(2))+(c/3)*(T_2_prime**(3)-T_1**(3))+(d/4)*(T_2_prime**(4)-T_1**(4))-(delta_H_a/4.184)
T_2_prime = fsolve(f1,100)
print " 2).The exit temperature of steam is %f K"%(T_2_prime);
print " The required work is %f J/mol"%(W_a);
# Answers are vary because of rounding error. Calculations are correct.
```

In [11]:

```
# Variables
P_1 = 1; #[MPa] - Initial pressure
T_1 = 200 + 273.15; #[K] - Initial temperature
P_2 = 8; #[MPa] - Final pressure
Y = 1.4; # Index of expansion of gas
# At state 1 (1 MPa and 200 C) from steam table as reported in the book
H_1 = 2827.9; #[kJ/kg]
S_1 = 6.694; #[kJ/kg]
# At state 2 (8 MPa)
S_2 = S_1; # Isentropic process
# From steam table at 8 MPa and 450 C
S_21 = 6.5551; #[kJ/kg-K]
# From steam table at 8 MPa and 500 C
S_22 = 6.7240; #[kJ/kg-K]
# Therefore temperature at which entropy of steam is 6.694 kJ/kg-K is given by
T_2 = 450 + (500-450)/(S_22-S_21)*(S_2-S_21); #[C]
T_2 = T_2 + 273.15; #[K]
# Calculations and Results
# Enthalpy of steam at 8 MPa and 450 C from steam table as reported in the book
H_21 = 3272.0; #[kJ/kg]
# And at 8 MPA and 500 C
H_22 = 3398.3; #[kJ/kg]
# Therefore enthalpy of steam at 8 MPa and T_2
H_2 = H_21 + ((H_22-H_21)/(500-450))*((T_2-273.15) - 450);
# Work done is given by
# W = - delta_H_s
W = - (H_2 - H_1); #[J/g]
W = W*18.015; #[J/mol]
delta_H_s = - W;
print " 1).The exit temperature of steam is %f K"%(T_2);
print " The required work is %f J/mol"%(W);
#(2)
eff = 0.8; # Adiabatic efficiency
# delta_H_s/delta_H_a = 0.8
delta_H_a = delta_H_s/eff; #[J/mol] - Actual enthalpy change
# Therefore actual work done
W_a = - delta_H_a; #[J/mol]
# Enthalpy at actual exit conditions is
H_2_a = H_1 + delta_H_a/18.015; #[kJ/kg]
# Enthalpy of steam at 8 MPa and 500 C from steam table as reported in the book
H_21_a = 3398.3; #[kJ/kg]
# And at 8 MPA and 550 C
H_22_a = 3521.0; #[kJ/kg]
# Therefore temperature at H_22_a is given by
T_2_a = 500 + ((550-500)*(H_2_a - H_21_a))/(H_22_a - H_21_a); #[C]
T_2_a = T_2_a + 273.15; #[K]
print " 2).The exit temperature of steam is %f K"%(T_2_a);
print " The required work is %f J/mol"%(W_a);
```

In [12]:

```
P_1 = 140.; #[kPa] - Initial pressure
T_1 = 20. + 273.15; #[K] - Initial temperature
P_2 = 560.; #[kPa] - Final pressure
eff = 0.75; # Compressor efficiency
R = 1.987; #[cal/mol*K] - Universal gas constant
# Cp_0 = 4.750 + 1.200*10**(-2)*T + 0.3030*10**(-5)*T**(2) - 2.630*10**(-9)*T**(3), here T is in K and Cp_0 is in cal/mol-K
a = 7.7;
b = 0.04594*10**(-2);
c = 0.2521*10**(-5);
d = - 0.8587*10**(-9);
# Calculations and Results
# At 20 C,as reported in the book
Cp_0 = 8.46; #[cal/mol-K] - Specific heat capacity at constant pressure
Cv_0 = Cp_0 - R; #[cal/mol-K] - Specific heat capacity at constant volume
Y = Cp_0/Cv_0; # Index of expansion
# Assuming 100 % efficiency,for reversible and adiabatic process the final temperature is given by
# P*V**(Y) = constant or, P*((R*T)/P)**(Y) = constant
T_2 = ((P_1/P_2)**((1-Y)/Y))*T_1; #[K]
# Since at final temperature the value of heat capacity ratio would have changed
# So let us determine Y at mean temperature and then calculating final temperature
T_mean = (T_1 + T_2)/2; #[K]
# At T_mean,as reported in the book
Cp_0_new = 9.153; #[cal/mol-K]
Cv_0_new = Cp_0_new - R; #[cal/mol-K]
Y_new = Cp_0_new/Cv_0_new;
T_2_new = T_1*((P_1/P_2)**((1-Y_new)/Y_new)); #[K]
# The enthalpy change is given by
def f23(T):
return 4.750+1.200*10**(-2)*T+0.3030*10**(-5)*T**(2)-2.630*10**(-9)*T**(3)
delta_H = quad(f23,T_1,T_2_new)[0]
#For adiabatic process
W = - delta_H; #[cal/mol]
# Now actual work done on the system is given by
W_a = W/eff; #[cal/mol]
# Therefore actual change in enthalpy is - W_a, or
# - W_a = 4.750*(T_2-T_1) + (1.2*10**(-2)/2)*(T_2**(2)-T_1**(2)) + (0.3030*10**(-5)/3)*(T_2**(3)-T_1**(3)) - (2.63*10**(-9)/4)*(T_2***(4)-T_1**(4));
# Solving for T_2 in the above equation
def f1(T_2_prime):
return 4.750*(T_2_prime-T_1)+((1.2*10**(-2))/2)*(T_2_prime**(2)-T_1**(2))+((0.3030*10**(-5))/3)*(T_2_prime**(3)-T_1**(3))-((2.63*10**(-9))/4)*(T_2_prime**(4)-T_1**(4))+W_a
T_2_prime=fsolve(f1,100)
print " The required work is %f cal/mol"%(W_a);
print " The discharge temperature of methane is %f K"%(T_2_prime);
```

In [13]:

```
P_1 = 10; #[bar] - Initial pressure
T_1 = 500 + 273.15; #[K] - Initial temperature
P_2 = 2; #[psia] - Final pressure
P_2 = P_2/14.5; #[bar]
P_2 = P_2*10**(2); #[kPa]
m = 1.8; #[kg/s] - Mass flux
eff = 0.8; # Efficiency
# At state 1, from steam table
H_1 = 3478.5; #[kJ/kg]
S_1 = 7.7622; #[kJ/kg-K]
S_2 = S_1; # Adiabatic process
# From saturated steam table at 10 kPa
S_liq_1 = 0.6493; #[kJ/kg-K]
S_vap_1 = 8.1502; #[kJ/kg-K]
# From saturated steam table at 15 kPa
S_liq_2 = 0.7549; #[kJ/kg-K]
S_vap_2 = 8.0085; #[kJ/kg-K]
# Calculations and Results
# Threfore at P_2
S_liq = S_liq_1 + ((S_liq_2-S_liq_1)/(15-10))*(P_2-10);
S_vap = S_vap_1 + ((S_vap_2-S_vap_1)/(15-10))*(P_2-10);
# The dryness fraction at exit state is
x_2 = (S_1-S_liq)/(S_vap-S_liq);
# The enthalpy at exit to be determined. At 10 kPa
H_liq_1 = 191.83; #[kJ/kg]
H_vap_1 = 2584.7; #[kJ/kg]
# At 15 kPa
H_liq_2 = 225.94; #[kJ/kg]
H_vap_2 = 2599.1; #[kJ/kg]
# Therfore at P_2
H_liq = H_liq_1 + ((H_liq_2-H_liq_1)/(15-10))*(P_2-10);
H_vap = H_vap_1 + ((H_vap_2-H_vap_1)/(15-10))*(P_2-10);
# Enthalpy at state 2
H_2_s = H_liq*(1-x_2) + x_2*H_vap; #[kJ/kg]
W = m*(H_1 - H_2_s); #[kW]
print " 1).The power output is %f kW"%(W);
#(2)
# If the process is 80 % efficient the enthalpy change is
# H_1 - H_2_a = eff*(H_1 - H_2_s)
H_2_a = H_1 - (0.8*(H_1 - H_2_s));
# Now under these conditions temperature and entropy have to be determined. From superheated steam tables,as reported in the book
# At 10 kPa and 100 C
H_2_1 = 2687.5; #[kJ/kg]
S_2_1 = 8.4479; #[kJ/kg-k]
# At 10 kPa and 150 C
H_2_2 = 2783.0; #[kJ/kg]
S_2_2 = 8.6882; #[kJ/kg-k]
# At 50 kPa and 100 C
H_3_1 = 2682.5; #[kJ/kg]
S_3_1 = 7.6947; #[kJ/kg-k]
# At 50 kPa and 150 C
H_4_1 = 2780.1; #[kJ/kg]
S_4_1 = 7.9401; #[kJ/kg-k]
# Therefore at P_2 and 100 C
H_prime_1 = H_2_1 + ((H_3_1-H_2_1)/(50-10))*(P_2-10); #[kJ/kg]
S_prime_1 = S_2_1 + ((S_3_1-S_2_1)/(50-10))*(P_2-10); #[kJ/kg-K]
# Therefore at P_2 and 150 C
H_prime_2 = H_2_2 + ((H_4_1-H_2_2)/(50-10))*(P_2-10); #[kJ/kg]
S_prime_2 = S_2_2 + ((S_4_1-S_2_2)/(50-10))*(P_2-10); #[kJ/kg-K]
# Enthalpy at exit is H_2_a. So at this condition temperature can be nom be determined
T_exit = ((H_2_a - H_prime_1)/(H_prime_2 - H_prime_1))/(150-100) + 100; #[C]
# The entropy at exit is
S_exit = ((H_2_a - H_prime_1)/(H_prime_2 - H_prime_1))/(S_prime_2 - S_prime_1) + S_prime_1; #[kJ/kg-K]
print " 2).The entropy at exit is %f kJ/kg-K"%(S_exit);
print " The temperature of the exit state is %f C"%(T_exit);
print " The irreversibility is advatageous because the exit steam is superheated and therefore";
print " the blades of the turbine are not eroded by water droplets which get formed when the process is isentropic";
```

In [14]:

```
P_1 = 6; #[MPa] - Initial pressure
T_1 = 500 + 273.15; #[K] - Initial temperature
P_2 = 10; #[kPa] - Final pressure
out_qlty = 0.9; # Output quality
# At 6 MPa and 500 C, from steam table as reported in the book
H_1 = 3422.2; #[kJ/kg]
S_1 = 6.8803; #[kJ/kg-K]
S_2 = S_1; # Adiabatic reversible conditions
# At 10 kPa saturated
H_liq = 191.83; #[kJ/kg]
H_vap = 2584.7; #[kJ/kg]
S_liq = 0.6493; #[kJ/kg-K]
S_vap = 8.1502; #[kJ/kg-K]
# Calculations and Results
# The dryness fraction is given by
x = (S_1-S_liq)/(S_vap-S_liq);
# Now the exit enthalpy is given by
H_2 = H_liq*(1-x) + x*H_vap; #[kJ/kg]
W = - (H_2 - H_1); #[kJ/kg] - Under isentropic conditions
# We know that, delta_S = q/T_b + S_gen
# Since delta_S = 0, therefore under isentropic conditions
S_gen = 0; #[kJ/kg-K]
# Now for output quality 0.9
H_2_a = H_liq*(1-out_qlty) + out_qlty*H_vap; #[kJ/kg]
S_2_a = S_liq*(1-out_qlty) + out_qlty*S_vap; #[kJ/kg]
W_a = - (H_2_a - H_1); #[kJ/kg]
delta_S_a = S_2_a - S_1; #[kJ/kg-k]
# Again, delta_S = q/T_b + S_gen
# Since q = 0, therefore under isentropic conditions
S_gen_a = delta_S_a; #[kJ/kg-K
# Now efficiency is given by eff = delta_H_a/delta_H_s
eff = W_a/W;
print " For output quality = 0.9";
print " The work output per unit mass is %f kJ/kg"%(W_a);
print " The entropy generation is given by S_gen = %f kJ/kg-K"%(S_gen_a);
print " The efficiency with respect to reversible adiabatic case is given by eff = %f"%(eff);
# Now for output quality 1
out_qlty_1 = 1;
H_2_a_1 = H_liq*(1-out_qlty_1) + out_qlty_1*H_vap; #[kJ/kg]
S_2_a_1 = S_liq*(1-out_qlty_1) + out_qlty_1*S_vap; #[kJ/kg]
W_a_1 = - (H_2_a_1 - H_1); #[kJ/kg]
delta_S_a_1 = S_2_a_1 - S_1; #[kJ/kg-k]
# Again, delta_S = q/T_b + S_gen
# Since q = 0, therefore under isentropic conditions
S_gen_a_1 = delta_S_a_1; #[kJ/kg-K
# Now efficiency is given by eff = delta_H_a/delta_H_s
eff_1 = W_a_1/W;
print " For output quality = 1.0";
print " The work output per unit mass is %f kJ/kg"%(W_a_1);
print " The entropy generation is given by S_gen = %f kJ/kg-K"%(S_gen_a_1);
print " The efficiency with respect to reversible adiabatic case is given by eff = %f"%(eff_1);
```

In [15]:

```
P_1 = 3.; #[bar] - Initial pressure
T_1 = 150. + 273.15; #[K] - Initial temperature
Vel_1 = 90.; #[m/s] - Initial velocity
P_2 = 1.; #[bar] - Final pressure
eff = 0.95; # Adiabatic effciciency of the nozzle
R = 8.314; #[J/mol*-] - Universal gas constant
# At 3 bar and 150 C, from steam table
S_1 = 7.0778; #[kJ/kg-K]
H_1 = 2761.0; #[kJ/kg]
S_2 = S_1; #
# At 1 bar saturated
S_liq = 1.3026; #[kJ/kg-K]
S_vap = 7.3594; #[kJ/kg-K]
H_liq = 417.46; #[kJ/kg]
H_vap = 2675.5; #[kJ/kg]
# Calculations and Results
# The dryness factor of exit steam can be determined as
x = (S_1-S_liq)/(S_vap-S_liq);
# Enthalpy of exit steam is given by
H_2 = H_liq*(1-x) + x*H_vap; #[kJ/kg]
delta_H_s = H_2 - H_1; #[kJ/kg] - Enthalpy change
delta_H_a = eff*delta_H_s; #[kJ/kg]
# Assuming no heat exchange with surroundings and since no work is done
# delta_H + (delta_V**(2))/2 = 0
delta_Vel_square = 2*(-delta_H_a)*1000; #[m**(2)/s**(2)]
Vel_2 = (delta_Vel_square + Vel_1**(2))**(1./2); #[m/s]
print " 1).The final velocity when fluid is steam) is %f m/s"%(Vel_2);
# (2)
Y = 1.4; # Index of expansion
Cp_0 = (Y*R)/(Y-1); #[J/mol-K] - Specific heat capacity at constant pressure
# P_1**(1-Y)*T_1**(Y) = P_2**(1-Y)*T_2**(Y)
T_2 = T_1*(P_1/P_2)**((1-Y)/Y); #[K]
delta_H_s_2 = Cp_0*(T_2 - T_1); #[J/mol]
delta_H_a_2 = eff*delta_H_s_2; #[J/mol]
delta_H_a_2 = (delta_H_a_2*1000)/28.84; #[J/kg]
delta_Vel_square_2 = 2*(-delta_H_a_2); #[m**(2)/s**(2)]
Vel_2_2 = (delta_Vel_square_2 + Vel_1**(2))**(1./2); #[m/s]
print " 2).The final velocity when fluid is air which behaves as an ideal gas) is %f m/s"%(Vel_2_2);
```

In [16]:

```
# Variables
P_1 = 300.; #[kPa] - Initial pressure
T_1 = 450.; #[K] - Initial temperature
Vel_1 = 90.; #[m/s] - Initial velocity
P_2 = 180.; #[kPa] - Final pressure
eff = 0.95; # Adiabatic effciciency of the nozzle
R = 8.314; #[J/mol*-] - Universal gas constant
Cp = 5.19; #[kJ/kg-K] - Specific heat capacity at constant pressure
# Calculations and Results
#(a)
Mol_wt_He = 4; #[g/mol] - Molecular weight of helium
R_He = R/Mol_wt_He; # 'R' for helium
Y = Cp/(Cp - R_He);
# Now temperature at exit to be determined
T_2s = T_1*(P_1/P_2)**((1-Y)/Y); #[K]
delta_H_2s = Cp*(T_2s - T_1); #[kJ/kg]
# Since no work is done and heat exchange is zero,from first law we get
# delta_H + delta_Vel**(2)/2 = 0
delta_Vel_square = 2*(-delta_H_2s)*1000; #[m**(2)/s**(2)]
Vel_2 = (delta_Vel_square)**(1./2); #[m/s] - ( as Vel_1 << Vel_2)
print " a).The maximum exit velocity is %f m/s"%(Vel_2);
#(b)
T_2a = 373; #[K] - Measured temperature of helium
delta_H_a = Cp*(T_2a - T_1); #[kJ/kg]
delta_Vel_square_a = 2*(-delta_H_a)*1000; #[m**(2)/s**(2)]
Vel_2a = (delta_Vel_square_a)**(1./2); #[m/s] - ( as Vel_1 << Vel_2a)
print " b).The actual exit velocity is %f m/s"%(Vel_2a);
#(c)
delta_S_sys = Cp*math.log(T_2a/T_1) - R_He*math.log(P_2/P_1);
# we know that delta_S_sys = q/T_b + S_gen and since q = 0, therfore
S_gen = delta_S_sys; #[kJ/kg-K]
print " c).The increasse in entropy per unit mass is %f kJ/kg-K"%(S_gen);
```

In [17]:

```
P_1 = 1; #[bar] - Initial pressure
T_1 = 150 + 273.15; #[K] - Initial temperature
V_2 = 0.28; #[m**(3)/kg] - Final specific volume
T_2 = T_1; #[K] - Isothermal process
R = 8.314; #[J/mol-K] - Universal gas constant
# At 1 bar and 150 C, from steam table
S_1 = 7.6134; #[kJ/kg-K]
H_1 = 2776.4; #[kJ/kg]
# At 150 C saturated
V_liq = 0.001091; #[m**(3)/kg]
V_vap = 0.3928; #[m**(3)/kg]
H_liq = 632.2; #[kJ/kg]
H_vap = 2746.5; #[kJ/kg]
S_liq = 1.8418; #[kJ/kg-K]
S_vap = 6.8379; #[kJ/kg-K]
# Calculations and Results
# The dryness factor of exit steam can be determined as
x = (V_2 - V_liq)/(V_vap - V_liq);
S_2 = S_liq*(1-x) + x*S_vap; #[kJ/kg-K] -Entropy
H_2 = H_liq*(1-x) + x*H_vap; #[kJ/kg] -Enthalpy
delta_H = H_2 - H_1; #[kJ/kg] - Enthalpy change
delta_S = S_2 - S_1; #[kJ/kg]
# Since the compression is reversible
q = T_1*delta_S; #[kJ/kg] - Heat transfer
# From first law q - W = delta_H
W = q - delta_H; #[kJ/kg]
print " 1).The amount of heat transfer when fluid is steam) is %f kJ/kg"%(q)
print " The amount of work transfer when fluid is steam) is %f kJ/kg"%(W)
#(2)
V_2 = V_2*(28.84/1000); #[m**(3)/mol] - Molar volume at exit
# Pressure at exit is given by
P_2 = ((R*T_2)/V_2); #[N/m**(2)]
P_2 = P_2*10**(-5); #[bar]
# Entropy change is given by, delta_S_2 = Cp*math.log(T_2/T_1) - R*math.log(P_2/P_1), but since T_1 = T_2, therfore
delta_S_2 = - R*math.log(P_2/P_1); #[J/mol-K]
q_2 = T_1*delta_S_2; #[J/mol] - Heat change
q_2 = q_2/28.84; #[kJ/kg]
# Enthalpy change is given by, delta_H_2 = Cp*(T_2 - T_1) = 0 (as T_1 = T_2)
delta_H_2 = 0; #[kJ/kg]
# From first law q - W = delta_H, therefore
W_2 = q_2 - delta_H_2; #[kJ/kg]
print " 2).The amount of heat transfer when fluid is ideal gas) is %f kJ/kg"%(q_2)
print " The amount of work transfer when fluid is ideal gas) is %f kJ/kg"%(W_2)
```

In [18]:

```
P_1 = 7*10**(5); #[Pa] - Initial pressure
T_1 = 95 + 273.15; #[K] - Initial temperature
P_2 = 3.5*10**(5); #[Pa] - Final pressure
dia = 15*10**(-2); #[m] - Diameter of pipe
m = 2; #[kg/s] - Mass flow rate
R = 8.314; #[J/mol-K] - Universal gas constant
Y = 1.4; # Index of expansion
Cp_0 = (R*Y)/(Y-1); #[J/mol-K] - Specific heat capacity at constant pressure
Cp_0 = (Cp_0/28.84)*1000; #[J/kg-K]
rho_1 = 6.6; #[kg/m**(3)] - Density
# Calculations and Results
# velocity before throttling is to be determined m = rho*Vol*Area
V_1 = (R*T_1)/P_1; #[m**(3)/mol] - Specific volume
V_1 = (V_1/28.84)*1000; #[m**(3)/kg]
Vel_1 = m/(rho_1*3.14*(dia/2)**(2)); #[m/s] - Velocity before throttling
# Let the temperature after throttling be T_2, then
# Vel_2 = m/(rho_2*Area) = (m*V_2)/(3.14*(dia/2)**(2))
# From first law, since q = W = 0, we get
# delta_H + (delta_V**(2))/2 = 0
#Cp_0*(T_2 - T_1) + (((m*((((R*T_2)/P_2)/28.84)*1000))/(3.14*(dia/2)**(2)))**(2) - (Vel_1)**(2))/2 = 0
# Solving the above equation for T_2, we get
def f1(T_2):
return Cp_0*(T_2 - T_1) + (((m*((((R*T_2)/P_2)/28.84)*1000))/(3.14*(dia/2)**(2)))**(2) - (Vel_1)**(2))/2
T_2 =fsolve(f1,100)
# Therefore velocity of air downstream of restriction is given by
Vel_2 = ((m*((((R*T_2)/P_2)/28.84)*1000))/(3.14*(dia/2)**(2))); #[m/s]
print " The velocity of air downstream of restriction is %f m/s"%(Vel_2);
delta_T = (T_2 - T_1);
# Since temperature difference (delta_T) is very small, therefore enthalpy change is also very small
# Entropy change is given by, delta_S = Cp_0*math.log(T_2/T_1) - R*math.log(P_2/P_1), but since T_1 and T_2 are almost equal
delta_S = - R*math.log(P_2/P_1); #[J/mol-K]
print " The change in entropy is %f kJ/mol-k"%(delta_S);
```