List of simulation parameters
A list of simulation parameters that the user can define is provided below, in bold, along with a brief description.
Contents
Computational domain
The computational domain is set the with the domain keyword.
Exterior computational domain
- domain size #: Set the size of the computational domain along all dimensions ($x$, $y$, and $z$) to #. The default value of # is 1.0e-7 (100 nm).
- domain size # x: Set the size of the computational domain along the dimensions $x$ to #. The default value of # is 1.0e-7 (100 nm).
- domain size # y: Set the size of the computational domain along the dimensions $y$ to #. The default value of # is 1.0e-7 (100 nm).
- domain size # z: Set the size of the computational domain along the dimensions $z$ to #. The default value of # is 1.0e-7 (100 nm).
Computational domain discretization
- domain disc #: Set the discretization of the computational domain along all dimensions ($x$, $y$, and $z$) to #. The default value of # is 1.0e-9 (1 nm).
- domain disc # x: Set the discretization of the computational domain along $x$ to #. The default value of # is 1.0e-9 (1 nm).
- domain disc # y: Set the discretization of the computational domain along $y$ to #. The default value of # is 1.0e-9 (1 nm).
- domain disc # z: Set the discretization of the computational domain along $z$ to #. The default value of # is 1.0e-9 (1 nm).
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:
- BC CPML: Specify absorbing boundary conditions (convolution perfectly matched layers) along the $x$, $y$, and $z$ directions[2].
- BC CPML x: Specify an absorbing boundary condition only along the $x$ direction.
- BC CPML y: Specify an absorbing boundary condition only along the $y$ direction.
- BC CPML z: Specify an absorbing boundary condition only along the $z$ direction.
- BC periodic: Specify periodic boundary conditions along both the $x$ and $y$ directions.
- BC periodic x: Specify a periodic boundary condition only along the $x$ direction.
- BC periodic y: Specify a periodic boundary condition only along the $y$ direction.
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.
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)
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
- ↑ A marginal increase in performance may be possible by increasing Courant toward 1, at the expense of possibly introducing numerical instability.
- ↑ Note that setting BC absorbing is redundant, since this is the default value.
- ↑ 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.
- ↑ nxprocs$\cdot$nyprocs$\cdot$nzprocs must be equal to the number of processes (processors) specified at run time.