Processing math: 100%

Python 中的斯特林循环和埃里克森循环建模


斯特林循环

斯特林循环由四个过程组成——两个可逆等容过程和两个可逆等温过程。在相同的温度范围内,理想的再生斯特林循环的效率等同于卡诺循环。整个循环中都会发生热量交换,而功交换仅发生在过程 1-2 和 3-4 中。

下图显示了该循环的示意图。

在对循环进行建模时,考虑的输入变量包括最大压力 (pmax)、最小压力 (pmin)、最大体积 (vmax)、压缩比 (r) 和绝热指数 (γ)。以下列出了斯特林循环各个阶段中涉及的多个过程的热力学计算 -

过程 1-2

p1=pmin

v1=vmax

首先,将根据点 1 处的体积使用压缩比 (r) 计算点 2 处的体积,如下所示 -

v2=v1r

然后,计算过程 1-2 沿线的等温常数,如下所示 -

c1=p1×v1

可以计算点 2 处的压力,如下所示 -

p2=c1v2

一旦已知 c1,则计算沿线 1-2 的压力变化,如下所示 -

p=c1v

过程 2-3

p3=pmax

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

v3=v2

因此,可以轻松计算 2 和 3 之间的压力变化。

过程 3-4

c2 为沿线 3-4 的常数。由于已知压力和温度点 3,因此可以计算等温线沿线的常数,如下所示 -

c2=p3×v3

并且由于 v4=v1,因此可以计算点 4 处的压力,如下所示 -

p4=c2v4

因此,可以计算沿线 3-4 的压力变化,如下所示 -

p=c2v

过程 4-1

由于 p1p4 已知,因此可以轻松计算 v4= 常数线的压力变化。

斯特林循环的 Python 程序

斯特林循环的 Python 函数如下所示 -

示例

from pylab import* from pandas import* #~~~~~~~~~~~~~~~~~~~~~ # Stirling Cycle #~~~~~~~~~~~~~~~~~~~~~ def stirling(p_min,p_max,v_max,r,gma): font = {'family' : 'Times New Roman','size' : 40} figure(figsize=(20,15)) rc('font', **font) '''This function prints Stirling cycle 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 ''' #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 1-2 #~~~~~~~~~~~~~~~~~~~~~~~~~ p1=p_min v1=v_max c1=p1*v1 v2=v1/r p2=c1/v2 v=linspace(v2,v1) p=c1/v plot(v,p/1000,'r',linewidth=2) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 2-3 #~~~~~~~~~~~~~~~~~~~~~~~~~ p3=p_max v3=v2 v=zeros(100)+v3 p=linspace(p2,p3,100) plot(v,p/1000,'b',linewidth=2) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 3-4 #~~~~~~~~~~~~~~~~~~~~~~~~~ c2=p3*v3 v4=v1 p4=c2/v4 v=linspace(v3,v4,100) p=c2/v plot(v,p/1000,'g',linewidth=2) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 4-1 #~~~~~~~~~~~~~~~~~~~~~~~~~ p=linspace(p1,p4,100) v=zeros(100)+v1 plot(v,p/1000,'m',linewidth=2) title('Stirling Cycle',size='xx-large',color='k') xlabel('Volume (m$^3$)') ylabel('Pressure (kPa)') #axis([0.01,v4+0.01,p_min/1000-100,p_max/1000+100]) #grid(linestyle='--',color='k') text(v1,p1/1000-80,'1') text(v2-0.01,p2/1000,'2') text(v3-0.01,p3/1000-20,'3') text(v4,p4/1000+30,'4') data={'p':[p1,p2,p3,p4], 'v':[v1,v2,v3,v4], 'c':[c1,'' ,c2,"" ], 'State': [1,2,3,4]} df=DataFrame(data) savefig('stirling_final.jpg') return df.set_index('State') sc=stirling(10**5,20*10**5,0.5,5,1.4) show()

输出

对于 pmin=105Pa,pmax=20×105Pa,vmax=0.5m3,r=5andy=1.4,程序的结果如下所示 -

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

埃里克森循环

埃里克森循环由两个可逆等压过程和两个可逆等温过程组成。在相同的温度范围内,理想的再生埃里克森循环的效率与卡诺循环相同。该循环中的所有过程都与热量和功相互作用。下图显示了该循环的示意图。

在对循环进行建模时,考虑的输入变量包括最大压力 (pmax)、最小压力 (pmin)、最大体积 (vmax)、恒压排热过程中的压缩比 (r) 和绝热指数 (γ)。下面描述了埃里克森循环中各个过程的热力学计算 -

过程 1-2

p1=pmin

p2=p1

v1=vmax

首先将根据点 1 处的体积使用压缩比 (r) 计算点 2 处的体积,如下所示 -

v2=v1r

由于 1-2 是等压过程,并且已知极端体积,因此可以轻松计算压力变化。

过程 2-3

可以计算等温线 2-3 沿线的常数 c1,如下所示 -

c1=p2×v2

由于 p3=pmax,因此可以计算点 3 处的体积,如下所示 -

v3=c1p3

可以计算压力变化,如下所示 -

p=c1v

过程 3-4

p4=p3

c2 为沿线 4-1 的常数。由于已知点 1 处的压力和体积,因此可以计算等温线 4-1 沿线的常数,如下所示 -

c2=p1×v1

因此,可以计算点 4 处的体积,如下所示 -

v4=c2p4

由于已知末端体积,因此可以轻松计算压力变化。

过程 4-1

由于 v1v4 已知,并且常数 c2 也已知,因此可以计算压力变化,如下所示 -

p=c2v

埃里克森循环的 Python 程序

用于模拟埃里克森循环的 Python 函数如下所示 -

示例

from pylab import* from pandas import* #~~~~~~~~~~~~~~~~~~~~~ # Ericsson Cycle #~~~~~~~~~~~~~~~~~~~~~ def ericsson(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 Ericsson cycle 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 ''' #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 1-2 #~~~~~~~~~~~~~~~~~~~~~~~~~ p1=p_min p2=p1 v1=v_max v2=v1/r p=zeros(100)+p2 v=linspace(v2,v1,100) plot(v,p/1000,'r',linewidth=2) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 2-3 #~~~~~~~~~~~~~~~~~~~~~~~~~ c1=p2*v2 p3=p_max v3=c1/p3 v=linspace(v3,v2,100) p=c1/v plot(v,p/1000,'b',linewidth=2) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 3-4 #~~~~~~~~~~~~~~~~~~~~~~~~~ p4=p3 c2=p1*v1 v4=c2/p4 p=zeros(100)+p4 v=linspace(v3,v4,100) plot(v,p/1000,'g',linewidth=2) #~~~~~~~~~~~~~~~~~~~~~~~~~ # Process 4-1 #~~~~~~~~~~~~~~~~~~~~~~~~~ v=linspace(v4,v1,100) p=c2/v plot(v,p/1000,'m',linewidth=2) title('Ericsson Cycle',size='xx-large',color='k') xlabel('Volume (m$^3$)') ylabel('Pressure (kPa)') + # axis([0.0,v1+0.01,p_min/1000-100,p_max/1000+100]) # grid(linestyle='--',color='k') text(v1,p1/1000-80,'1') text(v2,p2/1000-80,'2') text(v3-0.015,p3/1000-20,'3') text(v4+0.01,p4/1000-20,'4') data={'p':[p1,p2,p3,p4], 'v':[v1,v2,v3,v4], 'c':[c1,'' ,c2,"" ], 'State': [1,2,3,4]} df=DataFrame(data) savefig('Ericsson_final.jpg') return df.set_index('State') erc=ericsson(2*10**5,20*10**5,0.5,5,1.4) show() erc

输出

对于 pmin=2×105Pa,pmax=20×105Pa,vmax=0.5m3,r=5andγ=1.4,从代码中获得的结果如下图所示 -

此外,不同点沿循环的压力和体积如下表所示 -

状态

p

v

1

200000

0.50

2

200000

0.10

3

2000000

0.01

4

2000000

0.05

结论

在本教程中,使用 Python 对埃里克森循环和斯特林循环进行了建模。提到了详细的算法和编程步骤,以开发这些循环的函数。

更新于: 2023年10月3日

180 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告