5. ELECTROMAGNETICS Namelist

The ELECTROMAGNETICS namelist specifies the parameters for the induction heating model and algorithms. This namelist is read whenever the PHYSICS option electromagnetics is enabled. The induction heating model solves the electromagnetic (EM) field equations to compute the Joule heat source used by the heat transfer model for induction heating simulations. The EM field equations are solved on the tetrahedral mesh specified by the EM_MESH namelist, which is generally different than the mesh used for heat transfer. A properly configured model will include a periodic boundary condition with a forcing function defined by the INDUCTION_SOURCE_FIELD namelist. EM boundary conditions are defined using ELECTROMAGNETIC_BC namelists (but see legacy boundary conditions below.)

The time scale of the forced EM equations is assumed to be very short compared to the fundamental time scale of heat transfer (see the INDUCTION_SOURCE_FIELD namelist parameter frequency.) To avoid introducing this short time scale into heat transfer, the rapid temporal variation in the Joule heat is averaged over a period or cycle of the forcing. In effect, the EM field equations evolve on a distinct inner “fast” time that unfolds in an instant of the outer “slow” time of heat transfer.

Caution

The induction heating model assumes SI units by default. In particular, the result of the Joule heat computation is a power density, W/m3 in SI units. To use a different system of units, appropriate values must be assigned to the free-space constants vacuum_permittivity and vacuum_permeability in the PHYSICAL_CONSTANTS namelist.

Namelist Usage

Required/Optional:

Required when electromagnetics is enabled.

Single/Multiple Instances:

Single

5.1. Namelist Variables

General Varibles

matl_change_threshold

This controls, at each heat transfer time step, whether the Joule heat is recomputed in response to temperature-induced changes in the EM material properties. The Joule heat is recomputed whenever the maximum difference between the current properties and those when the Joule heat was last computed relative to the maximum of the current properties exceeds this threshold value. Otherwise the previously computed Joule heat is used. When the properties are independent of temperature, the Joule heat is only recomputed when the forcing function changes.

Type:

real

Default:

0.3

Valid Values:

> 0

Notes:

The electrical conductivity and magnetic susceptibility are the only properties whose changes are monitored. The electric susceptibility only enters the equations through the displacement current term, which is an exceedingly small perturbation in the quasi-magnetostatic regime, and has essentially no effect on the Joule heat.

For electric conductivity, only the conducting region (where the value is positive) is considered when computing the difference. An underlying assumption is that this region remains fixed throughout the simulation.

data_mapper_kind (experimental)

This specifies the tool that will be used to map fields between the primary mesh used for heat transfer and the EM mesh. If “portage” is selected, an experimental data mapper based on the Portage toolkit, https://laristra.github.io/portage, will be used. Otherwise, the normal data mapping tool will be used by default.

Type:

string

Default:

“default”

Valid Values:

“default”, “portage”

graphics_output

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

Type:

logical

Default:

.false.

Notes:

When enabled, the Joule heat solver will generate its own graphics data files in VTKHDF format which can be read by the ParaView visualization software. The files are identified by the suffix .vtkhdf, and each computation of the Joule heat produces a separate sequentially-numbered file. The value of this variable has no impact on the normal graphics output generated by Truchas, which is determined elsewhere, and the averaged Joule heat field mapped onto the heat transfer mesh will be output there in either case. Note that thedr files are simply HDF5 files with datasets organized according to the VTKHDF specification, and thus they can also be used with generic HDF5 tools.

Time-Domain Joule Heat Solver

The following parameters pertain to the time-domain Joule heat solver, which integrates the periodically-forced EM field equations in time until a periodic steady state solution is attained, and then the time-averaged Joule heat is computed over one cycle of the forcing.

steps_per_cycle

The number of time steps per cycle of the periodic forcing used to integrate the EM field equations.

Type:

integer

Default:

20

Valid Values:

> 0

Notes:

Increasing the number of time steps per cycle increases the accuracy and stability of the Joule heat computation, while generally increasing the execution time. A reasonable range of values is [10,40]; anything less than 10 is severely discouraged.

steady_state_tol

Convergence to the periodic steady state is measured by comparing the computed Joule heat field averaged over the last source field cycle, \(q_\text{last}\), with the result from the previous cycle, \(q_\text{prev}\). The Joule heat computation is considered converged when \(\lVert{q_\text{last}-q_\text{prev}}\rVert_\infty < \delta\, \lVert{q_\text{last}}\rVert_\infty\) where \(\delta\) is the value of this parameter.

Type:

real

Default:

\(10^{-2}\)

Valid Values:

> 0

Notes:

Depending on the accuracy of the other physics, \(10^{-2}\) or \(10^{-3}\) are adequate values. The measured error is more properly the error in \(q_\text{prev}\); the actual error in \(q_\text{last}\) will be significantly less.

max_source_cycles

Specifies the time limit, measured in cycles of the periodic forcing, allowed for convergence to the periodic steady state. If convergence is not attained within this limit, the last result is returned and a warning issued, but execution continues.

Type:

integer

Default:

5

Valid Values:

> 0

Notes:

To avoid ringing, the amplitude of the external source field is phased in and is not at full strength until after approximately two cycles have passed. Consequently this input variable should normally be at least 3. Convergence to a periodic steady state is commonly attained within 5 cycles; see steady_state_tol.

cg_tol

The convergence tolerance \(\eta\) for the conjugate gradient (GC) solution of the linear time step system. The CG iteration is considered converged when the residual \(r\) satisfies \(\lVert{r}\rVert<\eta\lVert{r_0}\rVert\).

Type:

real

Default:

\(10^{-8}\)

Valid Values:

\((0, 0.1)\)

Notes:

The numerical characteristics of the EM system require that the linear systems be solved to significantly greater accuracy than might otherwise be required. Too loose a tolerance will manifest itself in a significant build-up of noise in the solution of the electric field over the course of the simulation.

cg_max_iter

The maximum number of conjugate gradient (CG) iterations allowed. It is a fatal error if convergence is not attained within this number of iterations.

Type:

integer

Default:

500

Valid Values:

> 0

c_ratio

In the quasi-magnetostatic regime, Maxwell’s equations can become become very ill-conditioned and difficult to solve in regions with zero electrical conductivity, such as free space. Artificially reducing the speed of light in those regions helps ameliorate that difficulty, and this numerical parameter is that reduction factor \(r\). A value of 1 means no reduction and is the default.

Type:

real

Default:

1

Valid Values:

\(\in(0,1]\)

Notes:

This is implemented by altering the permittivity, \(\epsilon\to\epsilon/r^2\), which only modifies the displacement current term \(\partial\epsilon\vec{E}/\partial t\). In the magnetostatic regime, this term functions as a very small perturbation in Maxwell’s equations.

For common induction heating applications, this parameter can be taken fairly small, \(10^{-3}\) or \(10^{-4}\), without any signficant effect on the computed Joule heat.

More generally, \(\omega\epsilon\ll\sigma\) in the magnetostatic regime, where \(\omega\) is the frequency of the external driving field, and one wants to ensure that this separation of scales is maintained when choosing the reduction factor, \(\omega\epsilon/r^2\ll\sigma\).

output_level

Controls the verbosity of the time-domain Joule heat solver.

Type:

integer

Default:

1

Valid Values:

1, 2, 3 or 4

Notes:

At the default level, 1, a status message is output at the end of each source field cycle showing the progress toward steady state. Level 2 adds a summary of the CG iteration for each time step. Level 3 adds the norm of the difference between the solution and extrapolated predictor for each time step. This gives an indication of the (time) truncation error, and if noise is accumulating in the system it will be seen here; see cg_tol. Level 4 adds convergence info for each CG iterate. Levels 1 and 2 are typical.

Legacy Boundary Conditions (deprecated)

When the induction heating model was originally introduced, it did not require a specification of the EM boundary conditions, but inferred them for a small number of cylinder-like EM mesh domain shapes. This feature is deprecated, but still supported for the present. Users should migrate to defining the boundary conditions explicitly using the ELECTROMAGNETIC_BC namelist.

use_legacy_bc

When this flag is enabled, the boundary conditions will be automatically assigned based on hints given by the following parameters. Note that any boundary condition specified by a ELECTROMAGNETIC_BC namelist will be ignored in this case.

Type:

logical

Default:

.false.

symmetry_axis

Specifies which axis is the symmetry axis of the EM domain when use_legacy_bc is enabled.

Type:

string

Default:

“z”

Valid Values:

“x”, “y”, or “z”

Notes:

The value assigned here should match the value assigned to the orientation parameter of the INDUCTION_SOURCE_FIELD namelist.

em_domain_type

Specifies the type of domain that is discretized by the EM mesh when use_legacy_bc is enabled. The allowed values and corresponding domain when symmetry_axis is “z” are given in the following table. The domains for the other axis options are defined similarly and obtained by the appropriate cyclic permutation of the coordinates.

Value

Domain

“full_cylinder”

\(\Omega = \{(x,y,z) \,|\, x^2+y^2 \leq r^2, z_1\leq z\leq z_2 \}\)

“half_cylinder”

\(\Omega = \{(x,y,z) \,|\, x^2+y^2 \leq r^2, x\geq 0, z_1\leq z \leq z_2 \}\)

“quarter_cylinder”

\(\Omega = \{(x,y,z) \,|\, x^2+y^2 \leq r^2, x, y\geq 0, z_1\leq z \leq z_2 \}\)

Type:

string

Default:

none

Notes:

The values \(r>0\) and \(z_1\gt z_2\) are inferred from the mesh and are not specified directly.

When symmetry_axis is “z”, the boundary condition \(\hat{n}\times\vec{H} = \hat{n}\times\vec{H}_\text{ext}\) is imposed on the boundaries \(\{x^2+y^2=r^2\}\) and \(\{z=z_1,z_2\}\), where \(\vec{H}_\text{ext}\) is defined by the INDUCTION_SOURCE_FIELD namelist, and the boundary condition \(\hat{n}\times\vec{E}=0\) is imposed on the symmetry planes \(\{x=0\}\) and \(\{y=0\}\) if present. And analogously for the other axis options.