1、安装Precice(确保petsc、preciece和你的求解器都是同一版本mpi版本编译)
1.1安装相关依赖
sudo apt update
sudo apt install build-essential cmake libeigen3-dev libxml2-dev libboost-all-dev python-dev python-numpy
注:起初在本地虚拟机测试安装的系统为ubuntu-20.04.1,但在安装上述库时,很多依赖的系统库版本过高,不兼容。将系统换为ubuntu-18.04便全部都兼容。服务器上有镜像源,上述库都是常用的,一般都有,直接apt install。
1.2手动编译安装OpenMPI2.1.1
./configure --prefix="/home/test653/ltv/software/petsc-3.15.1-install" --with-mpi-dir=/usr/local/ompi/--with-blas-lapack-dir=/YHXX/home/ltv/softwear/lapack/lapack-3.9.0/build/lib
注:--prefix参数为petsc安装路径
make
sudo make install
设置环境变量,"vim ~/.bashrc",在下面添加以下内容,设置环境变量的mpi路径
export PATH=~/software/openmpi/bin:$PATH
export LD_LIBRARY_PATH=~/software/openmpi/lib:$LD_LIBRARY_PATH
1.3手动编译安装依赖库petsc 3.8.4
下载地址:https://www.mcs.anl.gov/petsc/mirror/release-snapshots/
PETSC_ARCH=arch-linux2-c-debug --download-fblaslapack=1
make PETSC_DIR=/home/ltv/petsc-3.15.1-install PETSC_ARCH=arch-linux2-c-debug all
make PETSC_DIR=/home/ltv/petsc-3.15.1-installPETSC_ARCH=arch-linux2-c-debug install
设置环境变量,打开编辑"vim ~/.bashrc ",在下面添加以下内容
export PETSC_DIR=/home/ltv/software/petsc
export PETSC_ARCH=
export LD_LIBRARY_PATH=/home/ltv/software/petsc/lib:$LD_LIBRARY_PATH
注:起初安装的是最新版本petsc3.15.1,但与后续的precice1.6.0版本不兼容(其对应兼容关系是:precice-2.2.1需要petsc>3.12;precice-1.6.0需要3.6<petsc<3.12)因此petsc 3.8.4正合适。
1.4安装precice1.6.0
下载preCICE 1.6.0
cd software
wget https://github.com/precice/precice/archive/v1.6.0.tar.gz
tar -xzvf v1.6.0.tar.gz
cd precice-1.6.0
编译安装preCICE 1.6.0
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON
-D CMAKE_INSTALL_PREFIX=/YHXX/home/ltv/precice -DCMAKE_BUILD_TYPE=Debug(可省) ..
cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/YHXX/home/ltv/precice ..
make -j $(nproc) 16
make test_base (跑测试案例)
sudo make install
export LD_LIBRARY_PATH=/YHXX/home/ltv/softwear/petsc/petsc-3.14.2/arch-linux-c-debug/lib:$LD_LIBRARY_PATH
遇到的问题:(虚拟机上有网络在线安装还算顺利,服务器没有外网,大都靠手动编译,遇到问题较多。)
(1)cmake报错找不到 numpy(服务器上找不到某个python库),本地搜索定位到发现该库的位置“/usr/include/python2.7/numpy”,先装好ccmake,“apt install cmake-curses-gui”,执行“ccmake ..”,将numpy的路径设置为搜索到的位置(也可在CMakeList.txt中set())。
(2)虚拟机上make到38%报错“internal compiler error:”编译器内部错误,原因虚拟机内存不够。将虚拟机系统内存由2G升级到6G(内核由单核提升至四核),最终make通过。
(3)跑测试案例make test_base报错“An error occurred while loading python module "TestAllAction"”
(4)make test_base 报错srun: error: Unable to allocate resources: No partition specified or system default partition。
正常应该是/usr/bin/mpirun,但放到计算节点上应该是srun或yhrun,且需要指定分区->"/usr/bin/yhrun""--mpi=pmix""-M""cab20_29""-p""653""-n""4"
提交到计算节点命令:/usr/bin/srun -M cab20_29 -w cn22977 -p 653 -N 2 -n 4*2 /YHXX/home/ltv/softwcice-2.2.1/build/testprecice
-M机柜 -w节点
(5)make test_base报错“ MPIDI_UCX_mpi_open_port(13): The function is currently not
supported with ucx netmod”,mpi 的端口不支持计算节点上的ucx netmod。
Ucx是软件层的通信协议,自行下载的mpich编译过程也依赖ucx,暂时替换成tcp
另检测当前窗口编译器:which mpicxx gcc
2、安装Calculix(固体求解器)
2.1、安装依赖库spooles2.2
(1)下载地址https://precice.org/adapter-calculix-get-calculix.html#building-spooles-from-source
mkdir SPOOLES.2.2
tar zxvf spooles.2.2.tgz -C spooles.2.2
(注:不要直接解压,不然会散落一地,提前备好SPOOLES.2.2文件夹)
cd spoolesS.2.2
(2)编译前修改Make.inc,将第14-15行修改为
CC = gcc
#CC = /usr/lang-4.0/bin/cc
(3)构建这个库
make lib
2.2、安装arpack和patch
(1)下载Arpack和patch
wget https://www.caam.rice.edu/software/ARPACK/SRC/arpack96.tar.gz
wget https://www.caam.rice.edu/software/ARPACK/SRC/patch.tar.gz
tar xzfv arpack96.tar.gz
tar xzfv patch.tar.gz
cd ARPACK
(2)编译前修改ARmake.inc
#120行
将“SHELL=/bin/sh”换为“SHELL=sh”
#115行
将“MAKE =bin/ make”换为“MAKE = make”
(注:本机情况这两行不换也行,因为“echo $PATH”bin的路径已经包含到$PATH)
#104-105行
FC = gfortran
#FFLAGS = -O -cg89
#提前要用sudo apt install gfortran安装gfortran
#35行
将“PLAT=SUN4”换为“PLAT = INTEL”
#28行
将“ home = $(HOME)/ARPACK”换成ARPACK的解压路径,我的路径为“ home = $(HOME)/myuse/ARPACK”
(3)编辑UTIL/second.f,在第24行前面加* 构建这个库
即“* EXTERNAL ETIME”
make lib
构建成功如图:
2.3 安装依赖yaml-cpp
wget https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.5.3.zip
unzip yaml-cpp-0.5.3.zip
cd yaml-cpp-yaml-cpp-0.5.3
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
Make
设置环境变量,打开编辑 vim ~/.bashrc,在下面添加以下内容
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ltv/myuse/yaml-cpp-yaml-cpp-0.5.3/build
source ~/.bashrc
修改Makefile中的SPOOLES、CXX、ARPACK路径
2.4、calculix
官网下载calculix,解压
unzip calculix-adapter-master.zip
cd calculix-adapter-master
求解问题:
Calculix计算结果为flap.frd,需转化为转化为flap.vtk供paraview可视化,注意转换过程的迭代步数必须是500,paraview读取的转换结果是不完整的,奇数迭代步会报错Unsupported point attribute type。只有500才使得转换结果完整。
3、安装OpenFOAM(流体求解器)
3.1 下载OpenFOAM-7-version-7.zip、ThirdParty-7-master.zip、openfoam-adapter-OpenFOAM7.zip
官网要求解压后重命名为:OpenFOAM-7、ThirdParty-7,原文件名编译过程会找不到,修改配置文件中的文件名比较麻烦。
3.2 编译
cd OpenFOAM-7/
source ~/ltv/software/OpenFOAM/OpenFOAM-7/etc/bashrc
cd ThirdParty-7/
./Allwmake
cd OpenFOAM-7/
./Allwmake
遇到的问题:
(1)关于OpenFOAM版本问题:下载最新版本OpenFOAM-8编译过程发现model中缺少几个模型,因此换为OpenFOAM-7,模型齐全。
(2)配置编译器相关文件:
~/ltv/software/OpenFOAM/OpenFOAM-7/wmake/rules/linuxGcc/c
cc = gcc -m32
cFLAGS = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
Source project setup files:
/YHXX/home/ltv/software/OpenFOAM/OpenFOAM-7/etc/config.sh/settings
/YHXX/home/ltv/software/OpenFOAM/OpenFOAM-7/etc/config.sh/aliasesw
source /YHXX/home/ltv/app/openfoam/OpenFOAM-7/etc/bashrc
(3)"cd OpenFOAM/ ./Allwmake"过程报错gcc: error: unrecognized command line option ‘-m32’。删除掉makefile文件中的’-m32’,gcc3.4或者更高的版本已经将其删除,所以会出现错误。
将~/ltv/software/OpenFOAM/OpenFOAM-7/wmake/rules/linuxGcc64(64位)/c、c++中cc= -m32,CC=-m32都去掉。
(4)报错找不到“mpi.h”
将~/ltv/software/OpenFOAM/OpenFOAM-7/wmake/rules/linuxGcc64(64位)/c、c++中
cc=gcc改为cc=mpicc。gcc是c编译器,g++是c++编译器,mpicc才是mpi编译器
(5)cd openfoam-adapter-OpenFOAM7 ./Allwmake 执行编译一部分过程停止报错如下:
输入export PKG_CONFIG_PATH=/YHXX/home/ltv/precice/lib/pkgconfig 解决。
PKG_CONFIG_PATH是一个环境变量,它指定pkg-config在其中搜索其.pc文件的其他路径。