Affichage des articles dont le libellé est build. Afficher tous les articles
Affichage des articles dont le libellé est build. Afficher tous les articles

vendredi 21 février 2014

Building OpenFOAM 2.3.0 on OS X. Tk.2

NB! Updated version of the guide can be found in the post Building OpenFOAM on OS X. Update.

After I've made patches for OpenFOAM 2.3.0 to build it with clang I came upon post by Bernhard Gshaider where he decided to drop ThirdParty source packs as all necessary software can be installed with Macports. Since all software from ThirdParty package can be installed with Homebrew (except you don't need to install gcc with all the stuff Macports pull with it), I've made this patch.

Installation is more or less straight-forward:
  1. Download OpenFOAM-2.3.0.tgz source pack
  2. Download patch.
  3. Create disk image with CASE SENSITIVE file system. Guide with pictures is on OpenFOAM wiki. Usually guides suggest sparseimage format though sparsebundle format is more convenient for the systems with active backup software.
  4. Mount created image into $HOME/OpenFOAM (hdiutil attach -quiet -mountpoint $HOME/OpenFOAM <your disk image file>)
  5. Unpack source archive into $HOME/OpenFOAM. Assuming you've downloaded it in $HOME/Downloads you can do the following:
    $ cd $HOME/OpenFOAM
    $ tar xzf ~/Downloads/OpenFOAM-2.3.0.tgz
  6. Copy patch into $HOME/OpenFOAM/OpenFOAM-2.3.0 folder
    $ cd $HOME/OpenFOAM/OpenFOAM-2.3.0
    $ cp ~/Downloads/OpenFOAM-2.3.0-3.patch .
  7. Apply patch with git apply OpenFOAM-2.3.0-3.patch
  8. Install third party software. I assume you're using Homebrew as a package manager, so you need to do:
    $ brew install open-mpi gmp mpfr boost gcal
  9. Now you can initialize environment variables for OpenFOAM with $ source etc/bashrc
    (or you can first edit this file if you're installing OpenFOAM somewhere but $HOME/OpenFOAM/OpenFOAM-2.3.0)
  10. Now you are ready to execute ./Allwmake
And that's it.

jeudi 20 février 2014

Building OpenFOAM 2.3.0 on OS X

NB! Updated version of the guide can be found in the post Building OpenFOAM on OS X

Recently OpenFOAM Foundation announced release of OpenFOAM 2.3.0. So I've decided to make patches to build this version with Clang.

Notes:
  1. Build process was tested on OS X 10.9 with Clang version: Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
  2. In this version CGAL library appeared which depends on boost, gmp, mpfr, and cmake. I use Homebrew as a package manager so patches assume that boost, gmp, and mpfr are installed with brew. Basically I use this package manager to get installation prefixes for the libraries.
  3. I have multi-threaded build of boost intalled (--without-single option of the package) so build was tested with this version (i.e. libraries have -mt suffix). If you have single threaded libraries installed makeCGAL script will try to adjust build options, though this wasn't tested.
  4. Paraview is downloaded from paraview.org and installed in /Applications
Instruction is rather similar to the previous one:
  1. Download OpenFOAM sources from openfoam.org: OpenFOAM-2.3.0.tgz and ThirdParty-2.3.0.tgz
  2. Download patches: OpenFOAM-2.3.0-2.patch and ThirdParty-2.3.0-1.patch
  3. Create disk image with CASE SENSITIVE file system. One can find instructions with pictures in OpenFOAM wiki.
  4. Mount created disk image to $HOME/OpenFOAM (for example, it can be done with command hdiutil attach -quiet -mountpoint $HOME/OpenFOAM <your disk image file>).
  5. Unpack source archives to $HOME/OpenFOAM (if you downloaded files elsewhere, correct paths to archives)
    $ cd $HOME/OpenFOAM
    $ tar xzf ~/Downloads/OpenFOAM-2.3.0.tgz
    $ tar xzf ~/Downloads/ThirdParty-2.3.0.tgz
  6. Copy patches into correspondent directories:
    $ cp ~/Downloads/OpenFOAM-2.3.0-2.patch OpenFOAM-2.3.0/
    $ cp ~/Downloads/ThirdParty-2.3.0-1.patch ThirdParty-2.3.0/
  7. Apply patches with git apply command. I prefer using git (instead of patch) for this because git will get permissions on created files (for example addr2line4Mac.py will be created as an executable).
    $ cd OpenFOAM-2.3.0
    $ git apply OpenFOAM-2.3.0-2.patch
    $ cd ../ThirdParty-2.3.0
    $ git apply ThirdParty-2.3.0-1.patch
    $ cd ../OpenFOAM-2.3.0
  8. Edit etc/bashrc to correspond to your system and desires. Major changes that can be done are:
    • Change export WM_MPLIB=SYSTEMOPENMPI to export WM_MPLIB=OPENMPI if you'd like to use OpenMPI from ThirdParty source distribution (version 1.6.5). I use Homebrew installed OpenMPI 1.7.4.
    • Remove verbosity by changing export FOAM_VERBOSE=1 to export FOAM_VERBOSE=0
  9. Source etc/bachrc
  10. Execute ./Allwmake
  11. Wait.
Build process will take some time, after you can test installation with traditional:
$ mkdir -p $FOAM_RUN 
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity .
$ cd cavity
$ blockMesh
$ icoFoam


To mount disk image automatically upon every launch of terminal you can add something like:

# OpenFOAM
if [ -f $HOME/.OpenFOAM-release ]; then
OF_VER=$(cat $HOME/.OpenFOAM-release)
if [ ! -f $HOME/OpenFOAM/OpenFOAM-$OF_VER/etc/bashrc ]; then
hdiutil attach -quiet -mountpoint $HOME/OpenFOAM OpenFOAM-$OF_VER.sparsebundle &&
. $HOME/OpenFOAM/OpenFOAM-$OF_VER/etc/bashrc
else
. $HOME/OpenFOAM/OpenFOAM-$OF_VER/etc/bashrc
fi
fi

to .profile file and create .OpenFOAM-release file with

$ echo '2.3.0' > $HOME/.OpenFOAM-release

This snippet assumes that you've names your disk image OpenFOAM-2.3.0.sparsebundle.

That's it.

dimanche 22 décembre 2013

Building OpenFOAM 2.2.2 on OS X with clang

NB! Updated version of the guide can be found in the post Building OpenFOAM on OS X

There are several instructions for building OpenFOAM on OS X (1, 2). They assume that you are using Macports which was not a case with me. So I've decided to build OpenFOAM with clang as it comes with developer tools. My patches are based upon ones by Bernhard Gschaider, basically I've applied his patches, removed Macports stuff and added clang stuff. Patches and build process was tested on OS X 10.9 with clang --version:

Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

So, to build OpenFOAM you need:
  1. Download OpenFOAM and Third-Party source packs here.
  2. Create a disk image with Disk Utility. One needs this image to create case sensitive file system (see 1 or 2 for instructions with pictures).
  3. Download patches for OpenFOAM and Third-Party source packs. They assume you are building 64-bit version of the code as there're no wmake rules for 32-bit compilation.
  4. Mount created disk image to $HOME/OpenFOAM
  5. Unpack source packs to $HOME/OpenFOAM
  6. Copy patch files to source folders (OpenFOAM-2.2.2-1387556919.patch to OpenFOAM-2.2.2, ThirdParty-2.2.2-1387556964.patch to ThirdParty-2.2.2).
  7. Apply patches with git apply [patch file name] command. In addition to changing contents of the files git sets modes so you won't need to do chmod 0755 [file] on executable files created by the patches.
  8. Edit $HOME/OpenFOAM/OpenFOAM-2.2.2/ets/bashrc file to correspond to your system. I've tested build with OPENMPI (1.6.3, in ThirdParty source pack), and with SYSTEMOPENMPI (1.7.3, installed with Homebrew, I guess if you're using Macports you'll need to modify wmake rules).
  9. Source bashrc with source etc/bashrc
  10. Now you can execute Allwmake script to build OpenFOAM.
To mount disk image and source OpenFOAM's bashrc file automatically each time you launch Terminal one can add following lines to $HOME/.profile file:
# OpenFOAM
if [ -f $HOME/.OpenFOAM ]; then
    OF_VER=$(cat $HOME/.OpenFOAM)
    if [ ! -f $HOME/OpenFOAM/OpenFOAM-$OF_VER/etc/bashrc ]; then
        hdiutil attach -quiet -mountpoint $HOME/OpenFOAM OpenFOAM-$OF_VER.dmg &&
            . $HOME/OpenFOAM/OpenFOAM-$OF_VER/etc/bashrc
    else
        . $HOME/OpenFOAM/OpenFOAM-$OF_VER/etc/bashrc
    fi
fi
And create $HOME/.OpenFOAM file with OpenFOAM version in it with:
echo '2.2.2' > $HOME/.OpenFOAM
Now you can test installation with standard icoFoam run:
$ mkdir -p $FOAM_RUN
$ run
$ cp -r $FOAM_TUTOTALS/incompressible/icoFoam/cavity .
$ cd cavity
$ blockMesh
$ icoFoam
Also maybe it's worth to move $FOAM_RUN folder somewhere outside of disk image and create symlink.

That's it.