使用 Python 進行集總電容分析


當一個溫度非常高的物體突然放入較冷的液體中,並且假設固體的導熱阻力與周圍的對流阻力相比非常小,那麼傳熱分析被稱為集總電容分析(如下面的圖所示)。在這裡,我們將系統視為一個整體。在這種情況下,我們可以假設集總內部能量的變化率將等於與周圍流體的熱相互作用。

數學上,這可以寫成:

$$\mathrm{pcV\frac{\partial T}{\partial t} \: = \: − hA(T \: − \: T_{\infty}) \: \dotso\dotso \: (1)}$$

$$\mathrm{\frac{\partial T}{\partial t} \: = \: − \frac{hA}{pcV}(T \: − \: T_{\infty}) \: \dotso\dotso \: (2)}$$

現在需要求解方程 2 以獲得溫度隨時間的變化。

如果我們將方程 2 從物體的初始溫度 $\mathrm{T_{0}}$ 到某個任意溫度 T 在時間 0 到 t 內進行積分,那麼最終答案將是:

$$\mathrm{\frac{T \: − \: T_{\infty}}{T_{0} \: − \: T_{\infty}} \: = \: exp(− \frac{hA}{pcV}t) \: \dotso\dotso \: (3)}$$

現在可以以下列方式使用此方程:

  • 如果需要達到某個溫度 $\mathrm{T_{f}}$ 所需的時間:

$$\mathrm{t \: = \: − \frac{pcV}{hA}In(\frac{T_{f} \: − \: T_{\infty}}{T_{0} \: − \: T_{\infty}}) \: \dotso\dotso \: (4)}$$

  • 如果需要在某個時間 $\mathrm{t_{f}}$ 時的溫度:

$$\mathrm{T \: = \: T_{\infty} \: + \: (T_{0} \: − \: T_{\infty}) \: \times \: exp (−\frac{hA}{pcV}t_{f}) \: \dotso\dotso \: (5)}$$

讓我們透過以下示例來演示這一點:

示例 1

一個半徑為 1 毫米的鋼球,溫度為 $\mathrm{1200^{\circ}C}$,放置在溫度為 $\mathrm{25^{\circ}C}$ 的露天環境中。計算將鋼球冷卻到 $\mathrm{100^{\circ}C}$ 所需的時間。$\mathrm{(k_{b} \: = \: 50 \: W/mK, \: c_{b} \: = \: 500kJ/kgK, \: p_{b} \: = \: 8000kg/m^{3}, \: and \: h_{air} \: = \: 10000W/m^{2}K)}$.

解答

由於需要計算時間,因此我們將使用方程 4。

# lumped capacitance analysis
from pylab import *
#Input Data

T_inf=25
r=1.E-3
T0=1200
Tf=100
k=50
c=500
ρ=8000
h=10000

#Evaluating Volume and Area
A=(4*pi*r**2)
V=(4/3)*pi*r**3

τ0=ρ*c*V/(h*A)

t=-τ0*log((Tf-T_inf)/(T0-T_inf))

print(f't = {round(t,3)} s')

輸出

程式輸出將是:

t = 0.367 s

示例 2

在示例 1 中,0.1 秒後鋼球的溫度是多少?

解答

在這種情況下,需要求解方程 5。除了公式外,其他一切都是相同的。

# lumped capacitance analysis
from pylab import *

# Input Data
T_inf=25
r=1.E-3
T0=1200
Tf=100
t=0.1

k=50
c=500
ρ=8000
h=10000

# Evaluating Volume and Area
A=(4*pi*r**2)
V=(4/3)*pi*r**3

τ0=ρ*c*V/(h*A)

T=T_inf+(T0-T_inf)*exp(-t/τ0)

print(f'T = {round(T,3)} deg. C')

輸出

輸出將是:

T = 580.031 deg. C

要理解影像,應該繪製溫度的變化曲線。在這種情況下,將使用方程 3,如下所示:

示例 3

from pylab import *

# Input Data
T_inf=25
r=1.E-3
T0=1200

k=50
c=500
ρ=8000
h=10000

# Evaluating Volume and Area
A=(4*pi*r**2)
V=(4/3)*pi*r**3

# Evaluating time constant

τ0=ρ*c*V/(h*A)

t= linspace(0,1.0,50)
T=T_inf+(T0-T_inf)*exp(-t/τ0)

figure(1,dpi=300)
plot(t,T,'r-o')
xlabel('t (s)')
ylabel('T ($^\circ$C)')
savefig('plot1.jpg')
show()

輸出

這是一個顯示溫度變化的曲線圖:

數值方法

如果要遵循數值方法,也可以這樣做。讓我們使用顯式方法來求解方程 2。

對於上面所示的網格,方程 2 可以離散化(使用前向差分)為:

$$\mathrm{\frac{T_{i} \: − \: T_{i − 1}}{\Delta t} \: = \: −\tau_{0}(T_{i} \: − \: T_{\infty})}$$

$$\mathrm{T_{i} \: = \: T_{i − 1} \: − \: \Delta t \: \times \: (T_{i} \: − \: T_{\infty})/\tau_{0} \: \dotso\dotso \: (6)}$$

下標表示時間步長。

我們將按時間推進,但在每個時間步長中,我們將迭代直到解決方案收斂。

由於在初始時間已知溫度,即 1200,因此我們將從第二個時間步長開始。首先,我們將猜測此時間步長的溫度值(例如 0),然後我們將求解方程 6,然後比較猜測值和獲得的值。如果絕對差值小於收斂標準 $\mathrm{10^{− 5}}$,那麼我們將移動到下一個時間步長。否則,我們將設定獲得的溫度值作為猜測值,並再次求解方程 6。重複此過程直到最後一個時間步長。下面的程式顯示了此過程。我們還在其中將結果與精確的解析值(方程 3)進行了比較。

示例

from pylab import *

# Input Data
T_inf=25
r=1.E-3
T0=1200

k=50
c=500
ρ=8000
h=10000

# Evaluating Volume and Area
A=(4*pi*r**2)
V=(4/3)*pi*r**3

τ0=ρ*c*V/(h*A)

n=35 # Number of time steps

t = linspace(0,1.0,n)

Δt=1/(n-1)

# initial guess for all time steps
T=zeros(n)

# initial condition
T[0]=T0

# Array of guess
Tg=T.copy()

# Time marching
for i in range(1,n):

   # Iteration loop
   error=1
   
   while error>1.E-5:
      T[i]=T[i-1]-Δt*(T[i]-T_inf)/τ0
      error=abs(T[i]-Tg[i])

      Tg=T.copy()

# Exact solution
T_exact=T_inf+(T0-T_inf)*exp(-t/τ0)
# Data Plotting
figure(2,dpi=300)
plot(t,T,'r-o',label='Numerical')
plot(t,T_exact,'b-o',label='Analytical')
xlabel('t (s)')
ylabel('T ($^\circ$C)')
legend()
savefig('plot2.jpg')
show()

輸出

程式輸出如下:

以下是生成上述圖形的資料:

time       T(analytical)    T(numerical)
0.0         1200.0            1200.0
0.0294      987.6506          967.4051
0.0588      813.6776          780.853
0.0882      671.1455          631.2296
0.1176      554.3722          511.2245
0.1471      458.7025          414.9749
0.1765      380.3226          337.7781
0.2059      316.1076          275.8627
0.2353      263.4978          226.2036
0.2647      220.3958          186.3748
0.2941      185.0833          154.4301
0.3235      156.1526          128.809
0.3529      132.4503          108.2597
0.3824      113.0316          91.7782
0.4118      97.1223           78.5592
0.4412      84.0881           67.957
0.4706      73.4095           59.4535
0.5         64.6608           52.6334
0.5294      57.4932           47.1632
0.5588      51.6209           42.776
0.5882      46.8099           39.2572
0.6176      42.8684           36.4349
0.6471      39.6391           34.1713
0.6765      36.9935           32.3558
0.7059      34.826            30.8997
0.7353      33.0502           29.7319
0.7647      31.5954           28.7952
0.7941      30.4034           28.0439
0.8235      29.4269           27.4414
0.8529      28.6269           26.9581
0.8824      27.9714           26.5705
0.9118      27.4344           26.2596
0.9412      26.9945           26.0103
0.9706      26.634            25.8103
1.0         26.3387           25.6499

結論

在本教程中,已經使用 Python 解釋並建模了集總電容分析。討論了分析和數值方法。

更新於: 2023 年 10 月 3 日

199 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告