Species Boundary
This section configures particle species boundary confition setting and must be present in the input file. One of these sections must exist for every species we intend to use. It accepts the following data:
- type(2,x_dim), character(*), default = “—”
- uth_bnd(3,2,x_dim), float, default = 0.0
- ufl_bnd(3,2,x_dim), float, default = 0.0
- thermal_type(2,x_dim), character(*), default = “thermal”
type - specifies the boundary conditions to use for the particle
species. The 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.
- “absorbing” or “open” - Absorbing boundary conditions.
- “specular” or “reflecting” - Specular reflection boundary conditions.
- “thermal” - Thermal bath boundary conditions. See
uth_bnd
andufl_bnd
for details.
If periodic boundaries or a moving window has been specified for a given
direction, then type
is ignored for that direction.
uth_bnd, ufl_bnd - specify the parameters for the thermal bath
boundary conditions. When using a thermal bath boundary condition, any
particle crossing the specified boundary is re-injected into the
simulation at its previous position using the specified thermal spread
(uth_bnd
) and fluid velocity (ufl_bnd
). Like the velocity parameters
in the species section, these are specified as proper velocities, i.e.,
$\gamma \times v$ in units of c, and the same comments apply. The uth_bnd(j,k,i)
and ufl_bnd(j,k,i)
, with j = {1..3}
, k = {1,2}
and i = {1, ..., x_dim}
specify the j
component of the thermal and fluid velocities,
respectively, in the i
direction for the lower (k=1
) or upper (k=2
)
boundary. if type(k,i)
is not set to “thermal”, the values specified are
silently ignored.
thermal_type - specifies the type of thermal distribution to be used
for thermal boundary conditions. The thermal_type(k,i)
, with k = {1,2}
and i
= {1, ..., x_dim}
specify the thermal distribution type in the i
direction for the lower (k=1)
or upper (k=2
) boundary. Possible values
are:
- “thermal” - Use a half-Maxwellian distribution for the velocity component perpendicular to the wall, and use the standard classical (Maxwellian) exponential distribution for all other components.
- “waterbag” - Waterbag distribution.
- “random dir” - Random direction distribution, using absolute value
of
uth
.
In all cases, the resulting velocity component perpendicular to the wall will point inwards.
Here’s an example of an spe_bound section for a 2D run that sets the the boundary conditions in the x1 direction to absorbing boundaries and in the x2 direction to thermal bath boundaries. The thermal velocities for the boundaries in the x2 direction are set to (0.1,0.1,0.1) on the lower boundary and to (0.001,0.001,0.001) on the upper boundary.
spe_bound
{
type(1:2,1) = "open", "open",
type(1:2,2) = "thermal", "thermal",
uth_bnd(1:3,1,2) = 0.1,0.1,0.1,
uth_bnd(1:3,2,2) = 0.001,0.001,0.001,
}
Note: When using thermal boundary conditions, it is necessary to modify the settings for the field boundary conditions from the default. In 2D cartesian geometry, the option vpml_diffuse enables damping of noise from absorbing particles that cross the simulation boundary.
emf_bound
{
type(1:2,1) = "vpml", "vpml", ! Equivalent to "open", but more explicit
type(1:2,2) = "vpml", "vpml",
vpml_bnd_size = 30, ! Found to provide good results in a 2D test, larger than the default of 8
vpml_diffuse(1:2,1) = .true., .true., ! Allows for damping of electrostatic fields in vpml
vpml_diffuse(1:2,2) = .true., .true.,
}