1

我正在解决电磁耦合问题:

“卷曲 u + u = OmegaC 中的卷曲 J

uxn = Gamma 上的 grad psi xn

欧米茄 I 中的拉普拉斯 psi = 0

grad psi \cdot n = u \cdot n 关于 Gamma

psi = 0 on \partial Omega"

其中 Omega 是 OmegaI 和 OmegaC 的不相交并集, OmegaC 的边界是 Gamma, OmegaI 的边界是 Gamma 和 \partial Omega 的不相交并集。

我想使用域分解来解决这个问题(我正在关注 Alonso,Valli 的第 120 页“麦克斯韦方程的涡流近似”)。首先,我注意到 Gamma 上的第二个界面方程可以重写为 Gamma 上的 grad psi\cdot n = div_tau ((J-curl u) xn) 其中 div_tau 是切向散度,并且我使用了恒等式: curl u \cdot n = div_tau(uxn)。

迭代方案变为:给定一个向量场 lambda,首先求解

欧米茄 I 中的拉普拉斯 psi = 0

Gamma 上的 grad psi \cdot n =div_tau(lambda xn)

psi = 0 on \partial Omega

即,使用按部分集成和 FreeFem++ 语法:

problem laplaceI(psiI,vI, solver=CG)=

-int3d(ThI)(Grad(psiI)'*Grad(vI))
+int2d(ThI,interiorI)([lambday*N.z-lambdaz*N.y,lambdaz*N.x-lambdax*N.z,lambdax*N.y-lambday*N.x]'*Grad(vI))
+on(exterior, psiI=0);

然后,

curl curl u + u = OmegaC中的curl J

uxn = Gamma 上的 grad psi xn

即:

problem curlcurlC([HCx,HCy,HCz],[wCx,wCy,wCz], solver=CG)=

 int3d(ThC)(Curl(HCx,HCy,HCz)'*Curl(wCx,wCy,wCz))
+int3d(ThC)([HCx,HCy,HCz]'*[wCx,wCy,wCz])
-int3d(ThC)([gx,gy,gz]'*[wCx,wCy,wCz])
+on(interiorC, HCx=dx(psiI), HCy=dy(psiI), HCz=dz(psiI));

(其中 [gx,gy,gz] 是 [Jx,Jy,Jz] 的卷曲)

最后,我们需要更新向量场 lambda: [lambdax,lambday,lambdaz]=(1-theta)*[lambdax,lambday,lambdaz]+theta*([Jx,Jy,Jz]-Curl(HCx,HCy,HCz))

解决方案不会随着迭代而改变。我想问题在于 lambda 的更新。

你有什么主意吗?

4

0 回答 0