Linux中MCNP5的安装与使用
简述(废话)
对linux基本上一无所知,近期任务需要在linux中运行MCNP5,老师给了个tar.gz包,linux解压之后发现没有configure,只在source里面有一个install和makefile,没法配置configure,也没法直接make,make的话会报错,所以逮着makefile一顿查改。但其实跟他没关系,所以知识学了不少(十几个小时的闷头直撞呢,毕竟我对linux也是一无所知),但问题一点没解决。
没有configure的tar.gz安装包一般都是可以直接用的,也就是常说的绿色包。一开始我也有怀疑过是绿色包,所以尝试着直接找到运行文件,但是当我找到bin/linux/mcnp5的时候,运行还是会报错,我还专门复制了一个原先在win运行过的inp,提示没有xsdir,那既然找不到xsdir,而我又恰巧见过他, 于是找到了xsdir复制到此处,但还是报错:提示datapath问题。
于是我在整个包里面grep -rn "DATAPATH“,改了所有的地方(但其实与这个无关哈),最后发现mcnp是二进制文件,里面的DAPAPATH没法改,就重新认为是安装的问题了。因为在此之前,我也试着把win的MCNPdata也给转移到linux了,只是苦于找不到地方修改datapath。而且我也把xsdir复制到了那个地方,所以是真的没有办法,最终在source里冲撞了十几个小时也是一无所获。
最后实在是没有办法,过了一夜之后,忽然就想起先前在SuperMC里看到的那个设置路径,于是在xsdir的第一行里面加了一个
DATAPATH="这是放DATAPATH在linux里的路径"
再一运行,反倒成了!!!真的是,无语至极。当场气哭,半天说不出话。
这要不是先前摸索的时候看到过这个,真的就是搞不清楚还有理说不清了。
续更-----------------------------------------2021·10·12----------------------------------------------
由于接下来还会安装一个新系统直接运行在本机上,所以接下来的详情会很负责。
详情(自己在虚拟机上摸索的曲线救国,不官方,请跳过)
首先要拿到带有linux运行环境的mcnp的tar.gz包,直接想办法弄到linux里面去。注意这种不带界面的tar包一般都是绿色的,基本上也没有configure,也就是说其实也不属于源码安装。linux安装一般就三种方式,一种是源码安装(tar包),第二种是rpm安装(rpm包)【redhat Linux系统提供的一种包封装方式,centos主要就是用这个和yum】,第三种是dpkg包,【Debain Linux系统提供】。当然ubuntu里面也有类似的apt安装,而且其实也可以用dpkg,说到底就是安装包的前端管理器,看个人爱好吧。不过多解释,具体可参照下面这篇文章:
linux安装三种方式-博客园
回归正题:
这里MCNP只是简简单单一个tar包,解压
tar zxvf mcnp5_dist-H.tgz -C 目标路径
之后不需要像其他源码那样configure,make&make install。因为他本身就是集成好的,也可能我不知道怎么弄。反正我是直接到bin里面再进入linux,看到mcnp5这些可执行文件就是直接可以用的,自己根据自己的系统选择,64位linux就是mcnp5_x86_64,后面加omp的就是多线程模式,自己选择,也可以给他们改名字。
这里如果直接用的话还是会报错的,说datapath找不到。
所以我把xsdir复制进来了。并且在第一行加入了我的MCNPDATA的路径,如下图,灵感来源于SuperMC,这是我的windows里面安装的MCNPDATA我直接给挪进来了。
毕竟我不知道怎么修改那个 searched directories,这个应该是安装的问题,我没法安装,所以我只能按照人家的来,我尝试过在整个mcnp包里面去搜索:grep -rn "DATAPATH" *
,但其实,改了所有的都没用,因为mcnp5那个运行文件里面是有一个的,但是它是二进制文件,所以改不了,我猜想是make的时候编译的问题,但是我又没自己make和install,所以没法了。我用两种方法解决这个问题:
① 要么就如上述那样,随时随地带着xsdir走(在每个运行mcnp的地方都要有开头是DATAPATH=‘’的xsdir)。
② 要么就把MCNPDATA复制到人家说的那个文件夹下面去。比如我这里就把MCNPDATA复制到了他说的那个/usr/projects/data/nuclear/mc/type1
地方。
还是推荐第二种方法的, 毕竟谁特么天天带着xsdir走啊,太愚笨了。
就好像我不能每次运行mcnp都把mcnp5的执行文件的路径都带上吧,所以我设置了一个环境变量hhh,环境变量的设置参照:linux环境变量设置的四种
这样就可以很简洁地每次在任何地方都可以直接mcnp5 i=0.i
到此就告一段落了,牛批!
不过我想我在windows里的代码到了linux应该还是要改一部分的,但好在万变不离其宗!
每日一加油,只要我不放弃,困难就干不掉我,如果我放弃了,那就睡一觉再战hhh。毕竟有时候困难太过分对不,是可忍孰不可忍,忍无可忍,从头再忍。
=2021·10·21续更=
转到超算的云服务器的时候就没法手动设置环境变量,找老师寻求帮助,但老师当时也没有解决问题,说让我别管了,他帮我给云算装上,好家伙,我愣是没有偷学到,后来也不好意思问老师要,根据记忆自己摸索一手。
官方详情(问老师要的教程,用在云算上了)
=2021·11·17续更=
事实证明:不要自己摸索,有些东西不是自己能想到的。
经某同学询问,遂鼓起勇气找老师要教程,结果发现还挺简单hh
1 事前准备:
1、创建mcnp和mcnpdata文件夹并放入
首先找个地方(自己创建文件夹)放你的mcnp和mcnpdata,这里老师放置的位置如图:
后面需要这些路径。
你需要一些准备:首先你要有linux版本的mcnp安装包对不对(没有问我要),还要有mcnpdata的数据库对不对(没有问我要)。
分别解压到mcnp和mcnpdata。
2、执行./install安装
解压了mcnp就到Source里面去找install,部分文件不一样不要担心,因为我这个是安装过的,所以多了answer等,在此路径下./install如上图。
(install进去之后就会产生一个answer.linux,有了这个文件之后你就没法再./install了,如果你install但是没配置完,想第二次进去,就把answer.linux删了就行)。
删除之后进入是这样的:
2 配置安装文件,生成makefile
然后根据教程分别修改几项。(每个命令后面enter,这个总知道吧)
1、关闭绘图
如果你用不到绘图,就把第一项给关了。步骤是:
命令1
进入之后再来个1
就给绘图关掉了,on会变成off。然后x
退出。
2、修改截面库路径
要修改你的数据库(截面库)路径,你刚才给mcnpdata放哪里了,现在就给修改成啥样,步骤:
命令2
进入之后再来个1
就可以修改路径,输入你mcnpdata的绝对路径。
不知道的话就再开一个终端到mcnpdata目录下,pwd
得到绝对路径:
复制之后粘贴到刚才的那个终端,粘贴你刚才复制的路径
回车即可修改:
然后x
退出去。
3、修改多线程选项为mpi
步骤:
命令3
进入,命令1
修改。最终是这样的:
路径是你自己的路径。
命令x
退出
4、修改编译器选项
步骤:
命令4
进入,命令1
修改,输入4次就改成gfortran了,输入的时候就能看到了,最终是这样的:
路径是你自己系统的路径。
然后x
退出。
5、生成makefile文件
输入M
生成makefile
3 编译、添加环境变量、测试
1.编译
answer.linux文件备份与否应该无所谓,可以按照教程备份一下。
编译:make build config='mpi
编译
我的已经好了,避免搞的不能用,我就不试了,反正到最后会产生一个mcnp5.mpi执行文件,届时,mcnp5.mpi就可以直接使用了,但是还必须在刚才产生mpi的src目录下才能使用,为了方便,要添加环境变量。
2.添加环境变量
cd ~
vi .bashrc
不会用vim的自己百度用法(i
插入,修改完之后esc
,:wq
保存退出)
source .bashrc
路径都要换成你自己刚才放置mcnp和mcnpdata的路径。
3.测试
which mcnp5.mpi
OK了,自己找个顺眼的地方创建自己的工作区,在里面放上你的inp卡(假如是0.i),然后
mcnp5.mpi i=0.i
可以看到mcnp已经在执行了。