Installation/Mac OS/OpenFOAM 2.1.x

From OpenFOAMWiki

This is a transcript and subsequent improvements on the guide made by Michael Plagge. The original PDF: Compiling Manual OpenFOAm Mac OS X.pdf



1 Basic requirements

This manual assumes that the reader is familiar with Mac OS X, the installation of applications as well as with basic commands in the Terminal.app. This manual covers the installation of OpenFOAM on Mac OS X 10.6.8, also called Snow Leopard.

What do you need?

  • Apple Mac OS X 10.6.8
  • Apple Developer Tools 3.2.6 (delivered on the DVDs you’ve got with your mac, or you can download this here: developer.apple.com)
  • MacPorts software, you can download this here: www.macports.org

For downloading the Apple Developer Tools you might have to become a member of the Apple developer site, it is still free.

How do I know if the above mentioned software is already installed?

  1. Open the Terminal.app, which you will find in your /Applications/Utilities folder:
    Howto install OpenFOAM v21 Mac-images-000.ppm.png
  2. Type:
    gcc -v

    the output should look like this:

    Howto install OpenFOAM v21 Mac-images-002.ppm.png
  3. Check for the MPI installation as well by typing:
    mpirun -V
    Note: the option -V is different from -v
  4. After installing the MacPorts software - see www.macports.org/install.php for installation guide - we check the installation with:
    sudo port selfupdate
    Note: you have to confirm the sudo command with your password.
  5. Now we are installing the GCC 4.6 by entering:
    sudo port install gcc46

    on the command line. After the operation is done you could check the version and it should look like this:

    Howto install OpenFOAM v21 Mac-images-008.ppm.png
  6. You should also install flex and bison:
    sudo port install flex
    sudo port install bison


2 Installing and compiling OpenFOAM 2.1 with GCC 4.6 and OpenMPI 1.5.4

This section is divided into various sub-sections, detailing each step.


2.1 Create a disk image

First, we create a disk image with the Apple Disk Utility. Open /Applications/Utilities/Disk Utility. Click New Image:

Howto install OpenFOAM v21 Mac-images-010.ppm.png

It is important to set as Format: Mac OS Extended (Case-sensitive,Journaled). The sparse image will grow with the place used inside the image. Create a sparse image with the following settings (examples, you could change the values):

Howto install OpenFOAM v21 Mac-images-012.ppm.png

2.2 Get the OpenFOAM source code and patches

Go to the directory of the image by typing:

cd /Volumes/OpenFOAM-v2.1

Use a browser to download the archives of OpenFoam 2.1 and ThirdParty 2.1 from here and copy the archives into the image. Extract the archives by double clicking on each one. Then download the patches created by Bernhard Gschaider, available here and here (latest incarnation of the patch from 25th January 2013. The patches for special gcc-versions in the first link are still valid)

Copy or move them into the image. Your image content should look like this:

Howto install OpenFOAM v21 Mac-images-016.ppm.png

Move the appropriate patches into the directories, see below:

Howto install OpenFOAM v21 Mac-images-018.ppm.png

2.3 Apply patches and tweaks

Change into the Third-Party directory and apply the first patch via:

patch -p1 <ThirdParty-2.1.0-Mac.patch

Change into the OpenFOAM directory and apply the patch via:

patch -p1 < OpenFOAM-2.1.x-Mac.patch
Howto install OpenFOAM v21 Mac-images-020.ppm.png

The end of the output should look like this:

Howto install OpenFOAM v21 Mac-images-022.ppm.png

Add executive rights to a python script like this:

Commands used in this picture:
ls bin/addr2line4Mac.py
ls -l bin/addr2line4Mac.py
chmod a+x bin/addr2line4Mac.py
ls -l bin/addr2line4Mac.py

It is now an executable script because of the permissions shown (x means executable):

-rwxr-xr-x  1 mplagge  staff  737  Jan 22 18:05 bin/addr2line4Mac.py


Apply the second patch for the compiler, in this case we use the GCC 4.6 so choose the right patch by typing:

patch -p1 < OpenFOAM-2.1.x-Mac-gcc46.patch

Open the file OpenFOAM-2.1.0/etc/bashrc with a text editor (e. g. Text Wrangler, pico or nano) and:

  1. Find this line:
    export WM_COMPILER=Gcc

    And change to this:

    export WM_COMPILER=Gcc46
  2. Add these lines:
    ulimit −n 1024
    export WM_NCOMPPROCS=4

    A few notes about these two lines:

    • Apparently it's best that you manually write these two lines instead of copy-pasting, because apparently some weird characters will show up on your file (source).
    • The first entry is to increase the number of files which one process may open at a time;
    • The second entry you should set to the number of processes your CPU could manage in parallel, e.g. 4, 8, 16, ...
    • If you don't know how many your machine can handle, then run:
      sysctl -n hw.ncpu
  3. Now go to the end of this file and add the following two lines:
    export WM_CC='gcc-mp-4.6'
    export WM_CXX='g++-mp-4.6'


The resulting OpenFOAM-2.1.0/etc/bashrc file should look similar to this:

Note: this only shows how the first 2 points look like. The 3rd point should be as simple as pasting the code in point 3 :
export WM_CC='gcc-mp-4.6'
export WM_CXX='g++-mp-4.6'
at the end of this file.

2.4 Final preparations before building

Go back to your home directory by simply typing:

cd

Then create a symbolic link with:

ln -s /Volumes/OpenFOAM-v2.1 OpenFOAM
Howto install OpenFOAM v21 Mac-images-028.ppm.png

2.5 Source bashrc

Go back to your home directory again. Now you have to source the settings by running:

. OpenFOAM/OpenFOAM-2.1.0/etc/bashrc
Howto install OpenFOAM v21 Mac-images-030.ppm.png

No error or other output should occur.


2.6 Building OpenFOAM

Now we go to the OpenFOAM directory and start compilation. Take a coffee. And a cookie. Or two:

Howto install OpenFOAM v21 Mac-images-032.ppm.png

If you also want to keep a log-file in case of errors, type:

./Allwmake 2>&1 | tee make.log

If don't want to see what is happening during the build until it's completed, run:

./Allwmake > make.log 2>&1

When the command returns control to you, then run it a second time, which will generate a summary of what has been built successfully and what it is still trying to build due to a previous error.

When the control is returned back to you once again, everything should theoretically have built properly. Nonetheless, start reading the following section Diagnosing problems for more information on how to assess if everything is OK.

2.6.1 Diagnosing problems

You can check if there are any errors by opening the file make.log with a text editor and search for lines have the expression "Error " (including the space after the word "Error").
Keep in mind that if your terminal is returning error messages in another language, then you should search for the respective word for "Error".

If you do find errors, the first one is usually the one to blame for all of the other errors.

Note: There have been several issues found by others on the forum. The latest summary list of suggested fixes are reported on post #285 at the thread "OF 1.9 (aka OF 2.1) on Mac OS X".

If you are still unable to figure out what's wrong, then:

  1. Edit the file make.log with a text editor, search and replace any sensitive information, such as user names and folder paths.
  2. Rename the log-file so that it is unique, preferably with data and user-name. For instance: make_20130401_bgschaid.log
  3. Pack the log file. For instance with GNU zip if it is only a single file:
    gzip make_20130401_bgschaid.log

    Only tarball it if there are additional files required to diagnose the probelm:

    tar -czf make.log_20130401_bgschaid.tar.gz make_20130401_bgschaid.log wmake/rules/darwinModified
  4. Go to the chapter Got Questions? and post the file make_foo.gz in the mentioned forum thread, along with your question(s).

2.6.2 Used OpenMPI-version

There were problems reported with the compiling of the OpenMPI-verson in the ThirdParty-directory. It is recommended to either use the OpenMPI that comes with the Mac (which is a quite old version) or install the OpenMPI from MacPorts (which is usually the latest stable version) with

sudo port install openmpi

and then set

export WM_MPLIB=SYSTEMOPENMPI

either by editing etc/bashrc in the OpenFOAM-directory or in the file (create if necessary) ~/OpenFOAM/site/2.1.x/prefs.sh (use the appropriate version number)

2.6.3 Permanent Installation

To make your OpenFOAM installation ready to be used on the next reboot, edit your personal ~/.bashrc file and add the following line to the end of the file (in a new line!):

alias of21='hdiutil attach "/PATH/TO/YOUR/DMG/OpenFOAM.dmg" -mountpoint "$HOME/OpenFOAM" > /dev/null ; . $HOME/OpenFOAM/OpenFOAM-2.1.0/etc/bashrc'

Then next time you start a new terminal, simply run:

of21

That will make the OpenFOAM installation ready to be used.

Reference: OF 1.9 (aka OF 2.1) on Mac OS X - post #159

2.6.4 Multiple Versions

In case you want to have several OpenFOAM builds - such as having all versions 2.1.0, 2.1.1 and 2.1.x - then you can keep them all in the same disk image and have the following lines in your personal ~/.bashrc file:

alias of210='hdiutil attach "/PATH/TO/YOUR/DMG/OpenFOAM.dmg" -mountpoint "$HOME/OpenFOAM" > /dev/null ; . $HOME/OpenFOAM/OpenFOAM-2.1.0/etc/bashrc'
alias of211='hdiutil attach "/PATH/TO/YOUR/DMG/OpenFOAM.dmg" -mountpoint "$HOME/OpenFOAM" > /dev/null ; . $HOME/OpenFOAM/OpenFOAM-2.1.1/etc/bashrc'
alias of21x='hdiutil attach "/PATH/TO/YOUR/DMG/OpenFOAM.dmg" -mountpoint "$HOME/OpenFOAM" > /dev/null ; . $HOME/OpenFOAM/OpenFOAM-2.1.x/etc/bashrc'

3 Installing and using ParaView

Note: Part of these instructions were retrieved from here.

Follow these steps:

  1. Install ParaView from here.
  2. For example, the resulting installation will provide the paraview binary at:
    /Applications/ParaView\ 3.14.0.app/Contents/MacOS/paraview
  3. Create a symbolic link to ParaView into your OpenFOAM installation, by running this command (adjust accordingly to your ParaView version):
    ln -s /Applications/ParaView\ 3.14.0.app/Contents/MacOS/paraview $WM_PROJECT_DIR/bin/paraview

    Note: $WM_PROJECT_DIR is where OpenFOAM is installed.

  4. Edit the file ~/.alias (e. g. Text Wrangler, pico or nano); for example:
    nano ~/.alias
  5. And add the following lines:
    alias parax="touch case.foam && paraview --data=case.foam &"
    alias paraFoam="paraFoam -builtin"

    Notes:

    • parax can be used as a quick way for opening OpenFOAM case files, without the need for the OpenFOAM environment to be active or installed.
    • The alias paraFoam will run the real paraFoam script with the default option for using the internal OpenFOAM reader that ParaView has got.
  6. Either start a new terminal or source the file by running:
    . ~/.alias
  7. Whenever you need to run paraFoam, you can run either one of the following commands (as explained above):
    parax
    paraFoam

4 Got Questions?

If you've got questions about this installation process, go to the thread OF 1.9 (aka OF 2.1) on Mac OS X, read it from beginning to end and if you still have a question, ask it on that thread!