Spack安装OpenFOAM未生成工具与求解器可执行文件的技术求助
使用Spack安装OpenFOAM后缺少求解器可执行文件的问题
环境配置与安装过程
1. Spack 外部包配置 (packages.yaml)
cat << EOF >> $SPACK_ROOT/etc/spack/packages.yaml packages: slurm: externals: - spec: slurm@22.05.5 prefix: /usr buildable: False libevent: externals: - spec: libevent@2.1.8 prefix: /usr buildable: False pmix: externals: - spec: pmix@4.2.3 prefix: /usr buildable: False hwloc: externals: - spec: hwloc@2.2.0 prefix: /usr buildable: False EOF
2. OpenFOAM 可用变体
# spack list openfoam ... Variants: Name [Default] When Allowed values Description ====================== ==== ============== ================================================== build_system [generic] -- generic Build systems supported by the package int64 [off] -- on, off With 64-bit labels kahip [off] -- on, off With kahip decomposition knl [off] -- on, off Use KNL compiler settings metis [off] -- on, off With metis decomposition mgridgen [off] -- on, off With mgridgen support paraview [off] -- on, off Build paraview plugins and runtime post-processing precision [dp] -- sp, dp, spdp Precision option scotch [on] -- on, off With scotch/ptscotch decomposition source [on] -- on, off Install library/application sources and tutorials vtk [off] -- on, off With VTK runTimePostProcessing zoltan [off] -- on, off With zoltan renumbering ...
3. 编译安装命令
spack install -j openmpi@4.0.5 +pmi schedulers=slurm ^pmix@4.2.3 ^hwloc@2.2.0 spack install -j openfoam +metis +scotch +zoltan +kahip +mgridgen ^openmpi@4.0.5
4. 问题现象
安装后执行spack load openfoam,按照doc/Build.md教程测试时,发现simpleFoam等求解器及工具仅存在源码,无对应可执行文件:
# find $(spack location -i openfoam) -name simpleFoam /mnt/irisgpfs/users/gkafanas/.spack/opt/spack/linux-rhel8-zen/gcc-8.5.0/openfoam-2306-ytaggtrqximxwyjmh6b77mw4j66leaxn/tutorials/basic/simpleFoam /mnt/irisgpfs/users/gkafanas/.spack/opt/spack/linux-rhel8-zen/gcc-8.5.0/openfoam-2306-ytaggtrqximxwyjmh6b77mw4j66leaxn/tutorials/incompressible/simpleFoam /mnt/irisgpfs/users/gkafanas/.spack/opt/spack/linux-rhel8-zen/gcc-8.5.0/openfoam-2306-ytaggtrqximxwyjmh6b77mw4j66leaxn/etc/caseDicts/createZeroDirectoryTemplates/solvers/simpleFoam /mnt/irisgpfs/users/gkafanas/.spack/opt/spack/linux-rhel8-zen/gcc-8.5.0/openfoam-2306-ytaggtrqximxwyjmh6b77mw4j66leaxn/applications/solvers/incompressible/simpleFoam
疑问
能否通过Spack编译并加载所有工具与求解器可执行文件?是否需要额外配置?
解决方案
1. 检查Spack包的构建逻辑
OpenFOAM的Spack包默认可能仅构建核心库,未自动编译applications/目录下的求解器与工具。可通过spack edit openfoam查看包定义的构建步骤,确认是否包含编译应用程序的逻辑。
2. 修改包定义强制编译应用程序
如果包定义中未包含应用程序编译步骤,可手动修改:
- 在
build()方法中添加调用OpenFOAM自带的Allwmake脚本,或遍历applications/solvers和applications/utilities目录执行wmake all。 - 确保安装阶段将生成的可执行文件复制到Spack标准的
bin目录,或配置环境变量让FOAM_APPBIN、FOAM_UTILSBIN被正确加入PATH。
3. 手动编译应用程序(临时解决)
加载OpenFOAM环境后,进入安装目录手动编译:
spack load openfoam cd $(spack location -i openfoam)/applications/solvers wmake all cd ../utilities wmake all
编译完成后,可执行文件会生成在$FOAM_APPBIN和$FOAM_UTILSBIN目录,加载环境时这些路径会自动加入PATH。
4. 验证环境变量加载
执行spack load openfoam后,检查可执行文件路径是否被正确添加:
echo $PATH | grep -E "(appbin|utilities)" echo $FOAM_APPBIN
若路径未被添加,可手动导出:
export PATH=$FOAM_APPBIN:$FOAM_UTILSBIN:$PATH
内容的提问来源于stack exchange,提问作者gkaf
相关产品推荐
相关产品推荐

