Underworld on a 64 bit Opteron Fedora Core 5 Cluster
Underworld is a "3D-parallel geodynamic modelling framework capable of deriving viscous / viscoplastic thermal, chemical and thermochemical models consistent with tectonic processes, such as mantle convection and lithospheric deformation over long time scales.... Underworld utilises a Lagrangian particle-in-cell finite element scheme (the prototype of which is the Ellipsis code), and is visualised using gLucifer."
And, it's a bugger to install, especially on a cluster as venerable as Wexstan. It's done some good work over the years, but it's getting long in the tooth.
Start of with downloading the source file into /usr/local/underworld/
; not that it is not downloaded into a src
directory because it doesn't use autotools, rather it uses SCons (without butter, jam and cream). Untar the source (tar xvf underworld-1.2.0.tar.gz
) and load the various module files that have been previously and painfully constructed:
module load petsc/2.3.3-openmpi-intel
module load pgi/7.2
module load python/2.5.1
module load intel/11.0
module load scons/0.97
Note that this doesn't have mesa or libframe; this will be a non-graphical installation. Some of this software is fairly old... Nevertheless run scons config
and.... it fails.
...
Configuring package PETSc ... (cached)
Trialing candidate 80 of 80 ...
Found 0 valid configurations.
no
Hmmm.. This is a problem, especially given that is most definitely an installation of PETSc. OK, add in a command-line option;
scons config petsc_dir=/usr/local/petsc/2.3.3-p8/
There's a few errors but it does configure; now run scons
to build (i.e., make) the project... and it works!
Now make a modulefile:
cd /usr/local/Modules/modulefiles
mkdir underworld
nano underworld/1.2.0
.. and enter the following:
#%Module1.0#####################################################################
##
## Underworld module
##set ver [lrange [split [ module-info name ] / ] 1 1 ]
set name [lrange [split [ module-info name ] / ] 0 0 ]set dir /usr/local/$name/$ver
proc ModulesHelp { } {
puts stderr "\tThis module sets the environment for $name $ver"
}if { ![ is-loaded petsc/2.3.3-openmpi-intel ] } {
module load petsc/2.3.3-openmpi-intel
}