史浩楠,李子恒,陈保国,胡瀚文,胡贵华
(1.华东理工大学,上海 200237;2.青海大学,青海 西宁 810016)
流体催化裂化(Fluid Catalytic Cracking,FCC)是我国炼油工业实现重质油轻质化的最重要手段。而多产异构烷烃(Maximizing Iso-Paraffins,MIP) 的催化裂化新技术则是降低催化裂化汽油烯烃含量的工艺。在工业MIP 反应器内,各反应发生的同时会伴随着复杂流体的运动,这使得现场操作人员对于MIP 催化裂化反应过程信息缺乏了解。
计算流体力学(Computational Fluid Dynamics,CFD)是随着计算机的出现以及迅速普及应用,在数学、流体力学和计算机之间出现的一个多方交叉的学科。其利用计算机以及数值方法对流体力学的控制方程进行求解,进而模拟和分析流体力学问题[1]。近年来,CFD 逐步成为解决各种流体流动与传热等问题的强有力工具。然而在复杂的流动和传热现象下,采用内部有限位置矢量图或者流线来描述与此相关的物理化学过程会遗漏很多重要的信息[2]。近年逐渐兴起的虚拟现实技术对解决这些问题有显著的帮助,通过计算机生成的模拟环境能够直接实现用户与该环境之间的自然交互[3-6]。
虚拟现实技术与数值计算交互在某些领域已有成果。如利用CFD 技术优化设计空气自动化净化器滤芯的过程中构建CFD 模拟分析模型[7];在氢燃料电池研制中,文献[8]提出了一种多相、多组分、非等温的三维CFD 模型;文献[9]提出了红外诱饵干扰条件下的目标红外特征和红外图像对于抗干扰目标的识别。
文中以MIP 反应器为研究对象,使用3D 软件对外部建筑及反应器和内部管道进行建模[10-11]。利用CFD 模拟的流速、温度等数据建立数学模型并通过ANSYS、Matlab 等软件对数据进行处理分析,经数据的筛选处理使之在流动箭头的长度、方向以及运动速度上得以体现。最后结合Unity3D,搭建MIP 反应器平台,实现了器内流速的数据可视化[12]。文中不仅实现了第一人称在工厂中的漫游,还采用用户与计算机模拟虚拟环境交互的方法,对工业MIP 反应器的内外环境进行仿真,实现了真正意义上的数据可视化,为实现反应器的优化和控制提供了基础[2]。
在MIP 反应器的虚拟仿真设计之前,需要进行一些预备工作,如对MIP 反应器的热流场数据进行三维建模并处理以及搭建虚拟工厂场景等。这是项目不可或缺的一部分,任何功能的实现以及可视化的展示都是在此基础上进行的,其重要程度可见一斑。
MIP 反应器数据处理主要步骤如图1 所示。首先根据MIP 反应器的结构参数构建模型,软件可用3DMAX、CAD 等,建立一个三维的MIP 反应器模型并进行区域划分,这一模型将作为后续可视化过程的主体结构。将工厂实际MIP 反应器各个部分的原始热流场数据以及各种工业参数进行测量,得到所需要的气液混合物的原始虚拟数据,以便进行可视化模拟。将含有大量原始数据的反应器数据文件通过计算流体力学软件,如ANSYS,对数据进行初步的分析和筛选以及相关数值的转化和计算,完成预处理过程。在预处理之后,将含有反应器各个区域的数据文件以CONVERGENCE 类型文件导出。
图1 数据处理主要步骤
在对流场的可视化中,流体速度的模被赋值给箭头单位时间内移动的距离变量,而箭头方向则由流体的流向矢量控制;在热场的可视化过程中,采用数据的降维和温度区域化的方法来表示。在热流场数据的可视化过程中,如果显示所有数据,则会造成数据显示冗杂,减弱可视化的效果。故选取具有普遍性或一定特性的数据来显示。
运用Python 程序软件,分别对流场和热场的数据进行再次处理。对流场和热场分别建立数学模型程序,此模型可以修改权重参数,以便在不同的区域可以根据不同的要求进行工作。流场模型程序可以读取各个区域速度数据并进行筛选工作,把多余的数据删除,处理筛选后的数据量要求能够足够且不冗余地显示出流场的特定规律,如速度平缓的位置所需数据少,变化较大的位置所取数据较为密集。热场模型按照特定的规则,把热场数据由三维变成二维,以便进行温度区域块的可视化,同时还要能够反向转化为三维数据,保证空间热场可视化的准确性。最后将数据文件导出,与Unity3D 软件相结合,进行热流场温度速度的虚拟可视化。
一个项目的仿真设计离不开虚拟场景的搭建,优秀的场景搭建不仅能够在环境方面优化用户的体验,还能够更加清晰地展示项目内容,该项目虚拟工厂的场景搭建流程如图2 所示。在虚拟环境搭建上,Unity3D 有着强大的虚拟仿真功能,其配备了完善的天空盒系统。为了尽可能还原MIP 反应器工厂周围的环境,需要事先以实地考察、网上搜索等手段收集图片素材,并用Photoshop 等图片处理软件对素材进行美化生成纹理库存入Unity3D,最后在Unity3D 中更改图片格式,制成天空盒。此外,在工厂地面的设计上,考虑到内存节省的问题,该项目以一张面片代替3D 模型实现地面的效果。为了保证效果的真实性,需要利用事先准备好的纹理库对面片进行贴图,同时Unity3D 配备了强大的编写材质和阴影的语言工具(Shader Lab),该工具类似于Cg FX 和Direct3D 的语法,它不仅纪录基本的端点或者映像点(vertex∕pixel)的属性,也描述了材质所必要的一切属性[13-14]。通过代码的编写可以使贴图按照图3(a)中平铺一栏XY 的设定值进行横向和纵向的重复显示,以达到图3(b)的效果。
图2 虚拟工厂场景搭建流程
图3 虚拟地面设计
此外,Unity3D 引擎是搭建虚拟漫游世界的一个平台,在该平台下可以完成对场景元素的编辑、汇总和整合,但对于场景模型、贴图、动画等元素的基础和细节却无能为力,因此必须借助于其他软件,实现三维模型的建立、材质渲染、格式转换、模型构造以及材质应用[15-16]。将3DMAX 中做好的三维立体模型以FBX 模型导出,并与之前实现的温度场与速度场数据可视化内容相结合,放入Unity3D 场景中,整合之前的内容,按照地理位置摆放模型,由此完成虚拟工厂场景的搭建。
Unity3D 提供了完善的粒子效果功能,通过对此功能的应用可以使用户更直观地观察反应器与再生塔等罐组之间的物料联系。同时,为了进一步方便用户观察,该项目通过脚本编写的方式控制反应器与罐组之间管道的材质,实现当按下E 键时材质的颜色改变导致管道透明化,按下R 键还原。这种做法使得用户能够更清晰地观察催化剂、生成物的流向,其效果如图4 所示。
图4 物料可视化展示
通过数据处理获得数据,在Unity 中实现速度的可视化。首先创建多个空数组,存储从外部导入的数据信息,包括相关的坐标信息和速度矢量信息。其中速度矢量数据包括各方向上的分速度大小和总速度的矢量大小。然后创建数据文件的读取函数,用来将外部文件中的数据导入脚本中。在数据文件中,用空格分隔数据,导入后再分割开来,并依照顺序放入数组中。箭头生成函数从数据数组中获取相应的位置信息,生成预设好的箭头模型,同时生成半透明和实体两个箭头。在更新函数中,导入运动函数。运动函数包括计时器和箭头的速度信息,在每一帧获得当前时间和箭头的速度,计算箭头的位移,更改实体箭头的位置数据,达到箭头根据自身速度获得不同位移的效果。可视化实现流程如图5所示。
图5 可视化流程
对于反应器内部流体的速度,采取立体、直观、多角度的方式展现给软件使用人员。采用立体箭头作为流体速度的指示物。箭头方向代表流体速度方向,箭头移动的快慢代表速度大小。考虑到视角限制,为了避免观看视角中产生过多不同平面的箭头影响视觉效果,采用水平分层的方式收集流体的速度。不同平面的速度差异也能更加凸显。效果图如图6 所示。
图6 速度可视化展示图
通过ANSYS 分析计算,输入反应器内部的流体温度,在Unity 中创建相关网格(mesh),再通过着色器(shader)语言将温度数据和位置数据关联,同时设置温度图示,用渐变色来表示不同的温度。最后根据温度变化函数,通过着色器(shader)实现云图动态效果。温度可视化流程如图7 所示。
图7 温度可视化流程
在获得温度数据后,经过分析,去除一定区域内大量重复的相同温度,用区域平均温度代替,从而获得温度平面的数据。建立平面后,运用Dotween 插件,在Unity 中给建立好的平面上色。上色完成后获得静态平面温度云图,此时添加着色器,使温度云图动态化。
UI 交互界面是虚拟仿真项目中不可或缺的一部分,Unity3D 提供了全面的UI 界面设计系统,可以直接生成各种UI 元件,并能够通过拖拽或设置数值的方式更改元件位置及属性。为了丰富用户体验效果,该项目设置了两个UI界面,分别为开始界面和漫游过程触发的观看界面,并在相应的UI 界面中放置了各种功能按钮,如图8 所示。增添的按钮使用户在开始界面中点击相应按钮会弹出相应界面,在观看界面中选择不同平面按钮则会弹出该平面的速度或温度可视化内容,并通过对摄像机的应用及相应代码控制可以实现鼠标对可视化内容进行放大缩小的操作。
图8 UI交互界面设计
值得一提的是,跳转按钮是UI 界面的主要元素,需要统一风格,区分主菜单、返回、帮助、关闭等按钮,所有界面在同一个PSD 文件中制作完成,需要注意分组[17]。此外,该项目按钮的设置结合Unity3D的动画和音频功能,能够使用户鼠标移至按钮时,按钮以设置比例放大,并在点击按钮时产生清脆的声音,以优化系统功能。
交互功能的设计直接影响用户在虚拟平台上的漫游体验[18],除了UI 交互界面外,该项目还实现了场景漫游功能。为了优化用户体验,该项目使用第一人称视角进行场景漫游。将控制角色移动的代码赋给角色本身,除了基本的WASD 控制前后左右移动外,程序中还增添了跳跃功能并调整跳跃速度以及降落速度以高度还原现实生活,具体代码如下:
将控制角色转动的代码赋给摄像机,摄像机是角色的子物体,代码中以获取角色的Transform 属性实现摄像机与角色转动的连接。同时,由于该系统除场景漫游外还有UI 界面等交互方式,直接以鼠标的移动控制视角的转动会影响用户体验,故在程序中加入条件语句,实现按下鼠标右键后,视角才会跟着鼠标移动。具体代码如下:
执行程序由Unity3D 开发,在多平台上都可以运行,如Windows平台、网页端。其主要运用于Windows平台的exe 可执行文件,它具有方便快捷的特点并且有很好的扩展性,对提高软件的测试效率和虚拟仿真的稳定性有很好的作用。
文中以MIP 反应器为研究对象,结合CFD 和Unity3D 平台,建立了一个虚拟的MIP 反应器工厂,形象地展示了多产异构烷烃催化裂化反应过程中反应器内流体速度及温度的动态变化,为提高MIP 催化裂化技术操作与优化控制水平提供了技术支撑。此沉浸式漫游交互程序可适用于多个平台,适应性较强。另外,文中所展示可视化方法对催化裂化行业等存在较为复杂反应过程的领域起到参考作用,为指导正常生产中参数调节、方案优化以及科研教学提供了一条解决问题的新思路。该项目还只是以MIP 反应器为对象的对计算流体力学与虚拟现实技术相结合的尝试和探索,对于更为丰富的数据显示以及更为便捷的交互系统,还需更深入研究。