胡 涛, 梁 森, 万 波
西安电子科技大学, 西安 710071
空间辐射效应是影响航天器在轨稳定运行的重要因素之一,在航天器故障中有近一半是由空间环境中各类辐射造成的[1].随着航天活动的不断深入,对航天器抗辐射性能的要求也越来越高.为了提高航天器运行的安全性和稳定性,对空间辐射效应进行仿真计算是重要手段之一.
随着计算机硬件与软件的发展,对各类复杂系统的仿真需求越来越多、要求越来越高.针对空间辐射环境及其抗辐射加固的仿真,国外的NASA和ESA开发了RadBelt、NOVICE 和Space Radiation Model 等空间辐射环境预测、辐射效应仿真软件.党炜等[2]采用CBS方法建立了空间辐射环境仿真平台,滕云飞等[3]开发了针对近地空间电磁环境的仿真系统,马继峰等[4]开展了基于Geant4的空间辐射环境仿真系统设计研究.以上研究虽然能够一定程度上满足空间辐射效应的仿真模拟,但是这些系统要么需要在相应平台上安装软件,要么基于特定场景而不具备通用性.另外,空间辐射效应包含多种复杂的空间辐射现象,针对不同的仿真需求,使用的仿真工具和仿真流程都不同.因此对仿真系统的研究是一项涉及多领域、多学科的复杂工程,单一的仿真工具、固定的流程不能满足用户对仿真系统准确性、灵活性、交互性的要求.
针对空间辐射效应仿真的复杂性,本文提出了一种基于MCNP的空间辐射效应可视化仿真系统.MCNP程序是由美国Los Alamos国家实验室开发的基于蒙特卡洛方法的粒子运输程序[5],用于计算中子、光子和电子的运输过程,可以很好地模拟空间辐射效应.平台基于云计算和微服务开发,云计算是一种能够实现对资源池按需分配的计算模式[6],而微服务是在SOA的基础上进一步组件化、松耦合的架构风格.基于云计算和微服务的仿真系统具有高扩展性、高灵活性和高容错等特点.除此之外,为了提高仿真系统的交互性和仿真过程的直观性,系统使用WebGL技术为仿真用户提供可视化仿真功能.
本文将首先介绍基于MCNP的空间辐射效应可视化仿真系统的整体架构与典型可视化仿真通用架构,然后针对MCNP可视化仿真的设计与实现进行详细阐述,并给出系统测试结果,最后对本文工作作出总结与展望.
针对空间辐射效应仿真对灵活性、扩展性、交互性的需求以及对用户友好度的考虑,本文提出如图1所示的基于MCNP的空间辐射效应可视化仿真系统架构.
基于云计算对底层硬件资源按需分配的计算模式,系统架构可分为基础服务层(IaaS)、平台服务层(PaaS)和软件服务层(SaaS).基础服务层主要为平台服务层提供虚拟资源和硬件资源.平台服务层通过中间件调用基础服务层提供的资源为软件服务层提供仿真流程需要的各类组件、数据存储以及仿真计算的微服务接口.软件服务层通过中间件调用平台服务层的组件和接口为用户提供多类仿真单元、流程定制、虚拟机资源、结果分析等功能.
从仿真用户角度考虑,典型可视化仿真的需求主要是便利、直观的仿真模型及参数输入方式和仿真结果分析.而从仿真平台角度考虑,由于仿真软件和仿真数据的多样化,平台更需要易扩展、低耦合的模式对仿真流程中初始化数据、交互数据、仿真数据进行处理.对于数据来源、种类多样的仿真单元,系统则需要实现对于不同类型数据的联合处理.本文综合考虑用户和平台对于典型可视化仿真流程的需求,提出一种通用的典型可视化仿真架构如图2所示.
通用架构主要分为可视化层、中间数据层、数据处理层、数据存储层以及中间件.其中:可视化层是直接面向用户的界面,为用户提供基础服务、可视化、数据交互等功能,便于用户进行仿真流程与模型设计.中间数据层是在可视化仿真过程中,用户与平台进行数据交互的中间层.数据处理层为平台提供对各类资源、数据的处理和调度,从而对仿真过程进行可视化和持久化.数据存储层用于存储用户个性化参数、仿真流程所需模型、数据和仿真结果数据.中间件则负责上下层之间数据、模块、接口间的转换、通信、调度和协同.
空间辐射效应引起的航天器辐射破坏主要包括总剂量效应、单粒子效应以及位移损伤,其中总剂量效应和单粒子效应占了94%[2].对空间辐射效应的模拟研究主要有地面模拟和计算机模拟两种,因空间辐射环境中不同的环境具有一定的协同效应[7],地面模拟受试验成本影响而有一些限制.而计算机模拟则可以很好地解决这些问题.
使用MCNP进行空间辐射效应模拟需要在inp文件(MCNP的输入文件)中对该几何模型进行描述[8],但目前inp文件基本靠手工编写,这种方式对复杂几何模型的描述显得尤为困难.除此之外,inp文件中还需要包含计算所需的仿真参数,且这些参数大多与几何模型息息相关.这让inp文件的手动编写变得更加复杂.针对MCNP输入文件的编写困难,目前的辅助程序研究方向可分为两类: 第一类是研究可视化环境,让用户在可视化环境中创建所需几何模型以及相关参数; 第二类是研究转换程序,先利用ProE等三维设计软件设计模型,再通过转换程序将设计出的模型文件转换为MCNP输入文件中的几何模型[9].
目前国内外沿着这两种方向已有不少成果,李春燕等人的MCNPIN程序实现了可视化编写mcnp输入文件[10],其通过OpenGL处理三维图形的显示并利用VC++编程实现数据的输入和显示,但是程序的显示精度较低,远不如现有的CAD软件.德国 Karlsruhe 研究中心反应堆安全研究所对转换类工具进行了深入研究[11].其中中国科学院FDS团队开发的蒙特卡洛粒子运输计算自动建模系统MCAM功能尤为强大[12],能够为用户实现可视化的自动建模,但其主要面向的是核领域的粒子运输问题且需要在平台上安装相应软件.为了在系统上实现基于MCNP的可视化仿真,系统采用WebGL技术实现inp文件的可视化并通过中间件实现了基于igs数据和json数据的inp文件生成算法.
在通用可视化仿真架构的基础上结合MCNP仿真的特性,基于MCNP的可视化仿真架构如图3所示.
可视化层:在几何模型设计方面,因现有的CAD技术已经发展的非常成熟且考虑到大部分使用者的操作习惯,仍将ProE等三维CAD设计软件作为几何模型设计的主要工具.而在可视化环境方面,随着Google、FireFox等主流浏览器对html5、WebGL的支持以及GPU性能和渲染技术的发展,使用浏览器作为复杂三维图形展现与编辑平台成为可能.且基于B/S架构的Web技术具有高通用、高独立、易扩展、易移植等特点.因此程序将基于ThreeJS Editor的三维前端编辑器作为主要的可视化环境.在可视化环境中实现对导入几何模型的展示和参数设置、轻量几何模型的设计与参数设置、定制化操作等.这样使得程序既充分利用了现有的成熟CAD技术,方便了模型制作过程、减少了使用新工具带来的工作量.也利用快速发展的Web前端三维技术,使得仿真模型的几何模型设计和参数设置等更加形象直观,提高了用户的工作效率和体验,实现了inp文件的几何可视化与数据可视化.
中间数据层:主要分为3类文件:
1) 模型数据.主要包含两类几何模型数据,一个是用户利用三维CAD软件设计的几何模型数据(下文统称为igs文件)同时也是仿真计算的主要几何模型数据来源、另一个则是前端三维可视化显示使用的几何模型数据(下文统称为obj文件),实际上是利用模型处理模块将igs文件转换出的obj文件.也就是说,这两类文件是同一几何模型基于不同用途的不同表示.
2) json数据.主要包含几何数据和参数数据.几何数据是用户在可视化环境中添加的几何模型,而参数数据则是用户为几何模型设置的仿真参数.
3) 仿真计算数据.主要包含MCNP的输入文件(下文统称为inp文件)和输出文件(下文统称为out文件).inp文件是MCNP计算所需的输入数据,而out文件则是MCNP根据输入数据进行计算后生成的输出数据.
数据处理层:主要分为3个模块:
1) 几何模型处理模块.将igs文件转换为可视化环境所需的obj文件.
2) 输入文件处理模块.根据igs几何模型、可视化几何模型以及仿真参数生成inp文件.
3) 仿真计算模块.根据inp文件进行仿真计算.
数据与文件存储层:存储的文件包括仿真流程中生成的中间文件、仿真计算需要的模型文件,数据库主要包含材料表、能谱表等仿真相关仿真参数表以及历次仿真流程的记录,便于用户进行仿真计算的横向、纵向对比.
通过该架构进行MCNP仿真的一般流程如下:
1.通过ProE或其它CAD三维设计软件设计仿真模块,并导出igs格式的几何模型文件.
2.将igs文件上传到服务器转化为obj格式, web前端三维编辑器加载obj文件显示模型.
3.利用前端三维编辑器进行模型的参数设置、不同辐射源的添加、参数设置以及一些其它定制化模型操作.
4.确认仿真参数的设置后,提取并生成参数数据在展示页进行汇总展示以及校验.
5.将校验后的json数据上传到服务器,服务器根据igs数据以及json数据将其转化为inp文件并发送回前端页面进行二次校验.
6.二次校验确认后,服务器调用MCNP程序进行自动化仿真.
7.仿真结束后,将仿真结果发送到前端进行展示.若结果有误,则跳转到1、2、3步重新进行仿真.若结果正确,则用户可以选择结束这次仿真或将仿真结果作为其它仿真的输入参数.
可视化顾名思义就是将数据转换成图形展示出来,再供用户进行交互处理.具体到MCNP的输入文件,即inp文件主要包括栅元卡、曲面卡和数据卡.栅元卡描述区域的形状和材料,曲面卡描述构成栅元的曲面信息,数据卡则描述仿真计算的各类参数,包括栅元重要性卡、材料信息卡、源描述卡、计数卡等.inp输入文件的可视化不只包含几何模型的几何可视化,栅元的材料、密度、重要性等以及辐射源的类型、能量、辐射方向等的数据可视化也是整个可视化模块中重要的一部分.
WebGL是一种3D绘图协议,它可以为HTML5 Canvas提供硬件3D加速渲染,而Three JS Editor是在对WebGL进一步封装后开发的开源前端编辑器框架.结合MCNP输入文件的特点,其可视化模块结构如图4所示.
其中云代表仿真平台返回的初始化数据,椭圆代表用户的操作,矩形代表可视化窗口.用户在可视化环境中的交互处理主要有以下4个部分:
1)轻量几何设置.基于Three JS提供的API为用户提供一些简单几何形状(长方体、圆柱、球体等)的设置,主要是为了能够以igs模型为主设计个性化模型以及提供不同类型辐射源.
2)定制化操作设置.因仿真计算以及仿真目的的不同,在仿真模型的设计过程中很可能会需要一些特定的模型操作.而定制化操作就是为了方便用户进行特定模型设置.
3)仿真参数设置.经过以上两个步骤就基本完成了几何模型的定义,仿真参数设置即对输入文件中数据卡的内容进行设置.
4)数据校验.模型转换中间件根据相关的json数据以及igs数据生成inp文件并传回可视化模块供用户校验.这主要是为了防止使用者在模型设计过程中的疏忽以及模型转换后的精度缺失.
以MCNP计算为例,我们在其定制化操作主要考虑了输入文件中几何模型的严谨性与完整性[12]以及数据卡中的源数据卡.
严谨性主要指几何模型中相邻实体必须严格共面,不能有重叠或缝隙.
完整性指的是MCNP计算模型中的实体必须充满整个空间,不能有未定义的空腔.
每一个MCNP的计算问题都需要设置源,而在以往的大部分工作中大多将重点聚焦于几何模型也就是输入文件中曲面卡和栅元卡数据的生成上,而对辐射源的设计较简单[10,13].这一方面是由于几何模型是输入文件中最关键的,另一方面则是因为源的设置相对比较简单.但是对于一些粒子源数量较多或者非粒子源的仿真计算,其源的设置也是比较复杂的.为此,可视化环境中提供了多类型辐射源的设置功能.
除了源位置、辐射方向、仿真参数等设置方式相同的参数外,辐射源设置中针对不同类型的辐射源(点、面、体、栅元)提供了不同的参数设置过程.在点源的设置过程中,提供了多点源的设置.在面源和体源的设置过程中,针对不同的几何形状或几何体提供不同的几何参数设置,最后将其类型设为辐射源(默认添加的几何体为普通栅元).
模型转换中间件主要实现从igs模型到obj模型、可视化模型到MCNP模型的转换以及相关的数据调度.模型转换中间件的层次架构如图5所示.
图5 模型转换中间件架构
其中igs到obj的转换使用开源的FreeCAD工具包进行,而inp文件的生成需要结合igs文件与json数据,其中包括几何数据和参数数据,相对比较复杂.不过对于igs文件到inp文件的转换,国内外已有了较为成熟的研究.陈艾华[14]针对简单几何体的转换做了相关研究和实现,李俊伟[14]则对更复杂的图形进行了研究和实现.因此在输入文件转换方面,本文将主要介绍igs文件的信息与json数据的信息结合部分.
igs文件主要提供inp文件中栅元卡和曲面卡的数据,而json数据可以分为3类:1.仿真参数,提供数据卡内主要参数.2.几何模型,可视化环境中添加的几何体参数,提供栅元卡和曲面卡部分数据.3.几何模型相关参数,如材料层数、厚度等需要联合栅元卡和曲面卡的数据生成新数据或更改、删除旧数据的参数.输入文件转换过程如图6所示.
图6 输入文件转换过程
输入文件转换首先进行igs文件处理,提取出igs文件中的几何模型存入栅元卡和曲面卡缓存中(注意相同、相邻曲面去重).之后的json数据处理根据数据类型分为3步:1)几何模型,计算并写入缓存中.2)几何模型相关参数,根据参数读取有关的栅元、曲面数据,计算修改、新增的几何数据并写入缓存中.3)仿真参数,调用脚本、数据库等生成数据卡数据并写入缓存中.转换完成后将缓存中数据写入inp文件并保存.
仿真计算中间件主要负责调度和管理仿真计算微服务和相关数据,是利用转换后的inp文件调用MCNP程序进行仿真并进行流程记录和管理的部分.在本地进行仿真计算时,可以直接调用MCNP程序.而在平台上,为了实现自动化仿真、仿真记录、流程控制等,我们以微服务的形式将仿真计算业务部署到计算节点上,通过中间件管理和调度仿真服务.MCNP仿真计算中间件工作流程如下:
1)获得校验后的inp文件后,将其上传到FTP服务器中.
2)以消息队列的方式发送仿真消息.
3)计算节点接收到仿真消息后,通过FTP服务器获取inp文件进行MCNP计算.
4)计算节点完成计算后将仿真结果out文件(MCNP程序输出文件)上传到FTP服务器.
5)以消息队列的方式发送仿真完成消息.
6)服务器接收到仿真完成消息,通过FTP服务器获取out文件.
系统测试主要展示了一个ProE三维模型到可视化展示、编辑再到模型转换和仿真结果的具体流程.
测试所采用的几何模型使用ProE软件进行设计并导出为igs文件(模型设计只以测试为目的,并不涉及实际使用模型),模型由两个圆台半球组合体嵌套而成.此模型结构相对复杂,能有效测试可视化仿真系统的可视化性能以及转换算法准确率.几何模型如图7所示.
图7 测试使用的几何模型
在系统中导入上述模型的igs文件并设置总体参数后,可视化界面加载初始几何体.设置栅元相关参数、辐射源参数并添加关注点和包围壳(参数设置只以测试为目的,并不涉及实际使用参数).可视化界面如图8所示.
图8 可视化界面
可视化页面主要包含工具栏、可视化部分、模型列表和参数设置栏.
点击确认按钮,可视化模块的数据转换中间件将用户设置的参数转化为json数据传送到服务器中.
平台接收到json数据后结合igs文件进行输入文件转换,转换完成后,调用MCNP软件进行仿真.根据以上几何模型以及参数设置,MCNP仿真结果文件开头部分如图9所示,其包含了MCNP的水印信息以及输入文件内容.
图9 转换结果
可以看到栅元卡数据中包含了igs文件中的两个圆台半球组合体栅元以及包围壳、空腔栅元.材料卡中包含了重要性、源卡、材料卡等在可视化环境中设置的参数.
本文结合B/S架构与微服务架构设计了一种空间辐射效应可视化仿真系统,使用云计算与微服务架构开发仿真平台,利用WEB GL技术、中间件技术实现基于MCNP的可视化仿真.随后给出了通用可视化仿真架构,并详细阐述了MCNP可视化仿真的设计与实现.系统测试结果表明,该系统能够以可视化的方式为用户提供inp文件的模型展示、轻量几何操作以及参数编辑.除此之外系统还为用户并提供了流程定制、自动化仿真等功能,从而减轻仿真人员工作量、提升仿真交互性、提高仿真效率.
目前,仿真系统还存在对材料层数、厚度等参数转换不准确以及不能对几何模型细粒度操作等问题.下一步还将根据实际仿真体验与需求对仿真系统进一步升级.