About this wiki
The following best practices document aims to provide some hints and examples on how to install and configure
OpenFOAM-2.0.1 released 04/08/11 on a grid based infrastructure.
Application Description
OpenFOAM (Open Field Operation and Manipulation) CFD Toolbox is a free, open source CFD software package produced by a commercial company,
OpenCFD Ltd.
It has a large user base across most areas of engineering and science, from both commercial and academic organizations.
OpenFOAM has an extensive range of features
to solve anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to solid dynamics and electro-magnetics.
This wiki provides information on how to build
OpenFOAM in a grid-based infrastructure.
Pre-requisites
The instructions from this best practice have been tested on a:
- Processor: Dual Core AMD Opteron(tm) Processor 275;
- Memory: 4147300k
- OS: Scientific Linux SL release 5.4 (Boron)
- Compiler: GNU 4.4.0;
- MPI: Open MPI 1.4.2.
Source Pack
The following tar-zipped gtgz source packs are available for download.
Unpacking the source and installation
In a grid-based infrastructure we would recommend to install the software in the experiment software directory for the VO using sgm privileges and share this software
packages with other VO members. In this wiki we chosen to unpack this software under the
$VO_GRIDIT_SW_DIR directory of the grid CE.
$ cd $VO_GRIDIT_SW_DIR
$ tar xzf OpenFOAM-2.0.1.gtgz
$ tar xzf ThirdParty-2.0.1.gtgz
$ chown -R root.root OpenFOAM-2.0.1/ ThirdParty-2.0.1/
The files unpack to produce directories
OpenFOAM-2.0.1 and
ThirdParty-2.0.1
$ ll OpenFOAM
total 12
drwxr-xr-x 11 sgmgridit001 sgmgridit 440 Nov 28 16:17 OpenFOAM-2.0.1
drwxr-xr-x 12 sgmgridit001 sgmgridit 768 Nov 28 15:57 ThirdParty-2.0.1
System Requirements
OpenFOAM-2.0.1 builds on many Linux distributions but the
ParaView-3.10.1 version supplied in
ThirdParty requires:
Both software packages can be freely downloaded for many Linux distributions.
Before to start building software, please check if the following packages have been installed on the server.
$ yum install bison
$ yum install ncurses-devel
$ yum install tix.x86_64
$ yum install glibc-devel
$ yum install flex
$ yum install flex-devel
$ yum install zlib-devel
$ yum install libXt-devel
$ yum install binutils-devel
$ yum install gmp.x86_64
$ yum install gmp-devel.x86_64
$ yum install libstdc++44-devel.x86_64
Make sure you have GCC 4.4 installed on your server.
$ wget ftp://ftp.ntua.gr/pub/linux/scientificlinux/55/x86_64/SL/gcc44-4.4.0-6.el5.x86_64.rpm
$ rpm -ivh gcc44-4.4.0-6.el5.x86_64.rpm
$ wget ftp://ftp.ntua.gr/pub/linux/scientificlinux/55/x86_64/SL/gcc44-c++-4.4.0-6.el5.x86_64.rpm
$ rpm -ivh gcc44-c++-4.4.0-6.el5.x86_64.rpm
Building Qt-4.6.4
First uncompress the archive in the preferred location, then unpack it:
$ cd /opt/exp_soft/gridit/OpenFOAM/ThirdParty-2.0.1
$ wget ftp://ftp.trolltech.com/qt/source/qt-everywhere-opensource-src-4.6.4.tar.gz
$ tar zxf qt-everywhere-opensource-src-4.6.4.tar.gz
$ chown -R root.root qt-everywhere-opensource-src-4.6.4
$ cd qt-everywhere-opensource-src-4.6.4
$ ./configure
$ gmake && gmake install
Building cmake-2.8.6
$ cd /opt/exp_soft/gridit/OpenFOAM/ThirdParty-2.0.1
$ wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
$ tar zxvf cmake-2.8.6.tar.gz
$ cd cmake-2.8.6
$ ./configure
$ gmake
Makefile changes for GNU compilers
Once you have successfully installed GCC 4.4.0, then changes these files:
$ cd /opt/exp_soft/gridit/OpenFOAM/OpenFOAM-2.0.1/wmake/rules/linux64Gcc44/
$ cat wmake/rules/linux64Gcc44/c
.SUFFIXES: .c .h
cWARN = -Wall
cc = gcc44 -m64 <== Change Here!
include $(RULES)/c$(WM_COMPILE_OPTION)
cFLAGS = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
ctoo = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $$SOURCE -o $@
LINK_LIBS = $(cDBUG)
LINKLIBSO = $(cc) -shared
LINKEXE = $(cc) -Xlinker --add-needed -Xlinker -z -Xlinker nodefs
$ cat wmake/rules/linux64Gcc44/c++
.SUFFIXES: .C .cxx .cc .cpp
c++WARN = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
CC = g++44 -m64 <== Change Here!
include $(RULES)/c++$(WM_COMPILE_OPTION)
ptFLAGS = -DNoRepository -ftemplate-depth-100
c++FLAGS = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC
Ctoo = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $$SOURCE -o $@
cxxtoo = $(Ctoo)
cctoo = $(Ctoo)
cpptoo = $(Ctoo)
LINK_LIBS = $(c++DBUG)
LINKLIBSO = $(CC) $(c++FLAGS) -shared
LINKEXE = $(CC) $(c++FLAGS) -Xlinker --add-needed
Pre-setup requirements
$ cd /opt/exp_soft/gridit/OpenFOAM/OpenFOAM-2.0.1/etc
Configure the
OpenFOAM bashrc file as follows:
- #- Compiler: # WM_COMPILER = Gcc | Gcc43 | Gcc44 | Gcc45 | Gcc46 | Clang | Icc (Intel icc)
export WM_COMPILER=Gcc44
Checking the System
To check your system is ready to build the sources, execute the
foamSystemCheck script (in the
OpenFOAM-2.0.1/bin directory).
If any critical software is missing, or needs updating to a newer version, please contact the system administrator to install the required
software before proceeding to the build.
$ cd /opt/exp_soft/gridit/OpenFOAM/OpenFOAM-2.0.1/bin
$ ./foamSystemCheck
Checking basic system...
-----------------------------------------------------------------------
Shell: /bin/bash
Host: grid012.ct.infn.it
OS: Linux version 2.6.9-89.0.11.ELsmp
User: root
System check: PASS
==================
Continue OpenFOAM installation.
Building Sources
Go to the top-level source directory $WM_PROJECT_DIR and execute the top-level build script
./Allwmake
In principle this will build everything, but if problems occur with the build order it may be necessary to update the environment variables and re-execute.
If you experience difficulties with building the source-pack, or your platform is not currently supported, please contact
software support to arrange a
support contract and we will do the port and maintain it for future releases.
$ cd /opt/exp_soft/gridit/OpenFOAM/OpenFOAM-2.0.1/
$ source etc/bashrc
$ ./Allwmake >log 2>log &
Compiling Paraview 3.10.1 and the PV3FoamReader Module
Paraview is the third-party software that we provide for graphical post-processing in
OpenFOAM. It’s compilation is automated using a script called
makeParaView
in the
ThirdParty-2.0.1 directory.
Installation of Paraview 3.10.1 requires a version of QT that is 3.6.2 or newer and cmake which is 2.8.2 or newer, so again make
sure that this is on your system.
To install Paraview, execute the following:
$ cd $WM_THIRD_PARTY_DIR
$ ./makeParaView
The
PV3blockMeshReader and the
PV3FoamReader ParaView plugins are compiled as usual for
OpenFOAM utilities:
$ cd $FOAM_UTILITIES/postProcessing/graphics/PV3Readers
$ wmSET
$ ./Allwclean
$. /Allwmake
Testing the Installation
To check your installation setup, execute the
foamInstallationTest script (in the
OpenFOAM-2.0.1/bin directory).
If no problems are reported, proceed to getting started with
OpenFOAM; otherwise, go back and check you have installed the software correctly
and/or contact your system administrator.
Getting Started
Create a project directory within the $HOME/OpenFOAM directory named
-2.0.1 and create a directory named run within it, e.g. by typing:
$ mkdir -p $FOAM_RUN
Copy the tutorial examples directory in the OpenFOAM distribution to the run directory. If the OpenFOAM environment variables are set correctly,
then the following command will be correct:
$ cp -r $FOAM_TUTORIALS $FOAM_RUN
Run the first example case of incompressible laminar flow in a cavity:
$ cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity
$ blockMesh
$ icoFoam
$ paraFoam
-- GiuseppeLaRocca - 2011-12-02