11. FDME_SOLVER Namelist

This namelist specifies the parameters that pertain to the frequency-domain solver for the time-harmonic Maxwell’s equations. In this form of the equations the electric field is represented as \(\mathcal{E}(x,t) = \operatorname{Re}\{E(x)e^{-i\omega t}\}\) where \(\omega\) is the angular frequency and \(E(x)\) is a complex-valued phasor that satisfies the equation

\[\nabla\times\mu^{-1}\nabla\times E-\omega^2\epsilon E-i\omega\sigma E = 0.\]

The equation is solved on the tetrahedral mesh specified by the EM_MESH namelist, which is generally different than the mesh used for heat transfer. Boundary conditions are defined using ELECTROMAGNETIC_BC namelists.

This solver, which is not currently a standalone physics model, is used by the induction heating and microwave heating physics models; see the INDUCTION_HEATING and MICROWAVE_HEATING namelists.

Caution

The electromagnetic models assume SI units by default. If you want to use a different system of units, you must assign appropriate values to the PHYSICAL_CONSTANTS namelist variables vacuum_permittivity (\(\epsilon_0\)) and vacuum_permeability (\(\mu_0\)).

11.1. Namelist Variables

solver_type

The type of linear solver used to solve the discrete system. The options are:

Value

Description

“minres”

Iterative CS-MINRES[1] solver for complex symmetric linear systems. This is the default.

“mumps”

MUMPS[2] direct linear solver

graphics_output

A flag that enables the output of the solution for graphics visualization.

Type:

logical

Default:

.false.

Notes:

When enabled, the solver generates its own graphics data file in VTKHDF format, which is compatible with the ParaView visualization software. The solver produces a separate sequentially-numbered file for each use, identifiable by the .vtkhdf suffix. This setting does not affect the standard graphics output generated by Truchas, which is configured elsewhere. Since these files are simply HDF5 files structured to the VTKHDF specification, they can also be used with generic HDF5 tools.

use_mixed_form (experimental)

Change the solver from the default formulation to the mixed formulation. The mixed formulation enforces \(\nabla\cdot D = 0\) using Lagrange multipliers, expanding the system size. This ensures the system remains well posed as the frequency becomes small [3] [4].

Type:

logical

Default:

.false.

Tip

This should be disabled for microwave problems, but enabled when using the FDME solver for induction heating problems, since those use low frequencies where the frequency-domain Maxwell equations are no longer coercive.

MINRES Parameters

rel_tol

The convergence tolerance \(\eta\). The CS-MINRES iteration is considered converged when the residual \(r\) satisfies \(\lVert{r}\rVert<\eta\lVert{r_0}\rVert\), where \(r_0\) is the initial residual.

Type:

real

Default:

\(10^{-8}\)

Valid Values:

\((0, 0.1)\)

Notes:

The residual is the residual of the preconditioned linear system.

max_iter

The maximum number of CS-MINRES iterations allowed. It is a fatal error if convergence is not attained within this number of iterations.

Type:

integer

Default:

100,000

Valid Values:

> 0

MINRES Preconditioner Parameters

The preconditioner is based on the real part of the complex symmetric system matrix. It has the form \(A-B\) where \(A\) comes from the curl-curl term and is positive semi-definite, and \(B\) comes from the \(\omega^2\epsilon\) term and is positive definite. The indefiniteness of this matrix poses a challenge to constructing positive definite preconditioners required by CS-MINRES.

precon_type

Selects the type of preconditioner to use. The options are:

Value

Description

“ssor”

Parallel block SSOR. This is the default.

“boomer”

Hypre BoomerAMG parallel algebraic multigrid solver. More costly than SSOR.

“none”

No preconditioning. Only useful for testing/debugging.

pc_damping (experimental)

If a value \(\alpha\) is specified for this optional parameter, the preconditioner will be based on the damped matrix \(A-(1-\alpha)B\) rather than the standard \(A-B\). The intent is to shift the matrix to something less indefinite, or even positive definite. The use of SSOR with under-relaxation is much more effective; use it instead.

ssor_num_cycles

The number of SSOR cycles to use.

Type:

integer

Default:

1

Valid values:

\(\ge1\)

Notes:

Each cycle consists of a forward and backward sweep. Each additional cycle will generally improve the preconditioner, resulting in faster convergence and fewer required iterations, but with increased computational cost per iteration. The optimal number giving the fastest time to solution will depend on the characteristics and size of the problem, and must be determined empirically.

ssor_omega

The SSOR relaxation factor \(\omega\).

Type:

real

Default:

1.0

Valid values:

\(>0.0\)

Notes:

While SSOR is usually associated with over-relaxation, \(\omega>1\), the characteristics of this matrix will likely require under-relaxation, \(0<\omega<1\). Start with the default \(\omega=1\). If CS-MINRES fails with the message “preconditioner is not positive definite”, using a small enough \(\omega<1\) should yield a positive definite preconditioner. But note that the smaller the value, the less effective the preconditioner will be.

boomer_num_cycles

The number of BoomerAMG cycles to use.

Type:

integer

Default:

1

Additional BoomerAMG parameters

Hypre BoomerAMG supports a great many configuration options, some which may be set using this namelist. The default configuration is generally suitable, but may be modified using the following variables. Refer to the HYPRE documentation[5] on BoomerAMG for details.

  • boomer_strong_threshold (real, default 0.5)

  • boomer_coarsen_type (integer, default 10)

  • boomer_interp_type (integer, default 6)

  • boomer_relax_down_type (integer, default 13)

  • boomer_relax_up_type (integer, default 14)

  • boomer_print_level, boomer_debug_level, boomer_logging_level