ConductorShape Block

ConductorShape:

Works with VSimPD license.

The block describes the shape of an electrical conductor. It is used inside a cutCellPoisson Updater (or inside a Conductor Block inside a cutCellPoisson Updater).

There are currently two ways to specify a Conductor shape:

For a grid-conforming slab, use kind=slabCndctrShape. For an arbitrary shape described by a GridBoundary, use kind=gridBndryCndctrShape.

ConductorShape kind = slabCndctrShape

A slabCndctrShape is a conductor that fills a slab a cells with metal.

Detailed descriptions of attributes are below. Most cases, however, will be covered by a couple examples. For these examples, consider a simulation with [NX, NY, NZ] cells.

Example 1 (most common case). To surround the simulation box with metal walls (first, the cutCellPoisson should update the potential at cell nodes within bounds lowerBounds = [0,0,0], upperBounds = [NX+1, NY+1, NZ+1]) the slabCndctrShape should use use lowerBounds = [0,0,0], upperBounds = [NX, NY, NZ], and cellsInBoundsAreMetal=false.

Example 2. To surround the simulation with metal walls, except in the y-direction (one might want to do this, e.g., if the simulation is periodic in y) use lowerBounds = [0,-1,0], upperBounds = [NX, NY+1, NZ], and cellsInBoundsAreMetal=false.

Example 3. To put a metal box into the simulation, filling cells from [4,3,2] through [10,11,12] with metal – i.e., including cell [10,11,12], use lowerBounds = [4,3,2], upperBounds = [11,12,13], and cellsInBoundsAreMetal=true.

lowerBounds (required vector of integers, length NDIM)

The lowerBounds (in cell indices) of the cells in the slab.

E.g., if lowerBounds = [0, 0, 0], then grid cell node [0, 0, 0] will be in metal.

If cellsInBoundsAreMetal=true then cell [0, 0, 0] will be metal-filled (but cell [-1,-1,-1] will be vacuum, though that will likely be irrelevant to the simulation), and if false, cell [0, 0, 0] will be vacuum/dielectric (but cell [-1,-1,-1] will be metal-filled).

Note: with periodic boundary conditions, it is sometimes desirable to avoid setting the lower boundary to be in metal. This can be accomplished by setting the lowerBound to -1; e.g., if the simulation is periodic in x, setting lowerBounds = [-1, 0, 0] will ensure that the lower x boundary is not in metal (assuming cellsInBoundsAreMetal=false).

Note: a line conductor (e.g., a thin wire) can be set with a zero-volume slab, e.g., lowerBounds = [0, 0, 0] and upperBounds = [NX, 0, 0], with cellsInBoundsAreMetal=true.

upperBounds (required vector of integers, length NDIM)

The upperBounds (in cell indices) of the cells in the slab. Grid cell nodes on the boundary are always metal.

E.g., if upperBounds = [10, 11, 12], then grid cell node [10, 11, 12] is in metal; if ‘cellsInBoundsAreMetal=true’ then node [9, 10, 11] will be in metal but node [11, 12, 13] will not, and if false, then node [11, 12, 13] will be in metal but [9, 10, 11] will not. (That’s assuming the lowerBounds are much lower, e.g., [4, 3, 2].)

Note: with periodic boundary conditions, it is sometimes desirable to avoid setting the upper boundary to be in metal. This can be accomplished by setting the upperBound one above the global domain upper boundary (assuming cellsInBoundsAreMetal=false).

cellsInBoundsAreMetal (optional boolean, default false)

If true, the cells within the bounds are metal-filled. If false, the cells outside the bounds are metal-filled.

ConductorShape kind = gridBndryCndctrShape

gridBoundary (required string)

The name of a GridBoundary object that describes the conductor.

insideIsMetal (optional boolean, default false)

If false, then metal conductor is outside the gridBoundary (the standard definition for deymittra electromagnetics); if true, the metal conductor is inside the gridBoundary.

deymittraConforming (optional boolean, default false)

If true, a grid cell edge that is cut by the gridBoundary surface (hence is partly in vacuum and partly in metal) will be considered to be entirely in metal if the Dey-Mittra electromagnetic algorithm neglects the edge because it borders a cut cell face that is too small. Cf. the dmFrac option of GridBoundary.

This should usually be false unless it’s critical that the electrostatic field be a static solution of the electromagnetic time-advance.

ConductorShape Examples

<ConductorShape block>
  kind = slabCndctrShape
  lowerBounds = [0  0  0]
  upperBounds = [10  11  12]
  cellsInBoundsAreMetal = false
</Conductor Shape>

# N.B.: it is best not to give the ConductorShape the same
# name as the gridBoundary -- it tends to make it confusing
# to look up the object "sphere" if both the <GridBoundary>
# and the <ConductorShape> are named "sphere".
<ConductorShape sphereC>
  kind = gridBndryCndctrShape
  gridBoundary = sphere
  insideIsMetal = false
  deymittraConforming = false
</Conductor Shape>