如何解决OpenMDAO 两次生成着色文件
我想知道这是否正确。我创建的大多数隐式和显式组件都使用以下行:
self.declare_coloring(wrt='*',method='cs',tol=1.0E-12,show_sparsity=True)
然后当我找到运行我使用的驱动程序的文件时:
p.driver.declare_coloring()
在我的 /coloring_files 目录中,每个组件都有一个“col”和一个“disc”。
coloring_traj_phases_phase0_rhs_col_brakeThrottle.pkl coloring_traj_phases_phase0_rhs_disc_implicitOutputs.pkl
coloring_traj_phases_phase0_rhs_col_implicitOutputs.pkl coloring_traj_phases_phase0_rhs_disc_powerTrain.pkl
coloring_traj_phases_phase0_rhs_col_powerTrain.pkl coloring_traj_phases_phase0_rhs_disc_spin.pkl
coloring_traj_phases_phase0_rhs_col_spin.pkl coloring_traj_phases_phase0_rhs_disc_timeAdder.pkl
coloring_traj_phases_phase0_rhs_col_timeAdder.pkl coloring_traj_phases_phase0_rhs_disc_timeSpace.pkl
coloring_traj_phases_phase0_rhs_col_timeSpace.pkl coloring_traj_phases_phase0_rhs_disc_tracking.pkl
coloring_traj_phases_phase0_rhs_col_tracking.pkl coloring_traj_phases_phase0_rhs_disc_tyreConstraint.pkl
coloring_traj_phases_phase0_rhs_col_tyreConstraint.pkl coloring_traj_phases_phase0_rhs_disc_tyre.pkl
coloring_traj_phases_phase0_rhs_col_tyre.pkl total_coloring.pkl
coloring_traj_phases_phase0_rhs_disc_brakeThrottle.pkl
是否需要两套文件,还是我重复操作两次?另外我想知道是否使用驱动程序声明着色使用了 CS 以外的方法?我确实打算使用 total_coloring.pkl 进行静态着色。
解决方法
Dymos 可以使用以下两种方法之一进行转录:Radau 伪谱方法或高阶 GaussLobatto 方法。
GaussLobatto 方法是一个两步过程:
- ODE 在“离散化”节点上进行评估。
- 离散化节点的值和比率用于将状态和状态比率插入到“搭配”节点。
- 使用第 2 步中的内插状态值在搭配节点处第二次评估 ODE。
- 将插值速率与 ODE 在配置节点处输出的速率进行比较(这些称为缺陷) - 如果它们很小,则假定物理是准确的。
Radau 转录遵循类似的过程,只是搭配节点是离散化节点的子集,因此不需要插值,ODE 只需要评估一次。
如果您将转录从 dymos.GaussLobatto
更改为 dymos.Radau
,那么您的每个 ODE 组件将只有一个局部着色文件。否则,两者都需要单独进行着色。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。