利用Conda简化OpenFOAM编译过程
创建时间: 2024-09-10 18:51:19
摘要: 本文基于conda创建虚拟环境作为OpenFOAM编译环境,从零开始介绍完整编译流程,无需root权限,操作简单,通用性强。
conda工具安装
Miniconda/Anaconda:https://docs.anaconda.com/miniconda/
Miniforge/Mambaforge:https://github.com/conda-forge/miniforge/releases
这里推荐Mambaforge。
conda环境配置
例如将这个专用于编译OpenFOAM的环境称为of,那么创建环境和OpenFOAM依赖的命令如下:
conda create -n of -c conda-forge gcc gxx make zlib flex bison openmpi=4.1.6
激活环境
设置用户变量
conda_path:conda安装目录
conda_env_name:所创建的环境名称
of_path:目标OpenFOAM源码路径
of_option:编译选项,默认为空
通用编译脚本
#!/bin/bash
# Set user-specific variables
export conda_path= # your conda path
export conda_env_name= # your conda env name
export of_path= # your openfoam path
export of_option="" # your compile options, default is empty
# Check mandatory variables
if [ -z "$conda_path" ] || [ -z "$conda_env_name" ] || [ -z "$of_path" ];
then echo "Error: conda_path, conda_env_name, and of_path must be set."
exit 1
fi
# Check for ld and create symlink if necessary
ld_path="$conda_path/envs/$conda_env_name/bin/ld"
if [ ! -f "$ld_path" ]; then
ln -s "$conda_path/envs/$conda_env_name/bin/x86_64-conda-linux-gnu-ld" "$ld_path"
fi
# This is common script
source $conda_path/bin/activate $conda_env_name
export PATH=$conda_path/envs/$conda_env_name/bin:$PATH
export LD_LIBRARY_PATH=$conda_path/envs/$conda_env_name/lib:$LD_LIBRARY_PATH
for var in C_INCLUDE_PATH CPLUS_INCLUDE_PATH; do
if [ -z "${!var+x}" ]; then
export $var="$conda_path/envs/$conda_env_name/include"
else
export $var="$conda_path/envs/$conda_env_name/include:${!var}"
fi
done
source $of_path/etc/bashrc $of_option
例如基于以上内容创建环境激活脚本为of2412.sh,那么激活环境的命令如下:
source of2412.sh
编译
修改
$WM_THIRD_PARTY_DIR/Allwmake脚本,删除scotch以下的所有可选项开始编译:
cd $WM_PROJECT_DIR
./Allwmake -j 8 |& tee log
上述8可以指定为需要的进程数,并行编译以节省时间。 等待编译完成即可使用。