BFAST takes a long time to run at steep angles (above 70 degrees)



I need to make a periodic structure in 2D with plane wave source(whose polarization direction is along x axis) injected at an angle. For that I have used PML along x axis and periodic along y axis as the boundary condition. For the source I have used BFAST as the plane wave type. Moreover I have kept the reflection monitor to the left of the source. Are these settings correct or I have to make any other changes in order to obtain the reflection curve? Will these settings work for different values of angles?

Steep Angle BFAST with Periodic Structures

dear @mohini.nagpal1

Your setting seems reasonable to me, and it will be a good idea to set your simulation and let me know if you had problem with your results. Also, BFAST is used for broadband simulations, otherwise you can use plane wave source for single frequency injections.



As such it is showing the results but when I put angle(theta)=85 degrees
,it says simulation will take 334 hours. Can I do something about it ? When
I tried it again after some time it says somewhat more time around 45 days
to run that simulation.


Dear @mohini.nagpal1

334 hours or 45 days do not make sense, and I expect there is something wrong with the simulation file (maybe mesh size?). Anyhow, I think the best way for me to help will be to see the simulation file. Can you please upload it for a review?



I have attached the file. It is a crystal structure with angle (theta)=85
degrees. Hope it helps!

c123.fsp (309 KB)


Dear @mohini.nagpal1

Thank you for the simulation file.

This seems to be a challenging problem. A broadband source at such a steep angle of 85 degree (or in general above 70 degrees) requires lots of attention on selecting the proper source and also the PML performance. In short, I think BFAST will not be a good choice for this case and you might need to use plane wave with Bloch BCs, and then run a sweep over wavelengths. For more information regarding BFAST, please visit this link.

Regarding your simulation file, I tried to simplify it by:

  • reducing the y span of the FDTD region: since geometry does not change along y-axis, I decreased it to have only a few mesh cells (~5 mesh cells). I modified to x-span to leave at least half wavelength between geometry and PML boundaries.
  • I brought the BFAST source closer to the objects to save time that it takes to reach the geometry
  • Increased bfast dt multiplier to 1 from advanced tab of FDTD without suffering from stability problems

While these will be useful to enormously decrease the simulation time to a reasonable value (both for BFAST or plane wave), there are few concerns using BFAST at such a steep angle. While we recommend BFAST for broad band source, results precision deteriorates as the angle increases. An alternative approach will be to use plane wave with Bloch BCs and then perform a sweep over wavelengths.

Also you need to monitor PML as its performance decreases significantly at such a steep angle. To do this, I recommend you to use steep angle PML and run the simulations with plane wave (at 85 degree angle) in free space. If PML is absorbing properly, you expect to have 100% transmission and no reflection. You will need to do this test for a few wavelength (nominally, max, min, and center of the wavelengths of interest).

Once you come up with a decent PML settings, then you can enable the objects and run the sweep.

Please keep me updated with your results and I will be happy to be of a help.



Thank you sir for your quick reply.

First of all if I use Bloch BCs ,then theta will vary with wavelength and
this needs to be avoided in case of angled injections. Moreover Bloch BCs
are useful for launching plane wave at an angle and curve can be obtained
at a single wavelength but I need it over 0.1 to 1.5 microns and that means
I have to perform many simulations.

I made changes to my file and though the simulation time decreased but the
results are not upto the mark. I have uploaded the file for review.

Your last point of using steep angle PML was not clear.

p123.fsp (301 KB)


Dear @mohini.nagpal1

As I explained before, BFAST is less stable compared to plane wave. While BFAST is introduced to help customers in some cases, it might not be very ideal in such steep angles. Alternative approach is to use plane wave with Bloch BCs and run simulations for a single frequency each time. Then by sweeping over wavelength, you can extract the results of interest.

Also, do you need such a big wavelength span (from 0.1 - 1.5um)? You can probably focus only at a specific bandwidth which you expect to see the results of interest.

Regarding my notes on PML: Simulation wise, constructing a proper PML at such a steep angle that can absorb all the light without any reflection is very hard. Thus you need to test type and the number of PML layers to make sure that you have set them properly. To do this, I recommend you to set a simple simulation file (a plane wave with Bloch BCs, running at single frequency), and test the PML for couple of source wavelengths to make sure that PML performs desirably.

I hope this was useful.