如何迭代OpenMDAO对象中的条目

时间:2016-05-19 08:55:29

标签: openmdao

OpenMDAO中的Problem对象被编程为行为类似于对象中声明的所有Problem变量的字典以及what-not。现在我可以使用for循环遍历普通词典:

for key,value in my_dict.iteritems():
    do_something(key,value)

这样的事情可以用OpenMDAO问题完成吗?

我有一堆有用的工具用于处理字典。我也想用它来处理OpenMDAO问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

我不确定你想做什么,但听起来你想迭代模型中的所有变量?您可以这样做的一种方法是迭代prob.root.unknowns,这是包含模型顶部System中所有连接变量的向量。它是递归的,它包含在子系统中指定的连接。但是,它不包含任何与数据传递无关的内容,因此任何至少未连接到Component的{​​{1}}输入都不会显示在其中。< / p>

答案 1 :(得分:1)

问题并不像字典,我们只是在其上定义__getitem____setitem__方法,以方便用户(see code)。如果要访问基础类似dict的对象,可以访问prob.root.unknowns 代替。这仍然不是一个字典,而是一个VecWrapper实例,但它类似于dict,并且具有必要的方法,可以像鸭子一样使用。