Installation/Mac OS/OpenFOAM 2.1.x
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?
- Open the Terminal.app, which you will find in your /Applications/Utilities folder:
the output should look like this:
- Check for the MPI installation as well by typing:
- After installing the MacPorts software - see www.macports.org/install.php for installation guide - we check the installation with:
sudo port selfupdate
- 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:
- 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:
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):
2.2 Get the OpenFOAM source code and patches
Go to the directory of the image by typing:
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:
Move the appropriate patches into the directories, see below:
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
The end of the output should look like this:
Add executive rights to a python script like this:
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:
- Find this line:
And change to this:
- 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
- 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:
2.4 Final preparations before building
Go back to your home directory by simply typing:
Then create a symbolic link with:
ln -s /Volumes/OpenFOAM-v2.1 OpenFOAM
2.5 Source bashrc
Go back to your home directory again. Now you have to source the settings by running:
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:
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:
- Edit the file make.log with a text editor, search and replace any sensitive information, such as user names and folder paths.
- Rename the log-file so that it is unique, preferably with data and user-name. For instance: make_20130401_bgschaid.log
- Pack the log file. For instance with GNU zip if it is only a single file:
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
- 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:
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:
- Install ParaView from here.
- For example, the resulting installation will provide the paraview binary at:
- 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.
- Edit the file ~/.alias (e. g. Text Wrangler, pico or nano); for example:
- And add the following lines:
alias parax="touch case.foam && paraview --data=case.foam &" alias paraFoam="paraFoam -builtin"
- 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.
- Either start a new terminal or source the file by running:
- Whenever you need to run paraFoam, you can run either one of the following commands (as explained above):
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!