# 让chatgpt帮你写代码 事半功倍

## 回答

``````import math
import numpy as np
import matplotlib.pyplot as plt

# 基本参数
L = 1234     # 长度，km
Q = 5300000  # 送气量，m3/d
D = 630      # 外径，mm
t = 8        # 壁厚，mm
d = 614      # 内径，mm
D1 = 529    # 站间外径，mm
t1 = 7      # 站间壁厚，mm
d1 = 515    # 站间内径，mm
Pmax = 5500000  # 最大工作压力，Pa
Pmin = 1000000  # 进配气站最低压力，Pa
Rd = 0.58       # 相对密度
Zf = 0.93       # 压缩因子
T = 288         # 平均温度，K
f = 0.0121      # 水力摩阻系数
A = 4.5388      # 特性系数A
B = 9479000000  # 特性系数B
KY = 0.995      # 自用气系数

# 末端参数计算
Pf = Pmin   # 末端压力
Vf = Q / (math.pi/4 * d**2 * 86400)  # 末端流速
Gf = 3600 * Q / (math.pi/4 * d**2) / KY # 末端标况流量
Uf = Vf / Zf  # 末端实际流速
Re = Uf * d / 1.494 / 10**-6  # 雷诺数
lambda1 = 0.11 * (68/Re)**0.25  # 皮阻系数
hf = lambda1 * L / d * Uf**2 / 2  # 末端摩阻
Hf = Pf / 98000 / Rd / 9.81  # 末端高程
Af = math.pi * (D/2)**2 / 1000000  # 末端截面积(单位平方米)
Rf = Rd * Pmin / 101325 * 273 / T  # 末端密度

# 压气站数计算
Plist = np.linspace(Pmin, Pmax, 100)
m = 0  # 压气站数
for i in range(len(Plist)-1):
if math.sqrt(Plist[i] / Plist[-1]) <= (1 - 0.15/3.5*m):
m += 1
print('压气站数：', m)

# 站点参数计算
P = [Pmin, Pmax] + [0]*(m-1)  # 压气站压力列表
H = [0] + [L/m]*m + [0]  # 站点高程列表
Alist = [Af]  # 管道截面积列表
for i in range(m+1):
if i == 0:
D2 = D
d2 = d
else:
D2 = math.sqrt(P[i-1]/Pmax) * D
d2 = math.sqrt(P[i-1]/Pmax) * d
Alist.append(math.pi * (D2/2)**2 / 1000000)
V = Gf / Alist[-1] / Rd   # 流速
U = V / Zf               # 实际流速
Re = U * d2 / 1.494 / 10**-6  # 雷诺数
if Re >= 2300:  # 计算皮阻系数
lambda2 = 0.11 * (68/Re)**0.25
else:
lambda2 = 64/Re
# 计算管道摩阻
if i == 0 or i == m+1:
hf = lambda2 * L / d2 * U**2 / 2
else:
hf = lambda2 * L/m / d2 * U**2 / 2
# 计算站点参数
P2 = P[i] - hf / 100000 * Rd * 9.81 * 98000
R2 = Rd * P2 / 101325 * 273 / T
H[i+1] = H[i] + L/m - hf / 1000
P[i+1] = P2
Rlist = [Rf] + [Rd]*m

# 输出末端参数
print('末端压力：', Pf/100000)
print('末端流速：', Vf)
print('末端标况流量：', Gf)

# 输出站点及站间参数
print('站点参数：')
print('    高程(m)   压力(MPa)    截面积(m2)    相对密度')
for i in range(m+2):
print('{:>2d}: {:10.2f} {:10.3f} {:15.3f} {:14.3f}'.format(i, H[i], P[i]/100000, Alist[i], Rlist[i]))

# 最大工作压力时的参数
print('最大工作压力时的参数：')
print('管道内径(mm)：', d)
print('流量(m3/h)：', Q)
print('流速(m/s)：', Uf)
print('粘度(m2/s)：', 1.494*10**-6)
print('雷诺数：', Re)

# 绘制水力坡降图
plt.figure(figsize=(10,5))
plt.plot(H, P)
plt.xlim([0,L])
plt.ylim(top=Pmax/100000)
plt.xlabel('长（km）')
plt.ylabel('压力（MPa）')
plt.title('输气管水力坡降图')
plt.grid()
plt.show()

# 绘制温降图
Tlist = [T]  # 温度列表
for i in range(m+1):
T2 = T - A * Q**2 / B / d1**5 / P[i] / L * (Pmax**2 - P[i]**2)  # 计算温度
Tlist.append(T2)
plt.figure(figsize=(10,5))
plt.plot(np.linspace(0, L, m+2), Tlist)
plt.xlim([0,L])
plt.ylim(bottom=T-5, top=T+5)
plt.xlabel('长（km）')
plt.ylabel('温度（K）')
plt.title('输气管温降图')
plt.grid()
plt.show()``````

``````末端压力： 2.280258271305899

高程(m)   压力(MPa)    截面积(m2)    相对密度
0:       0.00      1.000           0.307           0.580
1:     411.33      0.869           0.296           0.580
2:     822.67      0.740           0.286           0.580
3:    1234.00      0.616           0.277           0.580

1周前 评论

11

8

47

94