0%

安装DAGMC

DAGMC简介

DAGMC是Direct Accelerated Geometry Monte Carlo的缩写,如其名字所示,DAGMC设计了一套方便高效的几何手段,用于蒙特卡罗方法的计算。DAGMC已经有了与MCNP5, MCNP6, Geant4, FLUKA, Tripoli4和Shift结合的相应工具。即使用DAGMC的几何处理部分,配合其他工具的物理计算部分代码,实现蒙特卡罗计算。

DAGMC依赖软件安装

DAGMC可以用来和PyNE配合来进行停机剂量计算工作。PyNE的安装可以参考PyNE的开发版本安装。DAGMC的安装可以参考官方安装指导。DAGMC依赖于MOAB。

安装HDF5

电脑中可能已经安装了HDF5了,我们可以通过下面的命令来检查它的版本:

1
dpkg -s libhdf5-dev

如果没有安装的话,通过下面的命令安装:

1
sudo apt-get install hdf5-dev

Install MOAB as described here.

安装MPI

电脑如果还没有安装MPI的话,推荐安装mpich:

1
sudo apt install mpich libmpich-dev

NOTE:在服务器及台式机上测试发现,OpenMPI 4.0.2, 3.1.4, 2.1.1和当前版本的并行DAGMC不兼容,可以编译成功,但运行时会出现Segmentation fault。因此,在推荐使用MPICH (3.2.1)。

安装DAGMC

完成HDF5和MOAB的安装后,我们可以安装DAGMC了。

假设我们要把DAGMC安装在$HOME/opt/DAGMC文件夹下,可以按照下面的步骤进行。

获取DAGMC源代码

1
2
3
4
5
6
7
cd $HOME/opt
mkdir DAGMC
cd DAGMC
git clone https://github.com/svalinn/DAGMC
# 此处会在DAGMC文件夹下再生成一个DAGMC文件夹-> DAGMC/DAGMC
cd DAGMC
git checkout develop

安装DAGMC

这个步骤需要相应的物理计算部分的源代码。请参考官方文档选择相应版本执行后续安装步骤。
下面以安装DAG-MCNP v1.xx为例说明安装过程

patch

1
2
3
4
cd mcnp/mcnp5
cp -r <path_to_dvd>/MCNP5/Source .
chmod -R u+rw Source
patch -p0 < patch/mcnpxxx.patch

配置

1
2
3
4
5
6
cd $HOME/opt/DAGMC/DAGMC
mkdir bld
cd bld
cmake ../. -DBUILD_MCNP5=ON -DBUILD_MCNP_MPI=ON -DCMAKE_INSTALL_PREFIX=$HOME/opt/DAGMC -DBUILD_TALLY=ON -DMCNP5_DATAPATH=$HOME/opt/MCNPDATA -DMOAB_DIR=$MOAB_DIR -DCMAKE_C_COMPILER=/usr/bin/mpicc -DCMAKE_CXX_COMPILER=/usr/bin/mpicxx -DCMAKE_Fortran_COMPILER=/usr/bin/mpif90
make
make install

添加路径到~/.bashrc

1
2
export PATH=$PATH:$HOME/opt/DAGMC/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/DAGMC/lib

编译带用于R2S的源子程序的DAGMC

上面的步骤是编译DAGMC的通用流程。但是当我们需要配合PyNE进行R2S计算的DAGMC时,需要修改源子程序,修改及其编译说明可以参考官方文档

如果是第一次安装DAGMC,想直接安装配合PyNE的DAGMC,那么需要上述安装步骤的patch之后配置之前加入如下步骤:

  1. Navigate to the folder MCNP5/Source/src.
  2. Soft-link the following files into this folder:
    • pyne/src/source_sampling.cpp
    • pyne/src/source_sampling.h
    • pyne/src/measure.cpp
    • pyne/src/measure.h
  3. Remove the pre-existing empty source.F90 file.
  4. Soft-link pyne/share/source.F90.
  5. Open the file MCNP/Source/src/FILE.list.
  6. Edit file, add CXX_SRC under C_SRC to include the additional source files. It should look like “CXX_SRC := measure.cpp source_sampling.cpp”.

然后接着配置之后的步骤进行即可。

如果是已经安装过DAGMC,则可以省去patch及patch之前的步骤,直接使用上面的修改,然后进行配置编译即可。

备注: 进行上述修改步骤时,必须注意两点:

  1. 确保系统路径中的MOAB版本>=5.1, 注意$MOAB_DIR
  2. 确保pyne的branch是你需要的branch
  3. 安装完后请务必用小例子进行测试。请注意mpirun的版本,如果电脑上同时有mpich和openmpi,当使用mpich编译程序,但用openmpi的mpirun运行,会出现同时有多个线程独立运行而不是并行计算的情况。

服务器配置DAGMC可能出现的错误

GNU版本问题

经过实践发现,GNU 7.2.0版本的会导致DAG-MCNP6编译失败,错误表现为编译Source/regl/regl_setup_mod.F90时, WRITE语句出现Syntax Error.
而GNU 7.3.1, 7.4.0和9.1.0经过测试能够编译成功。因此编译DAG-MCNP时应该使用GNU >= 7.3.1。
PS: 使用高版本GNU时,可能会出现系统上或anaconda3/lib中的libstdc++.so版本低,导致出现”GLIBCXX_3.4.2*“找不到的问题,需要把libstdc++.so更新一下。使用conda update conda或者 conda install -c anaconda libstdcxx-ng可以解决这个问题。
PS1: conda update conda或者conda install -c anaconda libstdcxx-ng是出现“InvalidVersionSpecError: Invalid version spec: =2.7”这样的问题的话,可以把~/.condarc中包含”conda-forge”的channel删掉重试即可,可以参考这里.

HDF5兼容性问题

MOAB/DAGMC/PyNE/OpenMC这些软件是我经常要配置在服务器的。其中MOAB/PyNE/OpenMC使用Python3环境。但由于服务器不能像台式机那样sudo apt install/pip install将软件装在系统目录,使用anaconda创建环境是我目前使用的方案。
这样就出现一个问题,MOAB/DAGMC/PyNE/OpenMC本身依赖HDF5,而conda环境中的一些软件包也使用HDF5环境。如果两个地方使用的版本不一致,则会导致程序可以编译,但执行时HDF5文件无法正常打开调研,导致运行失败。
由于conda环境中的一些软件包不能便捷的使用外部HDF5,因此,为了统一HDF5,则使用conda中的HDF5来编译MOAB/DAGMC/PyNE/OpenMC,这时需要将anaconda3/lib加入到LD_LIBRARY_PATH以便这些程序运行时可以找到HDF5的动态链接库。