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 方法是一个两步过程:
- ODE 在“离散化”节点计算。
- 离散化节点的值和速率用于将状态和状态速率插值到“配置”节点。
- 使用步骤 2 中的插值状态值在配置节点处对 ODE 进行第二次计算。
- 将内插速率与 ODE 在配置节点输出的速率进行比较(这些称为缺陷)- 如果它们很小,则假定物理学是准确的。
Radau 转录遵循类似的过程,不同之处在于搭配节点是离散化节点的 子集,因此不需要插值,只需要计算 ODE一次。
如果您将转录从 dymos.GaussLobatto
更改为 dymos.Radau
,那么您的每个 ODE 组件将只有一个局部着色文件。否则,两者都需要分别进行着色。
我想知道这是否正确。我创建的大多数隐式和显式组件都使用以下行:
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 组件将只有一个局部着色文件。否则,两者都需要分别进行着色。