Hello, everyone.
Now I’m using freefem++ to solve the incompressible hall-MHD equations, but I’ve encountered a problem regarding the boundary conditions of the magnetic field.
\mu\nabla\times (\nabla\times\mathbf{B})+(\mathbf{u}^n\cdot\nabla)\mathbf{B}^n-(\mathbf{B}^n\cdot\nabla)\mathbf{u}^n+\eta\nabla\times\left((\nabla\times\mathbf{B}^n)\times\mathbf{B}^n\right)=\mathbf{g}
\nabla\cdot\mathbf{B}=0
Before solving, assume that the velocity field \mathbf{u}^n,\mathbf{B}^n is already known (I decoupled the equation).
I use the boundary condition of magnetic
\mathbf{B}\times \mathbf{n} = \mathbf{0} or \mathbf{B}\times \mathbf{n} = \mathbf{B}_e , where \mathbf{B}_e is the analytical solution that I set, and \mathbf{n} is the unit external normal vector of the boundary. The domain is [0,1]^3.
solve Magnetic(Bx1, By1, Bz1, wx, wy, wz, solver = GMRES)
= int3d(Th)( mu*curl(Bx1, By1, Bz1)'*curl(wx, wy, wz) + mu*div(Bx1, By1, Bz1)*div(wx, wy, wz) )
+ int3d(Th)( UgradV(ux0, uy0, uz0, Bx0, By0, Bz0)'*[wx, wy, wz] - UgradV(Bx0, By0, Bz0, ux0, uy0, uz0)'*[wx, wy, wz]
+ eta*crossProduct(dy(Bz0)-dz(By0), dz(Bx0)-dx(Bz0), dx(By0)-dy(Bx0), Bx0, By0, Bz0)'*curl(wx, wy, wz)
- (g1t*wx + g2t*wy + g3t*wz))
;
with
macro Grad(ux, uy, uz) [(dx(ux)), (dy(ux)), (dz(ux)), (dx(uy)), (dy(uy)), (dz(uy)), (dx(uz)), (dy(uz)), (dz(uz))] //
macro div(ux, uy, uz) ( dx(ux) + dy(uy) + dz(uz) ) //
macro UgradV(ux, uy, uz, vx, vy, vz) [(ux)*(dx(vx)) + (uy)*(dy(vx)) + (uz)*(dz(vx)), (ux)*(dx(vy)) + (uy)*(dy(vy)) + (uz)*(dz(vy)), (ux)*(dx(vz)) + (uy)*(dy(vz)) + (uz)*(dz(vz))] //
macro curl(Bx, By, Bz) [dy(Bz) - dz(By), dz(Bx) - dx(Bz), dx(By) - dy(Bx)] //
macro crossProduct(ux, uy, uz, vx, vy, vz) [(uy)*(vz) - (uz)*(vy), (uz)*(vx) - (ux)*(vz), (ux)*(vy) - (uy)*(vx)] //
But, the result is wrong. Maybe I should add a stabilization term, but I do not how to do