Bootstrap

vscode利用ofExtensions插件可以调试单进程Openfoam,但是不能调试mpi多进程案例

问题:

准备调试流固耦合案例,包括流体和固体的,但是用ofextensions插件。但是流体的话使用的是域分解方法,将大的单元分成了小的单元用mpi并行处理,里面的program必须输入"/usr/bin/mpirun",  // 这里改为使用 mpirun 来启动并行计算,但是这样不能启动断点,直接就执行完了。搜了一下必须将program里面写求解器的路径"/home/user/OpenFOAM/user-7/platforms/linux64GccDPInt32Opt/bin/blastFoam",  才能正常加断点调试

目前mpirun多进程调试中launch.json中 "program": "/usr/bin/mpirun"这样无法加入断点(表现为加了但是灰色的,按F5直接执行完了)

//多进程

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "ofextension: debug solver",
      "type": "cppdbg",
      "request": "launch",
      "program": "/usr/bin/mpirun",  // 这里改为使用 mpirun 来启动并行计算
      "args": [
        "-np", "4",                     // 设置并行计算的进程数
        "/home/user/OpenFOAM/user-7/platforms/linux64GccDPInt32Opt/bin/blastFoam",  // 设置 blastFoam 求解器路径
        "-parallel",                     // 开启并行计算
        "-case", "Fluid/"                // 设置 case 路径
      ],
      "stopAtEntry": true,
      "cwd": "/home/user/jie/detonationTask/jie_pbf3/alldata_5c4/true_5c4_Z_change2.cp",  // 设置工作目录
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "ofextension: debug solver",
      "miDebuggerPath": "${workspaceFolder}/.vscode/of-gdb.sh"
    }
  ]
}

然后在我的这个流固耦合案例中,取消decomposepar划分网格又会报错浮点异常
   

解决方法:

流固耦合的方法目前没有找到

次选的方法:

去掉Fluid/system/controldict里面最后三行的利用precice耦合的代码,单独运行流体再去掉decomposepar(单独运行流体不会报错浮点数异常)调试流体了。

  新的进展:作者发布的并行调试连接:

OpenFOAM并行调试来了。_哔哩哔哩_bilibili

ofExtension插件的作者回复:

大官人学CFD 回复:

并行得用gdb attach,或者专门的并行调试工具,用这个插件无法实现并行调试

;