OpenMDAO 两次生成着色文件

OpenMDAO generating coloring files twice

我想知道这是否正确。我创建的大多数隐式和显式组件都使用以下行:

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 方法是一个两步过程:

  1. ODE 在“离散化”节点计算。
  2. 离散化节点的值和速率用于将状态和状态速率插值到“配置”节点。
  3. 使用步骤 2 中的插值状态值在配置节点处对 ODE 进行第二次计算。
  4. 将内插速率与 ODE 在配置节点输出的速率进行比较(这些称为缺陷)- 如果它们很小,则假定物理学是准确的。

Radau 转录遵循类似的过程,不同之处在于搭配节点是离散化节点的 子集,因此不需要插值,只需要计算 ODE一次。

如果您将转录从 dymos.GaussLobatto 更改为 dymos.Radau,那么您的每个 ODE 组件将只有一个局部着色文件。否则,两者都需要分别进行着色。