水平集方法示例

计算科学 有限元
2021-12-01 10:00:20

我正在寻找易于理解的用于跟踪阶段接口的水平集方法的示例。我想使用 FEM 解决它,因为我的解决方案是基于第二 Fick 定律的 FEM 解决方案。初始化步骤很简单——它只是每个节点与接口的距离。但我对第二步有问题 - 界面速度方程的解:

ϕt+F|ϕ|=0

如果我理解正确,我需要一个微分方程的弱公式,其中 F 是界面的线速度。解决方案会给我一个新的界面位置。这是正确的吗?

2个回答

TL;DR:是的,ϕ=0总是在以后找到接口。请参阅下面的更多细节:


一个水平集函数,ϕ(x,y,t),在二维中,描述了一个函数,其零级集描述了您的界面。准确地说,一个水平集函数ϕ划分您的域Ω分为三个不相交的子域:

{Ω:(x,y,t)|ϕ(x,y,t)<0Γ:(x,y,t)|ϕ(x,y,t)=0Ω+:(x,y,t)|ϕ(x,y,t)>0

假如说ϕ(x,y,t)=0 总是表示接口Γ,显然接口必须满足:

DϕDt=ϕt+Vϕ=0

此外,由于ϕ(x,y,t)=0Γ,这个方程可以写成只涉及法线方向 的速度

ϕt+vnϕn=0
然而,由于Γ是一个水平集,对于单位法线,我们有以下关系:
n^=ϕ|ϕ|
因此,进化方程简化为:
ϕt+vn|ϕ|=0

这是您的方程式版本F=vn. 它有时被称为法线方向的运动

总而言之,零水平集ϕ(x,y,t)当您求解水平集方程(以原始形式或正常运动形式)时,始终定位界面。我建议您参考以下两个标准文本以获取更多详细信息和实际实现:

塞西恩的书

Osher 和 Fedkiw 的书

第一个包括关于解决方案的弱公式和 FEM 方法的一章,而第二个主要涉及 FDM 方法。

对于水平集方程,ϕ=0表示您的界面并且您适当地初始化它。然后根据你的对流方程,你移动ϕ(取决于你想如何解决它,如果使用 FEM,那么你需要弱公式等)然后再次找到 ϕ=0这将为您提供对流界面的位置。但是,经过一些迭代后,水平集函数会变得模糊。因此,您可能需要重新初始化它。

我发现本教程相对容易理解:http ://persson.berkeley.edu/pub/persson05levelset.pdf希望对您有所帮助。

对于 FEM 框架,本文的第 5 章应该会有所帮助。