利用Conda简化OpenFOAM编译过程

创建时间: 2024-09-10 18:51:19
摘要: 本文基于conda创建虚拟环境作为OpenFOAM编译环境,从零开始介绍完整编译流程,无需root权限,操作简单,通用性强。

conda工具安装

这里推荐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可以指定为需要的进程数,并行编译以节省时间。 等待编译完成即可使用。