Challenge

Week 2 Air standard Cycle

AIM

To write a program in python to solve an Otto cycle and make plots for it

OBJECTIVE

  • To solve and findout  different state variables in otto cycle and plot its p-v diagram
  • To calculate the thermal efficiency of the given otto cycle

THEORY

The otto cycle is the ideal cycle for spark ignition reciprocating engine .In most spark ignition engines the piston executes four complete strokes within cylinder and the crankshaft completes two revolutions for each thermodynamic cycle .These engines are called four stroke internal combustion engine

Intially both the intake and the exhaust values are closed and the piston is at its lowest position BDC .During the compression stroke the piston moves upward and compressing the airfuel mixture .Shortly before the piston reaches its highest postion TDC the sparkplug fires and the mixture ignites increasing the pressure and temperature of the system .The Highpressure gases force the piston down which in turn forces the crankshaft to rotate producing a useful work output during the expansion or power stroke .At the end of the this stroke the piston is at the lowest position and the cylinder is filled with combustion products .Now the piston moves upward one more time purging the exhaust gases throught the exhaust valve and down a second time drawing in fresh air fuel mixture throught the intake valve  .Notice that the pressure in the cylinder is slightly above the atmospheric valve during the exhaust stroke and slightly  below during the intake stroke

                                        

 The four process in a otto cycle are

  • Isentropic compression process or Reversible adiabatic compression of air       Process 1-2 
  • Constant volume heat addition process                                                         Process 2-3
  • Istentropic Expansion process or Reversible adibatic expansion  of air             Process 3-4
  • Constant volume heat rejection process                                                       Process  4-1

 

Governing Equation

Various Equation of otto cycle are involved 

  • Compression Ratio r_c = (v_1/v_2)    or     1+v_s/v_c
  • Swept volume  v_s = pi/4 *d^2 l       Where d is bore diameter and l is stroke length
  • v/v_c = 1+ 1/2 (r_c-1)[R+1 cos theta -(R^2- sin^2 theta )^1/2]    where R= length of connecting rod / crank radius
  • Adiabatic process equation = p*v^ gamma = constant
  • Ideal Gas Equation = p*v=M*R*T
  • Thermal efficiency of otto cycle = 1-1/(r_c^(gamma-1))

CODE

  • Since otto cycle is an air standard cycle the specific heat of air is taken as 1.4  
  • Intial conditions such as temperture t_1 and p_1 of surrounding is assumed to be 350k and 101.325 kpa respectively
  • The geometrical design of engine cylinder which consists of bore diameter , stroke length and length of connecting rod is also known and  accordingly vs and vc calculated
  • The maximum temperature  occuring inside the cylinder is also known
  • Other state variables are calculated using adiabatic process equations and ideal gas equation 
  • Similarly the thermal efficiency is also calculated accordingly using the formula given
  • For plotting the calculated state variables on a p-v diagram with just using plt.plot command will yield into incorrect p-v diagram  i,e compression and expansion stroke is represented by straight line
  • So to rectify this a different function is created for storing different value of crank angle rotation as compression and expansion occurs in different stroke or cycle .This function is then called to main program and accordingly plot is drawn from various points obtained
  • For this number of values for which the program will iterate is 100 and accordingly the v array is set as null and after every iteration using for loop a new value will stored as an array using append command and 
''' A program to calculate different state variables in an Otto Cycle and 
to calculate its thermal efficiency and plot it on p-v diagram '''

import math
import matplotlib.pyplot as plt 

def engine_kinematics(bore,stroke,connecting_rod,c_r,start_crank_angle,end_crank_angle):

	# Engine geometry properties
	r = stroke/2
	n = connecting_rod/r

	# Volume parameters

	v_swept = (math.pi/4)*pow(bore,2)*stroke
	v_clearance = v_swept/(c_r -1) 

	theta_startcrank = math.radians(start_crank_angle)
	theta_endcrank   = math.radians(end_crank_angle)  

	num_val = 100
	dtheta = (theta_endcrank - theta_startcrank)/(num_val - 1)
	V = []
	for i in range(0,num_val):
		theta = theta_startcrank + i*dtheta
		term_1 = 0.5*(c_r - 1)                               
		term_2 = n + 1 - math.cos(theta)
		term_3 = (pow(n,2) - pow(math.sin(theta),2))
		term_3 = pow(term_3,0.5)
		V.append((1 + term_1* (term_2 -term_3))*v_clearance)

	return V

# Inputs varibale

gamma = 1.4                                  # for air gamma= 1.4
T3 = 2000                                    # max temp inside engine cyr

# State variable
# ambient atmospheric conditions assumed
p1 = 101325                            
T1 = 350                                    
 
# Engine geometry properties
 
bore = 0.15
stroke = 0.2
connecting_rod = 0.8
c_r = 10

# Calculating swept volume and clearance volume
 
v_swept = (math.pi/4)*pow(bore,2)*stroke
v_clearance = v_swept/(c_r -1) 
v1 = v_swept + v_clearance
v2 = v_clearance
  
# state variables at state point 2          
# p2*v2^gamma = p1*v1^gamma --- Isentropic compression
 
p2 = p1* pow(c_r,gamma)

# (p1*v1)/T1 = (p2*v2)/T2 | T2 = p2*v2*T1/(p1*v1)
 
T2 = p2*v2*T1/(p1*v1)
 
V_comp = engine_kinematics(bore,stroke,connecting_rod,c_r,180,0)
C_const = p1*pow(v1,gamma)
P_comp = []
for v in V_comp:
	P_comp.append(C_const/pow(v,gamma))

 
# State variables at state point 3
 
v3 = v2                                        # Isochoric process
  
''' (p3*v3)/T3 = (p2*v2)/T2 | p3 = p2*T3/(T2) '''
 
p3 = p2*T3/(T2)

V_expp = engine_kinematics(bore,stroke,connecting_rod,c_r,0,180)
C_const = p3*pow(v3,gamma)
P_expp = []
for v in V_expp:
	P_expp.append(C_const/pow(v,gamma)) 
	
# state variables at state point 4
v4 = v1                                       # Isochoric process  
 
''' p3*v3^gamma = p4*v4^gamma '''             # Isentropic expansion process
p4 = p3*pow(v3,gamma)/pow(v4,gamma)

''' (p3*v3)/T3 = (p4*v4)/T4 | T4 = p4*v4*T3/(p3*v3) '''
T4 = p4*v4*T3/(p3*v3)

plt.plot(V_comp,P_comp)
plt.plot([v2,v3],[p2,p3])
plt.plot(V_expp,P_expp)
plt.plot([v4,v1],[p4,p1])
plt.ylim([-500000,8000000])
plt.xlim([0,0.005])
plt.xlabel('Volume (m^3)')
plt.ylabel('Pressure(Pa)')
plt.title('p-V diagram of an Otto Cycle')
plt.text(0.00385,-250000,r'$ \ 1 \ $')
plt.text(0.0002,2000000,r'$ \ 2 \ $')
plt.text(0.0002,5850000,r'$ \ 3 \ $')
plt.text(0.00385,400000,r'$ \ 4 \ $')
plt.grid()
plt.show()


#Calculating thermal efficiency

thermal_efficincy = 1- (1/pow((c_r),(gamma-1)))
print('Thermal efficiency of given Otto Cycle is :',thermal_efficincy)

RESULT

Upon executing the above program the following plot for p-v curve was observed

                                                           

The thermal efficiency calculated and the program written are as follows

                                                            

                                                            

                                                           

                                                           

                                                           

Conclusion

The desired and correct p-v diagram of otto cycle was obtained using an array of volume inside the engine cylinder at different crank angle

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.