有没有一种方法可以为Exec Comp指定零件?

时间:2020-07-14 15:50:19

标签: openmdao

查看该类,我发现默认情况下看起来好像它们很复杂。有没有一种方法可以指定分析部分?

我有一些代码,其中有很多本质上是一个衬里显式comps,其中指定了分析性部分。与ExecComp相比,它具有任何真正的性能优势吗?还是使用简单的功能就能达到大致相同的效果?

1 个答案:

答案 0 :(得分:4)

当前没有办法为ExecComps指定解析部分,而您正确的是它们是复杂的步骤。

下一个问题的简短答案是,对于简单功能,使用显式组件而不是ExecComp没有明显的性能优势。这是因为当使用足够小的步长时,复步会在机器精度范围内计算导数,而OpenMDAO会这样做。对于单线而言,执行复杂步骤的实际计算成本通常很小。

更长的答案涉及一些考虑因素,例如组件的输入和输出数组的大小,Jacobian的稀疏模式以及实际计算功能的成本。如果您愿意,我可以详细介绍这些注意事项,并提出解决问题的方法。

[编辑:我已使用以下计算结果更新了该图:y=sum(log(x)/x**2+3*log(x)]

我在下面添加了一个图,该图显示了当我们将输入数组的大小更改为该组件时,计算该组件的导数的成本。整个分析组件的速度稍快一些,但是需要更多的代码行。

基本上,无论哪种方法都更容易实现,因为成本差异不大,这可能是有利的。对于这种极其简单的计算功能,因为它是如此便宜,所以框架开销可能比实际派生计算对成本的影响更大。当然,这些趋势也取决于问题。

Computational cost comparison for exec and analytic comps