Broadband Fixed Angle Source Technique (BFAST) can be used when you have a periodic structure illuminated with a broadband source at an angle. It can provide broadband simulation results at a fixed angle of illumination.
When studying periodic systems, periodic Boundary Conditions (BC) allows you to calculate the response of the entire system by only simulating one unit cell, as mentioned in Periodic boundary conditions article. When a broadband plane wave is injected into a structure at an angle, special treatment will be required. One way is to use Bloch boundary condition. However, the actual injection angles for broadband illumination change with frequency, discussed in Plane waves - Angled injection. One way to solve this problem, the wavelength or frequency can be swept, or a number of incident angles are simulated and interpolation is required (see Bloch BCs in broadband sweeps over angle of incidence, for advanced users only). BFAST offers an alternate solution.
BFAST overview
A plane wave angled in xz plane (traveling along z axis) can be expressed as
$$ \vec{E}(\vec{r})=e^{i k_{x} x} \vec{E}_{0} $$
To remove the angular dependence from the field, a set of new variables is used, such as:
$$ \vec{Q}(\vec{r}) = e^{-ik_{x} x} \vec{E}(\vec{r}) $$
and then the split field method (eg., split x component to xy and xz) is used to reformulate the FDTD update equations. Therefore, by reformulating the FDTD update equations, a new algorithm can be developed by removing this angle dependence. More details can be found in Liang's paper. Therefore, no Bloch BCs are required. It will have its own built-in boundaries conditions transverse to the propagation direction.
When to use BFAST
If you are simulating periodic structures with a broadband plane wave source illuminated at an angle, it might be worth trying BFAST. In this special formulation [1], the actual angle of injection does not change with frequency, making it significantly different from Bloch BCs. Furthermore it has been extended to ensure it is compatible with Lumerical's multi-coefficient material (MCM) models, and conformal mesh technology. Note, the BFAST technique may require special care for some cases to achieve stability. See the tips at the bottom of the page.
How to use BFAST
BFAST should ONLY be used with a single plane wave source. BFAST can be chosen in the General tab on the Edit plane wave source window, as shown in the image below to the left. Then users can set the incident angle and polarization angle. Other source parameters can be set as usual. As expected, all the wavelengths have the same injection angle, as shown in the image below to the right. In contrary, when Bloch BCs are used, the incident angles are a function of wavelength, as shown in the figure on angled broadband injection.
Once the "BFAST" is selected in the source, the Boundary Conditions transverse to the wave propagation are automatically overridden based on BFAST's formulation. For example if users choose "Bloch", "periodic", "Metal" or "PML" in the transverse directions, a warning sign will be shown. The figure below is showing a case when BFAST is chosen for a plane wave source injected along the z direction. In this case, the BCs in x and y directions should be overridden by the BFAST technique, shown by a warning sign to the right. However, the symmetry BCs can be reserved. Therefore, in this case, only the BCs in x direction are overridden by BFAST. PML is used in the z direction as usual.
If users set symmetric or anti-symmetric BCs, BFAST will keep and use them to save memory and speed up the simulation. For example, if the source is injected at an angle in xz plane but no angle in yz plane, yz plan can still use symmetry BCs fitting the source polarizations. In this way, users gain 2x simulation speed.
Along the direction of the wave propagation, users need to set the longitudinal BCs as "PML". For example, if the plane-wave injection plane is parallel to z axis, the transverse direction will be xz/yz planes, and the longitudinal direction is z. Usually zmin and z max use PML BCs.
As usual, the source injection plane should extend completely outside the simulation region, as shown in the figure below. Fortunately, the GUI can automatically do this for the users.
In some cases, users need to modify other BFAST parameters in FDTD "Advanced options". Under this tab, "BFAST" settings have two parameters:
- BFAST ALPHA: It is the smallest dielectric refractive index in the simulation region, and should generally be 1. For example, if the background index is set to 1.33 of water in FDTD "General" tab, then 1.33 should be used here instead of the default of 1.
- DT MULTIPLIER: It is used to further reduce the time step "dt" in "Mesh settings" in addition to the "dt factor". Its largest value is 1, meaning no change for the dt factor. When it is smaller than 1, the actual time step dt becomes smaller, in some cases it can overcome some diverging problems impossible by modifying other settings.
To summarize the usage of BFAST, the procedures are:
- set the "plane wave type" as "BFAST" in the Source General tab
- set the Boundary conditions along the longitudinal direction as PML. GUI will automatically use BFAST's built-in boundary conditions in the transverse directions. For consistency, user may set "Bloch" in the plane of angle incidence (though it is overridden), and symmetry BCs in no angle plane if applicable.
- occasionally some advanced settings need to be modified.
Example
Below is an example of dielectric stack with angled illumination at 60 degree (polarization angle 90) of a 2D simulation, and comparison to theoretical result. To duplicate the results, you can download and run best_stack.fsp.
More examples can be found in the Knowledge Base.
Angle sweep
In some cases users need to get results of broadband incidence at different incident angles. This can be done by use of sweep as usual to sweep the incident angle. Different from Bloch BC case, in BFAST, at each specified incident angle, all the wavelengths have the same angle, so no further interpolation is required. In this example, the incident angle is set inside "model", so when the incident angle is set in sweep, the correct quantity must be chosen. To get sweep result, open the bfast_stack.lsf and set sweep=1 and run the sweep, the following images of reflection and transmission are shown below:
Reflection, Transmission
BFAST FDTD is fundamentally different from the standard FDTD formulation because the core update equations are changed, in addition to the boundary conditions. As a result, there are some limitations:
Limitations
- The time step, dt, must be reduced compared to standard FDTD as the angle of incidence increases in order to preserve numerical stability (see the next section). This is controlled by the "dt multiplier". As a result, steep angle simulations will take more time to run. For this reason, it is important to consider if BFAST is the right method for your application. If your bandwidth is small, or your angle of incidence is small, you may get faster results by using Bloch boundaries conditions. Certainly, if you are only looking for results at a single wavelength, you should use Bloch boundary conditions. The simulation time ratio for BFAST relative to a regular FDTD simulation.
Angle (degrees) | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 |
Simulation time | 1.0x | 1.2x | 1.5x | 2.0x | 2.8x | 4.3x | 7.5x | 16.6x | 65.8x |
-
BFAST is best suited to non-dispersive dielectric materials and materials with high loss such as metals. Low loss materials, including silicon and other semiconductors, may cause the simulation to diverge due to gain in the numerical permittivity. Use the sample code in getnumericalpermittivity, with the use_BFAST=1, to see the numerical permittivity.
- Nonlinear materials are not compatible with this method. As a result, nonlinear and all flexible material plugin materials will not function using BFAST in current version.
- Injection above the critical angles for total internal reflection (TIR) is not allowed. There is no possible stable time step dt in this case. For example, injecting light at 50 degrees in glass that is incident on a glass/air interface is not stable. However, if you are injecting light in a lower index medium onto a higher index medium, then it is allowed. For example, if you are injecting light from glass onto a higher index substrate, such as silicon, then you can use BFAST - however, the value of "bfast alpha" should be set equal to the smallest refractive index used anywhere in your simulation.
The software can automatically detect if there is total reflection for the source injection. A warning message will be shown as below:
If you see this warning message, you can use the Bloch+plane wave method with frequency sweep.
Numerical stability
BFAST is more numerically unstable than standard FDTD. There are several sources of instability and most problems can be solved by adjusting certain settings. If you encounter any problems that cannot be easily solved, please contact us for assistance. Most problems and their solutions are listed here:
- The PML can be unstable for long duration simulations. If it becomes unstable, we recommend increasing the number of layers and reducing the value of pml sigma. Sometimes the "steep angle PML" may work better.
- Dispersive media can become unstable much more easily. These problems can sometimes be fixed by reducing the "dt multiplier" until stability is achieved.
- Dispersive media with low loss (eg. semiconductors) can be unstable due to gain in the numerical permittivity. This can sometimes be avoided by experimenting with the material fitting parameters (tolerance, max coefficients, improve stability, make fit passive, bandwidth). Use the sample code in getnumericalpermittivity, with the use_BFAST=1, to see the numerical permittivity.
- When using dispersive media, the numerical stability is greatly increased by using a uniform mesh over the dispersive materials in the direction transverse to the source injection axis. For example, when considering the scattering of a gold particle on a surface, as shown below for a 2D simulation, a mesh override region that extends at least 1*dx outside of the gold region should be used. This mesh override region should force a uniform mesh in dx – but does not have to force a uniform mesh in dy. The figure below summarizes these settings. Note that practically, we would often also force a uniform dy mesh to achieve accurate results for this plasmonic structure. Furthermore, it is often simple to use a uniform value of dx across the entire unit cell but this is not necessary for numerical stability.
Summary and Tips
Setting to use BFAST is relatively easy, as described above. However, due to its special formulation, simulation time for a single project file may be a little longer than expected. In addition, at larger angles, simulation speed is further decreased, and the accuracy can be degraded. There is always a compromise in simulation between the simulation time spent and the accuracy obtained. Users are advised to make some tests to choose whether BFAST is the most in favored method for the cases at some steep angles or with very strong dispersive materials. In addition, converging test may give you confidence for the accuracy it can reach.
- BFAST: Always check "BFAST" in the "plane wave type" at the source if you want to simulate angled-broadband source using BFAST; this ensures that all the wavelengths will have exactly the same incident angle.
- dt multiplier: The default dt multiplier of 0.5 is chosen for most cases. However, to speed up the simulation, users can increase it up to 1 (eg., for pure dielectric without dispersion) if simulation does not diverge.
- dt multiplier: For strongly dispersive materials, smaller dt multiplier may be required to have stable simulation.
- mesh: Users may use a little higher mesh accuracy than usual (2 by default);
- mesh: Uniform mesh is recommended in the transverse directions.
- mesh: if strong dispersive material is involved, override region should be larger than the structure as shown above.
- accuracy: Better accuracy can be achieved even at larger incident angles if the materials involved in the simulation are dielectric without dispersion.
- accuracy: The accuracy may degrade when the indent angle is large. You may need to test the results by use of the Bloch BCs to see if you are satisfied with the accuracy.
- speed up: Usual symmetry BCs can be used if the source has zero incident angle in that plane;
- speed up: if the smallest refractive index (constant dielectric material, including the background) in the simulation is not 1, set "bfast alpha" to the smallest dielectric refractive index;
- PML: If relatively large incident angle is simulated, you may choose "steep angle" PML;
- PML: along the axis of source injection, PML BCs are used. When higher mesh accuracy is used, users may need more number of PML layers from default setting.
- BCs: in the transverse plane, the BCs in the plane of angled incidence are automatically overridden for whatever the previous BCs are set. However, in the plane of no angle, the symmetry BCs are conserved.
- critical angle: Currently it will not support the case where the incident angle is very close to and larger than the critical angle. This can happen when the source is located at higher index material than that in the rest of the simulation region.
Related publications
[1] B. Liang et al, Wideband Analysis of Periodic Structures at Oblique Incidence by Material Independent FDTD Algorithm, IEEE Trans. Antennas & Propagation, Vol.62 ,No.1, PP. 354 - 360.
See also
Bloch BCs in broadband sweeps over angle of incidence
Spherical plasmonic particles for HUD – SPEOS Interoperability