APP下载

探空气球净举力计算器软件的设计与开发

2024-12-06王珏吴有恒徐飞英奚悦

中国新技术新产品 2024年12期
关键词:软件开发

摘 要:探空气球的最终施放高度是高空观测业务中一个重要的考核指标,在影响这个指标的因素中,净举力的作用十分重要,本文分析探空气球受力情况,推导升力公式,研究探空气球升速和净举力之间的关系,得到探空气球升速和净举力之间的关系式,再利用Python语言进行软件开发,得到净举力计算软件,能够快速计算满足探空气球规定升速所需净举力,科学地控制净举力,提高气球施放高度,使一线业务人员更好地完成探空业务。

关键词:探空气球;气球升速;净举力;施放高度;软件开发

中图分类号:P 412" " 文献标志码:A

高空气象探测是我国气象基础业务工作之一,在我国气象业务工作中作用十分重要,探空观测资料数量最少,但是对天气预报、数值预报有重要影响,作为“铆钉”观测资料,其须降低数值预报误差,并为卫星、航空气象报告等观测偏差订正提供“标准”。我国高空气象探测主要手段如下:向探空气球内注入氢、氦等密度小于空气的气体,探空气球携带探空仪器升空,气象雷达跟踪升空的探空气球,实时测量高空中的温度、湿度、气压、风向和风速后,反馈回地面,因此控制好气球升空的高度十分重要[1],除了探空气球的质量问题和天气情况外,须解决探空气球升空高度与净举力之间的关系。根据探空气球在升空飞行过程中的受力分析,控制探空气球在水平方向所受净举力能够调整气球升空高度和升速[2]。在施放前,应对探空气球的净举力进行检测和控制,减少人为因素影响,因此须研发一个能快速根据实时气象要素和当时天气状况计算净举力的软件,供观测员调整探空气球净举力。

1 软件设计原理和整体架构

1.1 软件设计原理

探空气球放飞后有一个急加速过程,在通常情况下,探空气球的上升初段加速是在很短时间内完成的。在不考虑空气对流以及探空气球内外温度不同的条件下,探空气球基本能够保持匀速上升,在上下方向受2个相对的力影响。由阿基米德浮力原理可知,向上的力称为举力,作用是抬升探空气球,举力是由探空气球内同体积空气质量与球内氢气质量的差决定的,与其对应的向下的力称为空气阻力,妨碍探空气球抬升。向上的举力又分为总举力和净举力,如公式(1)所示。

E=Vρ-Vγ=V(ρ-γ) " " " " " " " " (1)

式中:E为总举力;V为气体体积;ρ为空气密度;γ为氢气密度。

除了总举力外,探空气球的升空速度须抵消探空气球、高空观测设备以及放球绳等附加物的质量,在总举升力减去附加的质量后,剩下的力是决定探空气球上升速度的力,这个力称为净举力,如公式(2)所示。

A=E-B=V(ρ-γ)-B " " " " " "(2)

式中:A为净举力;B为探空气球和附加物的质量。在上升的过程中,除了空气阻力以外,气球还受到内外压力差、温度差和形状等很多因素影响。在研究过程中,这些次要因素对最终结果影响非常小,因此须忽略这些次要因素。假设气球在上升过程中内外压力、温度相同,气球内部的氢气质量不会发生改变,根据空气阻力公式,气球施放后在极短时间内加速上升,因此净举力和阻力在短时间内是平衡的,将气球周长公式代入公式(2),计算探空气球升速,如公式(3)所示[3]。

(3)

式中:W为探空气球升速;b为升速系数,它是无量纲的,与气球的阻力、形状、大小、表面特性以及大气条件有统计学意义,影响气球的上升速度。在实际应用中,可以根据试验测量或者数值模拟获得升速系数,为方便计算,代入公式(3)得到标准空气密度ρ0=1.205 kg/m3,ρ0为当气温为20 ℃、气压为760 mmHg时的空气密度,根据理想气体状态方程对公式(3)进行变形,如公式(4)所示。

(4)

式中:T0、P0为当大气处于标准状况(气温为20 ℃,气压为760 mmHg)时的温度和气压。 为计算方便,引入一个标准空气密度,改写公式(4),如公式(5)所示。

(5)

式中:b1为升速系数;T为温度;P为气压。经试验证明,b1与净举力的关系见表1。

当净举力≤140 g时,取82.0,当净举力≥240 g时,取96.2,假设W1为下列等式,如公式(6)所示[3]。

(6)

根据上述推导过程,可以得到公式(7)。

(7)

由此计算,得到净举力A,如公式(8)所示。

-

(8)

1.2 软件的开发设计

软件以满足气象观测员对探空气球升速控制所需净举力快速计算要求为设计宗旨,应用程序技术成熟,使用简单便捷[4]。探空气球净举力计算器软件有2个功能模块,一个是用户数据输入模块,主要功能是提供用户操作界面,登录软件后,用户需要输入计算探空气球净举力所需的基础数据,包括探空气球的升速、气压、温度和探空气球以及附重物的质量,点击“计算”按钮,计算结果会显示在界面上。另一个是核心计算模块,主要功能是处理用户计算请求、分析业务逻辑和数据计算,程序获取用户输入的当探空气球施放时的升速、实时温度以及气压等数据,计算探空气球升速值。根据预设的数据库列表检查用户输入的升速值是否在列表中,并显示对应的净举力值。如果不在列表中,程序会进行插值计算,找到最接近的净举力值并显示给用户。模块还包括异常处理部分,保证用户输入的是有效数字。

1.3 软件的设计构架和主要代码

使用 Python语言编写软件,由于其具有简洁性、易读性以及可扩展性,其数据处理速度快、功能强大且简单易学,因此在数据分析与处理中广泛应用。其在编写后无须进行编译即可直接利用解释器执行,具有典型的动态语言特点,编程效率极高[5]。

软件主要采用Python语言的Tkinter库来创建图形用户界面(Graphical User Interface,GUI ),使用户与程序进行交互。使用关键词def定义了多个函数,例如locate、real_root和calculate_force等,可以实现特定功能并计算净举力,使用try-except语句来捕获用户可能输入的无效数据,避免程序崩溃,利用MessageBox函数显示错误提示信息,使用Frame控件组织和布局不同的GUI元素,例如图像、标签、输入框、按钮和输出框,使界面更清晰、美观,利用command参数将按钮与特定函数绑定,当用户点击按钮时触发相应的功能,使字符串格式化:使用f字符串格式化来将计算结果显示在输出框中,使结果更易于阅读和理解,代码中涉及数学计算,例如开方、乘方和列表操作等,对净举力进行精确计算。

1.3.1 软件设计架构

探空气球净举力计算器软件系统分为2个模块,用户界面模块由Tkinter库创建,其作用是与用户交互,接收用户输入数据,例如气球质量、气球体积和气球温度,显示计算结果,即净举力;应用逻辑模块的核心功能包括计算净举力以及定义calculate_net_lift函数,该函数接收用户输入的参数进行计算,返回得到净举力计算结果,计算器软件功能结构设计如图1所示。

1.3.2 程序核心计算部分的设计

用户须在主界面输入当探空气球施放时需要的升速和实时温度、实时气压等数据,软件根据净举力公式使用calculate_net_lift()函数来进行计算,主要代码如下。

B = float(entry_B.get())

W0 = 0.8531 * math.pow(float(entry_P.get()) / (float(entry_T.get()) + 273.15), 1/6) * float(entry_W.get())

A_seq = [140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240]

b1_seq = [82.0, 82.5, 83.6, 84.9, 87.0, 89.6, 92.4, 94.3, 95.5, 96.0, 96.2]

B_seq = []

flag = 0

for i in range(11):

B_seq.append(math.pow(b1_seq[i]/W0, 3) * math.pow(A_seq[i], 3/2) - A_seq[i])

for i in range(11):

if B == B_seq[i]:

flag = 1

output_var.set(f\"净举力A(g):{A_seq[i]:.1f}g\")

if flag == 0:

location = locate(B_seq, B)

if location == 0:

output_var.set(f\"净举力A(g):{real_root(W0, B, b=82.0):.1f}g\")

elif location == 1:

output_var.set(f\"净举力A(g):{real_root(W0, B, b=96.2):.1f}g\")

else:

left, right = location

A_seq_new = []

for x in range(int((A_seq[right] - A_seq[left]) * 10) + 1):

A_seq_new.append(A_seq[left] + x * 0.1)

b1_seq_new = []

for x in range(101):

b1_seq_new.append(b1_seq[left] + x * ((b1_seq[right] - b1_seq[left]) / 100))

B_seq_new = []

for i in range(101):

B_seq_new.append(math.pow(b1_seq_new[i] / W0, 3) * math.pow(A_seq_new[i], 3 / 2) - A_seq_new[i])

error_seq = []

for i in range(101):

error_seq.append(abs(B_seq_new[i] - B))

min_index = 0

for i, value in enumerate(error_seq):

if value lt; error_seq[min_index]:

min_index = i

output_var.set(f\"净举力A(g):{A_seq_new[min_index]:.1f}g\")

2 探空气球净举力计算器软件应用

以贵阳市高空观测站为例,GTS1型探空仪在探空气球施放前取3个附重物,平均值为520 g,探空气球采用乳胶气球,平均质量为780 g,贵阳高空观测站在28.0 ℃,气压为850 hPa,探空气球升速为350 m/min的情况下,净举力为2 408 g。

以2023年5月19日19:00观测为例。观测时温度17.9 ℃,气压873.4 hPa,探空气球以及附重物质量为770 g,设定初始升速为300 m/min,利用软件计算净举力为2 007.5 g,观测员调配砝码对探空气球进行配重,最终19:00观测的探空终止高度为35 815 m,与当没有使用软件计算净举力时相比,探空终止高度有所提升。

使用不同净举力测算方法探空终止高度对比如图2所示,由图2可知,2023年5月开始使用软件计算净举力后,与去年同期观测员根据经验判断的方式相比,使用软件计算合适的净举力来调配探空气球充气量,平均探空终止高度提升约3 000 m。

3 结语

在探空气球的整个升空过程中,气球所受净举力是提高探空气球飞升高度、高空探测精度和高空气象数据可靠性最重要的影响因素,净举力使探空气球在初始获得合适的升速,在整个探空业务过程中,上升速度和上升高度比较理想,保证高空探测数据真实、可靠[6],在日常工作中,需要根据台站实时天气情况快速、精确地控制净举力大小,取得高空气象探测资料。本研究能提高探空气球净举力的计算时效和计算精度,使观测员合理地使用净举力,在满足规范要求的前提下更好地完成探空业务。

参考文献

[1]杨小民,彭勃,杨忠全,等.浅谈净举力对探空气球升速及施放高度的影响[J].河南科技,2014(14):180-182.

[2]奉超.合理施加净举力,提高探测高度[J].广西气象,1990(4):61-62.

[3]谢国梁.测风气球净举力的计算和误差分析[J].气象学报,1988(1):120-126.

[4]彭嘉怡,袁楠楠,尹鲲龙,等.大学生闲置物品交易互助微信小程序设计与开发[J].中国新技术新产品,2022(18):37-40.

[5]游颖,程俊.基于Python语言的教学数据处理平台设计[J].中国新技术新产品,2023(17):26-29.

[6]闵昌红,吴兴洋,翁玲,等.净举力对探空高度的影响分析——以贵阳探空站为例[J].中低纬山地气象,2018,42(5):62-66.

猜你喜欢

软件开发
基于安卓平台的移动式教学模式研究
嵌入式系统软件开发技术探析
浅谈分层技术在软件开发中的应用
Java软件开发问题探究
软件开发中JAVA编程语言的应用
浅谈程序设计的方法
信息安全环境下的计算机软件开发研究
计算机软件开发中的分层技术运用
建模技术在软件开发中的应用
软件开发中数据库设计理论的实践