OOF: Finite Element Analysis of Microstructures

Installing OOF2 Prerequsites

oof2 logo

The hardest part of installing OOF2 can be installing the third party libraries that it uses. This page contains explicit instructions for installing the requisite libraries on several different operating systems.

The easiest way to install the libraries that OOF2 requires is to use a package manager, which will automatically configure, build, and install the libraries and all of the additional software that the libraries require. The tricky bit can be knowing which packages to request. This file gives explicit instructions for using package managers on OS X, NetBSD, and various flavors of Linux.

NOTE: These instructions assume that you are a non-admin user, but have sudo privileges. If you are doing this from an admin or root account you may be able to omit the sudo from many of the commands listed here.

[Linux][OpenSUSE] [Ubuntu][Debian] [CentOS][Fedora]
[Macintosh OS X] [MacPorts] [Fink]


If your variety of Linux isn't listed and you successfully installed OOF2 on it, we would appreciate it if you'd tell us what you did, so that we can include your instructions here. Also, Linux distributions and packages sometimes change, so these instructions may be outdated. If they are, please let us know!


Run these commands:

   sudo zypper install python-devel
   sudo zypper install gtk2-devel python-gtk-devel libgnomecanvas-devel
   sudo zypper install liblapack3 lapack blas libblas3
   sudo zypper install libMagick++-devel
   sudo zypper install libbz2-devel
   sudo zypper install gperftools
   sudo zypper install libtool


Run these commands:

   sudo apt-get remove graphicsmagick-libmagick-dev-compat
   sudo apt-get install python-gtk2-dev
   sudo apt-get install libgnomecanvas2-dev
   sudo apt-get install libmagick++-dev
   sudo apt-get install liblapack-dev
   sudo apt-get install bison
   sudo apt-get install libcanberra-gtk-module
You can use apt or apt-get. The first line is only necessary if already have GraphicsMagick installed, but it's harmless if you don't. libcanberra-gtk-module is an indirect requirement that Ubuntu 18.04 seems not to pick up automatically. That line can be omitted on earlier versions, and hopefully on later ones too.

NOTE Ubuntu 20.04 does not support gtk2, so OOF2 currently cannot be installed there. We are upgrading OOF2 to use gtk3.

NOTE OOF2 may run a bit faster if you install the tcmalloc library, which is part of gperftools, which is in the Ubuntu package libgoogle-perftools-dev. However, the distributed version of this package on Ubuntu 16.04 and 16.10 (and maybe others) does not work. If you want to use tcmalloc on Ubuntu download version gperftools-2.5 (or later) from github and build it manually. Use --prefix=/usr/local in the configuration step so that OOF2's setup.py script will locate it.


See Ubuntu. The same packages should work. Also, optionally install gperftools (Debian doesn't seem to have the problems with gperftools that Ubuntu does, possibly because the default compiler is older):

   sudo apt-get install libgoogle-perftools-dev


Run these commands:

   yum install libgnomecanvas-devel
   yum install gtk2-devel pygtk2-devel python-devel
   yum install lapack-devel blas-devel
   yum install bzip2-devel ImageMagick-c++-devel
   yum install libtool
   yum install gperftools-libs
   yum install gcc-c++


Run these commands:

  dnf install redhat-rpm-config
  dnf install libgnomecanvas-devel
  dnf install pygtk2-devel python-devel
  dnf install lapack-devel blas-devel
  dnf install ImageMagick-c++-devel
  dnf install gcc-c++
When setting LD_LIBRARY_PATH, as described in the OOF2 README file, you may have to include prefix/lib64 as well as prefix/lib, and when setting PYTHONPATH , you will need to use prefix/lib64/python2.7/site-packages (instead of the same path without the "64"). (Tested on Fedora 26.)

Macintosh OSX

Two commonly used package managers on OS X are MacPorts and fink. Both should work. If you have neither installed already, it will be easier to use MacPorts.

OOF2 can use either the native Mac graphics (Quartz) or the X11 graphics used by Linux. To use X11, you will need to install an X11 server, which Apple no longer supplies, but which can be downloaded from Mac OS Forge. It's slightly easier to get X11 from MacPorts, if you're using MacPorts.

When the instructions below tell you to type a command, type it in a Terminal window. You can copy and paste the lines from this page.

Macintosh OS X with MacPorts

  1. Install MacPorts from http://www.macports.org/install.php, following their instructions. It's easiest to use the .pkg installer. If you get error messages when running "sudo port -v selfupdate", open a new Terminal window and try again.

  2. If you want to use native Quartz graphics, you will need to ensure that all the ports that you install also use quartz. Edit the file /opt/local/etc/macports/variants.conf and add the line

      -x11 +quartz
    at the bottom.

  3. Type these commands. Some of them may take a while to run, depending on whether or not your computer already has some of the dependencies installed.

          sudo port install pkgconfig
          sudo port install xorg-server   # Skip this if you're using quartz
          sudo port install py27-numpy -atlas 
          sudo port install py27-pygtk
          sudo port select python python27
          sudo port install libgnomecanvas
          sudo port install gperftools
          sudo port install ImageMagick      

    Note: The numpy line is there to tell MacPorts to install the version of numpy that doesn't use atlas. Atlas is a substitute for the blas libraries distributed with OS X, and takes a very very long time to install. If you either already have atlas installed or don't mind waiting for it to build, you can skip the py27-numpy installation step completely. In that case, the default, atlas-using, version of numpy will be installed automatically when you install py27-gtk.

  4. If you get this message when trying to build OOF2

      Can't find pygtk-2.0! Version 2.6 or later required
    then you need to work around a MacPorts bug by setting the PKG_CONFIG_PATH environment variable to /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/pkgconfig before building. For example, if you're using the bash shell, type
      export PKG_CONFIG_PATH=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/pkgconfig
    You can put the line in your .profile file in your home directory to make the change permanent, if you find yourself rebuilding OOF2 frequently for some reason.

Macintosh OS X with fink

We haven't used fink recently, and these instructions are certainly out of date.

  1. Install Xcode from Mac OS Forge.
  2. Install fink, by going to http://www.finkproject.org/download/srcdist.php and following the instructions there. If the bootstrap script asks you to choose a mode and you're on a 64-bit capable Mac, choose 64bit-only.

    If you already have fink installed in 32 bit mode, you don't need to reinstall everything just to change to 64 bit mode. You may need to force ImageMagick to build in 32 bit mode in step 5.

  3. Enable the "unstable" fink packages.

    (a) Run "sudo fink configure", and answer "y" when asked about the unstable tree.

    (b) Run these commands:

           sudo fink selfupdate
           sudo fink selfupdate-rsync
           sudo fink index -f
           sudo fink scanpackages 

  4. Use fink to install the libraries that ImageMagick will require by typing these commands:

           sudo fink install libjpeg
           sudo fink install lcms
           sudo fink install libpng14-shlibs 

  5. Build ImageMagick without OpenMP, which is incompatible with OOF2 on OS X. (NOTE! It may not be necessary to do this step. We haven't tried building OOF2 with fink using a recent version of either fink or OS X. You could try installing ImageMagick with fink by typing sudo fink install imagemagick7-dev and skipping this step. You'll know if it worked if you can successfully load and display an image in OOF2.)

    • Go to http://www.imagemagick.org. Click "Download". Choose a site to download it from. Download the file with the latest version number and the .bz2 suffix.

    • Uncompress and untar the package:

             tar -xjf ImageMagick-<version>.tar.bz2
      where <version> is 6.6.7-10 or something like that.

    • Run these commands:

              cd ImageMagick-<version>
              ./configure LDFLAGS=-L/sw/lib CPPFLAGS=-I/sw/include --disable-openmp

    • Check the output from the configure command. If it says that support for some image format that you need hasn't been included, you probably need to go back to step 4 and install more packages from fink. The "Packages" link on the fink website will let you search for the package name.

      (If the output indicates no support for formats for which you are sure the libraries have been installed, and if it's possible that you have a 32 bit version of fink, try reconfiguring ImageMagick with CPPFLAGS="-I/sw/include -m32" (including the quotation marks!) instead of CPPFLAGS=-I/sw/include. The OOF developers haven't tested this. Please let us know if it works or not.)

    • Build and install ImageMagick by running these commands:

              sudo make install 

  6. Use fink to install the other packages that OOF2 requires by typing these commands, some of which may take a while to run:
           sudo fink install python 
           sudo fink install pygtk2-gtk-py27-dev
           sudo fink install libgnomecanvas2-dev


These instructions are old and have not been tested in a long time.

OOF2 version 2.0.5 and 2.1.1 or later will work on NetBSD. OOF2 version 2.1.0 does not work. These commands were sufficient to install OOF2 on a 32-bit version of NetBSD 5.1. Execute them from a root account.

    echo /usr/X11R7/lib >> /etc/ld.so.conf
    pkg_add pkg-config
    pkg_add py-gobject-shared
    pkg_add py26-gtk2
    pkg_add libgnomecanvas
    pkg_add ImageMagick
    pkg_add freetype2
    pkg_add fontconfig
The first line may not be necessary if you set LD_LIBRARY_PATH.

Installing the prerequisites will provide a program called "python2.6" in /usr/pkg/bin. You can use this to build oof2, but you'll have to invoke it explicitly:

  python2.6 setup.py build --skip-swig --library-dirs=/usr/pkg/lib install
You could also create an alias or symbolic link called "python" that points to /usr/pkg/bin/python2.6, and then you can follow the instructions in README.md without change.