This section configures the boundary conditions to use for the electro-magnetic fields and must be present in the input file. It accepts the following data:

  • type(2, x_dim), character(*), default = “—”
  • vpml_bnd_size, integer, default = 10
  • vpml_diffuse(2, x_dim), logical, default = .false.

type specifies the boundary conditions to use for the electro-magnetic fields. type(k,i), with k = {1,2} and i = {1, …, x_dim} specifies the boundary condition in the i direction for the lower (k=1) or upper (k=2) boundary. The following are valid values for type:

  • “axial” - Axial boundary condition for 2D cylindrical coordinates
  • “lindman” - Lindmann open space boundary conditions
  • “vpml” or “open” - Perfectly matched layers as absorbing boundary conditions (Vay’s hybrid algorithm
  • “conducting”/”pec” - Conducting (perfect electric conductor) boundary conditions
  • “reflecting”/”pmc” - Reflecting (perfect magnetic conductor) boundary conditions

If periodic boundaries or a moving window has been specified for a given direction then type is ignored for that direction. Note that you cannot have any corners where the boundaries on both sides are of the Lindmann open space type. Also note that specifying conducting or reflecting boundary conditions will force the code to use a reflecting boundary condition for electric current on the same boundary.

vpml_bnd_size specifies the PML boundary thickness in cell number. It is a constant for all walls.

vpml_diffuse (2D only) specifies diffusion between PML components to reduce noise generated by particles contacting with wall. When activated, absorption of B3 components is strongly reduced. Therefore, it should not be activated when pulses with B3 component are present.

Here’s an example of an emf_bound section for a 2D run that sets the the boundary conditions in the x1 direction to conducting boundaries and in the x2 direction to open boundaries.

emf_bound
{
  type(1:2,1) =    "conducting",   "conducting",
  type(1:2,2) =          "open",         "open",
}