Processing math: 100%

Python中的奥托循环和柴油循环建模


奥托循环

奥托循环是一种用于火花点火 (SI) 发动机的空气标准循环。它包括两个可逆绝热过程和两个等容过程(恒容),共四个过程。当功相互作用发生在可逆绝热过程中时,热量增加 (2-3) 和减少 (4-1) 发生在等容过程中 (3-4 和 1-2)。奥托循环示意图如下所示。

为了在 Python 中模拟该循环,考虑的输入变量是最大压力 (Pmax)、最小压力 (Pmin)、最大容积 (Vmax)、压缩比 (r) 和绝热指数 (γ)。表 2 解释了奥托循环中不同过程的热力学计算:

过程 1-2

p1=pmin

v1=vmax

使用压缩比 (𝑟),首先根据点 1 处的体积计算点 2 处的体积:

v2=v1r

然后计算过程 1-2 的绝热常数:

c1=p1×vγ1

一旦已知 c1,则沿线 1-2 的压力变化计算为:

p=c1vγ

过程 2-3

p3=pmax

由于该过程是等容的,因此体积保持不变:

v3=v2

因此,点 2 处的压力可以计算为:

p2=c1vγ2

过程 3-4

c2 为沿线 3-4 的常数。由于已知点 3 处的压力和温度,因此沿可逆绝热线的常数可以计算为:

c2=p3×vγ3

并且由于 v4=v1,因此沿 3-4 的压力可以计算为:

p=c2vγ

过程 4-1

c2c4 已知,因此 p4 可以计算为

p4=c4vγ4

奥托循环的Python程序

奥托循环的 Python 函数如下所示:

from pylab import * from pandas import * def otto(p_min,p_max,v_max,r,gma): font = {'family' : 'Times New Roman','size' : 39} figure(figsize=(20,15)) rc('font', **font) '''This function prints Otto cycle arguments are as follows: _min: minimum pressure p_max: Maximum pressure v_max: Maximum volume r: compression ratio gma: Adiabatic exponent The order of arguments is: p_min,p_max,v_max,r,gma ''' #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 1-2 #~~~~~~~~~~~~~~~~~~~~~~~~~ p1=p_min v1=v_max v2=v1/r c1=p1*v1**gma v=linspace(v2,v1,100) p=c1/v**gma plot(v,p/1000,'b',linewidth=3) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 2-3 #~~~~~~~~~~~~~~~~~~~~~~~~~ p3=p_max v3=v2 p2=c1/v2**gma p=linspace(p2,p3,100) v=100*[v3] plot(v,p/1000,'r',linewidth=3) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 3-4 #~~~~~~~~~~~~~~~~~~~~~~~~~ c2=p3*v3**gma v4=v1 v=linspace(v3,v4,100) p=c2/v**gma plot(v,p/1000,'g',linewidth=3) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 4-1 #~~~~~~~~~~~~~~~~~~~~~~~~~ v4=v1 p4=c2/v4**gma p=linspace(p1,p4,100) v=100*[v1] plot(v,p/1000,'r',linewidth=3) title('Otto Cycle',size='xx-large',color='k') xlabel('Volume ($m^3$)') ylabel('Pressure (kPa)') text(v1,p1/1000-30,'1') text(v2,p2/1000-200,'2') text(v3+0.01,p3/1000-20,'3') text(v4,p4/1000+10,'4') data={'p':[p1,p2,p3,p4], 'v':[v1,v2,v3,v4], 'c':[c1,'' ,c2,'' ], 'State': [1,2,3,4]} df=DataFrame(data) savefig('Otto_final.jpg') return df.set_index('State') oc=otto(2*10**5,35*10**5,0.5,5,1.4) show() oc

对于 pmin=2×105Pa,pmax=35×105Pa,vmax=0.5m3,r=5andγ=1.4, 程序生成的奥托循环图如下所示:

从代码中获得的不同点的压力和体积如下:

状态

p

v

1

2.000000e+05

0.5

2

1.903654e+06

0.1

3

3.500000e+06

0.1

4

3.677139e+05

0.5

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

柴油循环

柴油循环是压缩点火 (CI) 发动机中使用的空气标准循环。该循环由四个过程组成:两个可逆绝热过程、一个等压过程(恒压)和两个等容过程(恒容)。热量增加发生在过程 2-3,而热量减少发生在过程 4-1。过程 1-2 和 3-4 分别是功相互作用进入和离开循环的过程。柴油循环图如下所示。

为了模拟该循环,考虑的输入变量是最大压力 (pmax)、最小压力 (pmin)、最大容积 (vmax)、截止比 (rc) 和绝热指数 \mathrm{(\gamma)}。下面解释了柴油循环中不同过程的热力学计算:

过程 1-2

p1=pmin

v1=vmax

p2=pmax

由于 1-2 是绝热过程,因此遵循 pvγ=const; 设常数为 (c1)。点 2 处的体积可以计算为:

v2=v1×(p1p2)1γ

因此 c1=p1×vγ1

然后计算过程 1-2 的绝热常数:

c1=p1×vγ1

一旦已知 c1,则沿线 1-2 的压力变化计算为:

p=c1vγ

过程 2-3

由于该过程是等压的,因此压力保持不变:

p3=p2

点 3 处的体积可以计算为:

v3=rc×v2

因此,可以很容易地知道体积 v2v3 之间的压力变化。

过程 3-4

c2 为沿线 3-4 的常数。由于已知点 3 处的压力和温度,因此沿可逆绝热线的常数可以计算为:

c2=p3×vγ3

并且由于 v4=v1,因此沿 3-4 的压力变化可以计算为:

p=c2vγ

过程 4-1

c2v4 已知,因此 p4 可以计算为

p4=c4vγ4

用于模拟柴油循环的Python程序

用于模拟柴油循环的 Python 函数如下所示:

#~~~~~~~~~~~~~~~~~~~ # Diesel Cycle #~~~~~~~~~~~~~~~~~~~ def diesel(p_min,p_max,v_max,r_c,gma): font = {'family' : 'Times New Roman','size' : 39} figure(figsize=(20,15)) title('Rankine Cycle with Feed water heating (T-s Diagram)',color='b') rc('font', **font) '''This function prints Diesel cycle arguments are as follows: p_min: minimum pressure p_max: Maximum pressure v_max: Maximum volume rc: Cut-Off ratio gma: Adiabatic exponent The order of arguments is: p_min,p_max,v_max,rc,gma ''' #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 1-2 #~~~~~~~~~~~~~~~~~~~~~~~~~ p1=p_min v1=v_max p2=p_max v2=v1*(p1/p2)**(1/gma) c1=p1*v1**gma v=linspace(v2,v1,100) p=c1/v**gma plot(v,p/1000,'b',linewidth=3) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 2-3 #~~~~~~~~~~~~~~~~~~~~~~~~~ p3=p2 p=zeros(100) p=p+p2 v3=r_c*v2 v=linspace(v2,v3,100) plot(v,p/1000.,'r',linewidth=3) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 3-4 #~~~~~~~~~~~~~~~~~~~~~~~~~ v4=v1 c2=p3*v3**gma v=linspace(v3,v4,100) p=c2/v**gma plot(v,p/1000,'g',linewidth=3) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 4-1 #~~~~~~~~~~~~~~~~~~~~~~~~~ v4=v1 v=100*[v4] p4=c2/v4**gma p=linspace(p1,p4,100) plot(v,p/1000.,'m',linewidth=3) title('Diesel Cycle',size='xx-large',color='b') xlabel('Volume ($m^3$)') ylabel('Pressure (kPa)') text(v1,p1/1000-30,'1') text(v2-0.01,p2/1000,'2') text(v3+0.01,p3/1000-20,'3') text(v4,p4/1000+10,'4') data={'p':[p1,p2,p3,p4], 'v':[v1,v2,v3,v4], 'c':[c1,'' ,c2,'' ], 'State': [1,2,3,4]} df=DataFrame(data) savefig('Diesel_final.jpg') return df.set_index('State') dc=diesel(2*10**5,20*10**5,0.5,2,1.4) show() dc

对于 pmin=2×105Pa,pmax=20×105Pa,vmax=0.5m3,rc=2andγ=1.4, 获得的结果如下面的图所示

状态

p

v

1

2.000000e+05

0.500000

2

2.000000e+06

0.096535

3

2.000000e+06

0.193070

4

5.278032e+05

0.500000

结论

在本教程中,借助 Python 编程对奥托循环和柴油循环进行了建模。柴油和奥托循环的功能已编程和测试。该函数能够根据输入数据绘制循环。

更新于:2023年10月3日

333 次浏览

启动您的 职业生涯

完成课程获得认证

开始
广告