diff --git a/DiffractionGratings/grating3D.geo b/DiffractionGratings/grating3D.geo index 28ab19d493c2715aa84edbbecd3ef5db32989eaf..a7b2a98e3e04de273b21eba0d6543b4653d18952 100644 --- a/DiffractionGratings/grating3D.geo +++ b/DiffractionGratings/grating3D.geo @@ -193,7 +193,7 @@ lc_PML = lambda_m/(paramaille*.5); list_lc(0) = lc_PML; For k In {1:6} n_L~{k} = Sqrt(Abs(eps_re_L~{k})); - lc_L~{k} = lambda_m/(paramaille*n_L~{k}); + lc_L~{k} = lambda_m/(paramaille*n_L~{k})/refine_mesh_L~{k}; list_lc(7-k) = lc_L~{k}; EndFor list_lc(7) = lc_PML; diff --git a/DiffractionGratings/grating3D.pro b/DiffractionGratings/grating3D.pro index 10d6a25e9dd75cc2b2ea40d0fc2b6b941c1d473f..8ca04fb612a82a55620ae6001d5128f57fbf2c13 100644 --- a/DiffractionGratings/grating3D.pro +++ b/DiffractionGratings/grating3D.pro @@ -122,13 +122,11 @@ Function{ epsr[PMLtop] = Re[epsr1[]]*TensorDiag[sz[]*sy/sx,sx*sz[]/sy,sx*sy/sz[]]; mur[PMLtop] = TensorDiag[sz[]*sy/sx,sx*sz[]/sy,sx*sy/sz[]]; - epsr[PMLbot] = Re[epsr2[]]*TensorDiag[sz[]*sy/sx,sx*sz[]/sy,sx*sy/sz[]]; - mur[PMLbot] = TensorDiag[sz[]*sy/sx,sx*sz[]/sy,sx*sy/sz[]]; + epsr[PMLbot] = Re[epsr2[]]*TensorDiag[sz[]*sy/sx,sx*sz[]/sy,sx*sy/sz[]]; + mur[PMLbot] = TensorDiag[sz[]*sy/sx,sx*sz[]/sy,sx*sy/sz[]]; - // epsr[PMLtop] = TensorDiag[sz_bermutop[]*sy/sx,sx*sz_bermutop[]/sy,sx*sy/sz_bermutop[]]; - // mur[PMLtop] = TensorDiag[sz_bermutop[]*sy/sx,sx*sz_bermutop[]/sy,sx*sy/sz_bermutop[]]; - // epsr[PMLbot] = TensorDiag[sz_bermubot[]*sy/sx,sx*sz_bermubot[]/sy,sx*sy/sz_bermubot[]]; - // mur[PMLbot] = TensorDiag[sz_bermubot[]*sy/sx,sx*sz_bermubot[]/sy,sx*sy/sz_bermubot[]]; + // epsr[PMLbot] = epsr2[]; + // mur[PMLbot] = TensorDiag[1,1,1]; epsr_annex[PMLbot] = epsr[]; epsr_annex[PMLtop] = epsr[]; @@ -405,18 +403,9 @@ PostOperation { Print [ Poy_tot , OnPlane { {-period_x/2,0,hh_L_6} {period_x/2,0,hh_L_6} {-period_x/2,0,hh_L_1+thick_L_1} } {npts_interpX,npts_interpZTot} , File StrCat[myDir,"Poy_tot_cut_Y=0.pos"], Name "Poy_tot_cut_Y=0"]; Print [ Poy_tot , OnPlane { {0,-period_y/2,hh_L_6} {0,period_y/2,hh_L_6} {0,-period_y/2,hh_L_1+thick_L_1} } {npts_interpY,npts_interpZTot} , File StrCat[myDir,"Poy_tot_cut_X=0.pos"], Name "Poy_tot_cut_X=0"]; EndIf - // // For DEBUG - Print [ H1y , OnElementsOf Omega, File StrCat[myDir,"H1y.pos"]]; - Print [ Etot , OnElementsOf Omega, File StrCat[myDir,"Etot.pos"]]; - // Print [ epsr_xx , OnElementsOf Omega, File StrCat[myDir,"epsr_xx.pos"]]; - // Print [ epsr_0xx , OnElementsOf Scat, File StrCat[myDir,"epsr_xx.pos"]]; - // Print [ Ecm , OnElementsOf Omega_plot, File StrCat[myDir,"Ecm.pos"]]; - // Print [ E1, OnElementsOf Omega_plot, File StrCat[myDir,"E1.pos"]]; - // Print [ Damp_pml_top, OnElementsOf PMLtop, File StrCat[myDir,"Damp_pml_top.pos"]]; - // For i In {0:nb_slice-1} - // Print [ Etot , OnPlane { {-period_x/2+small_delta,-period_y/2+small_delta,zcut_sub~{i}} {-period_x/2+small_delta,period_y/2-small_delta,zcut_sub~{i}} {period_x/2-small_delta,-period_y/2+small_delta,zcut_sub~{i}} } {ninterv_integ,ninterv_integ} , File StrCat[myDir,> "./Views/Etot_XYcut.out",Format Table]; - // Print [ Edif , OnPlane { {-period_x/2+small_delta,-period_y/2+small_delta,zcut_sup~{i}} {-period_x/2+small_delta,period_y/2-small_delta,zcut_sup~{i}} {period_x/2-small_delta,-period_y/2+small_delta,zcut_sup~{i}} } {ninterv_integ,ninterv_integ} , File StrCat[myDir,> "./Views/Edif_XYcut.out",Format Table]; - // EndFor + // // // For DEBUG + // Print [ H1y , OnElementsOf Omega, File StrCat[myDir,"H1y.pos"]]; + // Print [ Etot , OnElementsOf Omega, File StrCat[myDir,"Etot.pos"]]; For k In {2:6} Print[ Abs_L~{k}[L~{k}], OnGlobal, File > StrCat[myDir,Sprintf["temp-Q_L_%g.txt",k]], Format Table ]; EndFor diff --git a/DiffractionGratings/grating3D_data_2Dlamellar.geo b/DiffractionGratings/grating3D_data_2Dlamellar.geo index 84257371523303dd55d32efa8ea042ebb48268b2..d43b245635e0e465a5ec07b0151384eb3f71758b 100644 --- a/DiffractionGratings/grating3D_data_2Dlamellar.geo +++ b/DiffractionGratings/grating3D_data_2Dlamellar.geo @@ -14,10 +14,10 @@ DefineConstant[ period_y = {20 , Name StrCat[pp2,"/2Y period [nm]"]}, thick_L_1 = {200 , Name StrCat[pp2,"/3thickness layer 1 [nm] (superstrate)"]}, thick_L_2 = {200 , Name StrCat[pp2,"/4thickness layer 2 [nm]"]}, - thick_L_3 = {1050 , Name StrCat[pp2,"/5thickness layer 3 [nm]"]}, - thick_L_4 = {250 , Name StrCat[pp2,"/6thickness layer 4 [nm]"]}, - thick_L_5 = {250 , Name StrCat[pp2,"/7thickness layer 5 [nm]"]}, - thick_L_6 = {500 , Name StrCat[pp2,"/8thickness layer 6 [nm] (substrate)"]}, + thick_L_3 = {1050 , Name StrCat[pp2,"/5thickness layer 3 [nm]"]}, + thick_L_4 = {50 , Name StrCat[pp2,"/6thickness layer 4 [nm]"]}, + thick_L_5 = {50 , Name StrCat[pp2,"/7thickness layer 5 [nm]"]}, + thick_L_6 = {100 , Name StrCat[pp2,"/8thickness layer 6 [nm] (substrate)"]}, tag_geom = { 7 , Name StrCat[pp3,"/0Shape"], Choices {1="Pyramid",2="Cylindrical Hole",3="Torus",4="HalfEllipspoid",5="Checkerboard",6="bi-sinusoidal",7="2D lamellar"}}, rx = {500 , Name StrCat[pp3,"/1rx"]}, @@ -46,17 +46,17 @@ DefineConstant[ eps_re_L_6 = {-44.9757 , Name StrCat[pp4,"/layer 6: real part of relative permittivity"]}, eps_im_L_6 = {2.9524 , Name StrCat[pp4,"/layer 6: imag part of relative permittivity"]}, - paramaille = {8 , Name StrCat[pp5,"/1Number of mesh elements per wavelength [-]"]}, - scat_lc = {10 , Name StrCat[pp5,"/2Scatterer absolute mesh size [nm]"]}, + paramaille = {15 , Name StrCat[pp5,"/1Number of mesh elements per wavelength [-]"]}, + lc_scat = {30 , Name StrCat[pp5,"/2Scatterer absolute mesh size [nm]"]}, PML_top = {lambda0 , Name StrCat[pp5,"/4PML top thickness [nm]"]}, - PML_bot = {lambda0/10, Name StrCat[pp5,"/5PML bot thickness [nm]"]}, + PML_bot = {lambda0 , Name StrCat[pp5,"/5PML bot thickness [nm]"]}, Nmax = {1 , Name StrCat[pp5,"/6Number of non specular order to output [-]"]}, - refine_mesh_L1= {1 , Name StrCat[pp5,"/7refine layers/1refine mesh layer 1 [-]"]}, - refine_mesh_L2= {1 , Name StrCat[pp5,"/7refine layers/2refine mesh layer 2 [-]"]}, - refine_mesh_L3= {1 , Name StrCat[pp5,"/7refine layers/3refine mesh layer 3 [-]"]}, - refine_mesh_L4= {2 , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]}, - refine_mesh_L5= {2 , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]}, - refine_mesh_L6= {2 , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]}, + refine_mesh_L_1= {1 , Name StrCat[pp5,"/7refine layers/1refine mesh layer 1 [-]"]}, + refine_mesh_L_2= {1 , Name StrCat[pp5,"/7refine layers/2refine mesh layer 2 [-]"]}, + refine_mesh_L_3= {1 , Name StrCat[pp5,"/7refine layers/3refine mesh layer 3 [-]"]}, + refine_mesh_L_4= {0.5 , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]}, + refine_mesh_L_5= {0.5 , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]}, + refine_mesh_L_6= {0.5 , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]}, InterpSampling = { 30 , Name StrCat[pp6,"/0Interpolation grid step [nm]"]}, Flag_interp_cubic = { 0 , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },