使用PDE的解定义另一个PDE - FEniCS

4 投票
1 回答
601 浏览
提问于 2025-04-18 13:26

我现在正在尝试在FEniCS中解决Monge-Ampere方程,具体是实现一个非标准的边界条件。

这个边界条件要求解的梯度必须把原始区域的边界映射到另一个指定的区域。

当目标区域设定为单位圆时,实施起来比较简单,我通过在系统中加入以下内容来解决这个问题:

+(dot(grad(uh),grad(uh))-1)*vh*ds\ (1)

这里的uh是一个试函数,vh是一个测试函数。

但当考虑更复杂的目标区域,比如方形区域[−1,1]×[−1,1]时,事情就变得困难了,因为手动解决这个问题并不简单,所以我的想法是使用距离函数。

为此,我解决了一个稳定版本的Eikonal方程,它的解是带符号的距离函数。然后我想把(1)替换成:

+E(grad(uh))*vh*ds

其中E是Eikonal方程的解。但是当我尝试实现这个时,出现了一个错误,提示说这个函数需要标量参数。

有没有办法让这个解接受grad(uh)作为输入,以第二种微分形式?

谢谢大家的时间!

1 个回答

0

你需要在共同的边界上指定诺依曼条件(梯度向量),而不是狄利克雷条件(潜在标量)。

如果我在模拟一个物理问题,比如在两个不同区域之间的传导或扩散,能量守恒要求边界两侧的流量必须平衡。你会如何在你的方程中表达这个边界条件呢?

撰写回答