我正在解决电磁耦合问题:
“卷曲 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 的更新。
你有什么主意吗?