我正在使用OpenMDAO来模拟CNC车削过程并希望为我的Component
实现我自己的“执行者” - 就像旧版本中的car example一样OpenMDAO,其中SimAcceleration driver用于实现组件的执行方式。
但是,我不知道如何在OpenMDAO 1.x中实现这样的示例,我们可能希望实现自定义逻辑来驱动组件和/或Group
的输入并从中获取输出。任何指针都会非常有用。
P.S。 - 我正在考虑将我的组件包装在Problem
中并在另一个组件中创建它的实例,并将所有执行逻辑放在其solve_nonlinear
中(如建议的here)。但我不确定这是否是解决这个问题的正确方法。
答案 0 :(得分:1)
我们最近倾向于以不同方式对时间积分进行建模。我们现在使用一个执行集成的组件而不是使用驱动程序,并将整个时间历史输出为一个大数组。您可以使用a satellite design problem查看我们的代码。但是如果你有一个包含大量组件的大型模型,那么嵌套问题或自定义驱动程序都可以解决问题。
如果你要围绕它做一些优化,我会尝试嵌套的问题方法。你可以制作你的模型,把它作为一个问题包装起来。然后将该问题提供给您编写为自己的组件的某种时间积分器。或者,您可以将问题包装在一个简单的函数中,并将该函数交给scipy integrators
之一如果您只想及时遍历模型,则驱动程序可以正常工作。我会尝试从一个优化驱动程序开始,并使用您自己的for循环等进行修改。这样可以正常工作,并可能成为一个有趣的驱动程序。