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。
./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
下载地址: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 下载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 (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 (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 构建成功如图: 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路径 官网下载calculix,解压 unzip calculix-adapter-master.zip cd calculix-adapter-master Calculix计算结果为flap.frd,需转化为转化为flap.vtk供paraview可视化,注意转换过程的迭代步数必须是500,paraview读取的转换结果是不完整的,奇数迭代步会报错Unsupported point attribute type。只有500才使得转换结果完整。 官网要求解压后重命名为:OpenFOAM-7、ThirdParty-7,原文件名编译过程会找不到,修改配置文件中的文件名比较麻烦。 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文件的其他路径。1.4安装precice1.6.0
遇到的问题:(虚拟机上有网络在线安装还算顺利,服务器没有外网,大都靠手动编译,遇到问题较多。)
2、安装Calculix(固体求解器)
2.1、安装依赖库spooles2.2
2.2、安装arpack和patch
2.3 安装依赖yaml-cpp
2.4、calculix
求解问题:
3、安装OpenFOAM(流体求解器)
3.1 下载OpenFOAM-7-version-7.zip、ThirdParty-7-master.zip、openfoam-adapter-OpenFOAM7.zip
3.2 编译
遇到的问题: