带 mpi 的 OpenMDAO 外部代码组件

OpenMDAO External Code Component with mpi

我正在尝试使用 openMDAO 和 SU2 优化机翼。我有多个要并行 运行 的设计点。我设法用 "Parallel Group" 和 XFoil 做到了这一点。但是我现在想用SU2代替XFoil。

最大的问题是,SU2 本身是由 MPI (mpi运行-np 4 SU2_CFD config.cfg) 启动的。现在我希望 openMDAO 将所有可用进程平均分配给所有 DesignPoints。然后 运行 每个设计点一个 SU2 实例。然后,每个 SU2 实例都应使用 openMDAO 分配给该 DesginPoint 的所有进程。

我该怎么做?

可能是错误的做法: 我玩弄了外部代码组件。但是如果这个组件得到2个进程,就是运行两次。我不想 运行 SU2 两次。我想 运行 它一次,但同时使用两个可用进程。

最好的问候 大卫

我认为您包装 SU2 的方法不会奏效,如果您想 运行 它作为更大模型的一部分并行处理。 ExternalCodeComp 专为文件包装和生成子进程而设计,这不会让您以任何方式与父进程(我知道)共享 MPI 通信器。

我不是 SU2 的专家,所以我无法与他们的 python 界面对话。但我非常有信心 ExternalCodeComp 不会在这里为您提供您想要的东西。我建议您与 SU2 开发人员讨论他们的内存接口。

我想不出一个简单的方法。但我发现了 ADflow:https://github.com/mdolab/adflow

它是一个随 OpenMDAO-Wrapper 一起提供的 CFD 求解器。所以我要用那个。