Python 中的斯特林迴圈和埃裡克森迴圈建模


斯特林迴圈

斯特林迴圈由四個過程組成——兩個可逆等容過程和兩個可逆等溫過程。在相同的溫度範圍內,理想的再生斯特林迴圈的效率等同於卡諾迴圈。整個迴圈中都會發生熱量交換,而功交換僅發生在過程 1-2 和 3-4 中。

下圖顯示了該迴圈的示意圖。

在對迴圈進行建模時,考慮的輸入變數包括最大壓力 $\mathrm{(p_{max})}$、最小壓力 $\mathrm{(p_{min})}$、最大體積 $\mathrm{(v_{max})}$、壓縮比 (r) 和絕熱指數 $\mathrm{(\gamma)}$。以下列出了斯特林迴圈各個階段中涉及的多個過程的熱力學計算 -

過程 1-2

$$\mathrm{p_{1} \: = \: p_{min}}$$

$$\mathrm{v_{1} \: = \: v_{max}}$$

首先,將根據點 1 處的體積使用壓縮比 (r) 計算點 2 處的體積,如下所示 -

$$\mathrm{v_{2} \: = \: \frac{v_{1}}{r}}$$

然後,計算過程 1-2 沿線的等溫常數,如下所示 -

$$\mathrm{c_{1} \: = \: p_{1} \: \times \: v_{1}}$$

可以計算點 2 處的壓力,如下所示 -

$$\mathrm{p_{2} \: = \: \frac{c_{1}}{v_{2}}}$$

一旦已知 $\mathrm{c_{1}}$,則計算沿線 1-2 的壓力變化,如下所示 -

$$\mathrm{p \: = \: \frac{c_{1}}{v}}$$

過程 2-3

$$\mathrm{p_{3} \: = \: p_{max}}$$

由於該過程是等容的,因此體積保持不變,因此 -

$$\mathrm{v_{3} \: = \: v_{2}}$$

因此,可以輕鬆計算 2 和 3 之間的壓力變化。

過程 3-4

設 $\mathrm{c_{2}}$ 為沿線 3-4 的常數。由於已知壓力和溫度點 3,因此可以計算等溫線沿線的常數,如下所示 -

$$\mathrm{c_{2} \: = \: p_{3} \: \times \: v_{3}}$$

並且由於 $\mathrm{v_{4} \: = \: v_{1}}$,因此可以計算點 4 處的壓力,如下所示 -

$$\mathrm{p_{4} \: = \: \frac{c_{2}}{v_{4}}}$$

因此,可以計算沿線 3-4 的壓力變化,如下所示 -

$$\mathrm{p \: = \: \frac{c_{2}}{v}}$$

過程 4-1

由於 $\mathrm{p_{1}}$ 和 $\mathrm{p_{4}}$ 已知,因此可以輕鬆計算 $\mathrm{v_{4} \: =}$ 常數線的壓力變化。

斯特林迴圈的 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()

輸出

對於 $\mathrm{p_{min} \: = \: 10^{5} \: Pa \:, \: p_{max} \: = \: 20 \: \times \: 10^{5} \: Pa \:, \: v_{max} \: = \: 0.5 \: m^{3} \:, \: r \: = \: 5 \: and \: y \: = \: 1.4}$,程式的結果如下所示 -

埃裡克森迴圈

埃裡克森迴圈由兩個可逆等壓過程和兩個可逆等溫過程組成。在相同的溫度範圍內,理想的再生埃裡克森迴圈的效率與卡諾迴圈相同。該迴圈中的所有過程都與熱量和功相互作用。下圖顯示了該迴圈的示意圖。

在對迴圈進行建模時,考慮的輸入變數包括最大壓力 $\mathrm{(p_{max})}$、最小壓力 $\mathrm{(p_{min})}$、最大體積 $\mathrm{(v_{max})}$、恆壓排熱過程中的壓縮比 (r) 和絕熱指數 $\mathrm{(\gamma)}$。下面描述了埃裡克森迴圈中各個過程的熱力學計算 -

過程 1-2

$$\mathrm{p_{1} \: = \: p_{min}}$$

$$\mathrm{p_{2} \: = \: p_{1}}$$

$$\mathrm{v_{1} \: = \: v_{max}}$$

首先將根據點 1 處的體積使用壓縮比 (r) 計算點 2 處的體積,如下所示 -

$$\mathrm{v_{2} \: = \: \frac{v_{1}}{r}}$$

由於 1-2 是等壓過程,並且已知極端體積,因此可以輕鬆計算壓力變化。

過程 2-3

可以計算等溫線 2-3 沿線的常數 $\mathrm{c_{1}}$,如下所示 -

$$\mathrm{c_{1} \: = \: p_{2} \: \times \: v_{2}}$$

由於 $\mathrm{p_{3} \: = \: p_{max}}$,因此可以計算點 3 處的體積,如下所示 -

$$\mathrm{v_{3} \: = \: \frac{c_{1}}{p_{3}}}$$

可以計算壓力變化,如下所示 -

$$\mathrm{p \: = \: \frac{c_{1}}{v}}$$

過程 3-4

$$\mathrm{p_{4} \: = \: p_{3}}$$

設 $\mathrm{c_{2}}$ 為沿線 4-1 的常數。由於已知點 1 處的壓力和體積,因此可以計算等溫線 4-1 沿線的常數,如下所示 -

$$\mathrm{c_{2} \: = \: p_{1} \: \times \: v_{1}}$$

因此,可以計算點 4 處的體積,如下所示 -

$$\mathrm{v_{4} \: = \: \frac{c_{2}}{p_{4}}}$$

由於已知末端體積,因此可以輕鬆計算壓力變化。

過程 4-1

由於 $\mathrm{v_{1}}$ 和 $\mathrm{v_{4}}$ 已知,並且常數 $\mathrm{c_{2}}$ 也已知,因此可以計算壓力變化,如下所示 -

$$\mathrm{p \: = \: \frac{c_{2}}{v}}$$

埃裡克森迴圈的 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

輸出

對於 $\mathrm{p_{min} \: = \: 2 \: \times \: 10^{5} \: Pa \:, \: p_{max} \: = \: 20 \: \times \: 10^{5} \: Pa \:, \: v_{max} \: = \: 0.5 \: m^{3} \:, \: r \: = \: 5 \: and \: \gamma \: = \: 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 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.