【发布时间】:2017-08-18 15:41:41
【问题描述】:
我正在使用 Pyomo DAE 工具箱来求解偏微分方程,并且一个自变量(例如 m.x)的域长度非常小(例如 1e-6)。
在我看来,DAE 工具箱无法适当地离散域,因为离散后的 m.x 只有 2 个点(我使用 ContinuousSet.get_finite_elements() 方法来检查)即使我在选项中指定了 10 个有限元点(参见代码下面)。
m.x = ContinuousSet(bounds=(0, 1e-6))
disc=TransformationFactory('dae.finite_difference')
disc.apply_to(m, nfe=10, wrt=m.x, scheme='BACKWARD')
我将 m.x 的上限增加为
m.x = ContinuousSet(bounds=(0, 1e-5))
并尝试再次对其进行离散化。这次我在 x 域得了 10 分。
但是,当我将有限元点的数量增加为
m.x = ContinuousSet(bounds=(0, 1e-5))
disc.apply_to(m, nfe=100, wrt=m.x, scheme='BACKWARD')
返回的离散域 x 仍有 10 个点。
我想知道 DAE 工具箱是否存在 1e-6 容差或限制。如果有,我该如何自定义这个值?
提前谢谢你!
【问题讨论】:
-
Bethany Nicholson 是最熟悉 Pyomo.DAE 的开发人员。您可能需要考虑扩展您的连续集,使其不受限制,因为您也可能会遇到求解器的问题。