温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
服务
架构
OpenFOAM
求解
客户端
设计
马轶聪
www.ChinaAET.comComputer Technology and Its Applications计算机技术与应用基于服务架构的 OpenFOAM 求解客户端设计马轶聪,牟泓宇,淮晓永(华北计算机系统工程研究所,北京 100083)摘 要:针对 OpenFOAM 解算软件缺乏 GUI 功能用户交互体验性差问题,研究设计了一个 OpenFOAM 求解客户端软件。设计了基于服务的“云+端”计算架构,设计开发了一个 OpenFOAM 求解器服务,GUI 客户端远程调用访问求解器服务,并集成可视化服务实现了数据可视化分析功能,实现了云端协同的求解计算功能;研究设计了基于界面模板的动态 GUI 界面生成方法,实现了客户端软件界面用户自定义配置功能。该软件支持基于服务的功能扩展集成,支持用户界面自定义、求解器用户设置界面自定义功能,用户界面友好,可扩展性强。通过实际的算例进行解算,验证表明了客户端软件能够通过远程调用云端求解服务、可视化服务实现完整的求解计算流程。关键词:流场解算;服务架构;OpenFOAM;GUI中图分类号:TP311.5 文献标志码:A DOI:10.16157/j.issn.0258-7998.222815中文引用格式:马轶聪,牟泓宇,淮晓永.基于服务架构的 OpenFOAM 求解客户端设计J.电子技术应用,2023,49(3):124-129.英文引用格式:Ma Yicong,Mou Hongyu,Huai Xiaoyong.Design of OpenFOAM solver client based on service architectureJ.Application of Electronic Technique,2023,49(3):124-129.Design of OpenFOAM solver client based on service architectureMa Yicong,Mou Hongyu,Huai Xiaoyong(National Computer System Engineering Research Institute of China,Beijing 100083,China)Abstract:Aiming at the problem that the OpenFOAM solving software lacks GUI function,the user interaction experience is poor,this paper studies and designs an OpenFOAM solving client software.The paper designs a service-based cloud+terminal computing architecture,designs and develops an OpenFOAM solver service,which can be remotely called and accessed by the GUI client,and integrates the visualization service to realize the data visualization analysis function and realize the cloud collaborative solution calculation function.This paper researches and designs a dynamic GUI interface generation method based on interface template,and realizes the user-defined configuration function of the client software interface.The software supports service-based function extension integration,and supports user interface customization and solver user setting interface customization functions.The user interface is friendly and the expansibility is strong.Through the actual calculation example,the verification shows that the client software can realize the complete solution calculation process by calling the cloud solution service and visualization service remotely.Key words:flow field solution;service architecture;OpenFOAM;GUI0 引言计 算 流 体 动 力 学(Computational Fluid Dynamics,CFD)是通过计算机数值模拟计算和图像显示,对包含有流体流动及热传导等相关物理现象的系统进行分析的一门学科1,在工业设计中起到了重要的作用。经过几十年的长足发展,已有多款 CFD 商业软件(Fluent、CFX、STAR-CD/CCM+等)被应用于科研及实际生产中。由于商业软件在使用上有较高专业性要求且费用高昂,OpenFOAM 作为一款开源免费的解算工具库被越来越多的科研人员所使用2。OpenFOAM 软件配置过程灵活,可以通过自定义编程进行使用,但由于 OpenFOAM仅支持通过命令行形式进行调用、无 GUI 图形交互3的原因,导致软件的使用效率较低,且新手使用时上手困难。同时,OpenFOAM 仅为一些基本物理量提供设置及监控,对于其他物理量的监控则需要用户编程进行实现,提高了软件的使用门槛与操作难度。因此,针对于124Computer Technology and Its Applications计算机技术与应用电子技术应用 2023年 第49卷 第3期OpenFOAM 的 GUI 功能开发也成为了提高软件使用效率的重要拓展方向之一。由于解算软件功能复杂,现有的商业软件为满足大部分业务使用者的交互需求,开放了更多的参数设置接口,提高了 GUI 界面参数配置流程的复杂性。用户在进行求解参数配置时,需要考虑其他参数对当前工程解算的影响,增大了使用难度。因此,GUI 定制化开发也成为了目前解算软件致力于解决的问题。除此之外,求解计算主要以网格为计算对象单元,为了获得更加准确的数值仿真结果,工程中需要将计算域划分为非常细小的网格单元,使得计算网格量通常可以达到千万甚至上亿的数量级。网格数量越多,计算时对 CPU、内存等计算资源的需求也会越高。因此,大型复杂模型的仿真求解需要大量的计算资源进行支撑,提高软件使用效率。为了解决 OpenFOAM 缺少 GUI 交互功能的问题,本文设计实现了一个 OpenFOAM 求解客户端,提供友好的用户交互界面。为了满足求解计算中对于大量计算资源的需求,设计了基于服务的“云+端”计算架构4,设计开发了一个 OpenFOAM 求解器服务,将 OpenFOAM 求解器进行服务化封装,部署于云端,通过云端协同的方式实现远程云端解算服务调用、可视化服务调用。通过使用云端丰富的计算资源,满足用户使用场景需求,提高软件使用效率。同时,软件客户端使用界面模板进行求解设置界面的动态生成,支持用户界面自定义配置,满足了软件易维护、可拓展的特性。1 求解计算服务模型求解计算服务模型如图 1 所示。模型定义了求解服务应用协议,通过对不同解算器计算模块功能接口的服务化封装,建立支持 WAMP 的服务接口协议,供客户端调用。1.1 求解计算应用协议 SolverControl求解计算一般包含以下几个步骤流程:(1)网格导入:导入网格文件,作为计算输入文件;(2)选择解算模型:对于不同问题,提供不同的求解模型来满足求解计算的不同工况;(3)参数设置:根据用户所选求解模型的配置流程,获取该模型所需配置参数,供用户进行设置,参数可划分为流场工质、边界条件、求解控制 3 个主要部分;(4)求解运行:参数设置完毕后,调用执行解算,实时打印解算过程信息,绘制残差曲线,为用户提供图形化显示;(5)求解结果显示:解算结束后,解算器输出结果数据,供用户进行云图的查看与后处理分析。根据求解计算处理流程的分析,求解计算服务一般包括设置网格文件、获取可用求解器、流场工质设置、边界条件设置、求解控制设置、开始解算、停止解算、获取解算运行输出信息及获取求解结果数据等功能需求,面向求解计算服务的需求,设计求解计算应用协议 SolverControl 接口如表 1 所示。1.2 求解计算服务流程基于已实现的计算服务模型与应用协议接口,可针对不同解算器进行服务化封装,本文对 OpenFOAM 求解器进行了服务化封装实现。服务开始时启用一个服务端 Server,并建立监听来管理客户端连接,使用本地客户端建立网络连接,连接成功后实例化协议对象,接收客户端请求并执行对应功能。使用应用协议 SolverControl 提供的接口,求解器 GUI 客户端进行求解计算服务调用的基本交互操作流程如下:(1)用户通过客户端点击“导入网格”按钮打开导入网格窗口,选择一个网格文件,通过 setMesh 接口设置当前工程所用的网格;(2)用户点击“获取可用模型”按钮进行可用解算模型获取,选择所需使用的解算模型;(3)根据用户所选解算模型,获取解算模型对应的界面模板,用于求解设置界面的显示;(4)客户端根据返回的界面模板构建求解设置界面,供用户进行设置操作;(5)用户进行流场工质参数设置;(6)用户进行边界条件参数设置;(7)用户进行求解控制参数设置;图 1运行求解处理流程图表 1服务端提供的求解服务接口服务方法uff.solver.setMeshuff.solver.availableuff.solver.setMaterialuff.solver.setBoundaryuff.solver.setControluff.solver.startuff.solver.stopRunuff.solver.getRunInfouff.solver.getResult服务功能设置网格文件获取服务可用求解器设置工程的流场工质设置工程的边界条件设置工程的求解控制参数启动运行求解器停止运行求解器获取求解运行输出信息获取求解结果数据125Computer Technology and Its Applications计算机技术与应用www.ChinaAET.com(8)启动求解计算,通过 startRun 接口启动求解器开始执行迭代计算;(9)定时通过 getRunInfo 接口获取求解器输出信息及曲线信息,在信息输出区与可视化区域进行显示;(10)停止求解计算,通过 stopRun 接口停止求解器运行;(11)通过 getResult 接口获取结果信息,绘制流场数据可视化云图,显示典型物理量的空间分布情况。基于已实现的 OpenFOAM 求解计算服务流程,下面给出一个运行求解客户端软件设计。2 客户端软件设计2.1 软件框架设计客户端软件架构如图 2 所示。GUI 客户端使用三层架构设计,自下而上分为服务接口层、基础支撑层与业务界面层,将对外接口、数据处理及界面显示进行分层隔离,方便软件更新迭代与维护,满足了易用、易维护及可扩展的软件特性。服务接口层包含服务调用模块,针对不同的服务提供通过 RPC 远程服务调用、通过消息中间件异步网络通信服务调用两种服务调用方式,可根据服务提供的通信模式及业务需求进行选择。根据服务调用模块提供的服务