I’d like to provide some help on this issue. For any 2D periodic structure, you can get the equi-frequency contours at different frequencies. However in a 3D periodic structure, you will have kx,ky and kz, thus it would be equi-frequency surfaces, although some authors call the 2D contours as surfaces.
If you only need a 2D contour, you can specify the value to one of the three k components, since kx^2+ky^2+kz^2=k^2.
If your periodic structure has different bands that are clearly separated, it is easy to know which band the equi-frequency contours lies on. Otherwise, you will need to identify the bands of the contours with the help of the band structure. For example https://kb.lumerical.com/en/index.html?diffractive_optics_pc_bandstructure_tri2d.html
at a normalized frequency of 0.6, the contour will involve two bands, the second and the third. From Gamma to M point, the contour will have only the 2nd band. but in some k’s in the range of M to K, the 3rd band will be shown. Actually in the original EFC online example, if you plot the EFCs in larger normalized frequency, you will find this phenomenon, since that photonic crystal has a partial bandgap between 1st and 2nd bands.
This complicity is originated that the group velocity in such periodic structure is well defined, however the phase velocity is sometimes not.and you know k is related to the phase velocity.
Currently, Lumerical’s script czt only calculates 2D transformation. You will need to do the transformation slice by slice(eg, E(kx,ky,z) , then do the third dimension transformation by a given k-value (eg, kz0).
Since we have limited access to the publications, and rarely people investigate 3D equi-frequency surfaces in 3D periodic structure, I just provide some of my understanding on this issue. Maybe this is good topic for you to investigate. Please let us know if you have further questions, and if you hold a supported customer license, please email us directly.