14. 固定源计算¶
RMC支持固定源计算功能。固定源功能用于已知外中子源的情况下,计算系统内中子分布随 空间、能量和时间的变化。固定源计算可分为稳态计算和含时计算两种,目前的RMC版本仅 支持稳态计算功能。与此同时,RMC固定源功能可以使用多群和连续能量的ACE格式的中子 截面数据。需要注意的是,稳态固定源计算仅适用于不含裂变核素的系统或者次临界的增殖系统。
14.1. 模拟粒子总数目¶
FixedSource
PARTICLE population=<N> fission=<fN fP>
其中,
- FixedSource为固定源模块的关键词;
- population指定固定源计算中使用的初始粒子数,N表示初始粒子数;
- fission指定是否关闭裂变中子和光子,如果fN为0则表示关闭裂变中子, 如果fN为1则表示打开裂变中子,如果fP为0则表示关闭裂变光子, 如果fP为1则表示打开裂变光子。
重要
如果没有写fission选项,则默认打开裂变中子和光子。
14.2. 伴随计算¶
目前RMC支持在固定源模式下使用伴随计算对正向问题的伴随问题进行计算,同时也可以计算伴随通量。 这个功能的基本逻辑是对粒子在发生碰撞之后的(即抽样自由程之后)抽样碰撞粒子和中子碰撞之后的状态进行调整。本质上是使用多群正向截面 生成一套伴随计算截面,并使用伴随截面进行碰撞核素的抽样和调整中子出射状态进行更新,使之满足伴随输运的逻辑:
Adjoint [ADJOINTCALCULATION=<N> MaxAdjointEnergy=<maxNeuErg maxPhoErg>]
- Adjoint为伴随计算相关选项
- ADJOINTCALCULATION选项卡指定本次计算中使用固定源伴随计算,在程序内部将会生成使用伴随计算使用的伴随截面。此选项设置为1则开启固定源伴随计算的功能。
- MaxAdjointEnergy为固定源多群伴随计算模拟的粒子能量上限,必须和ADJOINTCALCULATION选项卡一起使用,此选项中需要输入两个数字,分别为伴随中子和伴随光子的能量上限,单位为MeV,两者默认值均为20MeV,当伴随粒子能量超过这个值之后就会被杀死;
14.3. 随机数发生器¶
RMC含有三种不同类型的随机数发生器。对一般用户而言,建议使用默认的随机数发生器类 型和参数。高级用户可能需要使用特定的随机数参数,例如,对同一算例使用不同的随机数 种子来获得独立的计算结果。RMC提供了定制随机数发生器的输入卡:
RNG [Type = <type>] [Seed = <seed>] [Stride = <stride>]
其中,
- RNG为随机数发生器输入卡的关键词。
- Type选项卡指定随机发生器的类型,Type = 1为48-bit乘法线性同余法 随机数发生器, Type = 2(缺省值)为64-bit乘法线性同余法随机数发生器, Type = 3为64-bit混合线性同余法随机数发生器,Type = 5为128-bit 随机数发生器。
- Seed选项卡指定随机数发生器的初始化种子,可以是任意正奇数,缺省值为 Seed = 1。
- Stride选项卡用于并行计算时为每个中子历史分配的分段随机数的长度,只建议 高级用户使用。缺省值为Stride = 10000。
14.4. 截断条件¶
FixedSource
CutOff [MaxLost=<maxLost>]
[MinWeight=<minWeightN minWeightP>]
[MaxWeight=<maxWeightP>]
其中,
- CutOff 为截断条件输入卡的关键词。
- MaxLost选项卡指定程序允许丢失的最大粒子数,缺省值为 10。
- MinWeight选项卡指定输运过程中的权重下限,minWeightN指定中子的 权重下限,缺省值为0.25,minWeightP指定光子的权重下限,缺省值为0.6。 - 在权窗减方差功能开启后,此处输入无效
- MaxWeightP选项卡指定光子在输运过程中的权重上限,缺省值为1.4。
14.5. 固定源计算的动态负载均衡(仅限企业版本)¶
在运行机器的各个计算核心的计算能力有较大差异时,预分配负载的并行算法将在计算后期 出现较长时间的等待较慢进程完成任务的情况,浪费其他计算核心的计算时间,并拉长总的 计算时间,因此可以考虑开启动态负载均衡方法,实现”能者多劳”。
FixedSource
LOAD_BALANCE [Method=<method>]
[Interval=<interval>]
其中,
- Method 为动态负载均衡方法的关键词,目前合法值为0或1,0表示不使用动态负载均衡, 1表示使用时间归并的动态负载均衡方法,缺省值为0即关闭动态负载均衡。
- Interval选项卡指定时间归并动态负载均衡方法的时间检查间隔,整数,单位为秒,缺省值为 60 秒。
注意,
1. 时间归并动态负载均衡方法的实际模拟粒子数一般会多于输入卡中设置的粒子数目,如对模拟粒子数有严格要求, 请不要使用该动态负载均衡方法,或在使用后利用统计学原理进行结果调整。
2. 一般来说,Interval参数越大,多模拟的粒子数量一般会越多,但过短(比如每秒一次)的interval可能导致频繁的 归并统计进而拖慢计算。正常情况下,默认值1分钟1次时间归并检查是足够的,只有实际模拟的粒子数相当小的时候 才需要调小interval取值。
3. 在开启时间归并动态负载均衡后,每次计算的粒子数都可能不同,因此无法保证可复现性,但在粒子数充足的情况下, 结果会在误差许可的范围内。
4. 该功能仅支持开启了MPI的RMC程序,在串行版本的RMC中,该功能开启也不会产生任何效果。 当在开启MPI的RMC程序中使用单进程计算,并开启该功能时,该功能会发生效果,但一般是负向效果,即计算时间增加, 计算粒子数增加。
14.6. 固定源计算的外源子程序¶
当需要更为自由的固定源描述时,可以使用外源子程序。这一部分的输入卡为:
SOURCESUB [SOURCE = <source>] [PTMOD = <PTMod>]
其中
- SOURCESUB关键词表示使用外源子程序,此时无需再定义 EXTERNALSOURCE模块输入卡,改为提供一个python脚本作为外源子程序,用户自定义这个子程序,提供必要的粒子信息;
- SOURCE为外源子程序的文件名的关键词,使用 SOURCESUB时必须提供该项,输入值中不带后缀.py,区分大小写;
- PTMOD为点计数器修正子程序关键词。如果在使用外源子程序的同时还使用了点计数器,则必须提供这个子程序,不使用时可不写。输入值中不带后缀.py,区分大小写。
子程序应放在与输入卡inp文件同一个文件夹下。两个子程序的具体使用细节详见使用说明的源描述一节。该卡的输入示例:
SOURCESUB Source = source PTMod = ptmod
该功能暂时不支持windows系统,目前只能在linux系统中使用。
使用该功能需要cmake版本在3.12以上;还需要python的dev版本,使用命令 sudo apt-get libpython3-dev 来安装。
14.7. 固定源模块输入示例¶
固定源释放10000个源中子。
UNIVERSE 0
cell 1 -1 mat = 1 // sphere inside
cell 2 1 & -2 mat = 1 // sphere middle
cell 3 2 & -3 mat = 2 // sphere outside
cell 4 3 mat = 0 void = 1
SURFACE
surf 1 so 10
surf 2 so 20
surf 3 so 30
MATERIAL
mat 1 -10.045 // Fuel
92235.71c 6.89220E-03
92238.71c 2.17104E-02
8016.71c 4.48178E-02
mat 2 -0.9 // Water
1001.71c 2.0
8016.71c 1.0
sab 2 HH2O.71t
FixedSource
particle population = 10000
EXTERNALSOURCE
Source 1 particle = 1 energy = 0.1 sphere = 0 0 0 0 5
Tally
CellTally 5 type = 1 cell = 1 2 time=0 5.0e-8 1.0e-7 5.0e-7 1.0e-6
CellTally 6 type = 2 cell = 1 2 energy = 0 6.25E-7 20 time=0 5.0e-8 1.0e-7 5.0e-7 1.0e-6