考虑以下问题
import openmdao.api as om
class Sys(om.Group):
def setup(self):
self.add_subsystem('sys1', om.ExecComp('v1 = a + b'), promotes=['*'])
self.add_subsystem('sys2', om.ExecComp('v2 = v1 + c'), promotes=['*'])
if __name__ == '__main__':
prob = om.Problem()
model = prob.model
comp = model.add_subsystem('comp', Sys(), promotes=['*'])
prob.setup()
prob.run_model()
comp.list_inputs()
list_inputs
命令的输出如下:
4 Input(s) in 'comp'
varname val
------- ----
sys1
a [1.]
b [1.]
sys2
c [1.]
v1 [2.]
但是我们可以清楚地看到,v1是系统中的“内部”输入。如果将其连接到IndepVarComp或另一个系统,则无需提供v1
,因为它已经内部连接。
是否有一种函数可以列出未连接或必须提供给组的输入?
view_connections 工具
来完成此操作,该工具显示了自动_ivc输入的来源,并且您可以对其进行过滤。另一个选项是使用 N2图 并查找橙色变量,这意味着它们尚未连接到任何东西。我是在评论而不是回答,因为这可能不是您需要的确切内容,但可能会有所帮助。 - John Jasa