OpenMDAO 1.x 组连接中的目标索引?

target indices in OpenMDAO 1.x group connections?

根据我对文档中src_indices的理解,self.connect('a', 'b', src_indices=[1])大致相当于b=a[1]。有没有一种方便的方法来做 "target indices" 允许写类似 b[1]=a?

如果a是一个组件的输出,b是另一个组件的输入,那么一般一个连接只能是a->b。所以在那种情况下 b[1] -> a 永远不会工作,因为你不能将输入用作连接的源端。

但是,如果您将问题扩大一点,并假设有两个输出 a1a2,并且您希望发出两个连接 a1 -> b[0]a2 ->b[1],这些将是 "target indices." 但是,这在 OpenMDAO V1 或 OpenMDAO V2 中都是不允许的。原因是任何给定的输入都可以连接到一个且只有一个输出作为其源。此限制使底层代码更加简单。

在这种情况下,您需要制作一个具有两个输入和一个向量输出的复用组件。它在 V1 中的 solve_nonlinear 或 V2 中的 compute 方法会将值推入数组。