This shows you the differences between two versions of the page.

en:pwe [2013/01/23 22:43]
deinega [Waveguide modes. Supercell technique.]
en:pwe [2013/02/14 00:56] (current)
deinega [Waveguide modes. Supercell technique.]
Line 152: Line 152:
   int rsl=10;   int rsl=10;
   for(int i=0;i<=rsl;i++)   for(int i=0;i<=rsl;i++)
-    task.AddWaveVector(Vector_3(0,i*.5/rsl,0),str);+    task.AddWaveVector(Vector_3(0,i*.5/rsl,0));
   task.Calculate();   task.Calculate();
Line 163: Line 163:
 Using this code you can calculate the eigenfrequencies for a number of wave vectors on the path <tex>\frac{2\pi}{a}(0,0)</tex> to  <tex>\frac{2\pi}{a}(0,0.5)</tex>.  Using this code you can calculate the eigenfrequencies for a number of wave vectors on the path <tex>\frac{2\pi}{a}(0,0)</tex> to  <tex>\frac{2\pi}{a}(0,0.5)</tex>. 
-This is the result for first 15 bands (super=4). One can clearly see waveguide mode which lies in photonic crystal band gap (grey line).+This is the result for first 15 bands (super=4). One can clearly see waveguide mode which lies in the photonic crystal band gap (grey line).
   gnuplot> unset key   gnuplot> unset key
Line 174: Line 174:
 ====== Eigenmodes spatial distribution ====== ====== Eigenmodes spatial distribution ======
 +Light in a photonic crystal waveguide can be attenuated if it can couple to propagating (radiation) modes transverse to the axis of the waveguide. This leakage is prevented when the number of photonic crystal unit cell on both sides of the waveguide is large enough. If the guided mode exists below the light line it cannot couple to the radiation field and it is not leaky.
 +The example below calculates band structure and field distribution for the photonic crystal with a linear defect and air cladding layers.
 +<code cpp>
 +#include "plane_wave_exp.h"
 +int main(int argc,char **argv){
 +  emInit(argc,argv);
 +  pwExperiment task;
 +  int super=15;
 +  int super_air=12;
 +  task.AddObject(emMedium(11.9),GetCylinder(Vector_3(super+.5,.5,0),Vector_3(0,0,1),.12));
 +  for(int i=0;i<super;i++){
 +    if(i>=super_air){
 +      task.AddObject(emMedium(11.9),GetCylinder(Vector_3(i+.5,.5,0),Vector_3(0,0,1),.2));
 +      task.AddObject(emMedium(11.9),GetCylinder(Vector_3(2*super-i+.5,.5,0),Vector_3(0,0,1),.2));
 +    }
 +  }
 +  task.SetPolarization("TM");
 +  task.SetBandsNumber(50);
 +  task.SetMeshStepsNumber((2*super+1)*50,50);
 +  task.SetPlaneWavesNumber((2*super+1)*5,5);
 +  int rsl=10;
 +  for(int i=0;i<=rsl;i++){
 +    string str="";
 +    if(i==rsl-2)
 +      str="0.4";
 +    task.AddWaveVector(Vector_3(0,i*.5/rsl,0),str);
 +  }
 +  task.AddBandDistribution(7);
 +  task.AddBandDistribution(19);
 +  int size=10;
 +  task.AddDetectorSet("f",0,Vector_3(2*super+1,size,0),iVector_3(10*(2*super+1),10*size,1));
 +  task.Calculate();
 +  return 1;
 +We calculate eigenmode spatial distribution for wavevector 0.4, bands 7, 8.
 +For this purpose we use function AddBandDistribution (this function can be called more than one time for different bands).
 +We use second optional parameter of function AddWaveVector to mark wavector at which we want to calculate spatial eigenmode distribution. 
 +Default value of this parameter is empty string "" (spatial distribution will not be calculated). 
 +Function AddDetectorSet specifies points ('detectors') where we want to calculate eigenmode value. Syntax of this function is the same as [[/en/tutorial#detectors|syntax used for FDTD simulations]]. First parameter of AddDetectorSet is detectors name (“f” in our case). This name will be used for names of files associated with detectors. Next three parameters specify 3D grid where detectors are placed, namely, two opposite corners of the grid and number of grid steps along three directions.
 +As a result of calculation we get files 'DetectorName_WavevectorName_Bandnumber.d'. These files contain tabular data in the format x - y - z - Re(field) - Im(field)
 +In our 2D case of TM polarization, field corresponds to z-component of electric field E.
 +Files with field spatial distribution can be plotted by gnuplot.
 +  gnuplot> set pm3d interpolate 2,2
 +  gnuplot> set view 0,0
 +  gnuplot> cmax=4
 +  gnuplot> set palette defined (-cmax 'blue', 0 'white', cmax 'red')
 +  gnuplot> set cbrange [-cmax:cmax]
 +  gnuplot> sp [5:25] 'f0.4_7.d' u 1:2:4 w pm3d
 +In this example we plot eigenmode corresponding to band 7 at wavevector 0.4. This is waveguide mode (it also can be seen from results for bandstructure). We choose gnuplot parameter 'cmax=4' for better color resolution (for other eigenmodes optimal value of cmax could be different). We plot real part of eigenmode <tex>{\rm Re}({\bf E})</tex>. Electric field in time is a combination of real and imaginary parts: <tex>{\rm Re}({\bf E}\exp{(i\omega t)})</tex>.
 ====== Bandstructure of 3D photonic crystals ====== ====== Bandstructure of 3D photonic crystals ======
 +Not ready yet.
 +If you need it urgently, just send email to Alexei Deinega.
/home/kintechlab/fdtd.kintechlab.com/docs/data/attic/en/pwe.1358966614.txt.gz · Last modified: 2013/01/23 22:43 by deinega     Back to top