MCNP(Monte Carlo N Particle Transport Code)是由美国洛斯阿拉莫斯国家实验室(LosAlamos National Laboratory)开发的基于蒙特卡洛方法的用于计算三维复杂几何结构中的中子、光子、电子或者耦合中子/光子/电子输运问题的通用软件包,也具有计算核临界系统(包括次临界和超临界系统)本征值问题的能力。该软件包通过Fortran编程实现。其中,MC方法又称随机抽样或统计实验方法,属于计算数学的一个分支,它是在20世纪40年代中期为了适应当时原子能事业的发展而发展起来的。传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而MC方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。
MCNP程序涉及面如此之多,关键是通过读入一个经用户创建的称为INP的输入文件来进行计算。该文件必须遵循按照栅元卡的格式进行组织,指定描述空间问题的信息,具体地有(1)空间几何体的描述说明;(2)几何体的使用材料描述和交叉区域的选择估计;(3)中子、光子以及电子这3种粒子源的位置和特性说明;(4)必要的回答卡和标记卡的类型;(5)任何必需的冗余量消除技术以提高计算效率。
目前,MCNP以其灵活、通用的特点以及强大的功能被广泛应用于辐射防护与射线测定、辐射屏蔽设计优化、反应堆设计、(次)临界装置实验、医学以及检测器设计与分析等学科领域,并得到一致认可。
MCNP的发展历程
MCNP程序是由美国LosAlamos国家实验室研制开发的,为其所投入的研究、发展、程序编写及参数制作超过了500人年。程序诞生于1963年,20世纪70年代中期由中子程序和光子程序合并,形成了最初的MCNP程序。自那时起,每2—3年更新一次,版本不断发展,功能不断增加,适应面也越来越广。已知的MCNP程序研制版本的更新时间表如下:
MCNP-3:1983年写成,为标准的Fortran77版本,截面采用ENDF/B2III。
MCNP-3A:1986年写成,加进了多种标准源,截面采用ENDF/B2IV。
MCNP-3B:1988年写成,具有阵列几何处理能力(即重复结构描述),多群截面和计数输出的图形化功能,截面采用ENDF/B2IV和ENDL2851。
MCNP-4:1990年7月由LANL写成,截面采用ENDF/B2V。
MCNP-4.2:1991年3月由ORNL的RSIC写成,程序有较大改进,增加了基于Sandia国家实验室的ITS(IntegratedTigerSeries)2连续能量电子输运包,将其编入MCNP程序,专用于UNIX系统,从此MCNP程序成为中子/光子/电子耦合输运程序。
MCNP-4A:1993年诞生,仍为unix系统,开始引入PVM并行,适合共享存储并行计算机,截面为ENDF/B2V。
MCNP-4B:1997年3月正式推出,有PC版(需要LAHEY编译系统支持),UNIX版,采用ENDF/B2VI截面库和彩色图形系统,仍采用PVM并行编程。
MCNP-4B2:为MCNP24B的升级版,其支持Fortran90系统。
MCNP24C:2000正式推出,在MCNP24B基础上增加共振自屏、瞬发α本征值、微扰和多群伴随中子输运计算等处理,采用F90编译器,工作站版本支持PVM和SMPP并行。
MCNP-5:2003年推出。在这个版本中,完成了从FORTRAN277到FORTRAN290的重新组织,支持以前的MCNP-4C2/4C3全部功能,同时在提高图形显示,易安装性以及更好的在线文档方面有较大改善。
另外,在MCNP系列版本中,出现了MCNPX版本,该版本程序仍为该实验室研制,并由其负责维护和更新。MCNPX开始于1994年,作为MCNP-4B和LAHET22.8的代码整合项目,并第1次在1999年对外发布,版本为2.1.5。2002年,MCNPX升级为MCNP-4C,其变化包括支持Fortran90系统,加强了12种新特性,并作为2.4.0版本对外发布。自从2002年开始,MCNPX测试组向全球300个机构中的1400多名用户进行公开测试,在加入了数10个新特性后作为2.5.0版对外发布。MCNPX现在已经成为世界上使用最为广泛的粒子输运程序之一。
另外,据悉,最新的MCNP6也已经发布。
早期的MCNP程序基于节约内存的目的,使用磁盘文件较多,读取文件效率极低。目前MCNP程序中的多数文件交换已改为内存数组,它比磁盘文件读取速度提高了10000倍,加之高速缓存Cache的使用,并行效率显著提高。
MCNP的应用状况及发展
由于MCNP的通用性、灵活性以及强大的功能,使得其在世界上有广泛应用,仅国内的用户就在百家之上,应用领域也从过去主要的核领域,逐渐推广到石油、医学在内的许多领域。
从20世纪90年代开始,国外已经有研究人员开始研究MCNP输入文件制作的简化和计算结果的图形化显示。特别是随着计算机软硬件技术的发展,在近几年取得了一些有价值的研究成果。所开发的MCNP可视化软件能够应用场景的二维DX格式文件和三维SAT格式的图形文件转换成MCN的输入文件,即将在目前商用CAD软件中绘制的计算场景的几何模型转换为MCNP的仿真模型同时在场景的某些界面将MCNP的计算结果绘制成二维图形,实现了计算结果的可视化。为便于计算结果的分析、存储和共享,有的后处理软件能够将MCNP计算结果输出到电子表格等数据库中。
近几年,国内在MCNP前处理与后处理技术领域的研究也取得了长足的进步。主要表现在以下几个方面:
(1)在MCNP的计算效率、几何局限性以及二维交互绘图等方面进行了有益的探索。
(2)为了简化MCNP输入文件的制作、显示MCNP的计算进程和计算数据的抽取与显示,研究开发了专用的MCNP程序可视化运行平台,并能以图形化的方式显示MCNP的计算进程和运行时间的相关信息。
(3)为了简化MCNP的几何建模,提高MCNP计算输入文件的编写效率,研究将有关CAD文件中的几何模型转换为MCNP仿真模型的算法问题,通过对目前商用图形软件包进行二次开发,开发出专用的MCNP辅助建模工具。
另外,可视化技术已经在自然科学领域得到了广泛的应用。目前在规则数据场的体绘制和面绘制算法等方面的技术已经趋于成熟。国内外的一些研究机构相继推出了一系列可视化软件工具及专用可视化软件。但在三维数据场实时动态显示、非规则数据场合矢量场的可视化计算以及基于网络的科学计算可视化理论等方面有待进一步的研究和完善。
综上所述,近几年来国内外研究人员在MCNP仿真模型的建立、计算结果的可视化研究方面取得了一些重要的研究成果。
MCNP程序的不足
MCNP程序采用了MC方法,由于能够准确地描述复杂几何,并真实地考虑了粒子事件的全部物理过程,特别是连续能量点截面和精确角分布的使用,使MC方法具有很强的竞争性。然而这种方法的最大不足是误差的概率性和收敛方面,计算耗时多,过去受计算机条件限制,这种方法在20世纪90年代前还受到限制,但随着计算机的高速发展,近10年MC方法的应用也越来越广。
同时,由于MCNP是一个通用软件,往往不能直接用来解决具体问题。在具体应用中,必须针对具体问题作适当改进和进一步开发。
另外,虽然MCNP在世界范围内得到了广泛应用,但是存在输入接口复杂和繁琐,对空间中几何对象描述非常困难的问题。MCNP输入文件结构复杂,几何模型的描述工作又极为抽象、不直观和容易出错,这样使得描述工作费时、复杂和效率低。如果采用人工方式制作,需要建模人员具有较强的专业水平。对于一个中等复杂度的图像对象(实体图元在50左右),手工制作时间为1-2个人月,而且出错的可能性极大,有时不得不重新制作或简化模型。而且MCNP的绘图功能仅仅局限在二维剖面图,常会遇到不适应的情况,特别是复杂几何的描述极易出错,这给用户在调试几何模型输入文件时带来不便。
MCNP的发展趋势及前景
针对MCNP程序本身以及其应用领域的特点,今后在MCNP输入文件辅助制作工具、几何模型可视化等方面都很具有发展潜力,同时在某些特殊领域,可以对MCNP进行二次开发,对其做源代码级的修改,以适用于具体的问题。
20世纪80年代后期提出了科学计算可视化这个新的研究领域。经过数10年的研究,科学计算可视化已经从研究阶段转入到应用阶段。目前应用在MCNP的可视化研究主要体现在MCNP模型的可视化辅助自动建模工具。MCNP模型相关的可视化工具主要包括VisualEditor,Sabrina,Moritz以及中国科学院核能安全技术研究所FDS团队开发的具有自主知识产权的多物理耦合分析自动建模软件MCAM。MCNP可视化自动建模工具的开发,可以很好地解决以手工的方式来建立MCNP输入文件所带来的一系列相关问题,因而具有很广阔的发展前景。
另一方面,随着科学计算可视化理论以及虚拟现实技术的发展,开发具有复杂几何体的建模和虚拟组装、三维空间不规则数据场的可视化以及MC2NP计算结果可视化处理功能的高度集成可视化平台,也可以更好地促进MCNP的应用,并在一定程度上促进科学计算可视化理论以及虚拟现实技术的进一步发展。
MCNP的运行方法
MCNP程序运行关键是通过读入一个经用户创建的称为INP的输入文件来进行计算。以4c版本为例,建立一个较为快捷的运行方法。建立一个TXT文档,文档中输入“call mcnp4c.exe inp=**in.txt outp=**o.out”语句,文件类型由.txt改为.bat,其中**in.txt为inp文件名称,**o.out为输出结果文件名称,保存后双击就可运行。
经过一段 时间的运行,程序将给出运行结果,默认情况下生成文件有 runtpe 和 out* 2 个文件,其中 runtpe 这个文件是中间转储文件,一般不需要;计算结果则是保存在 out*文件内,利用文本读写软件如“写字板”打开后进行分析并对结果进行整理。下图是未执行前的情形:在双击 mcnp.exe 执行后,会发现多了 2 个文件,如上所述;如果再双击 mcnp.exe,则会出现下述的情形,即不覆盖原来的结果;如果为了增加在运行时的灵活性,那么可以在命令行(cmd)下的利用通用的 命令来进行,其命令格式是: mcnp inp=11.txt outp=11.out 这里的 mcnp 是命令,11.txt 是输入文件,相当于默认的 inp 文件,11.out 是结果 输出文件,相当于默认的 oupt 文件。删除掉上面的 4 个生成文件,在 mcnp 软件的当前目录下输入:那么可以看到,那么可以看到,执行结果为 11.out 和 runtpe,即此时输入文件的名称和输出文件的名称我们都可以自由指定。
绘图命令
进入绘图界面
在 4C 版本里面,如果需要绘图,则必须需要用 dos 命令来做。打开命令窗 口(在开始菜单中的“运行”子菜单里面输入“cmd” ,回车),利用“cd”命令进 入 MCNP 程序所在目录(建议 MCNP 所在的文件夹路径要尽量短并且文件夹名称 为英文名称),输入 MCNP IP 命令,此时系统会自动给你打开 MCNP 的绘图命令 窗口: MCNP 的操作界面,在主窗口里会出现 2 个子窗口,名称分别为 MCNP Execute Window(命令窗口)和 MCNP Plot Window(绘图窗口),如上图所示,用户在命令窗口中输入各种绘图命令和相关参数, MCNP 将把执行结果显示在绘图窗口中。Ip;initiate and plot 图 1、MCNP 绘图基本界面示意图比如你的 MCNP 文件装在 D 盘里下面的 MCNP 文件夹中,你就在命令窗口 中先输入 D: ,回车;进入 D 盘目录下,再输入 cd MCNP 进入 MCNP 目录,然 后就输入 MCNP IP 就进入画图界面;上述是默认情况下的绘图过程,通用的绘图方式是: mcnp inp= filename ip modle: mcnp inp=11.txt ip在命令行(cmd)下敲入上述命令,具体文件只要替换上述的 filename 即可,上述 的例子就是针对 11.txt 这个输入文件进行绘图。的含义是 initiate and plot 。 ip 此时操作系统会自动打开 mcnp 程序并如上图 1 所示。
基本绘图命令介绍
绘图命令:同运行一样,建立TXT文档输入call mcnp4c.exe inp=***in.txt ip,保存后文件类型由.txt改为.bat,其中**in.txt为inp文件名称,双击就可绘图。
(1)、Origin vx vy vz 指定绘图坐标的原点,默认情况取 vx vy vz 为 0 0 0,例:Origin 0 0 0图 2、执行 origin 0 0 0 命令后的显示结果(2)、extent eh ev 设置图形的显示比例问题,其中 eh(horizontal)为水平方向从原点开始的任意长 度,单位为 cm,ev(vertical)为垂直方向从原点开始的任意长度,如果只输入一个 数值,则 eh 和 ev 均取同一个数值,默认情况下 eh 和 ev 取值为 100。例:extent 5,注意:图 2 中绘图窗口中的 extent 为(100.00,100.00) 图 3、执行 extent 5 命令后的显示结果(3) PX vx 绘制 x=vx 位置处的 y-z 平面投影图,默认情况下 vx=0 例:PX 10 (4) PY vy 绘制 y=vy 位置处的 x-z 平面投影图,默认情况下 vy=0 例:PY 10 (5) PZ vz 绘制 z=vz 位置处的 x-y 平面投影图,默认情况下 vz=0 例:PZ 10图 4、执行 PY 0.05 命令后的显示结果图 5、执行 PZ 0.1 命令后的显示结果 (6)、label s c 对曲面和栅元进行标记,其中 s 和 c 分别代表对曲面和栅元进行标记的符号的大 小。例:label 5 5图 6、执行 label 5 5 后的结果示意图(7)、factor 图片放大和缩小用,例如 factor 10 缩小 10 倍,factor 0.1 放大 10 倍;由于 比较简单,所以这里就不再举例了。上述就是常用的绘图命令,对于深一步的绘图命令,请参考相关的英文参考资料 《RSICC COMPUTER CODE COLLECTION --- MCNP4C》