有没有办法通过在 OpenMDAO 中创建 XDSM 图来扩展组?

Is there a way to expand groups with the XDSM diagram creation in OpenMDAO?

我的大部分测试文件都涉及创建连接到组的 IndepVarComp。当我从测试文件创建 XDSM 时,它只显示 IndepVarComp 框和组框。有没有办法让它扩大组并显示里面的内容?

这在处理包含多个级别组的顶级模型时也很有用,我想在其中扩展一个或两个级别并将其余级别关闭。

有一个recurse选项,它控制组是否展开。这是一个关于 Sellar 问题的小例子来探索这个选项。规程 d1d2 是名为 cycle 的组的一部分。

import numpy as np
import openmdao.api as om
from openmdao.test_suite.components.sellar import SellarNoDerivatives

from omxdsm import write_xdsm

prob = om.Problem()
prob.model = model = SellarNoDerivatives()
model.add_design_var('z', lower=np.array([-10.0, 0.0]),
                     upper=np.array([10.0, 10.0]), indices=np.arange(2, dtype=int))
model.add_design_var('x', lower=0.0, upper=10.0)
model.add_objective('obj')
model.add_constraint('con1', equals=np.zeros(1))
model.add_constraint('con2', upper=0.0)

prob.setup()
prob.final_setup()

# Write output. PDF will only be created, if pdflatex is installed
write_xdsm(prob, filename='sellar_pyxdsm', out_format='pdf', show_browser=True,
           quiet=False, output_side='left', recurse=True)

recurse=False 相同的代码(未显示 d1d2,而是它们的组 cycle):

要从命令行启用递归,请使用 --recurse 标志:

openmdao xdsm sellar_pyxdsm.py -f pdf --recurse

默认情况下启用该功能,在命令行中您必须包含该标志。如果这对您没有预期的效果,请提供示例。

您可以找到很多具有不同选项的示例 in the tests of the XDSM plugin。一些选项,如 recurseinclude_indepvarcompsinclude_solvermodel_path 控制 XDSM 中包含的内容。