Pyomo DAE工具箱无法适当地离散化域

2024-10-02 00:37:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我用pyomodae工具箱来解一个偏微分方程,一个自变量(比如m.x)的区域长度非常小(比如1e-6)。你知道吗

在我看来,DAE工具箱无法适当地离散化域,因为离散化的m.x只有2个点(我使用了ContinuousSet.get\有限元素()方法来检查)甚至我在选项中指定了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公差或限制。如果有,如何自定义此值?你知道吗

提前谢谢!你知道吗


Tags: to区域工具箱schemeapplydisc有限元bounds
1条回答
网友
1楼 · 发布于 2024-10-02 00:37:23

是的,目前对域长度有限制。离散化转换当前将新的离散化点舍入到6个小数点。这是因为我看到的问题是,由于浮点舍入的细微差异,同一离散化点被多次添加。正如@QtotheC所提到的,最好的解决方案是修改缩放比例,使ContinuousSet上的边界在(0,1)左右。你知道吗

要包含的小数点的数目目前不是用户可以修改的选项,但您始终可以进入源代码并更改herehere的数目。你知道吗

相关问题 更多 >

    热门问题