我想使用 OpenMDAO 编写的代码块来提取输出表达式作为几个变量的函数(需要声明为符号)。在这种情况下,问题的结构不是高度嵌套的,所以也许我会浪费更少的时间直接手动完成它,但我想知道是否存在任何类似的功能来执行此操作。
在这种情况下,结构如下:仅计算作为马赫数 (M) 和升力系数 (CL) 函数的阻力系数 CD:
每个贡献(CD0 和 e)都是由多个组件(在本例中为 ExplicitComponents)组成的组,并进一步依赖于 M 和 CL。
您正在寻找
ExecComp
,它可以让您只需在初始化参数中键入一个方程。
文档位于此处。
从这些文档复制的简单示例:
import openmdao.api as om
prob = om.Problem()
model = prob.model
model.add_subsystem('comp', om.ExecComp('y=x+1.'))
model.set_input_defaults('comp.x', 2.0)
prob.setup()
prob.run_model()
print(prob.get_val('comp.y'))