### Solver/Preconditioner for the gauged vector potential formulation (curl curl equation)

137

views

0

Hi everyone,

I'm currently working on a nonlinear, Coulomb gauged vector potential formulation (curl curl equation) for three‐dimensional magnetostatics. Gauging is imposed via a penalty term.

Furthermore I'm using H(curl)-conforming edge elements. But I'm facing convergence problems trying to solve the nonlinear variational problem.

The convergence criterion is set to 1e-09 (absolute tolerance). I have tried direct solvers and different combinations of iterative solver/ preconditioners but i was not able to

achieve convergence.

Varying the penalty parameter also had not that much of an impact on the convergence behavior.

Here is a simplified working example to reproduce the problem:

Does anyone have experience regarding this convergence problem for the gauged vector potential formulation?

I will be grateful for any help.

Best regards,

Dustin
I've already taken a look at the curl-curl demo which utilizes the hypre_ams preconditioner and adapted it for my problem.

Works nicely.

But are there any other reliable/good Solver/Preconditioner for the curl-curl problem?

In the future I want to model magnetomechanics and adapting the auxiliary space preconditioning is not a trivial task.

So i also wanted to explore some other options.

I'm currently working on a nonlinear, Coulomb gauged vector potential formulation (curl curl equation) for three‐dimensional magnetostatics. Gauging is imposed via a penalty term.

Furthermore I'm using H(curl)-conforming edge elements. But I'm facing convergence problems trying to solve the nonlinear variational problem.

The convergence criterion is set to 1e-09 (absolute tolerance). I have tried direct solvers and different combinations of iterative solver/ preconditioners but i was not able to

achieve convergence.

Varying the penalty parameter also had not that much of an impact on the convergence behavior.

Here is a simplified working example to reproduce the problem:

```
from dolfin import *
# Create mesh and define function space
mesh = UnitCubeMesh(10, 10, 10)
V = FunctionSpace(mesh, "N1curl", 1)
# Dirichlet boundary:
def E0_boundary(x, on_boundary):
return on_boundary
c = Expression(("0.0", "10*x[0]", "0.0"), degree=1)
bc = DirichletBC(V, c, E0_boundary)
# Define functions
du = TrialFunction(V)
v = TestFunction(V)
u = Function(V)
# parameters
mu0 = 4.0*pi*1e-7
alpha= 1/mu0
# Magnetic field strength
H= 1/mu0*curl(u)
# Variational Formulation (in this special case: linear)
F = inner(curl(v), H)*dx + alpha*div(v)*div(u)*dx
# Compute Jacobian of F
J = derivative(F, u, du)
# Solve variational problem
problem = NonlinearVariationalProblem(F, u, bc, J)
solver = NonlinearVariationalSolver(problem)
solver.parameters['newton_solver']['absolute_tolerance'] = 1E-9
solver.parameters['newton_solver']['relative_tolerance'] = 1E-35
solver.parameters['newton_solver']['maximum_iterations'] = 10
solver.parameters['newton_solver']['linear_solver'] = 'gmres'
solver.parameters['newton_solver']['preconditioner'] = 'hypre_amg'
solver.solve()
```

Does anyone have experience regarding this convergence problem for the gauged vector potential formulation?

I will be grateful for any help.

Best regards,

Dustin

Community: FEniCS Project

Works nicely.

But are there any other reliable/good Solver/Preconditioner for the curl-curl problem?

In the future I want to model magnetomechanics and adapting the auxiliary space preconditioning is not a trivial task.

So i also wanted to explore some other options.

written
4 months ago by
DustinG

Please login to add an answer/comment or follow this question.

https://www.math.psu.edu/xu/teaching/13FallPKU/Papers/Hiptmair.R%3BXu.J2007b.pdf

https://pdfs.semanticscholar.org/cb77/bb244f3528c938c98ae3b5ebdc6cd33547f2.pdf

Preconditioning H(curl) problems is entirely non-trivial. Examine the Dolfin curl-curl demo.