AI摘要:This article provides a detailed guide on installing OpenFOAM 2.4.0 on Ubuntu 20.04, including adding old version source addresses, installing old versions of gcc and gfortran, and resolving various dependency issues. It also covers the installation of qt4, libpng12, and libncurses5-dev, as well as the compilation of ThirdParty and ParaView. The process involves several terminal commands and modifications to configuration files.

Powered by AISummary and Kimi.

由于最初是在 Ubuntu 24.04 上尝试的,以下有一些问题 Ubuntu 20.04 其实不会遇到。


参考1:参考1
参考2:参考2
参考3:参考3


添加旧版本的源地址

终端输入:

sudo gedit /etc/apt/sources.list

在打开的文本文件里添加:

deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe

deb http://mirrors.aliyun.com/ubuntu/ trusty main
deb-src http://mirrors.aliyun.com/ubuntu/ trusty universe

在终端输入:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

安装老版本的gcc和gfortan

sudo apt-get update
sudo apt-get install g++-5 gcc-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100


sudo apt-get update
sudo apt-get install gfortran-4.7 libgfortran-4.7-dev
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-4.7 100

安装openfoam2.4.0

安装qt4

遇到报错: qtchooser : 破坏: libqtcore4 (< 4:4.8.7+dfsg-7~) 但是 4:4.8.7+dfsg-5ubuntu2 正要被安装……)

sudo add-apt-repository ppa:rock-core/qt4

安装libpng12

遇到报错: 无法安装 /lib/x86_64-linux-gnu/libpng12.so.0 的新版本: 没有那个文件或目录……【在系统ubuntu20.04没有遇到】)

重新打开一个终端窗口手动安装:

mkdir libpng
cd libpng
wget https://launchpad.net/~linuxuprising/+archive/ubuntu/libpng12/+files/libpng12-0_1.2.54-1ubuntu1.1+1~ppa0~impish0_amd64.deb
wget https://launchpad.net/~linuxuprising/+archive/ubuntu/libpng12/+files/libpng12-dev_1.2.54-1ubuntu1.1+1~ppa0~impish0_amd64.deb
wget https://launchpad.net/~linuxuprising/+archive/ubuntu/libpng12/+files/libpng3_1.2.54-1ubuntu1.1+1~ppa0~impish0_amd64.deb
sudo dpkg -i *.deb
sudo apt install -f

libncurses5-dev

遇到报错: 下列软件包有未满足的依赖关系:
libncurses5-dev : 依赖: libtinfo6 (= 6.3-2ubuntu0.1) 但是 6.4+20240113-1ubuntu2 正要被安装……【在系统ubuntu20.04没有遇到】)

sudo apt install aptitude
sudo apt-get install libncurses6
sudo aptitude install libncurses-dev

按n,直到出现以下降级选项:

是否接受该解决方案?[Y/n/q/?] n
下列动作将解决这些依赖关系:

      删除 下列软件包:                                                                     
1)      libncursesw5 [6.0+20160213-1ubuntu1 (now, xenial)]                                  

      安装 下列软件包:                                                                     
2)      libncurses-dev [6.3-2ubuntu0.1 (jammy-security, jammy-updates)]                     
3)      libnsl2 [1.3.0-3build3 (noble)]                                                     

      保持 下列软件包于其当前版本:                                                         
4)      libncurses5 [6.0+20160213-1ubuntu1 (now, xenial)]                                   
5)      libtinfo5 [6.0+20160213-1ubuntu1 (now, xenial)]                                     

      升级 下列软件包:                                                                     
6)      libpython2.7 [2.7.11-7ubuntu1 (now, xenial) -> 2.7.18-13ubuntu1.5 (jammy-security, j
7)      libpython2.7-dev [2.7.11-7ubuntu1 (now, xenial) -> 2.7.18-13ubuntu1.5 (jammy-securit
8)      libpython2.7-minimal [2.7.11-7ubuntu1 (now, xenial) -> 2.7.18-13ubuntu1.5 (jammy-sec
9)      libpython2.7-stdlib [2.7.11-7ubuntu1 (now, xenial) -> 2.7.18-13ubuntu1.5 (jammy-secu
10)     python2.7 [2.7.11-7ubuntu1 (now, xenial) -> 2.7.18-13ubuntu1.5 (jammy-security, jamm
11)     python2.7-dev [2.7.11-7ubuntu1 (now, xenial) -> 2.7.18-13ubuntu1.5 (jammy-security, 
12)     python2.7-minimal [2.7.11-7ubuntu1 (now, xenial) -> 2.7.18-13ubuntu1.5 (jammy-securi

      降级 下列软件包:                                                                     
13)     libncurses6 [6.4+20240113-1ubuntu2 (noble, now) -> 6.3-2ubuntu0.1 (jammy-security, j
14)     libncursesw6 [6.4+20240113-1ubuntu2 (noble, now) -> 6.3-2ubuntu0.1 (jammy-security, 
15)     libtinfo6 [6.4+20240113-1ubuntu2 (noble, now) -> 6.3-2ubuntu0.1 (jammy-security, jam
16)     ncurses-bin [6.4+20240113-1ubuntu2 (noble, now) -> 6.0+20160213-1ubuntu1 (xenial)]  



是否接受该解决方案?[Y/n/q/?] y

之后再:

sudo apt-get install libncurses5-dev

继续安装

sudo -s
apt-get update
apt-get install build-essential cmake flex bison zlib1g-dev qt4-dev-tools libqt4-dev libqtwebkit-dev gnuplot \
libreadline-dev libncurses5-dev libxt-dev libopenmpi-dev openmpi-bin libboost-system-dev libboost-thread-dev libgmp-dev \
libmpfr-dev python python-dev libcgal-dev gcc-5 g++-5
apt-get install libglu1-mesa-dev libqt4-opengl-dev
exit

OPENMPI

虽然安装步骤放在这里了,但其实不需要手动安装。

tar -zvxf openmpi-4.1.4.tar.gz
cd openmpi-4.1.4/
./configure --prefix=/opt/openmpi-4.1.4 cc=gcc cxx=g++
make -j 4
make install

.bashrc写入

export PATH=/opt/openmpi-4.1.4/bin:$PATH
export PATH=/opt/openmpi-4.1.4/sbin:$PATH
export LD_LIBRARY_PATH=/opt/openmpi-4.1.4/lib:$LD_LIBRARY_PATH

然后

source ~/.bashrc

下载openfoam

cd ~
mkdir OpenFOAM
cd OpenFOAM
wget "http://downloads.sourceforge.net/foam/OpenFOAM-2.4.0.tgz?use_mirror=mesh" -O OpenFOAM-2.4.0.tgz
wget "http://downloads.sourceforge.net/foam/ThirdParty-2.4.0.tgz?use_mirror=mesh" -O ThirdParty-2.4.0.tgz
 
tar -xzf OpenFOAM-2.4.0.tgz 
tar -xzf ThirdParty-2.4.0.tgz
ln -s /usr/bin/mpicc.openmpi OpenFOAM-2.4.0/bin/mpicc
ln -s /usr/bin/mpirun.openmpi OpenFOAM-2.4.0/bin/mpirun
sed -i -e 's/\(cgal_version=\)CGAL-4.6/\1cgal-system/' OpenFOAM-2.4.0/etc/config/CGAL.sh
sed -i -e 's=\-lmpfr=-lmpfr -lboost_thread=' OpenFOAM-2.4.0/wmake/rules/General/CGAL
 
sed -i -e 's/gcc/\$(WM_CC)/' OpenFOAM-2.4.0/wmake/rules/linux*Gcc/c
sed -i -e 's/g++/\$(WM_CXX)/' OpenFOAM-2.4.0/wmake/rules/linux*Gcc/c++
source $HOME/OpenFOAM/OpenFOAM-2.4.0/etc/bashrc WM_NCOMPPROCS=4 WM_MPLIB=SYSTEMOPENMPI
export WM_CC='gcc-5'
export WM_CXX='g++-5'
echo "alias of240='source \$HOME/OpenFOAM/OpenFOAM-2.4.0/etc/bashrc $FOAM_SETTINGS; export WM_CC=gcc-5; export WM_CXX=g++-5'" >> $HOME/.bashrc

source $HOME/.bashrc

之后,每次开始一个新终端,先输入命令:of240进入OpenFOAM 2.4.0环境。

编译ThirdParty

cd $WM_THIRD_PARTY_DIR
 
export QT_SELECT=qt4
 
sed -i -e 's|\(^if.*CGAL_ARCH_PATH.*\)]|\1 -a "${CGAL_ARCH_PATH##*/}" != "cgal-system" ]|' Allwmake
 
./Allwmake > log.make 2>&1
 
of240

编译ParaView

export QT_SELECT=qt4
cd $WM_THIRD_PARTY_DIR
 
sed -i -e 's=MPI_ARCH_PATH/include=MPI_ARCH_PATH/include;$MPI_INCLUDE=' etc/tools/ParaView4Functions
 
sed -i -e 's=//#define GLX_GLXEXT_LEGACY=#define GLX_GLXEXT_LEGACY=' \
  ParaView-4.1.0/VTK/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx
 
cd $WM_THIRD_PARTY_DIR/ParaView-4.1.0
 
wget http://www.paraview.org/pipermail/paraview/attachments/20140210/464496cc/attachment.bin -O Fix.patch
patch -p1 < Fix.patch
 
cd VTK
wget https://github.com/gladk/VTK/commit/ef22d3d69421581b33bc0cd94b647da73b61ba96.patch -O Fix2.patch
patch -p1 < Fix2.patch
 
cd ../..
./makeParaView4 -python -mpi -python-lib /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 > log.makePV 2>&1

完成后,查看log.makePV,显示了一些与mpi有关的错误。

make[2]: *** [VTK/Parallel/MPI/CMakeFiles/vtkParallelMPI.dir/build.make:88:VTK/Parallel/MPI/CMakeFiles/vtkParallelMPI.dir/vtkMPICommunicator.cxx.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:7499:VTK/Parallel/MPI/CMakeFiles/vtkParallelMPI.dir/all] 错误 2
make: *** [Makefile:156:all] 错误 2

报错的话就执行以下命令:

./makeParaView4 -qmake /usr/lib/x86_64-linux-gnu/qt4 > log.makePV 2>&1

如果还不行,可以另外安装一个paraview,看看参考4:参考4

of240

openfoam安装

cd $WM_PROJECT_DIR

find src applications -name "*.L" -type f | xargs sed -i -e 's=\(YY\_FLEX\_SUBMINOR\_VERSION\)=YY_FLEX_MINOR_VERSION < 6 \&\& \1='

cd $WM_PROJECT_DIR

export QT_SELECT=qt4
 
#两次
./Allwmake > log.make 2>&1

./Allwmake > log.make 2>&1

安好啦!输入icoFoam -help看是否安装成功。走这个流程 Ubuntu 20.04可以,但24.04失败。


  • OpenFOAM和ThirdParty文件夹后面的结构要一样
  • 如果不在默认路径安装,或者文件夹名字不同,则需要先修改 /OpenFOAM-2.4.0/etc/bashc,注意foamInstall=$HOME/$WM_PROJECT的设置,例如 ~/OpenFOAM240MNF/OpenFOAM-2.4.0-MNF/etc/bashc 修改为:

    export WM_PROJECT=OpenFOAM
    export WM_PROJECT_VERSION=2.4.0-MNF
    
    foamInstall=$HOME/OpenFOAM240MNF
  • 还有alias of24MNF='source $HOME/OpenFOAM240MNF/OpenFOAM-2.4.0-MNF/etc/bashrc; export WM_NCOMPPROCS=[number of threads to compile with]也要注意
  • 参考4说安装完paraview之后要把以下代码加到of24MNF,反正我加上了:

    export ParaView_DIR=/home/peachrl/OpenFOAM240MNF/ThirdParty-2.4.0-MNF/platforms/linux64GccMNF/ParaView-4.1.0
    export PATH=$ParaView_DIR/bin:$PATH
    export PV_PLUGIN_PATH=$FOAM_LIBBIN/paraview-4.1
  • OpenFOAM-2.4.0没问题,但是OpenFOAM-2.4.0-MNF的安装还是报错了