Periodic boundary 3D FDTD



Here are two questions:

  1. I would like to know if the periodic boundary in 3D FDTD makes the device infinitely periodic by default? And if there is a way to fix a specific number of periods? If yes, can you explain me how?

  2. If I put a DFT monitor inside this 3D FDTD simulation zone how he is supposed to act? I mean, is it going to record data only for the first period? Is it going to save data for each period?



Hi @frederic.tessier.1,

If you employ the periodic boundary conditions (PBCs) in a periodic array, it means that the periodic array will expand infinitely its periodicity as you mentioned. Simulating the standalone “finite” periodic array that have a specific numbers of periods, you can apply PML(perfectly matched layer) BCs to the structure after you build the periodic array with the finite array. A plane-wave source is suitable for the “infinite” periodic array with the PBCs, a TFSF(total-field scattered-field) source is appropriate for the “finite” periodic array with the PML BCs. You can refer to the KX site and KB page for more information about how to simulate a periodic array.

The frequency domain profile monitors or frequency domain power monitors are executing a Discrete Fourier Transforms (DFT) method to calculate the electromagnetic(EM) fields with regards to an angular frequency. These monitors are recording the EM fields depending on the number of the “frequency points”. This frequency points can be adjust by setting (top bar menu) Monitors – Global properties - Edit global monitor options widows - Frequency/Profile tab - frequency points as below capture images. If you set the frequency points as “100”, then DFT monitor store the for each “100” EM dataset during a time period. It records all of the dataset regarding the frequency points into the DFT monitor.

I hope it would give you some guidelines.


First I would like to thank you for your clear answer.

  1. Then about my first question, you write that a plane-wave source is suitable for the “infinite” periodic array with the PBCs. If I want to simulate the fundamental mode, then I’m using a “Mode source”. So I would like to know if with a mode source instead of a plane-wave source, it is still good (would my result would be accurate)?

  2. On my second question, I’m still not sure if I put a DFT monitor inside this 3D FDTD simulation zone how he is supposed to act. I understand that the DFT monitor will store data during a time period as you mentioned. But that data would be from the first period only? I mean if my 3D FDTD simulation zone is set to be infinitely periodic in the y axis and that I set a DFT monitor into that zone with a Y-normal, this monitor will give me the results only for the first period of this infinite period. Is that correct?



Hi @frederic.tessier.1,

If you want to use the “Mode source” in your “infinite” periodic array, then you can apply the PBCs in Mode analysis windows - Advanced options. If the solver uses PBCs, and if the mode source span is large enough to cover the entire simulation region span, the integrated mode solver will use uses PBC on that axis. Please see more details on this KB page.

If you model the “1” periodic array in y-axis with the PBCs in the FDTD simulation region to simulate the “infinite” periodic nature, then you can only have the “1” periodic dataset from the Y-normal DFT monitor because you set up only the first periodic structure.


Hi, @isawjsy. I have two questions related to the above.
(1) When the periodic array of nanoparticles on the substrate is finite, and there is interaction between the neighboring nanoparticles, is PML+TFSF still suitable?
(2) I use the CW genearation rate to get the absorption and generation rate of the substrate with nanoparticles, but the simulation region only contains one period, and I am not sure if it considered the interaction with other particles. How can I get the analysis result of the whole structure?
Thanks a lot!


The TFSF source with PBCs and PML is still valid for the finite periodic structure with an in-plane coupling between the NPs.

In the KB examle for an electron-hole pair generation rate under CW illumination as shown in the following image, if you want to extract the e-h pair generation rate for infinite array, you can set the FDTD region associated with the one unit cell among the NPs array by applying PBCs or symmetric/anti-symmetric BCs. The interaction between neighbouring NPs does not matter for applying PBCs to the periodic array. You can visit the KB sites for more information on the e-h generation and the symmetric BCs.


Hi, @isawjsy Thank you for your reply. I creat my model by referring to the TiO2 pyramid on silicon, the periods in CW_generation is set to be 3, but the region of generation rate that exported to DEVICE still only contains one period. Could you help me to find out the mistakes in my model? Since the my model is too big to upload, I upload screenshots as following:

Thanks a lot!


Hi @lixiao14,

I guess your model seems to be okay to me. Here, I attached my project file and exported Matlab file based on the plasmonic solar cell example in KB page. So, you can refer to my attached files.

[Model]solar_plasmonic_normal_with_CW_generation.fsp (306.2 KB)
CW_generation.mat (432.4 KB)

In the CW_generation analysis group, you can expand your model only in x-direction for 3D case.
This is my simulated result for a generation rate “G” in the CW_generation analysis group.

Here is another result for a generation rate “G_export” that considers 3 periods in the CW_generation analysis group. As you can see in the following image, there is apparent 3 periodis in x-direction of the plasmonic solar cell.

You can compare the size difference between “G" and “G_export” as belows.

25 25 59
73 25 59

You can confirm that the size in x-direction of the G_export matrix is almost three times larger than that of G.
If you look at the exported Matlab file (CW_generation.mat), then you can also confirm the matrix size of G as 73X25X59.


Hi @isawjsy, I really appreciate for your answer! I compared your settings with mine and I don’t think there is difference. This is my project file 16.7.18.fsp (346.4 KB) I am quite confused, please help me to find out what’s wrong with my model. Thank you very much!!!


Hi @lixiao14,

I got the reason why you couldn’t attain the generation rate regarding periods.
I’m guessing you modified the Script contents in Analysis tab of CW_generation analysis group.
The 233rd line of the script based on your attached project file was written as below:

If you changed the dimension number as 3 instead of 2 to get an unfolded dataset as follows, you will get the generation rate containing 3 periods in x-direction. if ( ((dim==**3**) | (%average dimension%=="y")) & (periods>1) ) {


@isawjsy Oh, It’s so kind of you! I got the periodic results as the way you said. I really appreciate for your help!