将“测量数据”应用于 fenics 中的 Dirichlet 边界条件

计算科学 优化 有限元 边界条件 芬尼克斯
2021-12-16 10:32:43

我对 fenics 比较陌生,我只是查看了与 Dirichlet 边界条件相关的所有问题。对于我要问的问题,我似乎没有找到一个描述清楚的问题或答案。

我正在解决一个 PDE 约束的优化问题,并且我在我的网格的所有节点上定义了来自实验的“测量数据”。我想将部分“测量数据”施加到我的 Dirichlet 边界条件,并将 0 Neumann 边界条件施加到未指定“测量数据”的节点。

经过一番阅读,我想我可以将这个“测量数据”与网格一起作为网格数据或网格函数读取,因为它是在网格节点上定义的。这似乎是可能的,尽管我还没有弄清楚如何准确地做到这一点。

但是即使加载了“测量数据”,我仍然不知道如何将它们作为狄利克雷边界条件施加在部分边界节点上,并为其余边界节点施加 0 Neumann bc。逐点应用它们似乎效率很低。标记子域似乎不太适用于这种情况。

例如,就我而言,我想要一个与坐标x大小相同的数组measureData,这样我就可以执行以下操作:

mesh = UnitSquareMesh(3,2)
V = VectorFunctionSpace(mesh,"CG",1)
measD0 = Expression("measuredData[0]")
measD1 = Expression("measuredData[1]")
bc0 = DirichletBC(V.sub(0), measD0, on_boundary)
bc1 = DirichletBC(V.sub(1), measD1, on_boundary)

但是现在我还没有想出一种方法来重载 Expression 以使其看到我的测量数据。

渴望听到有经验的fenics用户的意见!提前致谢!

更新:正如 Bill Barth 所澄清的,Dirichlet 边界连接良好,Neumann 边界也是如此。所以这个问题是适定的。

1个回答

我不知道如何在 FEciCS 中执行此操作,但根据本 SE 的政策,可能应该向开发人员或他们的邮件列表询问这个问题。话虽如此,我不确定这样的问题是否恰当。也许有人会纠正我,但即使你能弄清楚如何在 FEniCS 中的同一边或面(2d 与 3d)上强制执行混合的逐点 Dirichlet 和 Neumann 条件,你也可能会遇到数学问题。如果条件在该边界上从一种过渡到另一种,使得两个区域是紧凑的、连接的或其他的,那么我认为你应该没问题。

条件是随机施加在不同的点上,还是在应用它们的边界区域有一致的区域?