我目前正在尝试通过实现一个非标准边界条件来求解FEniCS中的蒙格-安培方程。
边界条件要求解的梯度必须将原始域的边界映射到另一个指定的域。
当目标域被指定为单位圆时,实现非常简单,我已经通过将以下内容放入我的系统中来解决这个问题:
+(dot(grad(uh),grad(uh))-1)*vh*ds\ (1)其中,呃,是试函数,vh是试函数。
当考虑更复杂的目标空间时,例如方形−1,1×−1,1事情变得更加困难,因为它不是那么简单的手工解决,所以我的想法是使用距离函数。
为了做到这一点,我已经解决了Eikonal方程的一个稳定版本,谁的解是有符号距离函数,然后我的想法是将(1)替换为:
+E(grad(uh))*vh*ds其中E是Eikonal方程的解,但当我尝试实现它时,我得到了一个错误,说明函数需要标量参数,
有没有办法对解决方案进行编程,以接受grad(呃)作为输入,以第二种微分形式?
感谢大家抽出时间来!
发布于 2014-07-21 21:19:52
您必须在公共边界上指定Neumann条件(梯度向量),而不是Dirchelet (势标量)。
如果我模拟两个不同区域之间传导/扩散的物理问题,能量守恒将要求边界两侧的通量必须平衡。你如何在你的方程中表达边界条件?
https://stackoverflow.com/questions/24763482
复制相似问题