Installation von MCNPX mit MPI unter Fedora 22/23

Für die Simulation der Wechselwirkungen von Elementarteilchen stehen zahlreiche Simulationsprogramme zur Verfügung. Ich nutze aus verschiedenen Gründen das MCNPX-System (Monte Carlo N-Particle eXtended) des Los Alamos National Labaratory. Zum Einen ist die Beschäftigung mit solchen Systemen sehr komplex und ich bin das System einfach gewohnt… zum Anderen schätze ich inzwischen den Aufbau und die Modularität der Input Files, welche die Architektur und sämtliche Randbedingungen der Simulationen enthalten.

Die folgende Installationsanleitung bezieht sich auf Fedora 22/23 in der 64-Bit-Version. Ich kompiliere die Version 2.7 mit MPI (Message Passing Interface), um für einzelne Anwendungen alle CPU-Kerne nutzen zu können.

In einem ersten Schritt steht (wenn nicht bereits vorhanden) die Installation der notwendigen Pakete zum Kompilieren an:

sudo dnf install libX11-devel.x86_64 gcc-gfortran.x86_64 gcc-c++.x86_64 mpich.x86_64 mpich-devel.x86_64

Ich habe im Home-Verzeichnis einen MCNPX-Ordner, in welchem ich den Quellcode von MCNPX gespeichert habe. Diesen kopieren wir nun ins Root-Verzeichnis:

sudo cp -r mcnpx /usr/local/src

und wechseln danach in den Ordner /usr/local/src/mcnpx. Es sind einige Anpassungen notwendig, um MCNPX zur Mitarbeit zu bewegen. Dazu sind die folgenden Befehle nacheinander einzugeben:

sudo sed -i 's/integer(ki4), external :: iargc/integer(ki4) :: iargc/g'  src/bertin/getexm.F
sudo sed -i 's/integer(ki4), external :: iargc/integer(ki4) :: iargc/g'  src/htape3x/getexm.F
sudo sed -i 's/integer(ki4), external :: iargc/integer(ki4) :: iargc/g' src/mcnpx/mcnpf/getexm.F
sudo sed -i 's/integer(ki4), external :: iargc/integer(ki4) :: iargc/g' src/phtlib/getexm.F
sudo sed -i 's/integer(ki4), external :: iargc/integer(ki4) :: iargc/g' src/xsex3/getexm.F
sudo find -name "configure" -print -exec sed -i -e "s/-lstdc++-static/-lstdc++/ g" {} \;

Seit der Version 2.7c wird gfortran unterstützt und so entfallen viele Compiler-Flags. Dennoch ist das Configure durch die Verwendung von MPI etwas länglich 😉

sudo ./configure --prefix=/usr/local/mcnpx --with-FC=/usr/lib64/mpich/bin/mpifort --with-FFLAGS="-DUNIX=1 -DLINUX=1 -DG95=1" --with-MPILIB="-L/usr/lib64" --with-MPIINC=/usr/include/mpich-x86_64 --x-libraries=/usr/lib64 --x-include=/usr/include

Das anschließende „Make“ und „Make Install“ sollte fehlerfrei durchlaufen. Wir wechseln nun in das neu erstellte MCNPX-Verzeichnis mit den erstellten Binaries:

cd /usr/local/mcnpx/bin

und kopieren die Bibliotheken in dieses:

sudo cp ../lib/* .

In einem letzten Schritt müssen wir dem System noch mitteilen, wo sich MCNPX genau befindet, damit der Aufruf leichter fällt:

cd ~ 
echo "export MCNPX_HOME=/usr/local/mcnpx/bin" >> .bashrc 
echo "export PATH=$PATH:/usr/local/mcnpx/bin:/usr/lib64/mpich/bin" >> .bashrc 
echo "export DATAPATH=/usr/local/mcnpx/lib" >> .bashrc

Nach einem erneuten Anmelden in Ihrem System können Sie MCNPX über das Terminal starten.