计算机系统应用  2018, Vol. 27 Issue (3): 246-251   PDF    
燃气弹射内弹道二维数值仿真软件开发
张学锋, 管仕敏, 储岳中     
安徽工业大学 计算机科学与技术学院, 马鞍山 243002
摘要:以燃气式弹射器为研究对象, 对燃气弹射器建立二维内弹道数学模型. 在.net平台下设计研发了可视化编程软件完成了对零维内弹道数学模型、二维内弹道数学模型数值仿真计算集成, 侧重于二维内弹道数学模型仿真, 其核心是运用C#语言对Fluent进行二次开发. 工程人员在自定义GUI界面进行参数设计, 集成软件就可以研究不同配比条件下, 压力、速度、温度等流场数据. 节省了工程人员大量的时间去掌握研究背景以及Fluent软件的参数设置界面, 很大程度上提高了科研人员的工作效率, 适合做重复性实验研发, 为燃气流场参数的预估和试验测量提供理论和技术支持.
关键词: 二维内弹道    数值仿真    流体力学    二次开发    数据接口    
Gas Ejection Trajectory in Two-Dimensional Numerical Simulation Software Development
ZHANG Xue-Feng, GUAN Shi-Min, CHU Yue-Zhong     
School of Computer Science and Technology, Anhui University of Technology, Maanshan 243002, China
Abstract: This paper studies the gas ejector, a two-dimensional trajectory mathematical model of gas ejector. It designs and develops visual programming software to complete the zero-dimensional interior ballistic mathematical model on the.Net platform and the numerical simulation of trajectory mathematical model of two-dimensional calculation integration. The model focuses on the simulation of trajectory in two-dimensional mathematics. The core is that Fluent is secondary developed by C# language. Engineers design the parameters in the custom GUI interface. The integrated software can be studied under different proportion, pressure, velocity, temperature and flow data. It saves a lot of time to master the engineering background and set the interface of Fluent software parameters, greatly improving the efficiency of researchers, which is suitable for repetitive experimental research. It provides theoretical and technical support for the prediction and measurement of the gas flow parameters.
Key words: two-dimensional interior ballistic     numerical simulation     fluid mechanics     two times development     data interface    

引言

关于弹射器方面的研究, 历经了众多的阶段, 其中包括弹簧式, 液压式, 压缩空气式弹射器, 如今使用最广泛的就是燃气式, 燃气蒸汽式以及电磁式弹射器. 本文所研究的就是燃气式弹射器, 通过建立二维轴对称模型, 加以借助流体力学软件Fluent模拟发射系统的速度场, 运动场, 以及压力场等分布规律, 得到内弹道参数流场分布云图. 通过设定初容室结构, 入流条件和发射环境等参数快速建立导弹弹射内弹道数值计算模型输出发射筒温度, 压强和导弹内弹道仿真结果, 运用到实际应用中, 降低一定的实验成本. 计算机仿真软件可以重复的进行仿真计算, 避免实际实验所带来的一系列损耗.

目前, 关于内弹道数学模型的数值仿真, 已经有了众多的研究数据. 文献[1]以自弹式弹射器为例, 对比低压室下二维模型和零维模型的数据, 得出零维模型具有计算量小, 工作效率高等优势, 但是并不能更好的描述弹射器低压室内弹道特性, 尤其是低压室内的压力分布特性. 文献[2]利用遗传优化算法对5个待定参数进行优化, 利用四阶龙格库塔以及迭代算法对内弹道理论方程组进行计算, 进一步的优化内弹道参数值, 使零维模型理论计算得到的结果更具有参考价值. 本文着重对导弹发射过程中建立二维内弹道模型, 通过设置几何建模参数以及流体建模参数, 仿真输出内弹道相关曲线以及流场云图等. 众所周知, 目前功能最全面, 适用性最广, 国内使用最广泛的CFD软件之一就是Fluent[3]. 其强大的计算功能正是我们这款仿真软件所需的, 但是Fluent由于全英文的界面, 桎梏了众多的国内用户, 毕竟并不是所有的人都熟悉英语, 此外, Fluent的参数设置也是十分的复杂, 使用人员通常都是需要花费众多的精力去了解并且掌握其参数设置. 为此, 本文对Fluent进行二次开发, 避免上述的两个问题, 实现在交互界面设置参数直接调用Fluent软件进行二维内弹道数学模型仿真评估.

1 基于Fluent的二次开发技术

采用Fluent对内弹道数学模型进行流动求解计算是内弹道工程设计的重要部分. 针对上述所说关于Fluent使用的两个弊端, 在此我们在.Net Microsoft Visual Studio 2010平台下运用C#语言对Fluent进行二次开发, 将Scheme日志文件作为C#与Fluent数据交互的接口, 建立了导弹、发射筒、初容室、导流锥等几何建模参数设置, 以及燃气参数、初始条件、边界设置等流体建模参数设置. 通过在软件GUI界面中动态设置参数从而修改Scheme接口文件驱动Gambit进行网格建模, 然后启动Fluent实现弹射内弹道流场数值仿真模拟[4,5].

1.1 二次开发接口

在.Net平台下实现对Gambit以及Fluent软件的二次开发, 其需要克服的一个技术难点就是如何通过C#语言成功的调用Gambit和Fluent, 实现.Net平台与Gambit、Fluent的数据交互. 针对这个问题文献[4]有着详细的描述. 文献[4]描述的是VB语言对Fluent进行二次开发, 本文注重的是C#语言对Fluent语言的二次开发, 二者有着异曲同工的思想. 由于Gambit和Fluent均支持一种完备的日志文件体系, 所有的操作过程都被保存在日志文件即Journal文件中. 其新生成的Journal文件涉及许多内弹道变量值, 其大部分的代码都是相同的, 需要盖面的只是一些重要参数, 本文通过变量替换法动态改变对应的参数值, 从而实现平台与软件的无缝对接.

1.2 日志文件(Journal文件)的编写

参数化建模就是动态修改所建立的模型日志文件, 通过参数化日志文件实现参数化建模. 用户通过内弹道仿真软件界面输入导弹、初容室、发射筒、导流锥各项参数建立符合自己需求的弹射内弹道模型.

文本用户界面(Text User Interface, TUI)是Fluent软件开发预留了一种的程序语言, 编写在日志文件(Journal文件)便于Fluent软件调用执行参数化建模、流体并行计算. 本文讲述的仿真软件就是利用TUI语言编写的.jou文件, 进行重复性仿真建模计算. 作为C#语言与Gambit和Fluent软件的数据交互接口, 其日志文件(Journal文件)编写是十分重要的, 攻克这一难点, 该仿真软件的开发就等于攻克了一大堡垒. 下面就详细讲述Journal文件基本的编写格式.

Gambit日志文件编写的基本语法规则与格式:

(1) vertex create coordinates 0 0 0为创建一个节点, 3个零代表X、Y、Z轴方向的坐标.

(2) $RChmI=93为定义一个参数RChmI, 其值为93.

(3) vertex cmove “vertex.27” multiple 1 offset ($RChmI)0 0表示以上述创建的节点为参照再创建一个X=RChmI的点. 这样我们可以动态修改RChmI的值来修改节点的X点坐标.

(4) edge create straight “vertex.31” “vertex.43” 表示两个参数节点连成线vertex.31、vertex.43表示创建的第31个节点和第43个节点.

(5) volume mesh “volume.1” tetrahedral size 5 为划分网格.

(6) physics create “inlet” btype “PRESSURE_INLET” edge “edge.6”表示创建边界条件, 以inlet为例, 边界类型选择为PRESSURE_INLET压力入口.

(7) export fluent5 “输出文件的目录\生成文件的名字.msh”输出后缀名为.msh的文件并为后续Fluent流体计算做准备.

Fluent日志文件的编写不同于Gambit日志文件, Fluent本身不能自动替换参数的值, 而且语言复杂, 这就需要手动生成一个日志文件模板, 包括边界条件的设置、流动求解控制参数设置, 然后通过编程对日志文件进行动态修改. Fluent日志文件基本语句与格式如下所示:

(1) (cx-gui-do cx-set-text-entry “Select File*Text” “文件路径\ts.cas”)表示读入文件路径下所需要的ts.cas文件.

(2) (cx-gui-do cx-set-text-entry “Select File*Text” 网格文件名.msh)表示读入文件路径下所需要的网格文件.

(3) Boundary-conditions/velocity 定义边界条件.

(4)(cx-gui-docx-set-real-entry-list“Operating Conditions*Frame1*Table1*Frame1(Pressure)*Table1(Pressure)*RealEntry2(Operating Pressure)” '( 101325))为设置初始时刻压力值为101325.

(5) (cx-gui-docx-set-real-entry-list“wall-6-1*Frame4*Frame3(Thermal)*Frame1*Frame1(Thermal Conditions)*Frame7*Table7*RealEntry8(Wall Thickness)” '( 0.005))为设置初始条件壁面厚度为0.005.

用TUI语言编写的Journal日志文件通俗易懂、操作方便, 运用C#对Fluent进行二次开发, 通过软件GUI界面进行内弹道参数设计, 动态生成所需的Journal日志文件, 完成参数化建模与流体并行计算过程.

1.3 Fluent与Gambit的代码调用

关于Gambit与Fluent的调用, 网上有着众多的资料, 大体归结于两种方案, 方案一是通过WinExec()函数调用, 其二就是通过Shell()函数调用. 本文采用的是批处理文件(bat文件)控制参数的方法调用Gambit和Fluent软件, 文件内容指示Gambit, Fluent按照指定的路径读取Journal日志文件, 保存计算结果到指定的目录中. 调用过程共分为先动态生成规定格式的批处理文件, 然后编程开启进程运行此批处理文件, 完成调用部分[6].

Gambit的bat文件内容由Gambit的安装路径、Gambit的版本号以及Gambit运行的Journal文件的路径组成, 具体形式如下:

C:\Fluent.Inc\gambit\ntbin\ntx86\gambit.exe -r2.4.6 -init D:\CFD\Base\Base_Gam.jou.

相应的Fluent的bat文件与Gambit的bat文件内容相近, 只是Fluent的bat文件多了一个2d, 3d的计算模型的设定, 具体形式如下:

“C:\ansys15\ANSYSInc\v150\fluent\ntbin\win64\ Fluent.exe” -r15.0.0 2d -t4 -i D:\CFD\Base\Base_Flu.jou.

软件动态生成批处理文件后, 通过调用VS的基础库, 开启进程是实现对Gambit和Fluent的外部调用. 然后Gambit和Fluent会按照Journal文件运行规范, 完成网络建模与流体计算过程, 并且在计算结束后实时将结果传至软件界面.

2 软件分析与设计 2.1 软件功能结构

燃气弹射内弹道数值仿真集成软件的结构流程图如图1所示. 该软件分为理论计算和仿真评估模块. 本文侧重讲解的是燃气弹射内弹道二维数值仿真软件的开发, 也就是上述所说的仿真评估模块. 燃气弹射内弹道二维数值仿真软件建立相应的发射系统燃气流计算模型[79], 设定流体力学计算仿真参数, 先调用Gambit进行网格建模后调用Fluent求解器自动求解计算.

“燃气弹射内弹道”以弹射导弹为典型研究对象, 通过设定发射系统仿真平台参数, 能够快速, 准确的建立相应的导弹弹射内弹道理论计算模型和流体参数化计算模型. 并根据设定参数快速的进行计算, 完成导弹弹射过程中设定的参数化求解目标, 进行导弹发射过程中发射筒内压力与温度、导弹内弹道参数等预测与评估, 为导弹弹射内弹道评估提供理论和技术支持以及为典型导弹发射系统方案论证提供决策支持.

2.2 软件模型建立以及模型求解

燃气弹射内弹道二维数值仿真软件开发的主要核心就是利用流体力学分析软件Fluent进行分析计算.

几何网格建模主要由外部调用Gambit软件实现, 其参数设置包括弹射动力装置几何参数、导流锥、初容室、发射筒和导弹等参数. 这些参数的设置用户可以通过软件的GUI界面对扩展模型中的参数进行动态设置并进行仿真建模. 其数值计算网格如图2所示.

图 1 软件分析流程图

图 2 网格模型

流体并行计算是通过外部调用Fluent软件实现, 其参数的设置包括燃气参数、计算初始条件、边界条件设置. 建模参数完成后通过软件代码动态生成Journal文件、.c文件. 由上述所述可知, Journal文件内容大致相同, 不同的仅仅是参数化变量取值, 因此用户在GUI界面输入相应的网格建模、流体计算相关参数, 软件实现这些参数的替换, 形成新的Journal文件以及.c文件, 从而进行重复性的网格建模与并行计算. 其整体的结构示意图如图3所示.

3 软件应用实例

燃气弹射内弹道二维数值仿真软件主要由两部分组成, 分别是参数化仿真与外推仿真. 以VS2010为软件开发工具, 利用C#编程调用Gambit以及Fluent, 在Windows环境下使用. 由于保密协定, 软件的具体界面设计就不再截图具体说明, 以下用文字简要概述: 该软件界面主要分为4个版面, 分别是菜单栏, 模块选择, 参数修改区以及三维模型显示区. 其模块选择区域显示参数化仿真以及外推仿真, 二者仿真的区别就在于入口条件的不同, 参数化仿真是将发动机喷管作为压力入口进行计算的, 而外推仿真是将已知实验得到的发射筒内的压力与温度变化规律, 将它们作为入口条件进行内弹道仿真计算. 其三维模型显示区域是利用OpenGL(Open Graphics Library)绘制的弹射内弹道三维模型示意图如图4所示. 用户如果通过GUI界面修改内弹道的相关参数, 三维模型也会相应的动态改变. 使用户更加清晰, 直观的理解弹射内弹道结构设计.

燃气弹射内弹道二维数值仿真软件的结果输出包括三个方面, 分别是曲线输出, 流场云图输出以及动画输出. 用户通过软件GUI界面设置好模型参数, 先通过Gambit建立网格模型, 然后利用Fluent对所建立的二维轴对称网络模型进行数值模拟, 通过UDF导出流场特定空间点发射筒平均压力、平均温度以及导弹相关运动曲线, 并且生成内弹道各时刻云图和动画. 各内弹道曲线图如图5所示.

图6, 图7显示的是高压室0.1 s和0.3 s的压力云图, 对比云图左侧的刻度值, 从左侧可以看出0.1 s的压力是429 596 Pa, 0.3 s时压力增高到1172 599 Pa. 这是由于开始燃气弹射时, 燃烧药柱, 产生大量的高压气体有喷管进入发射筒, 从而在尾罩底部空间形成燃气压力, 驱使导弹向上运动, 发射出去[10], 因此高压室达到一种高压状态, 有关高压室温度流场以及速度流场在此就不一一赘述了[11].

图 3 燃气弹射内弹道二维数值仿真软件结构图

图 4 弹射内弹道三维模型示意图

图 5 内弹道曲线输出

图 6 0.1 s高压室压力云图

动画输出包括3部分, 分别是压力动画、温度动画、以及速度动画, 如图8所示, 用户可以操作软件显示不同的动画文件.

图 7 0.3 s高压室压力云图

图 8 内弹道动画输出

4 结束语

燃气弹射内弹道二维数值仿真软件开发的核心部分就是运用C#语言对Fluent进行二次开发. 工程人员在软件的界面进行参数设计, 该软件就可以研究不同配比条件下, 压力、流场、温度等流场数据. 本软件极大的节省了工程人员花费大量的时间去研究Fluent软件的参数设置, 很大程度上提高了科研人员的工作效率, 适合做重复性实验研发, 为燃气流场参数的预估和试验测量提供理论和技术支持. 今后将继续更加深入的研究以及完善此软件, 建立多平台发射系统的基于流体力学的参数化结构分析软件, 完成对车载箱式垂直热发射、车载挂式垂直热发射、车载筒式垂直热发射等多平台发射系统流体力学仿真分析.

参考文献
[1]
谭大成, 苗佩云. 弹射器低压室二维内弹道模型及数值研究. 弹箭与制导学报, 2006, 26(4): 224-226.
[2]
陈亚军, 储岳中, 张学锋. 基于遗传算法的导弹弹射内弹道参数优化数值仿真. 重庆理工大学学报(自然科学), 2017, 31(4): 127-133.
[3]
Shinotake A, Nakamura H, Yadoumaru N, et al. Investigation of blast-furnace hearth sidewall erosion by core sample analysis and consideration of campaign operation. ISIJ International, 2003, 43(3): 321-330. DOI:10.2355/isijinternational.43.321
[4]
宋先知, 石宇, 李根生, 等. 基于FLUENT的热力射流调制与流场计算分析软件. 计算机应用, 2016, 36(S1): 315-318.
[5]
李慧, 王广明, 王东屏, 等. 基于Fluent二次开发地铁通风系统日志文件. 计算机系统应用, 2015, 24(4): 233-238.
[6]
郑智颖. FLUENT在粘弹性流体流动数值模拟中的应用[硕士学位论文]. 哈尔滨: 哈尔滨工业大学, 2013.
[7]
翟晓超, 陈亚军, 姜毅. 动网格在仿真发射装置内弹道中的应用. 现代防御技术, 2006, 34(2): 24-28.
[8]
李峥. 复合推进剂固体火箭发动机喷流流场数值模拟. 固体火箭技术, 2014, 37(1): 37-42.
[9]
王福军. 计算流体动力学分析––CFD软件原理与应用. 北京: 清华大学出版社, 2004: 190–248.
[10]
李仁凤, 乐贵高, 马大为, 等. 壁面障碍物对燃气弹射流场和内弹道的影响. 固体火箭技术, 2016, 39(3): 444-450.
[11]
王丽, 张学锋. 某新型燃气发生器发射过程药柱燃烧数值仿真. 计算机仿真, 2014, 31(12): 37-40, 97. DOI:10.3969/j.issn.1006-9348.2014.12.009