OpenFOAM+OpenFAST+SOWFA

本文最后更新于 2025年4月9日 晚上

Ubuntu18.04下SOWFA安装

注意:这个教程是一开始在wsl中安装sowfa时写的,后来切换到了组里的大服务器,因此本文有些地方没有及时更新,编排也较杂乱,仅供参考。更详细的编译安装方法可以参考大服务器上的安装教程。建议理解每一步目的后再根据自己的环境进行调整和操作。

1. 安装OpenFOAM(要和SOWFA版本对应,分为2.4.x和6)

如果安装OpenFOAM-6

  1. 更新与安装依赖
1
2
3
4
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake git libopenmpi-dev openmpi-bin libblas-dev liblapack-dev flex bison gdb valgrind g++ libxml2-dev libhdf5-serial-dev gfortran

  1. 下载OpenFOAM源码
1
2
3
4
5
mkdir ~/OpenFOAM && cd ~/OpenFOAM
git clone https://github.com/OpenFOAM/OpenFOAM-6.git
git clone https://github.com/OpenFOAM/ThirdParty-6.git
# 将环境变量添加到.bashrc文件中
echo "source $HOME/OpenFOAM/OpenFOAM-6/etc/bashrc" >> ~/.bashrc && source ~/.bashrc
  1. 编译安装(需要较长时间)
1
2
3
cd $WM_THIRD_PARTY_DIR && ./Allwmake

cd $WM_PROJECT_DIR && ./Allwmake
  1. 创建run文件夹
1
mkdir -p ~/OpenFOAM/$USER-6/run

如果安装OpenFOAM-2.4.0

参考这个页面

2. 安装OpenFAST-2.4.0

  1. 安装gfortran-10
1
2
3
4
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gfortran-10
  1. 安装高版本的cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir ~/Programs && cd ~/Programs
wget https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-linux-x86_64.sh
chmod +x cmake-3.26.3-linux-x86_64.sh
./cmake-3.26.3-linux-x86_64.sh
vim ~/.bashrc
# 添加以下内容并保存<-
export PATH=~/Programs/cmake-3.26.3-linux-x86_64/bin:$PATH
# ->

source ~/.bashrc
# 安装完成查看版本是否为3.26.3
cmake --version
rm cmake-3.26.3-linux-x86_64.sh
  1. 安装yaml-cpp
1
2
3
4
5
6
cd ~/Programs
git clone https://github.com/jbeder/yaml-cpp.git && cd yaml-cpp
mkdir build && cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
sudo make install
  1. 下载openfast源码
1
2
3
cd ~/Programs
wget https://github.com/OpenFAST/openfast/archive/refs/tags/v2.4.0.tar.gz
tar -zxvf v2.4.0.tar.gz && cd openfast-2.4.0
  1. 编译安装
1
2
3
4
5
6
mkdir build && cd build
cmake .. -DBUILD_OPENFAST_CPP_API=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DFPE_TRAP_ENABLED=ON

make help
make -j$(nproc)
sudo make install

3. 安装SOWFA

如果按照SOWFA-6

  1. 下载源码
1
2
3
cd ~/OpenFOAM/
git clone -b dev https://github.com/pablo-benito/SOWFA-6.git && cd SOWFA-6
# 官方最新的dev分支可能会有错,clone这个别人fork的仓库比较保险
  1. 在用户home目录创建.sowfa_bashrc文件,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
SOWFA-6()
{
# Important locations.
export inst_loc=$HOME/OpenFOAM
export sowfa_loc=$HOME/OpenFOAM

# Unset OpenFOAM environment variables.
export OPENFOAM_VERSION=6
if [ -z "$FOAM_INST_DIR" ]; then
echo "Nothing to unset..."
else
echo " *Unsetting OpenFOAM environment variables..."
if [ -f "$FOAM_INST_DIR/OpenFOAM-$OPENFOAM_VERSION/etc/config.sh/unset" ]; then
. $FOAM_INST_DIR/OpenFOAM-$OPENFOAM_VERSION/etc/config.sh/unset
else
. $FOAM_INST_DIR/OpenFOAM-$OPENFOAM_VERSION/etc/config/unset.sh
fi
fi

# Set the OpenFOAM version and installation directory
export OPENFOAM_VERSION=6
export OPENFOAM_NAME=OpenFOAM-$OPENFOAM_VERSION
export FOAM_INST_DIR=$inst_loc
export WM_PROJECT_USER_DIR=/home/$USER/OpenFOAM/SOWFA-$OPENFOAM_VERSION
export FOAMY_HEX_MESH=true

# Source the OpenFOAM main environment.
foamDotFile=$FOAM_INST_DIR/$OPENFOAM_NAME/etc/bashrc
if [ -f $foamDotFile ] ; then
echo "Sourcing $foamDotFile..."
source $foamDotFile
fi

# For wmake compiling.
export WM_NCOMPPROCS=12
export WM_COLOURS="white blue green cyan red magenta yellow"

# Alias to tutorials.
alias tut='cd /home/$USER/OpenFOAM/SOWFA-$OPENFOAM_VERSION/exampleCases'

# Set the SOWFA installation directory.
export SOWFA_DIR=$sowfa_loc/SOWFA-$OPENFOAM_VERSION
export SOWFA_APPBIN=$SOWFA_DIR/applications/bin/$WM_OPTIONS
export SOWFA_LIBBIN=$SOWFA_DIR/lib/$WM_OPTIONS
export HDF5_DIR=/usr/lib/x86_64-linux-gnu/hdf5/serial
export OPENFAST_DIR=$HOME/Programs/openfast-2.4.0/install
export LD_LIBRARY_PATH=$SOWFA_LIBBIN:$OPENFAST_DIR/lib:$LD_LIBRARY_PATH
export PATH=$SOWFA_APPBIN:$OPENFAST_DIR/bin:$PATH
}
  1. 写入.bashrc中
1
2
echo "alias SOWFA='source ~/.sowfa_bashrc; SOWFA-6'" >> ~/.bashrc
source ~/.bashrc
  1. 执行SOWFA脚本来配置安装需要的环境变量
1
2
SOWFA
./Allwmake

如果按照SOWFA-2.4.x

  1. 下载源码

  2. 在用户home目录创建.sowfa_bashrc文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# SOWFA-2.4.0
SOWFA-2.4.0()
{
export inst_loc=$HOME/OpenFOAM
export sowfa_loc=$HOME/OpenFOAM

# Unset OpenFOAM environment variables.
if [ -z "$FOAM_INST_DIR" ]; then
echo "Nothing to unset..."
else
echo " *Unsetting OpenFOAM environment variables..."
. $FOAM_INST_DIR/OpenFOAM-2.4.0/etc/config/unset.sh
fi

# Set the OpenFOAM version and installation directory
export OPENFOAM_VERSION=2.4.0
export OPENFOAM_NAME=OpenFOAM-$OPENFOAM_VERSION
export FOAM_INST_DIR=$inst_loc
export WM_PROJECT_USER_DIR=$HOME/OpenFOAM/SOWFA-$OPENFOAM_VERSION

foamDotFile=$FOAM_INST_DIR/$OPENFOAM_NAME/etc/bashrc
if [ -f $foamDotFile ] ; then
echo "Sourcing $foamDotFile..."
source $foamDotFile
fi

export WM_NCOMPPROCS=12
export WM_COLOURS="white blue green cyan red magenta yellow"

alias tut='cd /$HOME/OpenFOAM/$USER-$OPENFOAM_VERSION/SOWFA-$OPENFOAM_VERSION/exampleCases'

#export SOWFA_DIR=$FOAM_INST_DIR/$USER-$OPENFOAM_VERSION/SOWFA-$OPENFOAM_VERSION
export SOWFA_DIR=$sowfa_loc/SOWFA-$OPENFOAM_VERSION
export SOWFA_APPBIN=$SOWFA_DIR/applications/bin/$WM_OPTIONS
export SOWFA_LIBBIN=$SOWFA_DIR/lib/$WM_OPTIONS
export OPENFAST_DIR=$HOME/Programs/openfast-2.4.0/install
export HDF5_DIR=/usr/lib/x86_64-linux-gnu/hdf5/serial
export LD_LIBRARY_PATH=$SOWFA_LIBBIN:$OPENFAST_DIR/lib:$LD_LIBRARY_PATH
export PATH=$SOWFA_APPBIN:$OPENFAST_DIR/bin:$PATH
}
  1. 写入.bashrc中

  2. 修改源码中的错误

    参考原文

  3. 执行SOWFA脚本来配置安装需要的环境变量

CentOS-7下SOWFA的安装

一. OpenFOAM2.4.x安装(参考此网站)

1. 安装依赖包

如果有sudo权限,直接sudo安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 切换到浙大镜像源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.zju.edu.cn|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo

sudo yum makecache
sudo yum update
sudo yum upgrade

# 安装依赖
sudo -s
yum groupinstall 'Development Tools'
yum install openmpi openmpi-devel zlib-devel gstreamer-plugins-base-devel libXext-devel libGLU-devel libXt-devel libXrender-devel libXinerama-devel libpng-devel libXrandr-devel libXi-devel libXft-devel libjpeg-turbo-devel libXcursor-devel readline-devel ncurses-devel python python-devel cmake qt-devel qt-assistant mpfr-devel gmp-devel build-essential git ca-certificates flex libfl-dev bison zlib1g-dev libboost-system-dev libboost-thread-dev libopenmpi-dev openmpi-bin gnuplot libreadline-dev libncurses-dev libxt-dev

yum upgrade
# 退出sudo模式
exit

2. 下载OpenFOAM2.4.x和ThirdParty-2.4.x

打开一个新的终端窗口

1
2
3
4
5
6
7
8
9
10
11
12
cd ~
mkdir OpenFOAM
cd OpenFOAM
# 如果是在没有网的服务器上下载,需要先下载到有网的linux系统上(不下到windows是因为windows的换行标记和linux不一样,会报错),然后再拷贝过来(拷贝文件夹或者tar压缩后再拷贝)
git clone https://github.com/OpenFOAM/OpenFOAM-2.4.x.git
git clone https://github.com/OpenFOAM/ThirdParty-2.4.x.git
cd ThirdParty-2.4.x
mkdir download
# 将/files/OpenFOAM/目录下的三个压缩包通过sftp工具拷贝到这里的download文件夹
tar -xzf download/scotch_6.0.3.tar.gz
tar -xzf download/cgal-releases-CGAL-4.6.tar.gz && mv cgal-releases-CGAL-4.6 CGAL-4.6
tar -xjf download/boost_1_55_0.tar.bz2

3. 编译安装第三方库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 修改源码
cd ~/OpenFOAM
sed -i -e 's=boost-system=boost_1_55_0=' OpenFOAM-2.4.x/etc/config/CGAL.sh
# 设置环境变量(以下两句二选一!)
## 如果是自己的虚拟机,一般通过yum安装的openmpi在/usr/lib64/openmpi/bin/目录下
module load mpi/openmpi-x86_64 || export PATH=$PATH:/usr/lib64/openmpi/bin
## 如果是大集群,openmpi在/usr/local/openmpi3.1.2_ucx/bin/目录下
export PATH=$PATH:/usr/local/openmpi3.1.2_ucx/bin/

# 这里的WM_NCOMPPROCS设置为你编译要用的核数(大集群使用手册说不要在主节点上并行,故设为单核)
source $HOME/OpenFOAM/OpenFOAM-2.4.x/etc/bashrc WM_NCOMPPROCS=1 WM_MPLIB=SYSTEMOPENMPI
# 设置of24x别名来加载环境变量
## 如果是自己的虚拟机
echo "alias of24x='module load mpi/openmpi-x86_64; source \$HOME/OpenFOAM/OpenFOAM-2.4.x/etc/bashrc $FOAM_SETTINGS'" >> $HOME/.bashrc
## 如果是大集群
echo "alias of24x='export PATH=\$PATH:/usr/local/openmpi3.1.2_ucx/bin/; source \$HOME/OpenFOAM/OpenFOAM-2.4.x/etc/bashrc $FOAM_SETTINGS'" >> $HOME/.bashrc

source ~/.bashrc
of24x
# 编译安装gmp
# 将本文档根目录的gmp.tar上传到服务器~/Packages/目录下
cd ~/Packages
tar -xvf gmp-5.1.2.tar
cd gmp-5.1.2
./configure --prefix=$HOME/Packages/gmp-5.1.2/install --enable-cxx
make
make check
make install

echo "export LD_LIBRARY_PATH=$HOME/Packages/gmp-5.1.2/install/lib:\$LD_LIBRARY_PATH" >> $HOME/.bashrc
source ~/.bashrc

# 编译安装CGAL
cd $WM_THIRD_PARTY_DIR
sed -i -e 's=boost-system=boost_1_55_0=' makeCGAL
./makeCGAL > log.mkcgal 2>&1
# 检查log.mkcgal文件是否有错误

4. 编译安装OpenFOAM

1
2
3
4
5
6
7
8
# 加载环境变量
wmSET $FOAM_SETTINGS
# 编译安装
cd $WM_PROJECT_DIR
./Allwmake > log.make 2>&1
# 再次运行,查看log.make内各个库是否编译成功
./Allwmake > log.make 2>&1
# paraview出错也没关系

5. (可选)修改paraFoam脚本

1
which paraFoam

修改paraFoam脚本为以下内容

1
2
3
4
5
pre_para=`basename $PWD`
para_file=${pre_para}.foam
>${para_file}
powershell.exe /c "paraview ${para_file}"
rm ${para_file}