第三章蒙特卡罗方法简介3.1 Monte Carlo方法简介Monte Carlo方法是诺斯阿拉莫斯实验室在总结其二战期间工作(曼哈顿计划)的基础上提出来的。
Monte Carlo的发明,主要归功于Enrico Fermi、Von Neumann和Stanislaw Ulam等。
自二战以来,Monte Carlo方法由于其在解决粒子输运问题上特有的优势而得到了迅速发展,并在核物理、辐射物理、数学、电子学等方面得到了广泛的应用。
Monte Carlo的基本思想就是基于随机数选择的统计抽样,这和赌博中掷色子很类似,故取名Monte Carlo。
Monte Carlo方法非常适于解决复杂的三维问题,对于不能用确定性方法解决的问题尤其有用,可以用来模拟核子与物质的相互作用。
在粒子输运中,Monte Carlo技术就是跟踪来自源的每个粒子,从粒子产生开始,直到其消亡(吸收或逃逸等)。
在跟踪过程中,利用有关传输数据经随机抽样来决定粒子每一步的结果[6]。
3.2 Monte Carlo发展历程MCNP程序全名为Monte Carlo Neutron and Photon Transport Code (蒙特卡罗中子-光子输运程序)。
Monte Carlo模拟程序是在1940年美国实施“发展核武器计划”时,由洛斯阿拉莫斯实验室(LANL)提出的,为其所投入的研究、发展、程序编写及参数制作超过了500人年。
1950年Monte Carlo方法的机器语言出现, 1963年通用性的Monte Carlo方法语言推出,在此基础上,20世纪70年代中期由中子程序和光子程序合并,形成了最初的MCNP程序。
自那时起,每2—3年MCNP更新一次, 版本不断发展,功能不断增加,适应面也越来越广。
已知的MCNP程序研制版本的更新时间表如下:MCNP-3:1983年写成,为标准的FORTRAN-77版本,截面采用ENDF /B2III。
MCNP-3A:1986年写成,加进了多种标准源,截面采用ENDF /B2I V[20]。
MCNP-3B::1988年写成具有阵列几何处理能力(即重复结构描述),多群截面和计数输出的图形化功能,截面采用ENDF /B2I V和ENDL2 851。
MCNP-4::1990年7月由LANL写成,截面采用ENDF /B2V。
MCNP-4.2:1991年3月由ORNL的RSIC写成,程序有较大改进,增加了基于Sandia国家实验室的ITS( Integrated Tiger Series)-连续能量电子输运包,将其编入MCNP程序,专用于UNIX系统,从此MCNP程序成为中子/光子/电子耦合输运程序。
MCNP-4A:1993年诞生,仍为UNIX系统,开始引入PVM并行,适合共享存储并行计算机,截面为ENDF/B2 V。
MCNP-4B:1997年3月正式推出,有PC版(需要LAHEY编译系统支持) ,UNIX版,采用ENDF/B2VI截面库和彩色图形系统,仍采用PVM并行编程。
MCNP-4B2:为MCNP-4B的升级版,其支持FORTRAN-90系统。
MCNP-4C:2000正式推出,在MCNP-4B基础上增加共振自屏、瞬发α本征值、微扰和多群伴随中子输运计算等处理,采用F90编译器,工作站版本支持PVM和SMPP并行。
MCNP-5:2003年推出。
在这个版本中,完成了从FORTRAN-77到 FORTRAN-90的重新组织,支持以前的MCNP-4C2 /4C3全部功能,同时在提高图形显示,易安装性以及更好的在线文档方面有较大改善。
另外,在MCNP系列版本中,出现MCNPX版本,该版本程序仍为该实验室研制,并由其负责维护和更新。
MCNPX开始于1994年,作为MCNP-4B和LAHET-2 . 8的代码整合项目,并第1次在1999年对外发布,版本为2 .1 .5。
2002年, MCNPX升级为MCNP- 4C,其变化包括支持FORTRAN-90系统,加强了12种新特性,并作为2.4.0版本对外发布。
自从2002年开始,MCNPX测试组向全球300个机构中的1400多名用户进行公开测试,在加入了数10个新特性后作为2.5.0版对外发布。
MCNPX现在已经成为世界上使用最为广泛的粒子输运程序之一[7]。
3.3 MCNP-3B/PC的输入文件表3.1 MCNP输入数据物理量的单位物理量单位 物理量 单位 长度cm 能量 MeV 时间刹(810 ) 温度 MeV 原子密度2410个原子/3cm 质量密度 g/3cm 截面 巴(bar ) 3.3.1 初始运行的输入文件这一文件用于建立一个蒙特卡罗计算问题,对问题的几何结构、材料、计数要求等等给以描述,如果需要,便可直接运行。
该文件按书写顺序包括如下内容: 信息块卡 该项是选择性的;可有可无。
(空行分隔)标题卡栅元描述卡(空行分隔)曲面描述卡(空行分隔)数据卡(空行分隔)其它卡 选择项其中的标题卡不可省去,它限于一行,且占用 1-80 列,它作为 MCNP 各部分输出表的标题使用。
数据卡后面不管有没有空行分隔符, MCNP 都能运行, 不同的是如果数据卡后向有至行分隔符,则MCNP 将不再读后面的附加行(附加行存在) 。
附加行一般为这个问题的说明或者是与这个输入文件本身有关的信息。
那么,该空行分隔行能防止读入这些附加信息。
3.3.2 卡片书写格式INP 文件中的每一行(我们称之为一张卡片) ,都限于使用 1-80 列并构成卡片映象。
大部分输入卡片按行填写;然而,数据卡片也允许按列填写。
“$”符号为它所在行数据的结束符号。
在“$”符号后面的内容为注释内容,注释内容可从“$”符号后的任一列开始。
标题卡例外,它只限于一行,整行都可填入用户的信息,即使全部空白也可(在输入文件的其余部分,空白卡则作分界符或终止符使用)。
标题卡通常给出特定计算问题的信息。
输入文件中,在标题卡之后及最后的空白结束卡之前,任何地方都可插入注释卡。
注释卡的第一列必须标有字母“c”,且后面跟 4 个空格,第 6-80 列供用户填入任何注释内容。
注释卡仅在输入文件内容的原型输出部分印出,输出文件的其它任何部分不再出现。
FCn卡也是作为注释用的,但它将作为记数类型 n 的表头文字印出,比如可作为记数的标题出现。
SCn 卡也是作为注释用的,但它将作为源概率分布 n 的表头文字印出。
l.行输入格式栅元卡、曲面卡及数据卡的书写格式是相同的。
第 l-5 列填写这些卡片相应的名字(或序号),而且可以写在 1-5 列的任何地方。
如果 1-5 列为空白,则表示它是前一张卡片的继续卡。
(完全的空白卡则作为两组卡片的分界符使用)。
带有粒子标识符的卡可需要 5 列以上,但冒号必须写在第 6 列以前(包含第 6 列)。
6-80 列是用自由格式填写 1-5 列卡片有关的数据项。
填入的数据项之间均以空格(一个或多个)作为分隔。
一般讲,填入的数据可以是任何类型,定点数、浮点数及八进制数等等,MCNP会根据所送入的变量类型进行适当转换。
需要整数输入的地方必须填写整数。
一个数据项必须在一张卡片上写完,不得跨到下一张卡片上。
2.列输入格式列输入格式对于栅元参数和源分布是特别有用的。
按行排列的栅元重要性或体积可读性差,并且当用户增加或删除栅元参数时容易出错。
用列输入格式,一个栅元的所有栅元参数是放在标有这个栅元名字的那行上。
如果要删除某个栅元参数,用户只需删除栅元参数这一行,而不需在每一个栅元参数卡上寻找属于该栅元的数据项。
对源描述,相应 SI、SP及 SB的数据逐个放在每一行上。
3.3.3 栅元描述的一般卡片格式格式: j m d geom paramsj:栅元的题目序号,写在第 1-5 列,1≦j≦99999。
“题目序号”是指由用户按任意所希望的次序选定的序号,在一个文件中,可以不连续。
然而 MCNP 将按照读入的顺序对栅元进行编号,从 1 开始按增量为 1 单调上升。
我们将此称之为栅元的“程序编号”。
必须明白题目编号与程序编号的区别,因为后面叙述的一些卡片将会引用到这种或那种编号。
不过多数情况下,用户给出的序号往往与程序编号一致,这也是避免混乱,减少错误的最可靠方法。
m:栅元的材料号,它是材料卡(Mm)中相应材料的序号。
真空栅元,m=0。
d:栅元材料的密度。
填入正值时,表示是原子密度(单位为 1024个原子/cm3);填入负值时,则是质量密度(单位为 gm/cm3)。
对于真空栅元,该项不填,直接列出下一项内容。
geom:栅元的几何描述。
它列出界定该栅元的所有曲面号(带有数将,表示坐向),及描述这些曲面所定义的曲面之间关系的布尔算符,布尔算将包括交(Intersection),用一个空格表示;联(Union),用“:”号表示;余(Complement),用“#”表示。
这里所说的曲面号及栅元号都指的是题目编号。
如果定义该栅元要用到一个虚设曲面,则它必须作为界定该概元的一个曲面列出(同样带有坐向数符)。
param:任选的栅元参数说明,其形式为:关键词=数值。
3.3.4 源的描述卡对每一个 MCNP 问题都有四个源中的一个。
四个源包括:①通用源(SDEF 卡);②曲面源(SSR 卡);③临界源(KCODE 卡);④用户提供的源。
除了临界源之外,其它源都能使用源分布函数,分布函数分别由 SIn、SPn、SBn 和 DSn 卡指定。
下列卡片用于指定源的信息:助记名(1-5列)卡片内容助记名(1-5列)卡片内容SDEF 通用源SCn 源注释SIn 源信息SSW 写曲面源SPn 源概率SSR 读曲面源SBn 源偏倚KCODE 迭代源DSn 相关源KSRC 源的一些特点在一些情况下,MODE 卡也作为源描述部分来说明从源出发粒子的隐含类型。
对源粒子的描述应包括如下信息:i)几何位置(xxx,yyy,zzz);ii)飞行方向(uuu,vvv,www)iii)能量(ERG);iv)开始时间(TME);v)粒子类型(IPT);vi)粒子统计权重(WGT);vii)粒子开始栅元(ICL);viii)粒子开始曲面(JSU),如果开始点不在曲面上该值为0。
如果对点探测器或者 DXTRAN球的问题还必须定义另外一些变量。
源粒子的类型(中子或光子)则自动由 MODE 卡指定了。
上述变量的任何一个都可能有一个概率分布。
源粒子若出生在重要性为“0”的栅元,则是一个致命性错误。
3.3.5 FSn分段记数卡(记数类型 1,2,4,6,7)格式: FSn S1 S2 … Skn:记数号;Si:带数符的分段曲面的题目编号。
此卡不用于探测器。
可以要求 Sdn 卡。
该卡允许用户把一个栅元或曲面分成若干段来记数,其优点在于不必专为记数设置额外的栅元。