How to install Chaste on Ubuntu in preparation for using the MATLAB interface to cell-based Chaste

This guide is only for set up. The files for operating the MATLAB interface for cell-based Chaste have not yet been released.

This guide is the result of the project undertaken by Tom Dunton at the MathWorks. It is known to work with Chaste (revision 15715) and MATLAB R2012a - stray from these versions at your own risk. These instructions have been followed successfully on 64bit versions of Ubuntu 11.10 and 12.04. To avoid conflicting with any existing versions of Chaste, it is advisable to install Ubuntu as a virtual machine on your current system - at least that is what I did while working on the Windows computers at the MathWorks.

MATLAB is distributed with its own versions of BLAS, LAPACK, Boost, CVODE, HDF5, Xerces (almost all of the libraries that Chaste uses!). To circumvent the issues this raises, we have to rebuild some of Chaste's dependencies, so that they use MATLAB's versions of some libraries.

Throughout this guide, you should be able to copy the entire text within each command box and past it into a terminal window to complete the installation.

Prerequisites

Chaste

Install the Chaste dependencies with the following commands. These are taken from the installation instructions for the chaste-dependencies.deb package.

sudo bash -c 'echo "deb http://www.cs.ox.ac.uk/chaste/ubuntu /" >> /etc/apt/sources.list.d/chaste.list'
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 422C4D99
sudo apt-get update
sudo apt-get install --install-recommends chaste-dependencies
sudo apt-get install `dpkg -s chaste-dependencies | egrep "^Suggests" | \
cut -d "," -f 1-111 --output-delimiter " " | cut -d ":" -f 2`

Matlab

You must then install MATLAB (version R2012a) before proceeding.

Environmental variables

In order for Chaste's hostconfig system to work successfully, the following environmental variables need to be set in your $HOME/.profile file. These environment variables are read by the Chaste host configuration script attached to this guide (local.py). The examples given below should be correct if you installed Chaste's dependencies using the instructions above and used the default installation options for MATLAB. If you used different options, you will need to change these locations to match your configuration, both in these instructions and within local.py.

CHASTE
Directory where you will install Chaste and any re-compiled dependencies (default is $HOME/Chaste).
MATLABROOT
Root directory of your MATLAB installation (default is /usr/local/MATLAB/R2012a).
DOWNLOAD_DIR
Download location of the files attached to this guide (default is $HOME/Downloads ).
echo "export CHASTE=$HOME/Chaste" >> $HOME/.profile
echo "export MATLABROOT=/usr/local/MATLAB/R2012a" >> $HOME/.profile
echo "export DOWNLOAD_DIR=$HOME/Downloads" >> $HOME/.profile
 

Before performing the steps outlined below, you need to download all of the attached files to $DOWNLOAD_DIR - click on each attachment, then at the bottom of the page there is a link to download in original format. You will also need to log out and back in again, so that your modified .profile file is loaded.

PETSc

The BLAS and LAPACK libraries used by MATLAB do not use int, but instead use ptrdiff_t, so we have to recompile PETSc after applying the attached petsc.patch file. We also have to stop PETSc from catching the signal SIGSEGV, since MATLAB uses this for internal communication. To compile PETSc with the necessary changes, execute these commands in a terminal window.

mkdir -p $CHASTE
cd $CHASTE
wget ftp://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.1-p4.tar.gz
tar xvzf petsc-3.1-p4.tar.gz
rm -f petsc-3.1-p4.tar.gz
mv petsc-3.1-p4 petsc
cd petsc
patch -p0 <$DOWNLOAD_DIR/petsc.patch
export PETSC_DIR=$(pwd)
export PETSC_ARCH=openmpi-debug 
./config/configure.py --LDFLAGS="-Wl,-rpath,$MATLABROOT/bin/glnxa64,-rpath,$MATLABROOT/sys/os/glnxa64" \
--with-blas-lib=$MATLABROOT/bin/glnxa64/libmwblas.so --with-lapack-lib=$MATLABROOT/bin/glnxa64/libmwlapack.so \
--download-openmpi=1 --download-hypre=1 --with-x=0 --with-clanguage=cxx --with-shared=1 --CXXFLAGS="-DPETSC_MISSING_SIGSEGV"
make all
 

For any PETSc test to pass, you will need to force it to load the newer versions of the gfortran and stdc++ libraries, which are shipped with Ubuntu, eg. for running the post-install tests of PETSc, you would issue the following command instead of that issued by the builder.

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgfortran.so.3:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 make test
 

Boost

MATLAB ships with Boost 1.44, but this version is known to have some bugs with the serialization (see https://svn.boost.org/trac/boost/ticket/4842 here for details). We will therefore need to install a patched Boost, keeping to the same version as that used by MATLAB to avoid conflicts.

mkdir -p $CHASTE
cd $CHASTE
wget http://downloads.sourceforge.net/project/boost/boost/1.44.0/boost_1_44_0.tar.gz
tar xvzf boost_1_44_0.tar.gz
rm -f boost_1_44_0.tar.gz
mv boost_1_44_0 boost
cd boost
patch -p0 <$DOWNLOAD_DIR/boost.patch
./bootstrap.sh --prefix=. --with-libraries=serialization,system,filesystem
./bjam install
 

HDF5

We also need to install the correct version of HDF5 for MATLAB (v1.8.6).

cd $CHASTE
wget http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.6/src/hdf5-1.8.6.tar.gz
tar xvzf hdf5-1.8.6.tar.gz
rm -f hdf5-1.8.6.tar.gz
cd hdf5-1.8.6
export CC=$CHASTE/petsc/openmpi-debug/bin/mpicc
CFLAGS=-O1 ./configure --enable-parallel --prefix=$CHASTE/hdf5 --enable-shared
make
cd test
make check
cd ../testpar
make check
cd ..
make install
cd ..
rm -rf hdf5-1.8.6
unset CC
 

Chaste

Firstly we need to get the Chaste source from the SVN repository.

cd $CHASTE
svn --username anonymous --revision 15715 checkout https://chaste.cs.ox.ac.uk/svn/chaste/trunk/ src

When prompted for your password enter your email address.

cd $CHASTE/src
cp $DOWNLOAD_DIR/local.py python/hostconfig/
 

We should now be able to build Chaste. We must, however, ensure that we preload the gfrotran and stdc++ libraries as described above, otherwise the incorrect versions included in the MATLAB directory will be used. We also need to preload the HDF5 library, to avoid using the version distributed with MATLAB.

cd $CHASTE/src
LD_PRELOAD=$CHASTE/hdf5/lib/libhdf5.so:/usr/lib/x86_64-linux-gnu/libgfortran.so.3:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 \
scons cl=1 build=GccOpt
 

When you have confirmed that all the tests have passed, you must then install the Chaste libraries and headers to a single location.

cd $CHASTE/src
LD_PRELOAD=$CHASTE/hdf5/lib/libhdf5.so:/usr/lib/x86_64-linux-gnu/libgfortran.so.3:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 \
scons co=1 cl=1 build=GccOpt install_prefix=$CHASTE install
 

Finished

Your system is now ready to run the MATLAB interface for cell-based Chaste.