MCNP 常见问题汇总与踩坑记录(导火索:死循环)
作为一个计算机专业的学生,做跨学科研究实在是太过于折磨人,计算机层析需要自行模拟数据,于是开始接触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
然后通过mcnp5 c i=con.i r=.r o=.o mesh=.m
运行,r和o和m自己设置文件名
文件中1E9即为你最终想要运行的粒子总数。
不知道这种接续运行是不是只能一次,我没试过。暂时没有拆分需求。
这种接续可以无数次,所以大批量处理文件时,可以选择这种方式,有意外时,损失小。
其他坑等遇到再补充……