Fire Dynamics Simulator Linux Cluster Installation
Fire Dynamics Simulator (FDS) is a computational fluid dynamics model of fire-driven fluid flow. The software solves numerically a form of the Navier-Stokes equations appropriate for low-speed, thermally-driven flow, with an emphasis on smoke and heat transport from fires. It is also slightly unpleasant to install, but the following notes should make it somewhat easier.
The first step is to select a location to store the subversion repository, or the tarball. Using the former case, for something different, create a build directory and checkout the repository.
mkdir /tmp/build
cd /tmp/build
svn co -r 7032 http://fds-smv.googlecode.com/svn/trunk/FDS/trunk FDS-SMV
Using the awesomeness of environment modules it is relatively easy to switch between different compiled versions of OpenMPI to create different versions of FDS - of which there are a number of options in the FDS-SMV/FDS_Compilation
directory (not the best way to do things). This aside there are a couple of modifications as noted. The make file in each case is a small .csh script.
The PGI version requires those compilers and an install path. Note that it thinks it's creating a binary with "Operton" in the title. You may wish to change this.
cd FDS-SMV/FDS_Compilation/mpi_pgi_linux_64
module load openmpi-pgi
./make_fds.csh
mkdir -p /usr/local/fds/5.5.3-pgi
mv fds5_mpi_pgi_Opteron64 fds5_mpi_pgi
cp fds5_mpi_pgi /usr/local/fds/5.5.3-pgi/
Similar actions can be undertaken for openmpi-gcc and openmpi-intel. Change the intel path according to the compiler actually used.
cd ../mpi_gnu_linux_64/
module load openmpi-gcc
./make_fds.csh
setenv IFORT_COMPILER11 /usr/local/intel/composerxe/composerxe/bin
cd ../intel_linux_64/
module load openmpi-intel
./make_fds.csh
For environment modules, create a module file as appropriate e.g., for the pgi version.
#%Module1.0#####################################################################
##
## FDS-PGI modulefile
##
set ver [lrange [split [ module-info name ] / ] 1 1 ]
set name [lrange [split [ module-info name ] / ] 0 0 ]
set loading [module-info mode load]
set desc [join [read [ open "/usr/local/Modules/modulefiles/$name/.desc" ] ] ]
proc ModulesHelp { } {
puts stderr "\tThis module sets the environment for $name v$ver"
}
module-whatis "$desc (v$ver)"
if { $loading && ![ is-loaded openmpi-pgi/1.7.0 ] } {
module load openmpi-pgi/1.7.0
}
prepend-path PATH /usr/local/$name/$ver