setEpsilonUpdaterWorks with VSimEM and VSimMD licenses.
Fills the symmetric inverseEpsilon field (6 components, xx, yy, zz, xy=yx, yz=zy, zx=xz) from the given dielectric functions.
When a cell is partially filled (as determined by subsampling the functions over the cell), the dielectric is averaged appropriately over the cell. The number of samples per cell should increase as the simulation resolution increases, to maintain accuracy.
The setEpsilonUpdater requires one writeFields (the
invEpsilon field with six (6) components) and no (0)
readFields.
To define the dielectric constant, use STFunc blocks with the
name dielectricConstNM where N and M represent the
components [X Y Z]. A total of 6 blocks (components) are needed. Vorpal
will first look for XY, YZ, and ZX, and use these values if they are
present. However, if, XY is missing, Vorpal will use YX instead. If both
XY and YX are present, Vorpal will use XY and ignore YX.
To define the surface normals (the vector normal to the dielectric
interface at any location (x,y,z) that is within a cell length of the
interface), use an STFunc block with a name
surfNormalN where N represents the component [X Y Z].
The setEpsilonUpdater takes the lowerBounds and
upperBounds parameters of FieldUpdater, as well as
the following parameters:
writeFields (required string vector)A single element, the name of the 6-component inverse permittivity tensor field to update.
samplesPerCell (optional integer vector, default = [1 1 1])Number of locations (in each direction, \(x\), \(y\), and
\(z\)) at which the dielectric is sampled in each
cell. Although the default is [1 1 1], usually [7 7
7] or higher would be a better choice.
dielectricConstXX (required parameter block)This parameter block, which must be of type STFunc, specifies a function describing the \(xx\) component of the relative permittivity.
dielectricConstYY (required parameter block)Similar to dielectricConstXX, but describing the
\(yy\) component.
dielectricConstZZ (required parameter block)Similar to dielectricConstXX, but describing the
\(zz\) component.
dielectricConstXY (required parameter block)and
dielectricConstYX (required parameter block)This parameter block, which must be of type STFunc,
specifies a function describing the \(xy\) component of the
relative permittivity. At least one of these parameter blocks
must be specified; if both are, dielectricConstXY is
used and dielectricConstYX is ignored.
dielectricConstYZ (required parameter block)and
dielectricConstZY (required parameter block)Similar to dielectricConstXY and
dielectricConstYX, but describing the \(yz\)
component. If both are specified, dielectricConstYZ is
used and dielectricConstZY is ignored.
dielectricConstZX (required parameter block)and
dielectricConstXZ (required parameter block)Similar to dielectricConstXY and
dielectricConstYX, but describing the \(zx\)
component. If both are specified, dielectricConstZX is
used and dielectricConstXZ is ignored.
surfNormalX (required parameter block)This parameter block, which must be of type STFunc, specifies a function describing the \(x\) component of the unit vector normal to the dielectric interface at the point on the interface closest to the position of the function argument. This value must be valid for any position argument within one grid cell of the interface.
surfNormalY (required parameter block)Similar to surfNormalX, but describing the \(y\)
component of the surface normal unit vector.
surfNormalZ (required parameter block)Similar to surfNormalX, but describing the \(z\)
component of the surface normal unit vector.
<STFunc dielectricConstXZ>
kind = expression
expression = 1.+H(R^2-(x-X0)^2-(y-Y0)^2-(z-Z0)^2)*(REL_EPS_ZZ-1)
</STFunc>
<STFunc surfNormalX>
kind = expression
expression = x-X_SPHERE
</STFunc>