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
永远不会工作,因为你不能将输入用作连接的源端。
但是,如果您将问题扩大一点,并假设有两个输出 a1
和 a2
,并且您希望发出两个连接 a1 -> b[0]
,a2 ->b[1]
,这些将是 "target indices." 但是,这在 OpenMDAO V1 或 OpenMDAO V2 中都是不允许的。原因是任何给定的输入都可以连接到一个且只有一个输出作为其源。此限制使底层代码更加简单。
在这种情况下,您需要制作一个具有两个输入和一个向量输出的复用组件。它在 V1 中的 solve_nonlinear
或 V2 中的 compute
方法会将值推入数组。
根据我对文档中src_indices
的理解,self.connect('a', 'b', src_indices=[1])
大致相当于b=a[1]
。有没有一种方便的方法来做 "target indices" 允许写类似 b[1]=a
?
如果a
是一个组件的输出,b
是另一个组件的输入,那么一般一个连接只能是a->b
。所以在那种情况下 b[1] -> a
永远不会工作,因为你不能将输入用作连接的源端。
但是,如果您将问题扩大一点,并假设有两个输出 a1
和 a2
,并且您希望发出两个连接 a1 -> b[0]
,a2 ->b[1]
,这些将是 "target indices." 但是,这在 OpenMDAO V1 或 OpenMDAO V2 中都是不允许的。原因是任何给定的输入都可以连接到一个且只有一个输出作为其源。此限制使底层代码更加简单。
在这种情况下,您需要制作一个具有两个输入和一个向量输出的复用组件。它在 V1 中的 solve_nonlinear
或 V2 中的 compute
方法会将值推入数组。