OpenMDAOv1 +:可以在没有IndepVarComp组件的情况下设置组件或组的参数值吗?
问题描述:
有没有办法将设计变量值传递给OpenMDAO Problem
,Group
或Component
而不使用IndepVarComp
组件?我发现做prob.root.myComp.x = x
不会抛出错误,但对驱动程序来说似乎不可见。OpenMDAOv1 +:可以在没有IndepVarComp组件的情况下设置组件或组的参数值吗?
其动机是简化使用OpenMDAO创建的模型,以便在调用脚本中使用更少的组件和连接语句。
答
你可以做prob['myComp.x'] = x
并省略IndepVarComp
,前提是你不打算驱动程序在prob
驱动该变量。任何没有IndepVarComp
的参数都被OpenMDAO问题视为一个常量。
如果您希望驱动程序设置变量,则需要IndepVarComp。
+0
谢谢,这是诀窍。来自@RobFalck的评论也是关键(setup()必须先被调用)。 – jthomas
你只是想为组件中的param设置一个静态值吗?如果是这样,在调用setup之后'prob ['myComp.x'] = x'应该可以工作。 –