我正在解决电磁耦合问题:
“在OmegaC中卷曲你+ + u =卷曲J
u x n = Gamma上的grad psi x n
在Omega I中laplace psi = 0
grad psi \ cdot n = u \ cdot n on Gamma
psi = 0 on \ partial Omega“
Omega是OmegaI和OmegaC的不相交联盟,OmegaC的边界是Gamma,而OmegaI的边界是Gamma和\ partial Omega的不相交联合。
我想使用域分解来解决这个问题(我正在遵循Alonso的第120页,Valli“麦克斯韦方程的涡流近似”)。 首先,我注意到Gamma上的第二个接口方程可以重写为 Gamma上的grad psi \ cdot n = div_tau((J-curl u)x n) 其中div_tau是切向差异,我使用了身份:curl u \ cdot n = div_tau(u x n)。
迭代方案变为:给定矢量场lambda, 先解决
在Omega I中laplace psi = 0
毕业psi \ cdot n = div_tau(lambda x n)在Gamma上
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);
然后,
curme curl u + u =在OmegaC中卷曲J
u x n = Gamma上的grad psi x n
即:
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的更新。
你有什么想法吗?