Weird AttributeError: OpenMDAO says param has not been initialized when I run my simulation under mpirun

Weird AttributeError: OpenMDAO says param has not been initialized when I run my simulation under mpirun

我是运行宁developmental scientific code。我被一条神秘的错误消息困住了,很好奇 OpenMDAO 团队的想法。当我 运行 串行代码时,它没有问题。当我 运行 它在 mpirun 下时,OpenMDAO 抛出一条神秘的错误消息:

Traceback (most recent call last):
  File "test/exampleOptimizationAEP.py", line 129, in <module>
    prob['ratedPower'] = ratedPower
   .....
   File "/scratch/jquick/test/lib/python2.7/site-packages/openmdao-1.7.3-py2.7.egg/openmdao/core/vec_wrapper.py", line 1316, in __setitem__
    (self.name, name))
AttributeError: 'params' has not been initialized, setup() must be called before 'ratedPower' can be accessed

我不知道该如何处理。代码中的 ratedPower 变量没有明显不同。此错误向我提供了哪些有关问题的信息?

这是 OpenMDAO <= v1.7.2 中的错误。查看 check_setup 的输出并查看 parameters without associated unknowns 的列表。你会在那里找到那个变量。当 运行 并行时(由于错误),您不能在设置脚本中设置任何悬挂参数(没有相关未知数的参数)。

修复它的方法是将 IndepVarComp 添加到任何需要初始化其值的变量。