Install OpenFOAM v2006 on CentOS
This article is a memorandum of the procedure when installing version v2006 of OpenFOAM, which is open source software for fluid analysis, on CentOS 6.x.
Download OpenFOAM
The OpenFOAM binary package and source code can be obtained from the following site.
The first site is by the ESI group. On the other hand, the second site is from the OpenFOAM Foundation. The version with the release date, that is, v2006 (released in June 2020), can be obtained from the former ESI site.
Installation type
You can download Windows, Mac, and Linux binaries from the ESI site. On Windows, you can also install using Windows Subsystem for Linux (WSL). It has been officially confirmed that it can be installed on Ubuntu 16.04LTS, CentOS 7.4, and OpenSUSE Tumbleweed on how to build from source. This article attempts to build OpenFOAM from source on CentOS 6.x.
Installation policy
- OpenFOAM has compiler and library requirements, and the version installed on the system may be old. Instead of updating the compiler library installed on the system, we will build it separately in the third party directory of OpenFOAM to build the environment (do not pollute the original system environment).
- In normal desktop PC installation, it is often installed in
$ Home
, but this time, assuming installation on a calculation server used by other users, install it under/ opt
.
Overview of installation procedure
- Download and install the required rpm package with administrator privileges.
- Download and unzip the source packages required for OpenFOAM main body and third-party builds.
- Edit the environment setting file and build script.
- Build a third party (tool, library).
- Build the main body of OpenFOAM.
- Verify the operation of the built OpenFOAM main unit (solver).
- Build ParaView for visualization.
- Confirm that pre-processing (mesh generation), calculation execution, and post-processing (visualization), which are a series of fluid analysis flows, can be performed.
The ParaView build in step 7 often fails, and if it doesn’t work, give up. ParaView can be installed separately on other than the CentOS server, so you can download the calculation data to your environment and visualize it.
Installation of required rpm packages
The required packages are as follows.
- git, gcc-c++, bison, flex, m4, glibc-devel, glibc-devel.i686, zlib-devel
Install the above packages using yum
with administrator privileges.
$ yum install gcc gcc-c++ bison flex m4 glibc-devel glibc-devel.i686 zlib-devel
Download and deploy OpenFOAM source package
The OpenFOAM package consists of two types: the main source code and a third-party package. Here, create a directory called / opt / OpenFOAM
so that different versions can be managed, and download and extract it with wget
under it.
$ mkdir /opt/OpenFOAM
$ cd /opt/OpenFOAM
$ wget https://sourceforge.net/projects/openfoam/files/v2006/OpenFOAM-v2006.tgz
$ tar zxvf OpenFOAM-v2006.tgz
$ wget https://sourceforge.net/projects/openfoam/files/v2006/ThirdParty-v2006.tgz
$ tar zxvf ThirdParty-v2006.tgz
If you cannot download HTTPS due to authentication, add the option --no-check-certificate
or .wgetrc settings. Please avoid it.
The structure of the directory and file after extracting each package is as follows.
OpenFOAM-v2006/
Allwmake COPYING README.md bin etc src wmake
CONTRIBUTORS.md META-INFO applications doc modules tutorials
ThirdParty-v2006/
ADIOS2-2.4.0 etc makeKAHIP makeParaView
Allclean fftw-3.3.7 makeLLVM makeParaView.example
Allwmake kahip-2.12 makeMETIS makeQt
BUILD.md makeAdios2 makeMGridGen makeSCOTCH
CGAL-4.12.2 makeCCMIO makeMPICH makeVTK
COPYING makeCGAL makeMVAPICH makeVTK.example
ParaView-v5.6.3 makeCmake makeMesa minCmake
README.md makeFFTW makeMesa.example openmpi-4.0.3
Requirements.md makeGcc makeOPENMPI scotch_6.0.9
SOURCES.txt makeGperftools makeOPENMPI.example
boost_1_66_0 makeHYPRE makePETSC
How to build OpenFOAM is described in OpenFOAM® Quick Build Guide, but expanded ʻOpenFOAM-v2006 Carefully read README.md
, Bequirements.md
, and BUILD.md
in and
ThirdParty-v2006, and check
SOURCES.txt`.
Minimal system requirements
Requirements specified on the official website are as follows.
- gcc: 4.8.5
- cmake: 3.8 (required for building ParaView and CGAL)
- boost: 1.48 (required to build CGAL)
- fftw: 3.3.7 (required when using FFT related functions)
- paraview: 5.5.2 (for visualization)
- Qt: 5.9 (required for ParaView build)
The version of Qt that is originally included in CentOS is old, and you need a new version of Qt to use the latest version of ParaView.
Download and deploy the sources required for third-party packages
The compiler libraries required under the above ThirdPart-v2006
are as follows:
(There is a description of the download destination in BUILD.md
).
- gcc-4.8.5, gmp-6.2.0, mpfr-4.0.2, mpc-1.1.0, openmpi-1.10.7(or openmpi-4.0.3), scotch_6.0.9, boost_1_66_0, CGAL-4.12.2, cmake-3.8.2, qt-5.6.3(or qt-5.9.3), fftw-3.3.7, libccmio-2.6.1
The compiler can be an intel compiler other than GCC. It’s okay if the GCC version is newer than 4.8.5, but you’ll need to change the settings that come up later.
GCC
$ cd ThirdParty-v2006
$ wget https://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz
$ tar zxvf gcc-4.8.5.tar.gz
** GNU library (gmp, mpfr, mpc) **
$ wget ftp://ftp.gnu.org/gnu/gmp/gmp-6.2.0.tar.xz
$ tar Jxvf gmp-6.2.0.tar.xz
$ wget ftp://ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.xz
$ tar Jxvf mpfr-4.0.2.tar.xz
$ wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz
$ tar zxvf mpc-1.1.0.tar.gz
OpenMPI
It’s already in a third party dictator.
Scotch
It’s already in a third party dictator.
Boost
It’s already in a third party dictator.
CGAL
It’s already in a third party dictator.
Cmake
$ wget https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz
$ tar zxvf cmake-3.8.2.tar.gz
Qt (qmake)
$ wget http://download.qt.io/new_archive/qt/5.6/5.6.3/single/qt-everywhere-opensource-src-5.6.3.tar.xz
$ tar xvf qt-everywhere-opensource-src-5.6.3.tar.xz
FFTW
It’s already in a third party dictator.
libccmio
Build only if you need the STAR-CCM + mesh converter. The download destination is different from before.
$ wget http://visit.ilight.com/svn/visit/trunk/third_party/libccmio-2.6.1.tar.gz
$ tar zxvf libccmio-2.6.1.tar.gz
Edit config file / build script
OpenFOAM main unit environment settings
Edit the environment settings of OpenFOAM with an appropriate editor such as vi
or ʻemacs. The shell is explained using
bash`.
$ vi ../OpenFOAM-v2006/etc/bashrc
Modification place
# [WM_COMPILER_TYPE] - Compiler location:
# = system | ThirdParty
export WM_COMPILER_TYPE=ThirdParty
If you want to change the label size of the mesh from 32 bits to 64 bits, change it as follows.
# [WM_LABEL_SIZE] - Label size in bits:
# = 32 | 64
export WM_LABEL_SIZE=64
# [WM_MPLIB] - MPI implementation:
# = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPI | MPICH | MPICH-GM |
# HPMPI | CRAY-MPICH | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
# Also possible to use INTELMPI-xyz etc and define your own wmake rule
export WM_MPLIB=OPENMPI
# [projectDir] - directory containing this OpenFOAM version.
# \- When this file is located as $WM_PROJECT_DIR/etc/bashrc, the next lines
# should work when sourced by BASH or ZSH shells. If this however fails,
# set one of the fallback values to an appropriate path.
#
# This can be removed if an absolute path is provided for WM_PROJECT_DIR
# later on in this file
# --
projectDir="${BASH_SOURCE:-${ZSH_NAME:+$0}}";
[ -n "$projectDir" ] && projectDir="$(\cd $(dirname $projectDir)/.. && \pwd -L)" ||\
# projectDir="$HOME/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
projectDir="/opt/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
# projectDir="/usr/local/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
Regarding the specification of the compiler / GNU library, change the specification of the GNU library.
$ vi ../OpenFOAM-v2006/etc/config.sh/compiler
changes
case "$WM_COMPILER_TYPE" in
ThirdParty)
# Default versions of GMP, MPFR, MPC - override as necessary
gmp_version=gmp-6.2.0
mpfr_version=mpfr-4.0.2
mpc_version=mpc-1.1.0
GCC build settings
$ vi makeGcc
** Confirmation point **
先ほど編集したconfig.sh/compiler
からコンパイラ・GNUライブラリのバージョンを参照するので,
The following is just a confirmation.
[ "${WM_COMPILER#Gcc}" = "$WM_COMPILER" ] && WM_COMPILER=Gcc # Force gcc
WM_COMPILER_TYPE=ThirdParty # Ensure we get the correct settings
# Default GCC, mpfr, gmp and mpc versions from OpenFOAM etc/config.sh file:
_foamConfig compiler
gmpPACKAGE=${gmp_version:-gmp-system}
mpfrPACKAGE=${mpfr_version:-mpfr-system}
mpcPACKAGE=${mpc_version:-mpc-system}
gccPACKAGE=$gcc_version
CGAL build settings
Check the CGAL build script in the same way as above.
$ vi makeCGAL
** Confirmation point **
# CGAL, boost and gmp/mpfr versions from OpenFOAM etc/config.sh files.
# Get compiler first and let CGAL config override GMP and MPFR
_foamConfig compiler
_foamConfig CGAL
boostPACKAGE=${boost_version:-boost-system}
gmpPACKAGE=${gmp_version:-gmp-system}
mpfrPACKAGE=${mpfr_version:-mpfr-system}
cgalPACKAGE=$cgal_version
Check the CGAL settings on the OpenFOAM main unit.
vi ../OpenFOAM-v2006/etc/config.sh/CGAL
** Confirmation point **
boost_version=boost_1_66_0
cgal_version=CGAL-4.12.2
FFTW build settings
Check the FFTW build script.
vi makeFFTW
** Confirmation point **
# FFTW version from OpenFOAM etc/config.sh file:
_foamConfig FFTW
fftwPACKAGE=${fftw_version:-fftw-system}
Check the FFTW settings on the OpenFOAM main unit.
vi ../OpenFOAM-v2006/etc/config.sh/FFTW
** Confirmation point **
fftw_version=fftw-3.3.7
export FFTW_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$fftw_version
Third party build
GCC build
First, load the OpenFOAM environment settings.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
At this time, the following message is output, but since GCC has not been built yet, it is a natural error and the GCC build will proceed.
===============================================================================
Warning in /opt/OpenFOAM/OpenFOAM-v2006/etc/config.sh/settings:
Cannot find 'Gcc' compiler installation
/opt/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-4.8.5
Either install this compiler version, or use the system compiler by setting
WM_COMPILER_TYPE to 'system' in $WM_PROJECT_DIR/etc/bashrc.
===============================================================================
$ ./makeGcc
Reload the OpenFOAM environment settings to enable the built Gcc.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
Build cmake
Build Cmake. You need to specify the version as an option.
./makeCmake cmake-3.8.2
Build a third party package
After building Cmake, build the rest of the packages with ʻAllwmake`. Load the OpenFOAM environment settings again before executing.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
$ ./Allwmake
I get the following error when building ADIOS2.
no patch found for ADIOS2-2.4.0
Using cmake=/usr/bin/cmake
CMake Error at CMakeLists.txt:6 (cmake_minimum_required):
CMake 3.6 or higher is required. You are running version 2.6.4
-- Configuring incomplete, errors occurred!
Error building: ADIOS2-2.4.0
---------------------------------------------------
Optional component (ADIOS2) had build issues
OpenFOAM will nonetheless remain largely functional
---------------------------------------------------
It seems that you are not using CMake built under a third party, so set PATH explicitly and rebuild ADIOS2.
$ ./makeAdios2 -cmake $WM_THIRD_PARTY_DIR/platforms/linux64Gcc/cmake-3.8.2/bin/
After the above third-party build is completed, check whether the conditions for building the OpenFOAM main body are met with the following command.
$ foamSystemCheck
System check: PASS
==================
Can continue OpenFOAM installation.
When PASS
is displayed, move on to the build of OpenFOAM itself.
Build the main body of OpenFOAM
Load the OpenFOAM environment settings again and then build. ʻThe Allwmake script is used, but the number of cpu for parallel compilation can be specified with the
-j option, so set it according to the environment. You can also use the alias command
foam to move to the OpenFOAM project directory (installation directory)
$ WM_PROJECT_DIR`.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
$ foam
$ ./Allwmake –j4
If an error occurs and it does not end normally, check the error message to see if there are any missing libraries.
Build verification of OpenFOAM main body
When the build of OpenFOAM itself is completed normally, read the environment settings again and execute the test program.
$ . /opt/OpenFOAM/OpenFOAM-v2006j/etc/bashrc
$ foamInstallationTest
It is OK if the confirmation result such as the library path is output and the following summary is output at the end.
Summary
-------------------------------------------------------------------------------
Base configuration ok.
Critical systems ok.
Done
If Japanese is included in the version output of gcc -v
, the above foamInstallationTest
will result in an error, so before that
export LANG=C
Please do not use Japanese as such.
ParaView build
Build Qt
Check how to specify the version package in makeQt
.
$ more makeQt
** Confirmation point **
# Description
# Build script for QT (the qt-everywhere-opensource-src package)
#
# ----------------------------------------------
# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE
#------------------------------------------------------------------------------
# Run from third-party directory only
cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || {
echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR"
echo " Check your OpenFOAM environment and installation"
exit 1
}
. etc/tools/ThirdPartyFunctions
. etc/tools/QtFunctions
In previous versions of OpenFOAM, the user could specify it in makeQt
, but the setting cannot be changed here. For the time being, I will give you help for makeQt
.
$ ./makeQt -h
usage: makeQt [OPTION] [qt-VERSION] [-- configure-options]
options:
-gcc Force gcc/g++ instead of the values from $WM_CC, $WM_CXX
-help
* build qt-everywhere-opensource-src, version undefined
It seems that you can specify the version and execute it, so let’s compile 5.9.3.
$ ./makeQt 5.6.3
It takes a little time to compile, and it fails with the following error.
/opt/OpenFOAM/ThirdParty-v2006/qt-everywhere-opensource-src-5.6.3/qtconnectivity/src/tools/sdpscanner/main.cpp:321:30: error: ‘htonl’ was not declared in this scope
If you search for the error message on Google, there is a workaround in stack overflow, so in the source as follows Make corrections.
$ vi qt-everwhere-opensource-src-5.6.3/qtconnectivity/src/tools/sdpscanner/main.cpp
** Additional part **
#include <arpa/inet.h>
If you compile it again and no error occurs, it is successful.
$ ./makeQt 5.6.3
ParaView build
Next, build ParaView.
Since the path of qmake (Qt) and Cmake is not set, specify it in the script option.
Also, execute it with the option of not using the functions of OpenGL library 2.x or higher (-no-gl2
) (because the CentOS 6 driver does not support it).
$ ./makeParaView -no-gl2 -qmake platforms/linux64Gcc/qt-5.6.3/bin -cmake platforms/linux64Gcc/cmake-3.8.2/bin
The module paraview
is created and the build is complete.
$ ls platforms/linux64Gcc/ParaView-5.6.0/bin/paraview
platforms/linux64Gcc/ParaView-5.6.0/bin/paraview
This completes the ParaView installation. In previous versions, it was necessary to build ParaView Reader to use the paraFoam
command after this, but it seems that it is not necessary because the corresponding PVReader
is not found.
Operation check of pre-processing, calculation execution, and post-processing in OpenFOAM
After all the above installation work is completed, the tutorial case pitzDaily
will check whether OpenFOAM can normally perform the flow of fluid analysis, pre-processing (mesh creation), calculation execution, and post-processing (visualization). Check using.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
$ mkdir –p $FOAM_RUN
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily ./
$ cd pitzDaily
$ blockMesh
$ simpleFoam
$ paraFoam
The meanings of the OpenFOAM commands that appear here are as follows.
run
: Move to the user’s calculation execution directory$ FOAM_RUN
.blockMesh
: Generate a basic mesh.simpleFoam
: Execution of the steady-state analysis solversimpleFoam
for incompressible fluid calculation.paraFoam
: Converts the OpenFOAM calculation output to a format that can be read by ParaView, and starts ParaView to visualize it.
The operation check performed here does not confirm the parallel calculation. It is not easy to check the operation of all tutorial cases that perform parallel calculation because it takes a long time to calculate, but let’s execute pipeCyclic
as a relatively light calculation (the number of parallels is 5 by default).
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pipeCyclic ./
$ cd pipeCyclic
$ ./Allrun
ʻAllrun is a script that automatically sets analysis conditions and executes calculations from mesh generation. If
pitzDaily and
pipeCyclic` can execute the calculation without error, the installation is completed successfully.