我目前正在尝试通过实现非标准边界条件来解决 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) 作为输入?
谢谢大家的时间!
最佳答案
您必须在公共(public)边界上指定 Neumann 条件(梯度向量)而不是 Dirchelet(潜在标量)。
如果我要模拟两个不同区域之间的传导/扩散的物理问题,能量守恒将要求边界两侧的通量必须平衡。您将如何在方程中表达该边界条件?
关于python - 使用 PDE 的解来定义另一个 PDE - FEniCS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24763482/