Processing math: 100%

Python中的卡诺循环建模


卡诺循环是最基本的燃气动力循环。它是任何发动机循环的基准。每个发动机循环效率都以卡诺循环作为检验标准。如果发明者开发了一个新的发动机循环,则必须针对基准(即卡诺循环)进行验证。

所有热力学循环都具有卡诺循环所确定的上限。它包含两个可逆绝热过程和两个等温过程,总共四个过程。等温过程涉及热量的添加和排放,而可逆绝热过程涉及功的相互作用。下图显示了卡诺循环的示意图。

热量排放和添加在步骤1-2和3-4中等温进行。而过程4-1和2-3是可逆绝热过程,分别通过功从循环中输入和输出。

在对循环进行建模时,需要考虑最大压力(pmax)、最小压力(pmin)、最大体积(Vmax)、压缩比(𝑟)和绝热指数(𝛾)等输入变量。下面解释了几个过程的热力学计算。

过程 1-2:(等温过程)

过程 1-2 是一个等温过程。这里,

p1=pmin

v1=vmax

使用压缩比 (r),可以根据点 1 处的体积评估点 2 处的第一个体积,如下所示:

v2=v1r

然后计算步骤 1-2 期间的等温常数,如下所示:

c1=p1×v1

一旦知道 c1,就可以评估沿线 1-2 的压力变化,如下所示:

p=c1v

过程 2-3(可逆绝热过程)

过程 2-3 是一个可逆绝热过程。这里,

p3=pmax

c2 为绝热线的常数。由于绝热线和等温线在点 2 相交,因此可以计算 c2

p2=c2vγ2=c1v2

c2=c1×vγ12

由于 c2 也满足点 3,因此可以计算点 3 处的体积,如下所示:

v3=(c2p3)1γ

可以评估沿 2-3 的压力变化,如下所示:

p=c2vγ

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

过程 3-4(等温过程)

设线 3-4 的常数为 c3。由于 p3v3 都已知,并且点 3 也穿过它们,因此沿等温线的常数计算如下:

c3=p3×v3

此外,为了评估沿 3-4 的压力波动,需要知道沿 4-1 的常数。假设它是 c4,并且由于 c4 也满足点 1,因此评估如下:

c4=p1×vγ1

因此,可以评估 v4 为:

v4=(c4c3)1γ1

因此,可以评估沿 3-4 的压力变化为:

p=c3v

过程 4-1(可逆绝热)

已知 c4 和 1 和 4 处的体积,可以计算沿 4-1 的压力变化,如下所示:

p=c4vγ

用于模拟卡诺循环的 Python 代码

用于模拟卡诺循环的 Python 函数如下所示:

from pylab import * from pandas import * # Carnot Cycle def carnot(p_min,p_max,v_max,r,gma): font = {'family':'Times New Roman', 'size':16} figure(figsize=(7.50,5.50)) rc('font', **font) '''This function prints the carnot cycle The arguments are as follows: p_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''' p1=p_min v1=v_max v2=v1/r c1=p1*v1 # Process 1-2 v=linspace(v2,v1,100) p=c1/v plot(v,p/1000,'r-',linewidth=3) p2=c1/v2 # Process 2-3 p3=p_max c2=c1*v2**(gma-1.) v3=(c2/p3)**(1/gma) v=linspace(v3,v2,100) p=c2/v**gma plot(v,p/1000,'b',linewidth=3) # Process 3-4 c3=p3*v3 c4=p1*v1**gma v4=(c4/c3)**(1/(gma-1.)) v=linspace(v3,v4,100) p=c3/v plot(v,p/1000,'g',linewidth=3) p4=c3/v4 # Process 4-1 v=linspace(v4,v1,100) p=c4/v**gma plot(v,p/1000,'c',linewidth=3) title('Carnot Cycle',size='large',color='k') xlabel('Volume ($m^3$)') ylabel('Pressure (kPa)') grid(linestyle='--', color='k') axis([0.,v_max+0.01,1*10**5/10**3,21*10**5/10**3]) text(v1,p1/1000,'1') text(v2,p2/1000-200,'2') text(v3+0.01,p3/1000-20,'3') text(v4,p4/1000,'4') data={ 'p':[p1,p2,p3,p4], 'v':[v1,v2,v3,v4], 'c':[c1,c2,c3,c4], 'State': [1,2,3,4] } df=DataFrame(data) savefig('Carnot_final.jpg') return df.set_index('State') carnot(2*10**5,20*10**5,0.5,5,1.4) show()

对于 pmin=2×105Papmax=20×105Pavmax=0.5m3r=5γ=1.4,获得的结果如下图所示:

不同状态点的压力、体积值如下所示:

状态

p

v

1

200000.0

0.500000

2

1000000.0

0.100000

3

2000000.0

0.060951

4

400000.0

0.304753

结论

在本教程中,已经介绍了模拟卡诺循环的方法。已经介绍了一个 Python 函数,并进行了一个测试用例来演示函数的使用。该函数能够根据输入数据绘制循环。

更新于:2023年2月27日

948 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告