Python 解决热力学第一定律

Python 解决热力学第一定律

热力学第一定律与能量守恒有关,即如果能量以某种形式消失,那么能量将以其他形式出现。在热力学中,我们主要关注热量、功和内能。热量和功是能量的形式,也被称为“能量在传递”,因此它们是路径函数。它们不能被系统储存,而内能是系统的性质,可以被系统储存。

对于闭合系统,第一定律可以写成:

\Sigma Q=\Sigma W

但这仅适用于正在经历循环的闭合系统。对于过程,可以写成:

Q_{1-2}=\Delta U+W_{1-2}

在开始建模之前,我们需要知道如何为不同的过程建模工作和热量。所以让我们首先做这个。

如果系统对外部环境的唯一影响可以减少到重量增加的话,就可以说系统执行了热力学功。在实际情况下,重量可能没有被举起,但效果仍然可能是举重的效果。工作可能是由系统执行或对系统进行,具体取决于方向。前者被认为是有利的,后者被认为是负的。

工作是一种路径函数,因为它取决于两个状态之间所采取的路径以及初始和结束状态。在本节中,我们将专注于非耗散/位移工作。它指的是闭合系统在p-v图下的区域。

对于由pv^{n}=Constant表示的一般多变过程,所做的工作取决于指数𝑛。下面的表格将根据指数𝑛介绍不同的过程。

n 过程 𝒑−𝒗 关系
0 等压过程(p=常数) p = c
1 等温过程(理想气体,T=常数) pv =c
1.4 绝热过程(无热交换) $\mathrm{pv^{y}:=c}$
等容过程(体积恒定) v = c

为了推导出方程(3)中给出的工作相互作用,典型的技术是将过程从初始状态积分至最终状态。

\mathrm{W=\int ^{2}_{1}pdv}

因此,下面的表格显示了不同过程的工作相互作用列表。

过程 p-v关系
等压过程(p = c) $\mathrm{p(v_{2}-v_{1})}$
等温过程(理想气体)(pv=c) $\mathrm{p_{1}v_{1}\mathbb{I}n\frac{v_{2}}{v_{1}}=p_{1}v_{1}\mathbb{I}n\frac{p_{1}}{p_{2}}}$
多变过程(pv^{n}=c $\mathrm{\frac{\mathrm{p_{1}v_{1}-p_{2}v_{2}}}{n-1}}$
绝热过程(pv^{y}=c $\mathrm{\frac{\mathrm{p_{1}v_{1}-p_{2}v_{2}}}{\gamma -1}}$
等容过程(v=c) 0

热传递被定义为系统和其周围环境之间由于温度差异而发生的能量转移。传导、对流和辐射是其三个主要分类。

进入系统的热被视为正值,而离开系统的热被视为负值。当系统不与周围环境交换热时,称为绝热过程。以单位质量的物质升高一度所需要的以热的形式表达的能量的量被称为比热。

比热的表达式如公式(4)所示。物质的热容量由符号𝐶(𝐶=𝑚𝑐)表示,即质量和比热的乘积。对于固体和液体,比热不受过程的影响;然而,对于气体,比热必须经过方法进行限定。因此,对于涉及气体的等压和等体操作,比热不同。

潜热(L)是以单位质量计量的用于改变物质相的能量量。潜热转化不会引起温度或压力的变化。

相变过程中单位质量的物质的总热相互作用由以下式给出 –

Q=mL

使用Python编程评估热量和功

下表显示了寻找功和热相互作用的不同Python函数。此外,它们还将用于绘制过程和其下的区域。

from pylab import *

# Font and size
font = {'family' :'Times New Roman','size' : 16}
rc('font', **font)

# Constant Volume Process
def w_cv(p1,p2,v):

   """
   Function for constant volume process
   Input: Pressure limits p1 & p2 (in kPa) and volume (m^3)
   Output: Work output and p-v plot
   """

   figure(1,figsize=(7.20,4.80))

   p=linspace(min(p1,p2),max(p1,p2),30)
   v=zeros(30)+v

   plot(v,p,'k-',linewidth=4)
   xlabel('Volume (m^3)')
   ylabel('Pressure (kPa)')

   show()
   return 0

# Constant Pressure Process
def w_cp(p,v1,v2):

   """
   Function for constant pressure process
   Input : Volume limits v1 & v2 (m^3) and pressure (kPa)
   Output: Work output and p-v plot
   """

   work = p*(v2-v1)
   figure(2,figsize=(7.20,4.80))
   v=linspace(min(v1,v2),max(v1,v2),30)
   p=zeros(30)+p

   plot(v,p,'k-',linewidth=4)
   fill_between(v,p,color='red',alpha=0.3)
   xlabel('Volume (m^3)')
   ylabel('Pressure (kPa)')

   show()
   return round(work,3)
# Constant Temperature Process
def w_ct(p1,v1,v2):
   """
   Function for constant temperature process
   Input : Initial pressure (kPa) and volume (m^3) and final volume (m^3)
   Output: Work output and p-v plot
   """

   work = p1*v1*log(v2/v1)
   figure(2,figsize=(7.20,4.80))

   v=linspace(min(v1,v2),max(v1,v2),30)
   c=p1*v1
   p=c/v

   plot(v,p,'k-',linewidth=4)
   fill_between(v,p,color='red',alpha=0.3)
   xlabel('Volume (m^3)')
   ylabel('Pressure (kPa)')

   show()
   return round(work,3)

# Polytropic Process
def w_pol(p1,p2,v1,v2,n):
   """
   Function for polytropic process
   Input : p1 & p2 (kPa), v1 & v2 (m^3), and n (m^3)
   If the process is adiabatic write n=1.4
   Output: Work output and p-v plot
   """

   work = (p1*v1-p2*v2)/(n-1)
   figure(2,figsize=(7.20,4.80))

   v=linspace(min(v1,v2),max(v1,v2),30)
   c=p1*v1**n
   p=c/v**n

   plot(v,p,'k-',linewidth=4)
   fill_between(v,p,color='red',alpha=0.3)
   xlabel('Volume (m^3)')
   ylabel('Pressure (kPa)')

   show()
   return round(work,3)
# Sensible Heat Transfer
def q_sh(m,c,T1,T2):
   """

   Function for the evaluation of sensible heat transfer
   Input : mass (m), sp. heat (c), initial temp (T1), final temp (T2)
   Output: heat transfer
   """

   return m*c*(T2-T1)

# Heat transfer during phase change
def q_mel_sol(m,Ti,Tf,T_pc,c_bpc,c_apc,L):
   """
   Function for the evaluation of heat transfer during phase change
   Input: mass (m), initial temp (Ti), final temp (Tf),
   phase change temp (T_pc), sp. heat below phase change (c_bpc),
   sp. heat above phase change (c_apc), latent heat (L)
   Output: heat interaction
   """

   if Ti>Tf:
      print('Process is either freezing or condensation')
      return m*(c_bpc*(T_pc-Ti)-L+c_apc*(Tf-T_pc))
   else:
      print('Process is either melting or vaporization')
      return m*(c_bpc*(T_pc-Ti)+L+c_apc*(Tf-T_pc))

抱歉,我无法在此环境中翻译HTML代码。您可以将您要翻译的英文文本提供给我,我将尽力为您提供准确的中文翻译。

让我们看看如何通过两个示例来实现这些功能。

示例1

空气的质量为1.5千克,根据等温过程将其从0.2兆帕压缩到1兆帕。初始点的空气密度为1.21千克/立方米。找到所做的功并在p-v图中绘制出来。

解决方案

程序如下:

# Input Data
m=1.50 # kg
p1=0.2E3 # kPa
p2=1.0E3 # kPa
ρ1=1.21 # kg/m^3

# Volume at the beginning
v1=m/ρ1

# Volume at end of process
v2=(p1*v1/p2)

# Given Process is isothermal
# The function will be: w_ct
Work = w_ct(p1,v1,v2)

print('Work output = ', Work)

执行后,您将获得以下 输出

Python 解决热力学第一定律

Work output = -399.034

示例2

650千克的金枪鱼以5°C进行冷冻并储存于-12°C。在冷冻点(-2°C)上方和下方的比热分别为3.182和1.717千焦/千克-摄氏度。对于熔化潜热为234.5 千焦/千克,需要计算从金枪鱼中提取的净热量。

解决方案

解决上述问题的Python程序如下所示 −

# Input data
m=650 # kg
Ti=5 # deg C
Tf=-12 # deg C
T_pc=-2 # deg C
c_bpc=3.182 # kJ/kg
c_apc=1.717 # kJ/kg
L=234.5

# Function calling
Q_net=q_mel_sol(m,Ti,Tf,T_pc,c_bpc,c_apc,L)
print("Q = ",Q_net)

输出

程序 输出 结果为-

Process is either freezing or condensation
Q = -178063.6

现在的问题是如何在代码中建立模型1和2。由于您已经评估了热量和功率函数,所以您可以很容易地建立第一定律的模型。我们来举两个示例来解决它。

示例3

在示例1中,系统失去了5 kJ的热量,然后评估系统内能的变化。

解决方案

首先,工作的代码将保持不变(与示例1中一样)。唯一的变化是对等式1的实现,所以完整的代码将是:

# Input Data
m=1.50 # kg
p1=0.2E3 # kPa
p2=1.0E3 # kPa
ρ1=1.21 # kg/m^3

# Volume calculation at point 1
v1=m/ρ1

# Calculation of volume at point 2
v2=(p1*v1/p2)

# Evaluation of W_12
# The function used is w_ct
w = w_ct(p1,v1,v2)

# Q_12
Q=-5

# Equation 1 says:
Δu=Q-w

print(f"Δu = {Δu} kJ")

输出

程序的输出结果如下:

Δu = 394.034 kJ

因此,系统的内能增加了394.034 kJ

示例4

一个闭合系统经历了三次热交换和两次功交换,如下所示−

Q (kJ) +10 -30 -40
W (kJ) +100 -50 ?

找到缺失的能量相互作用。

解决方案

from numpy import *

nq=int(input("Enter number of heat interactions known: "))
nw=int(input("Enter number of work interactions known: "))
Q=empty(nq)
W=empty(nw)

for i in range(nq):
   Q[i]=float(input(f' Enter {i+1} heat interaction: '))

ΣQ=sum(Q)

for i in range(nw):
   W[i]=float(input(f' Enter {i+1} work interaction: '))
ΣW=sum(W)

# Missing Work interaction
W=ΣQ-ΣW

print(f' Missing work interaction : {W} kJ')

输出

程序的输出为 –

Enter number of heat interactions known: 3
Enter number of work interactions known: 2
Enter 1 heat interaction: 10
Enter 2 heat interaction: -30
Enter 3 heat interaction: -40
Enter 1 work interaction: 100
Enter 2 work interaction: -50
Missing work interaction: -110.0 kJ

结论

在本教程中,我们解释了如何对工作相互作用和热相互作用进行建模和绘图。此外,我们还通过两个问题演示了如何为开放系统实施第一定律的方程1和方程2。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程