私は電磁気学の結合問題を解いています:
「curl curl u + u = curl J in OmegaC」
uxn = ガンマのグラード psi xn
オメガ I ではラプラス psi = 0
grad psi \cdot n = u \cdot n on Gamma
psi = 0 on \partial Omega"
ここで、Omega は OmegaI と OmegaC の互いに素な和集合であり、OmegaC の境界はガンマであり、OmegaI の境界はガンマと \partial Omega の素な和集合です。
Domain Decomposition を使用してこの問題を解決したいと考えています (Alonso, Valli の「マクスウェル方程式の渦電流近似」の 120 ページをフォローしています)。まず、Gamma の 2 番目のインターフェイス方程式は grad psi\cdot n = div_tau ((J-curl u) xn) on Gamma のように書き直すことができることに気付きました。ここで、div_tau は接線方向の発散であり、恒等式: curl u を使用しました。 \cdot n = div_tau(uxn)。
反復スキームは次のようになります。ベクトル フィールド ラムダが与えられた場合、最初に解く
オメガ I ではラプラス psi = 0
grad psi \cdot n =div_tau(lambda xn) on Gamma
\partial Omega で psi = 0
つまり、部分統合と 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 = ガンマのグラード 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))
。
解決策は反復によって変化していません。問題はラムダの更新にあると思います。
何か考えはありますか?