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。由于 p3 和 v3 都已知,并且点 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×105Pa,pmax=20×105Pa,vmax=0.5m3,r=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 函数,并进行了一个测试用例来演示函数的使用。该函数能够根据输入数据绘制循环。