# List of simulation parameters

A list of simulation parameters that the user can define is provided below, in bold, along with a brief description.

## Computational domain

The computational domain is set the with the domain keyword.

## Simulation time

Simulation time settings are controlled with the time keyword:

• time total #: The total length of simulation. The default value of # of 50.0e-15 s (50 fs).
• time Courant #: The Courant factor. Must be between 0 and 1. The default value of # is 0.97, which provides a small buffer below the numerical stability limit of 1[1].

## Boundary conditions

Boundary conditions are set the with the BC keyword:

#### Absorbing boundary conditions

The CPML parameters for the absorbing boundary conditions can be further set under the BC CPML keyword[3]:

• BC CPML nlayers #: Set the number of CPML layers along the non-periodic directions to #. The default value is 10.
• BC CPML fsigmaopt #: Set the CPML fraction of $\sigma_\text{opt}$ to #. The default value of # is 1.1.
• BC CPML kappamax #: Set the CPML $\kappa_\text{max}$ to #. The default value of # is 13.5.
• BC CPML alphamax #: Set the CPML $\alpha_\text{max}$ to #. The default value of # is 0.225.
• BC CPML m #: Set the CPML polynomial grading $m$ to #. The default value of # is 3.5.
• BC CPML ma #: Set the CPML polynomial grading $m_\alpha$ to #. The default value of # is 2.

## Geometric modeling

Geometric modeling settings control the geometry modeled by computer-aided design software (see Computer-aided design import) or in the geometries subroutine, and are set with the geom keyword.

• geom scale #: Scale the geometry uniformly in all directions by #. The default value of # is 0.0.
• geom shift #: Shifts the geometry by #, uniformly along $x$, $y$, and $z$. The default value of # is 0.0.
• geom shift # x: Shifts the geometry along the $x$ axis by # . The default value of # is 0.0.
• geom shift # y: Shifts the geometry along the $y$ axis by # . The default value of # is 0.0.
• geom shift # z: Shifts the geometry along the $z$ axis by # . The default value of # is 0.0.

## Source

• src_pol #: Sets the polarization of the incident field to #. Valid values of # are x ($x$-polarization), y ($y$-polarization), 45 (45 degree polarization), or circ (circular polarization). The default value of # is x.
• src_sin_wave #: Sets the wavelength of the sinusoidal portion of the incident pulse to #. The default value of # is 545e-9 m (545 nm).
• src_Gauss_width #: Sets the width of the Gaussian damping of the incident pulse to #. The default value of # is 0.4e-15 (0.4 fs).
• src_Gauss_center #: Sets the center of the Gaussian damping of the incident pulse to #. The default value of # is 10.0e-15 s (10 fs).

#### Total-field/scattered-field (TF/SF)

• TFSF_z #: Set the $z$-position of the TF/SF plane to #. The default value is 20.0e-9 (20 nm).

## Near-field properties

• writefield #
• Writes the computational domain, electromagnetic fields, polarization vectors, etc. to file at the optional energy #. If # is absent, the time-domain fields, polarization vectors, etc. are written. The default setting is to not provide such output.

## Far-field properties

The following parameters set the energy range over which to calculate far-field properties (cross section, transmission spectra, etc.):

• spectra_npts #
• Set the number of points in the spectra to #. The default value of spectra_npts is 100.
• spectra_minE #
• Set the minimum energy (in eV) of the spectra to #. The default value of spectra_minE is 1.5498 eV (just below the lower end of the visible range).
• spectra_maxE #
• Set the maximum wavelength of the spectra to #. The default value of spectra_maxE is 4.13281 eV (just above the upper end of the visible range).

#### Cross sections

The following parameters set the calculation of cross sections. Note that spect_npts, spect_minE, and spect_maxE (above) should also be set.

• calc_cs
• Calculate cross sections. If this is used, one should also set the position and size of area which to calculate the cross sections using cs_x, cs_y, cs_z, and cs_r, unless the default values are sufficient. The default value is set to not calculate.
• cs_x #
• Set the center position along $x$ to # to calculate the cross sections. The default value is 50.0e-9 (50 nm).
• cs_y #
• Set the center position along $y$ to # to calculate the cross sections. The default value is 50.0e-9 (50 nm).
• cs_z #
• Set the center position along $z$ to # to calculate the cross sections. The default value is 50.0e-9 (50 nm).
• cs_r #
• Set the radius of the box used to calculate cross sections to #. The default value is 20.0e-9 (20 nm).

#### Transmission spectra

The following parameters set the calculation of transmission spectra. Note that spect_npts, spect_minE, and spect_maxE (above) should also be set.

• calc_transm
• Calculate transmission spectra. If this is used, one should also set the $z$-positions of the transmission and reflection planes, transm_z and refl_z, respectively. The default value is set to not calculate.
• transm_z #
• Set the $z$-position of the transmission plane to #. The default value is 80.0e-9 (80 nm).
• refl_z #
• Set the $z$-position of the reflection plane to #. The default value is 17.0e-9 (17 nm).

## Parallel

The following settings are specific to parallel simulations[4].

• nxprocs #: Number of processes (processors) in the $x$ dimension is set to #. There is no default value.
• nyprocs #: Number of processors in the $y$ dimension is set to #. There is no default value.
• nzprocs #: Number of processors in the $z$ dimension is set to #. There is no default value.

## Notes and references

1. A marginal increase in performance may be possible by increasing Courant toward 1, at the expense of possibly introducing numerical instability.
2. Note that setting BC absorbing is redundant, since this is the default value.
3. Besides BC CPML nlayers, the CPML parameters are already optimal. See: A. Taflove and S. C. Hagness, “Computational Electrodynamics: The Finite-Difference Time-Domain Method,” 3rd Edition, Artech House: 2005. ISBN 978-1580538329.
4. nxprocs$\cdot$nyprocs$\cdot$nzprocs must be equal to the number of processes (processors) specified at run time.