write PYTHON code that can solve an otto cycle and make plots for it.
Objective
write python code that can solve an otto cycle and make plots for it.
Problem Statement
1. Your code should create a PV diagram
2. You should output the thermal efficiency of the engine.
Theory
An Otto cycle is an idealized thermodynamic cycle that describes the functioning of a typical spark ignition piston engine. It is the thermodynamic cycle most commonly found in automobile engines.

Code
#otto cycle
import math
import matplotlib.pyplot as plt
import numpy as np
def engine_kinamatics(bore,stroke,con_rod,cr,start_crank,end_crank):
#goeometric input
sc=math.radians(start_crank)
ec=math.radians(end_crank)
num_value=50
dtheta=(ec-sc)/(num_value-1)
v=[]
for i in range(0,num_value):
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
#goeometric input
bore=0.1
stroke=0.1
con_rod=0.15
cr=12
a=stroke/2
R=con_rod/a
#volume computation
v_s=(math.pi/4)*pow(bore,2)*stroke
v_c=v_s/(cr-1)
v1=v_s+v_c
#state2
v2=v_c
p2=p1*pow(v1,gamma)/pow(v2,gamma);
rhs=p1*v1/t1
t2=p2*v2/rhs
v_compression=engine_kinamatics(bore,stroke,con_rod,cr,180,0)
constant=p1*pow(v1,gamma)
p_compression=[]
for v in v_compression:
p_compression.append(constant/pow(v,gamma))
#state 3
v3=v2
rhs=p2*v2/t2
p3=rhs*t3/v3
v_expansion=engine_kinamatics(bore,stroke,con_rod,cr,0,180)
constant=p3*pow(v3,gamma)
p_exapansion=[]
for v in v_expansion:
p_exapansion.append(constant/pow(v,gamma))
#state4
v4=v1
p4=p3*pow(v3,gamma)/pow(v4,gamma)
t4=p4*v4/rhs;
efficiency=1-1/(pow(cr,(gamma-1)));
print(efficiency)
plt.plot([v2,v3 ],[p2,p3])
plt.plot(v_compression,p_compression )
plt.plot(v_expansion,p_exapansion )
plt.plot([v4,v1 ],[p4,p1])
plt.show()
OUTPUT
