You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:51:25