2022年 11月 9日

MCNP5 粒子输运 常见问题汇总与踩坑记录(导火索:死循环)

MCNP 常见问题汇总与踩坑记录(导火索:死循环)

  • 基础错误(输入卡语法错)
    • 1 行字符限制
    • 2 制表符tab
    • 3 换行符
  • 天坑错误:运行时死循环
  • 其他错误
    • 1 材料
    • 2 几何
    • 3 F4计数卡选择mesh时
    • 4 接续运行

作为一个计算机专业的学生,做跨学科研究实在是太过于折磨人,计算机层析需要自行模拟数据,于是开始接触MCNP,隔行如隔山,再加上MCNP本身就具有挺多小坑,真的是要人命。

近日遇到MCNP正常运行陷入死循环的过程。

解决后立此文为戒共勉。

基础错误(输入卡语法错)

1 行字符限制

一行有效字符只有能80列。
但注释可以超过80列。

2 制表符tab

不能有,只能是空格。

3 换行符

只能有两个换行符,分别在栅元卡与曲面卡之间,曲面卡与类型卡之间。

天坑错误:运行时死循环

我的实验中,需要对源进行旋转和平移,其中平移分别是0~10内平移40步;旋转是从旋转360°,步长为3°,平移部分数值和旋转部分数值如下:
在这里插入图片描述在这里插入图片描述
过程是在python中直接对其进行批量处理,然后问题来了,在源平移至高度4.625和4.875时,旋转到343°的inp文件每次运行一小时之后就开始陷入死循环,就是CPU被占用,但永远不会计算到下一个dump,曾经反复在不同机器上尝试很多次都不行,也改过inp卡里各种东西。
直到最后将源和方向的小数部分改成1位,才跑通,原先设定是5位,曾经试过3位,2位都不行。必须是1位,不知道到底是哪个数值使MCNP陷入死循环。
在这里插入图片描述
实坑天坑,引以为戒。

其他错误

1 材料

如果指定数据库中没有也无法运算,除非是恰巧能够让MCNP数据库自动转换,比如使用66c的数据库时我设置了.71c的材料,虽然数据库中没有.71c的材料,但在运行过程中还是会根据原子序数自动索引,但有时候是不行的,这就导致我有一次改了个粒子类型p->n,结果程序就跑不通了,后来还是在同学帮忙下才解决。建议材料还是使用原子序数+00表示自然分布
搞错了,2022·06·22修正:
建议材料还是使用原子序数加粒子数表示表示自然分布。
有的材料可能自然分布也不行,还是要+00的。比如C和Ar
在这里插入图片描述

2 几何

如果我的几何没有设定错误的话:
MCNP不能处理斜着的圆柱(运算时没有异常:运算时间不变,不报错,但是整体计算结果全0),也不能处理横着的圆锥。会自动消失,没有数据。白跑。

3 F4计数卡选择mesh时

亲测:如果选择CYL坐标系,mesh的初始坐标origin的R和Z无论如何设置,其结果都会是从0开始。

4 接续运行

正常情况下,MCNP5只能暂停一次,第一次可以ctrl+c暂停之后选择q就是quit停止,则会生成自己要的out或者mesh文件。下一次想要继续运行只需要mcnp5 c r=.r o=.o mesh=.m,无须inp文件。但是这种操作只能一次,如果第二次接续运行的时候又ctrl+c选择q,则重新mcnp5 c运行的时候则会报错指针无法定位。
而MCNP还可以另一种接续运行,第一次设置粒子数运算完毕之后可以再写一个con.i文件,内容为:

continue
nps 1E9
  • 1
  • 2

然后通过mcnp5 c i=con.i r=.r o=.o mesh=.m运行,r和o和m自己设置文件名
文件中1E9即为你最终想要运行的粒子总数。
不知道这种接续运行是不是只能一次,我没试过。暂时没有拆分需求。
这种接续可以无数次,所以大批量处理文件时,可以选择这种方式,有意外时,损失小。
在这里插入图片描述

其他坑等遇到再补充……