首页 > 解决方案 > 有没有办法通过在 OpenMDAO 中创建 XDSM 图来扩展组?

问题描述

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

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

标签: openmdao

解决方案


有一个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)

将递归设置为 True 的 XDSM

recurse=False与(d1d2没有显示,而是他们的 Group )相同的代码cycle

将递归设置为 False 的 XDSM

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

openmdao xdsm sellar_pyxdsm.py -f pdf --recurse

默认情况下,该功能是打开的,您必须在命令行中包含该标志。如果这对您来说没有按预期工作,请提供一个示例。

您可以在 XDSM 插件的测试中找到许多具有不同选项的示例。某些选项(如、 和recurseinclude_indepvarcomps控制XDSM 中包含的内容。include_solvermodel_path


推荐阅读