Project

PV visualizer using python

\"otto cycle simulator\"
import math
import matplotlib.pyplot as plt
#defining the function#
def engine_kinematics(bore,stroke,conn_rod,cr,start_crank,end_crank):

	bore=0.1
	stroke=0.1
	conn_rod=0.15
	cr=12
	a=stroke/2
	R=conn_rod/a

	#volume Parameters
	v_s=(math.pi/4)*pow(bore,2)*stroke;
	v_c=v_s/(cr-1);
	v1=v_c + v_s;

	sc=math.radians(start_crank)
	ec=math.radians(end_crank)
	num_values=50
	dtheta=(ec-sc)/(num_values-1)
	V=[]
	for i in range(0,num_values):
		theta=sc+i*dtheta;
		term1=0.5*(cr-1)
		term2=R+1-math.cos(theta)
		term3=pow(R,2)-pow(math.sin(theta),2)
		term3=pow(term3,0.5)

		V.append((1+term1*(term2-term3))*v_c)
	return V




	
#inputs
p1=101325
t1=500
gamma=1.4
t3=2300
#geometric parameters
bore=0.1
stroke=0.1
conn_rod=0.15
cr=12

v_s=(math.pi/4)*pow(bore,2)*stroke;
v_c=v_s/(cr-1);
v1=v_c + v_s;


#state point2
v2=v_c

#p1v1^gamma=p2v2^gamma
p2=p1*pow(v1/v2,gamma);

#p1v1/t1=p2v2/t2 | p1v1t2=p2v2t1|t2=p2v2t1/p1v1

t2= (p2*v2*t1)/(p1*v1)
V_compression=engine_kinematics(bore,stroke,conn_rod,cr,0,180)
#P_compression*V_compression^gamma=constant
constant=p1*pow(v1,gamma)
P_compression=[]
for v in V_compression:
	P_compression.append(constant/pow(v,gamma))
	
#state point3
v3=v2

#p3v3/t3=p2v2/t2|p3=p2v2t3/t2v3

p3=(p2*v2*t3)/(t2*v3)
V_expansion=engine_kinematics(bore,stroke,conn_rod,cr,180,0)
constant=p3*pow(v3,gamma)
P_expansion=[]
for v in V_expansion:
	P_expansion.append(constant/pow(v,gamma))
	
#state point4

v4=v1

#p4v4^gamma=p3v3^gamma|p4=p3*pow(v3/v4,gamma)
p4=p3*pow(v3/v4,gamma)

#p4v4/t4=p3v3/t3
t4=(p4*v4*t3)/(p3*v3)
nth=1-(1/pow(cr,gamma-1))
print(nth)

plt.plot([v2,v3],[p2,p3])
plt.plot(V_compression,P_compression)
plt.plot(V_expansion,P_expansion)
plt.plot([v4,v1],[p4,p1])
plt.show()

Steps / Procedure:

Step 1:

Define the inputs and the geometric parameters

Step2:

Calculate swept volume and clearance volume

Step3:

Calculate the value of pressure temperature and volume at each point

Step4:

Now define a function for plotting volume trace

which is a function of stroke ,connecting rod length, bore, compression ratio, crank angle

Step5:

Define theta or crank angle,

Here we need to use the value of theta from 0 to 180

So first we define start crank angle and end crank engle

then we define dtheta which is nothing but the increase in each angle .

It is calculated by dividing the range `(sc-ec)` by the number of divisions

Step6:

Creating a for loop for theta

Step 7:

define an empty array to store the values of V

Then use append function for Storing the values of V in the empty array

Return the value of V after completing the for loop( As if we execute w/o this the code would return a \"None\" value)

Step8:

Now define V_compression and V_expansion using the function

and then calculate the pressure using `PV^gamma=constant`

Step9:

Now use plot command to plot all the values

Step 10:

For calculating thermal efficiency of engine

Use the formula `nth=1-(1/(cr)^(gamma-1))` and print the value

\"\"

Thermal efficiency is printed in the command window

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.

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.