问题:
准备调试流固耦合案例,包括流体和固体的,但是用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(单独运行流体不会报错浮点数异常)调试流体了。
新的进展:作者发布的并行调试连接:
ofExtension插件的作者回复:
大官人学CFD 回复:
并行得用gdb attach,或者专门的并行调试工具,用这个插件无法实现并行调试