Cet article est un mémorandum de la procédure d'installation de la version v2006 d'OpenFOAM, qui est un logiciel open source pour l'analyse des fluides, sur CentOS 6.x.
Le package binaire OpenFOAM et le code source peuvent être obtenus sur le site suivant.
Le premier site est du groupe ESI. D'autre part, le deuxième site provient de la Fondation OpenFOAM. La version avec la date de sortie, c'est-à-dire v2006 (sortie en juin 2020), peut être obtenue sur l'ancien site ESI.
Vous pouvez télécharger des binaires Windows, Mac et Linux à partir du site ESI. Sous Windows, vous pouvez également installer à l'aide du sous-système Windows pour Linux (WSL). En ce qui concerne la façon de construire à partir des sources, il a été officiellement confirmé qu'il peut être installé sur Ubuntu 16.04LTS, CentOS 7.4 et OpenSUSE Tumbleweed. Cet article tente de créer OpenFOAM à partir des sources sur CentOS 6.x.
$ Home
, mais cette fois, en supposant l'installation sur un serveur de calcul que d'autres utilisateurs utilisent également, installez-le sous / opt
.La construction de ParaView à l'étape 7 échoue souvent, et si cela ne fonctionne pas, abandonnez. ParaView peut être installé séparément en plus du serveur CentOS, vous pouvez donc télécharger les données calculées dans votre environnement et les visualiser.
Les packages requis sont les suivants.
Installez le package ci-dessus en utilisant yum
avec les privilèges d'administrateur.
$ yum install gcc gcc-c++ bison flex m4 glibc-devel glibc-devel.i686 zlib-devel
Le package OpenFOAM se compose de deux types: le code source principal et un package tiers. Ici, créez un répertoire appelé / opt / OpenFOAM
afin que différentes versions puissent être gérées, puis téléchargez-le et développez-le avec wget
en dessous.
$ 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
Si vous ne pouvez pas télécharger HTTPS en raison de l'authentification, ajoutez l'option --no-check-certificate
ou .wgetrc settings. Veuillez l'éviter.
La structure du répertoire et du fichier après l'extraction de chaque package est la suivante.
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
Comment construire OpenFOAM est décrit dans OpenFOAM® Quick Build Guide, mais développé ʻOpenFOAM-v2006 Lisez attentivement README.md
, Bequirements.md
, et BUILD.md
in et
ThirdParty-v2006, et vérifiez
SOURCES.txt`.
Les exigences spécifiées sur le site officiel sont les suivantes.
La version de Qt initialement incluse dans CentOS est ancienne et une nouvelle version de Qt est requise pour utiliser la dernière version de ParaView.
Les bibliothèques de compilateur requises sous le ThirdPart-v2006
ci-dessus sont les suivantes:
(Il y a une description de la destination de téléchargement dans BUILD.md
).
Le compilateur peut être un compilateur Intel autre que GCC. Ce n'est pas grave si la version GCC est plus récente que 4.8.5, mais vous devrez modifier les paramètres qui apparaîtront plus tard.
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
** Bibliothèque GNU (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
C'est déjà dans un dictateur tiers.
Scotch
C'est déjà dans un dictateur tiers.
Boost
C'est déjà dans un dictateur tiers.
CGAL
C'est déjà dans un dictateur tiers.
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
C'est déjà dans un dictateur tiers.
libccmio
Construisez uniquement si vous avez besoin du convertisseur de maillage STAR-CCM +. La destination de téléchargement est différente d'avant.
$ wget http://visit.ilight.com/svn/visit/trunk/third_party/libccmio-2.6.1.tar.gz
$ tar zxvf libccmio-2.6.1.tar.gz
Modifiez les paramètres d'environnement d'OpenFOAM avec un éditeur approprié tel que «vi» ou «emacs». Le shell est expliqué en utilisant bash
.
$ vi ../OpenFOAM-v2006/etc/bashrc
** Lieu de modification **
# [WM_COMPILER_TYPE] - Compiler location:
# = system | ThirdParty
export WM_COMPILER_TYPE=ThirdParty
Si vous souhaitez modifier la taille d'étiquette du maillage de 32 bits à 64 bits, changez-la comme suit.
# [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"
En ce qui concerne la spécification du compilateur / bibliothèque GNU, changez la spécification de la bibliothèque GNU.
$ vi ../OpenFOAM-v2006/etc/config.sh/compiler
changements
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
$ vi makeGcc
** Point de confirmation **
先ほど編集したconfig.sh/compiler
からコンパイラ・GNUライブラリのバージョンを参照するので,
Ce qui suit n'est qu'une 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
Vérifiez le script de construction CGAL de la même manière que ci-dessus.
$ vi makeCGAL
** Point de confirmation **
# 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
Vérifiez les paramètres CGAL sur l'unité principale OpenFOAM.
vi ../OpenFOAM-v2006/etc/config.sh/CGAL
** Point de confirmation **
boost_version=boost_1_66_0
cgal_version=CGAL-4.12.2
Vérifiez le script de construction FFTW.
vi makeFFTW
** Point de confirmation **
# FFTW version from OpenFOAM etc/config.sh file:
_foamConfig FFTW
fftwPACKAGE=${fftw_version:-fftw-system}
Vérifiez les paramètres FFTW sur l'unité principale OpenFOAM.
vi ../OpenFOAM-v2006/etc/config.sh/FFTW
** Point de confirmation **
fftw_version=fftw-3.3.7
export FFTW_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$fftw_version
Commencez par charger les paramètres d'environnement OpenFOAM.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
À ce moment, le message suivant est affiché, mais comme GCC n'a pas encore été construit, c'est une erreur naturelle et la construction de GCC continuera.
===============================================================================
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
Rechargez les paramètres de l'environnement OpenFOAM pour activer le Gcc intégré.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
Construisez Cmake. Vous devez spécifier la version en option.
./makeCmake cmake-3.8.2
Une fois la compilation de Cmake terminée, compilez le reste des paquets avec ʻAllwmake`. Chargez à nouveau les paramètres de l'environnement OpenFOAM avant de l'exécuter.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
$ ./Allwmake
J'obtiens l'erreur suivante lors de la construction d'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
---------------------------------------------------
Il semble que Cmake construit sous un tiers ne soit pas utilisé, alors définissez explicitement le PATH et reconstruisez ADIOS2.
$ ./makeAdios2 -cmake $WM_THIRD_PARTY_DIR/platforms/linux64Gcc/cmake-3.8.2/bin/
Après avoir terminé la construction tierce ci-dessus, vérifiez avec la commande suivante si les conditions de construction de l'unité principale OpenFOAM sont remplies.
$ foamSystemCheck
System check: PASS
==================
Can continue OpenFOAM installation.
Lorsque PASS
est affiché, passez à la construction du corps principal d'OpenFOAM.
Chargez à nouveau les paramètres d'environnement OpenFOAM, puis compilez. Le script «Allwmake» est utilisé, mais le nombre de processeurs pour la compilation parallèle peut être spécifié avec l'option «-j», donc définissez-le en fonction de l'environnement. Vous pouvez également utiliser la commande alias foam
pour vous déplacer vers le répertoire du projet OpenFOAM (répertoire d'installation) $ WM_PROJECT_DIR
.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
$ foam
$ ./Allwmake –j4
Si une erreur se produit et qu'elle ne se termine pas normalement, vérifiez le message d'erreur pour voir s'il manque des bibliothèques.
Une fois la construction d'OpenFOAM terminée normalement, relisez les paramètres d'environnement et exécutez le programme de test.
$ . /opt/OpenFOAM/OpenFOAM-v2006j/etc/bashrc
$ foamInstallationTest
C'est OK si le résultat de la confirmation, tel que le chemin de la bibliothèque, est sorti et le résumé suivant est sorti à la fin.
Summary
-------------------------------------------------------------------------------
Base configuration ok.
Critical systems ok.
Done
Si le japonais est inclus dans la sortie de la version de gcc -v
, le foamInstallationTest
ci-dessus entraînera une erreur, donc avant cela
export LANG=C
Veuillez ne pas utiliser le japonais en tant que tel.
Vérifiez comment spécifier le package de version dans makeQt
.
$ more makeQt
** Point de confirmation **
# 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
Dans les versions précédentes d'OpenFOAM, l'utilisateur pouvait le spécifier dans makeQt
, mais le paramètre ne peut pas être modifié ici. Pour le moment, je vais vous aider pour 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
Il semble que vous puissiez spécifier la version et l'exécuter, alors compilons 5.9.3.
$ ./makeQt 5.6.3
La compilation prend un peu de temps et échoue avec l'erreur suivante.
/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
Si vous recherchez le message d'erreur sur Google, la solution de contournement est répertoriée dans [stack overflow](https://stackoverflow.com/questions/8402479/error- while-compiling-thrift-server), donc la source est la suivante. Faites des corrections.
$ vi qt-everwhere-opensource-src-5.6.3/qtconnectivity/src/tools/sdpscanner/main.cpp
** Pièce supplémentaire **
#include <arpa/inet.h>
Si vous le compilez à nouveau et qu'il n'y a pas d'erreur, il réussit.
$ ./makeQt 5.6.3
Ensuite, construisez ParaView.
Puisque les chemins pour qmake (Qt) et Cmake ne sont pas définis, spécifiez-les dans les options de script.
Aussi, exécutez-le avec l'option de ne pas utiliser les fonctions de la bibliothèque OpenGL 2.x ou supérieur (-no-gl2
) (car le pilote CentOS 6 ne le prend pas en charge).
$ ./makeParaView -no-gl2 -qmake platforms/linux64Gcc/qt-5.6.3/bin -cmake platforms/linux64Gcc/cmake-3.8.2/bin
Le module paraview
est créé et la construction est terminée.
$ ls platforms/linux64Gcc/ParaView-5.6.0/bin/paraview
platforms/linux64Gcc/ParaView-5.6.0/bin/paraview
Ceci termine l'installation de ParaView. Dans les versions précédentes, il était nécessaire de construire ParaView Reader afin d'utiliser la commande paraFoam
après cela, mais il semble que ce ne soit pas nécessaire car le PVReader
correspondant n'est pas trouvé.
Une fois que tout le travail d'installation ci-dessus est terminé, le cas du didacticiel pitzDaily
montrera si OpenFOAM peut normalement effectuer le flux d'analyse de fluide, de prétraitement (création de maillage), d'exécution de calcul et de post-traitement (visualisation). Vérifiez en utilisant.
$ . /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
$ mkdir –p $FOAM_RUN
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily ./
$ cd pitzDaily
$ blockMesh
$ simpleFoam
$ paraFoam
Les significations des commandes OpenFOAM qui apparaissent ici sont les suivantes.
run
: Déplacer vers le répertoire d'exécution des calculs de l'utilisateur $ FOAM_RUN
.blockMesh
: Génère un maillage de base.simpleFoam
: Exécution du solveur d'analyse en régime permanentsimpleFoam
pour le calcul des fluides incompressibles.paraFoam
: convertit la sortie calculée d'OpenFOAM dans un format lisible par ParaView, et démarre ParaView pour le visualiser.Le contrôle de fonctionnement effectué ici ne confirme pas le calcul parallèle. Il n'est pas facile de vérifier le fonctionnement de tous les cas de didacticiel qui effectuent un calcul parallèle car le calcul prend beaucoup de temps, mais exécutons pipeCyclic
comme un calcul relativement léger (le nombre de parallèles est de 5 par défaut).
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pipeCyclic ./
$ cd pipeCyclic
$ ./Allrun
ʻAllrunest un script qui définit automatiquement les conditions d'analyse et exécute les calculs à partir de la génération du maillage. Si
pitzDaily et
pipeCyclic` peuvent exécuter le calcul sans aucune erreur, l'installation est terminée avec succès.
Recommended Posts