OpenFOAM(Open Source Field Operation and Manipulation)開源的場運算和處理軟件,和商用的CFD軟件Ansys Fluent,CFX類似。
OpenFOAM安裝參考
https://openfoamwiki.net/index.php/Installation/Linux/OpenFOAM-v1906/CentOS_SL_RHEL
系統:CentOS-7.6 x86_64
1、安裝OpenFOAM依賴
# yum install -y autoconf automake gcc glibc gcc-c++ gcc-gfortran git libgcc libstdc++ cmake bison flex patch # yum install -y boost-devel gmp-devel gstreamer-plugins-base-devel libXi-devel libXinerama-devel libXrandr-devel libXrender-devel \ libXt-devel mpfr-devel ncurses-devel python-devel qt-devel readline-devel zlib-devel
2、下載OpenFOAM並解壓
# mkdir -p /data/OpenFOAM # cd /data/OpenFOAM # wget -c https://sourceforge.net/projects/openfoam/files/v2006/OpenFOAM-v2006.tgz?use_mirror=nchc -O OpenFOAM-v2006.tgz # wget -c https://sourceforge.net/projects/openfoam/files/v2006/ThirdParty-v2006.tgz?use_mirror=nchc -O ThirdParty-v2006.tgz # tar zxvf OpenFOAM-v2006.tgz # tar zxvf ThirdParty-v2006.tgz
3、修改安裝路徑和其他編譯環境
# sed -i 's/$HOME/\/data/g' OpenFOAM-v2006/etc/bashrc
修改其他細節
# sed -i 's#\(default_gcc_version=\)gcc-4.8.5#\1gcc-7.2.0#' OpenFOAM-v2006/etc/config.sh/compiler # sed -i 's#gmp-system#gmp-6.1.2#' OpenFOAM-v2006/etc/config.sh/compiler # sed -i 's#mpfr-system#mpfr-4.0.1#' OpenFOAM-v2006/etc/config.sh/compiler # sed -i 's#mpc-system#mpc-1.1.0#' OpenFOAM-v2006/etc/config.sh/compiler # sed -i 's#\(cmake_version=\)cmake-system#\1cmake-3.12.4#' OpenFOAM-v2006/etc/config.sh/cmake # sed -i 's=\(^unset WM_ARCH_OPTION\)=#\1=' OpenFOAM-v2006/etc/config.sh/settings
加載OpenFOAM環境變量
# source /data/OpenFOAM/OpenFOAM-v2006/etc/bashrc WM_COMPILER_TYPE=ThirdParty WM_COMPILER=Gcc72 WM_MPLIB=OPENMPI WM_ARCH_OPTION=64 # echo "alias of2006='source /data/OpenFOAM/OpenFOAM-v2006/etc/bashrc $FOAM_SETTINGS'" >> $HOME/.bashrc
使用別名來管理多OpenFOAM版本
# of2006
加載環境變量時,可能會看到如下消息,需求編譯Gcc版本
===============================================================================
Warning in /data/OpenFOAM/OpenFOAM-v2006/etc/config.sh/settings:
Cannot find 'Gcc72' compiler installation
/data/OpenFOAM/ThirdParty-v2006/platforms/linux64/gcc-7.2.0
Either install this compiler version, or use the system compiler by setting
WM_COMPILER_TYPE to 'system' in $WM_PROJECT_DIR/etc/bashrc.
===============================================================================
4、獲取編譯GCC和binutils的腳本
# cd $WM_THIRD_PARTY_DIR # wget https://raw.githubusercontent.com/wyldckat/scripts4OpenFOAM3rdParty/master/getGcc # wget https://raw.github.com/wyldckat/ThirdParty-2.0.x/binutils/getBinutils # wget https://raw.github.com/wyldckat/ThirdParty-2.0.x/binutils/makeBinutils # chmod +x get* make*
編譯Gcc 7.2.0
# sed -i 's#gccPACKAGE.tar.bz2#gccPACKAGE.tar.gz#' getGcc # ./getGcc gcc-7.2.0 gmp-6.1.2 mpfr-4.0.1 mpc-1.1.0 # ./makeGcc
# wmRefresh
編譯GNU Binutils
# ./getBinutils # ./makeBinutils gcc-7.2.0
5、編譯Cmake
ParaView 5.6.0需要較新的CMake3.0以上版本,而CGAL也需要CMake;
# cd $WM_THIRD_PARTY_DIR # wget https://raw.github.com/wyldckat/scripts4OpenFOAM3rdParty/master/getCmake # chmod +x getCmake # sed -i -e 's#2.8#3.12#' -e 's#version}.3#version}.4#' getCmake # ./getCmake # ./makeCmake cmake-3.12.4 > log.makeCM 2>&1 # wmRefresh
6、編譯OpenFOAM
# foamSystemCheck # cd $WM_PROJECT_DIR # ./Allwmake -j -s -l
7、測試OpenFOAM
# cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily . # cd pitzDaily
生成幾何結構網格
# blockMesh
求解
# simpleFoam
8、並行運算,使用cavity算例舉例
# cp -r /data/OpenFOAM/OpenFOAM-v2006/tutorials/incompressible/icoFoam/cavityMappingTest . # cd cavityMappingTest/ # ./Allrun-parallel # mpirun --allow-run-as-root -np 4 icoFoam -parallel
備注:
如果需要修改計算的CPU數量,修改算例中decomposeParDict文件的numberOfSubdomains參數,這個等於CPU核數;