译者说明
最近在学习使用preCICE,为了督促自己学习并方便今后随时查阅相关信息,计划将preCICE的英文版Wiki翻译成中文。由于能力及精力有限,翻译内容并不能保证完全正确,仅供参考,因使用这份中文译稿带来的相关后果,恕不负责,请您谅解。
相关链接:
preCICE
https://github.com/precice
Home · precice/precice Wiki
https://github.com/precice/precice/wiki
Index of /sgs/precice/docs
https://ipvs.informatik.uni-stuttgart.de/sgs/precice/docs/
preCICE:A Coupling Library for Partitioned Multi-Physics Simulations on Massively Parallel Systems
基于大规模并行系统的分区多物理场模拟耦合库
1.Building preCICE
Building on Linux/macOS
Main Steps
1.安装所需相关组件(dependencies)并确保系统环境设置正确(例如:可打开新的终端)
其中,dependencies包含内容如下:
####Dependencies
***The easy way***
****
在Linux系统环境下(如Ubuntu 18.04)编译和使用preCICIE,可以通过以下操作快速完成相关软件的安装和系统环境的配置:
sudo apt update && \
sudo apt install build-essential scons libeigen3-dev libxml2-dev petsc-dev libboost-all-dev python-dev python-numpy
同时需要添加环境变量到~/.bashrc文件(根据个人设置习惯不同修改指定路径):
# Eigen
export CPLUS_INCLUDE_PATH="/usr/include/eigen3:$CPLUS_INCLUDE_PATH"
# PETSc
export PETSC_DIR=/usr/lib/petscdir/3.7/
export PETSC_ARCH=x86_64-linux-gnu-real
C++ compiler(with support for C++11, GCC version>=5
编译preCICE需要支持C++11特性的C++编译器。
如果使用GCC编译器,至少需要版本5。
如果使用Debian/Ubuntu,build-essential
包可以安装全部所需配置。
SCons
preCICE需要在最新版本的SCons环境下编译。
通常可以用包管理实现(例如:在Debian/Ubuntu中使用scons
)。
Eigen
preCICE使用Eigen进行线性代数计算,推荐使用Eigen的最新版本。
选择1: 下载Eigen头文件
Eigen是由头文件组成的库,即他将被编译进入preCICE。你可以下载Eigen源文件并将Eigen/
子文件加提取到preCICE的源程序文件路径src/
。
选择2:使用包管理器安装Eigen
使用包管理器安装Eigen(例如:libeigen3-dev
)。
如果Eigen已经安装但是SCons无法找到,可以在编译时设置CPLUS_INCLUDE_PATH
环境变量,即:
CPLUS_INCLUDE_PATH="/usr/include/eigen3" scons [...]
Boost
preCICE的许多功能需要Boost支持,至少需要1.60.0或更高的版本。虽然Boost 1.67或者更新的版本也能适配preCICE,但在安装使用yaml-cpp的程序接口时会比较复杂。
为了节省时间和内存,可以仅选择安装以下必要的库:
- boost_log
- boost_log_setup
- boost_thread
- boost_system
- boost_filesystem
- boost_program_options
- boost_unit_test_framework
上述库的正常使用依赖于其他Boost库,应确保这些库也能正确安装。这些仅含头文件的Boost库也需要:vmd
,geometry
,signals2
。
选择1:从包管理器安装Boost
如果使用16.10版本及以上的Ubuntu,可以通过以下操作完成安装:
sudo apt update && \
sudo apt install libboost-dev libboost-log-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-test-dev
如果由于某些原因使得Boost自身解析不正确,尝试安装编译修正:“`libboost-all-dev”’。
libxml2
preCICE使用libxml2解析配置文件,推荐使用最新的版本。很有可能libxml2已经安装过,为了确保正确编译preCICE,你需要升级版本。(在Debian/Ubuntu 中:libxml2
)
PETS(可选)
如果你需要使用并行RBF映射(parallel RBF mappings),则要安装PETSc。如果不需要用这些功能,可以在SCons中设置petsc=off
。
推荐使用3.6.及以上的版本。
选择1:使用包管理器安装PETSc
在Debian/Ubuntu中安装libpetsc3.6
和petsc-dev
。添加环境变量PETSC_DIR
和PETSC_ARCH
到路径~/.bashrc
。例如:
export PETSC_DIR=/usr/lib/petscdir/3.6.2/
export PETSC_ARCH=x86_64-linux-gnu-real
Python(可选)
如果你需要使用Python操作界面(仅用于少数应用),则要安装Python。如果不需要用这些功能,可以在SCons中设置python=off
。
SCons应该会自动安装Python,然而为了使用Python界面,还需要安装NumPy和用于Python和NumPy的头文件。在Debian/Ubuntu中,安装python-numpy
和python-dev
。
注:可以自定义Python和NumPy的工作路径,尽管这不知必须的。即:
export PRECICE_PYTHON_LIB="python2.7"
export PRECICE_PYTHON_INC_PATH="/usr/include/python2.7/"
export PRECICE_NUMPY_INC_PATH="/usr/include/python2.7/numpy/"
MPI(可选)
在没有MPI的情况下,也可编译preCICE,以防与某个求解程序的兼容性问题(例如:使用二进制分布式MPI版本的封闭源码求解器,或者在Windows上运行)。要做到这一点,在使用SCons时指定mpi=off
。在这种情况下,您可以使用TCP、IP协议。然而,这可能会导致性能下降,因此,如果不是必须,不推荐这样做。
请注意,OpenMPI并不完全支持MPI端口功能。如果你链接到OpenMPI,你不能使用MPI来进行preCICE库的m2n通信。另外,MPI端口的测试将会失败。请在测试故障诊断中阅读更多内容。
请记住,PETSc应该已经安装了MPI。确保PETSc、preCICE和你的求解器都是用同一个MPI版本编译的!
2.下载并解压最新版的preCICE(在下述语句中将x.y.z
替换为实际的版本号):
wget https://github.com/precice/precice/archive/vx.y.z.tar.gz
tar -xzvf vx.y.z.tar.gz
cd precice-x.y.z