有没有办法为 Exec Comp 指定分音?

Is there a way to specify partials for an Exec Comp?

查看 class,我发现默认情况下它们看起来像是复杂的阶梯式。有没有办法指定分析部分?

我有一些代码,其中有很多本质上是一个线性显式组件,并指定了分析部分。与 ExecComp 相比,它有任何真正的性能优势吗?或者用简单的函数也能达到大致相同的效果?

目前没有办法为 ExecComps 指定解析部分,你是对的,它们是复步进的。

对您的下一个问题的简短回答是,对于简单的函数,使用显式组件比 ExecComp 没有有意义的性能优势。这是因为当使用足够小的步长时,复杂步长计算机器精度内的导数,而 OpenMDAO 就是这样做的。对于单行,执行复杂步骤的实际计算成本通常微不足道。

较长的答案涉及一些考虑因素,例如组件输入和输出数组的大小、雅可比行列式的稀疏模式以及实际计算函数的成本。如果您愿意,我可以更详细地介绍这些注意事项,并建议使用哪种方法来解决您的问题。

[编辑:我已经用此计算的结果更新了图形:y=sum(log(x)/x**2+3*log(x)]

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

基本上,无论哪种方法更容易实施,都可能是有利的,因为成本差异不大。对于这个极其简单的计算函数,因为它非常便宜,框架开销对成本的影响可能比实际的导数计算更大。当然,这些趋势也取决于问题。