Reputation: 111
I'm solving a coupling problem of electromagnetism:
"curl curl u + u = curl J in OmegaC
u x n = grad psi x n on Gamma
laplace psi = 0 in Omega I
grad psi \cdot n = u \cdot n on Gamma
psi = 0 on \partial Omega"
where Omega is the disjoint union of OmegaI and OmegaC, The boundary of OmegaC is Gamma and the boundary of OmegaI is the disjoint union of Gamma and \partial Omega.
I want to solve this problem using Domain Decomposition (I'm following page 120 of Alonso, Valli "Eddy current approximation of Maxwell equations"). First of all, I notice that the second interface equation on Gamma can be rewritten as grad psi\cdot n = div_tau ((J-curl u) x n) on Gamma where div_tau is the tangential divergence and where I used the identity: curl u \cdot n = div_tau(u x n).
The iterative scheme becomes: given a vector field lambda, first solve
laplace psi = 0 in Omega I
grad psi \cdot n =div_tau(lambda x n) on Gamma
psi = 0 on \partial Omega
namely, using integration by parts and FreeFem++ syntax:
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);
then,
curl curl u + u = curl J in OmegaC
u x n = grad psi x n on Gamma
namely:
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));
(where [gx,gy,gz] is the curl of [Jx,Jy,Jz])
Finally, we need to update the vector field lambda:
[lambdax,lambday,lambdaz]=(1-theta)*[lambdax,lambday,lambdaz]+theta*([Jx,Jy,Jz]-Curl(HCx,HCy,HCz))
.
The solutions are not changing with the iterations. I guess the problem is with the updating of lambda.
Do you have any idea?
Upvotes: 1
Views: 258