From 6c64980df30f6032bf8b47e5f68343cf26f8cf97 Mon Sep 17 00:00:00 2001 From: Guillaume Demesy <guillaume.demesy@fresnel.fr> Date: Wed, 27 Nov 2019 00:42:39 +0100 Subject: [PATCH] rename --- .../grating2D_data_plasmonics.geo | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 DiffractionGratings/grating2D_data_plasmonics.geo diff --git a/DiffractionGratings/grating2D_data_plasmonics.geo b/DiffractionGratings/grating2D_data_plasmonics.geo new file mode 100644 index 0000000..61f5259 --- /dev/null +++ b/DiffractionGratings/grating2D_data_plasmonics.geo @@ -0,0 +1,127 @@ +/////////////////////////////////// +// Author : Guillaume Demesy // +// grating2D_data_plasmonic.geo // +/////////////////////////////////// + +nm = 1000.; +ep0 = 8.854187817e-3*nm; +mu0 = 400.*Pi*nm; +cel = 1.0/(Sqrt[ep0 * mu0]); +deg2rad = Pi/180; + +pp0 = "1Geometry/0"; +pp01 = "1Geometry/01Stack thicknesses/"; +pp02 = "1Geometry/02Diffractive element dimensions/00"; +pp1 = "2Materials/0"; +pp2 = "3Incident plane wave/0"; +pp2b = StrCat[pp1,"1Custom non-dispersive materials/6Custom anisotropic rods/"]; +pp3 = "4Mesh size and PMLs parameters/0"; +pp4 = "5Post plot options/0"; +close_menu = 0; +colorro = "LightGrey"; +colorpp = "Ivory"; +colorpp2 = "Ivory"; +colorpp01 = "Ivory"; +colorpp02 = "Ivory"; + +lambda_min = 600; +lambda_max = 800; +nb_lambdas = 5; + +DefineConstant[ + flag_Hparallel = {1 , Name StrCat[pp2, "2polarization case"], Choices {0="E //",1="H //"}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + theta_deg = {30 , Name StrCat[pp2, "1incident plane wave angle [deg]"] , Highlight Str[colorpp2], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + nb_orders = {2 , Name StrCat[pp2, "3number of post-processed diffraction orders"] , Highlight Str[colorpp2], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} +]; + +DefineConstant[ + d = {350 , Name StrCat[pp0 , "0grating period [nm]"] , Highlight Str[colorpp] , Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + h_sub = {300 , Name StrCat[pp01 , "1substrate thickness [nm]"] , Highlight Str[colorpp01], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + h_layer_dep = {20 , Name StrCat[pp01 , "2deposit layer thickness [nm]"] , Highlight Str[colorpp01], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + h_layer_cov = {15 , Name StrCat[pp01 , "3cover layer thickness [nm]"] , Highlight Str[colorpp01], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + h_sup = {300 , Name StrCat[pp01 , "4superstrate thickness [nm]"] , Highlight Str[colorpp01], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + + Flag_glue_rod_subs = { 0, Name StrCat[pp02, "0glue rod to substrate?"] , Choices {0,1}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + Shape_rod = { 1, Name StrCat[pp02, "1rod section shape"] , Choices {0="Trapezoidal",1="Ellipsoidal"}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + N_rods = { 3, Name StrCat[pp02, "2number of rods [-]"] , Highlight Str[colorpp02], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + w_rod_bot = { 200, Name StrCat[pp02, "3bottom rod width if trapz rod OR x-diameter if elliptic rod [nm]"] , Highlight Str[colorpp02], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + w_rod_top = { 500, Name StrCat[pp02, "4top rod width if trapz rod [nm]"] , Highlight Str[colorpp02], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + h_rod = { 50, Name StrCat[pp02 ,"5rod thickness if trapz rod OR y-diameter if elliptic rod [nm]"] , Highlight Str[colorpp02], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + dy = { 250, Name StrCat[pp02 ,"6embedding layer thickness OR 'period' along y if number of rods >1, [nm]"] , Highlight Str[colorpp02], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + Rot_rod = { 30, Name StrCat[pp02, "7rotate rod [deg]"] , Highlight Str[colorpp02], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + Flag_chirp_rod_angle = { 1, Name StrCat[pp02, "8chirp angle?"] , Choices {0,1}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + Flag_chirp_rod_size = { 1, Name StrCat[pp02, "9chirp size?"] , Choices {0,1}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + Chirp_rod = { 90, Name StrCat[pp02, "91chirp size factor [%]"] , Highlight Str[colorpp02], Closed close_menu , ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + + flag_mat_1 = { 1 , Name StrCat[pp1, "0Dispersive materials/0material substrate"] , Choices {0="Air",1="SiO2",2="Ag (palik)",3="Al (palik)",4="Au (johnson)",5="Nb2O5",6="ZnSe",7="MgF2",8="TiO2",9="PMMA",10="Si",11="ITO",12="Cu (palik)",13="custom 1 (lossless)",14="custom 2",15="custom 3"}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + flag_mat_2 = { 6 , Name StrCat[pp1, "0Dispersive materials/1material deposit layer"] , Choices {0="Air",1="SiO2",2="Ag (palik)",3="Al (palik)",4="Au (johnson)",5="Nb2O5",6="ZnSe",7="MgF2",8="TiO2",9="PMMA",10="Si",11="ITO",12="Cu (palik)",13="custom 1 (lossless)",14="custom 2",15="custom 3"}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + flag_mat_3 = { 6 , Name StrCat[pp1, "0Dispersive materials/2material embedding rod"] , Choices {0="Air",1="SiO2",2="Ag (palik)",3="Al (palik)",4="Au (johnson)",5="Nb2O5",6="ZnSe",7="MgF2",8="TiO2",9="PMMA",10="Si",11="ITO",12="Cu (palik)",13="custom 1 (lossless)",14="custom 2",15="custom 3"}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + flag_mat_4 = { 2 , Name StrCat[pp1, "0Dispersive materials/3material rods"] , Choices {0="Air",1="SiO2",2="Ag (palik)",3="Al (palik)",4="Au (johnson)",5="Nb2O5",6="ZnSe",7="MgF2",8="TiO2",9="PMMA",10="Si",11="ITO",12="Cu (palik)",13="custom 1 (lossless)",14="custom 2",15="custom 3"}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + flag_mat_5 = { 1 , Name StrCat[pp1, "0Dispersive materials/4material cover layer"] , Choices {0="Air",1="SiO2",2="Ag (palik)",3="Al (palik)",4="Au (johnson)",5="Nb2O5",6="ZnSe",7="MgF2",8="TiO2",9="PMMA",10="Si",11="ITO",12="Cu (palik)",13="custom 1 (lossless)",14="custom 2",15="custom 3"}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + flag_mat_6 = { 0 , Name StrCat[pp1, "0Dispersive materials/5material superstrate"] , Choices {0="Air",1="SiO2",6="ZnSe",7="MgF2",8="TiO2",9="PMMA",13="custom 1 (lossless)"}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + + epsr_custom_1_re = { 8.9 , Name StrCat[pp1 , "1Custom non-dispersive materials/0custom relative permittivity 1 (real part)"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_1_im = { 0 , Name StrCat[pp1 , "1Custom non-dispersive materials/1custom relative permittivity 1 (imag part)"] , ReadOnly 1, Highlight Str[colorro] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_2_re = {-44.9757 , Name StrCat[pp1 , "1Custom non-dispersive materials/2custom relative permittivity 2 (real part)"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_2_im = { 2.9524 , Name StrCat[pp1 , "1Custom non-dispersive materials/3custom relative permittivity 2 (imag part)"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_3_re = { 3 , Name StrCat[pp1 , "1Custom non-dispersive materials/4custom relative permittivity 3 (real part)"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_3_im = { 0.3 , Name StrCat[pp1 , "1Custom non-dispersive materials/5custom relative permittivity 3 (imag part)"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + + Flag_aniso = { 0 , Name StrCat[pp2b , "0Enable anisotropy for rods? (overrides material rods above)"] , Choices {0,1} , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_anisoXX_re = { 2.592 , Name StrCat[pp2b , "1 epsilonr XX re"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_anisoXX_im = { 0 , Name StrCat[pp2b , "2 epsilonr XX im"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_anisoYY_re = { 2.592 , Name StrCat[pp2b , "3 epsilonr YY re"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_anisoYY_im = { 0 , Name StrCat[pp2b , "4 epsilonr YY im"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_anisoZZ_re = { 2.829 , Name StrCat[pp2b , "5 epsilonr ZZ re"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_anisoZZ_im = { 0 , Name StrCat[pp2b , "6 epsilonr ZZ im"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_anisoXY_re = { 0.251 , Name StrCat[pp2b , "7 epsilonr XY re"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + epsr_custom_anisoXY_im = { 0 , Name StrCat[pp2b , "8 epsilonr XY im"] , Highlight Str[colorpp] , Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"} , + + h_pmltop = {lambda_max, Name StrCat[pp3, "0top PML size [nm]"] , ReadOnly 1, Highlight Str[colorro], ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + h_pmlbot = {lambda_max, Name StrCat[pp3, "1bottom PML size [nm]"] , ReadOnly 1, Highlight Str[colorro], ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + Flag_o2_interp = {1 , Name StrCat[pp3, "2Second order interpolation?"] , Choices {0,1}, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + Flag_o2_geom = {0 , Name StrCat[pp3, "3Second order mesh?"] , Choices {0,1}, Visible 0, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + paramaille = {10 , Name StrCat[pp3, "4nb of mesh elements per wavelength [-]" ] , ReadOnly 0, Highlight Str[colorpp], ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + paramaille_scale_sub = {1 , Name StrCat[pp3, "6Custom mesh parameters/refine substrate [-]" ] , ReadOnly 0, Highlight Str[colorpp], Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + paramaille_scale_layer_dep = {1 , Name StrCat[pp3, "6Custom mesh parameters/refine deposit layer [-]"] , ReadOnly 0, Highlight Str[colorpp], Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + paramaille_scale_rod_out = {1 , Name StrCat[pp3, "6Custom mesh parameters/refine embedding [-]" ] , ReadOnly 0, Highlight Str[colorpp], Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + paramaille_scale_rods = {3 , Name StrCat[pp3, "6Custom mesh parameters/refine rods [-]" ] , ReadOnly 0, Highlight Str[colorpp], Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + paramaille_scale_layer_cov = {1 , Name StrCat[pp3, "6Custom mesh parameters/refine cover layer [-]" ] , ReadOnly 0, Highlight Str[colorpp], Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + paramaille_scale_sup = {1 , Name StrCat[pp3, "6Custom mesh parameters/refine superstrate [-]" ] , ReadOnly 0, Highlight Str[colorpp], Closed 1, ServerAction "Reset GetDP/T0, GetDP/R0, GetDP/Lambda_step, GetDP/total absorption"}, + + multiplot = {0, Choices{0,1}, Name StrCat[pp4, "Plot solution on multiple periods"]}, + plotRTgraphs = {1, Choices{0,1}, Name StrCat[pp4, "Plot R and T"]} +] ; + +d = d * nm; +dy = dy * nm; +h_sup = h_sup * nm; +h_sub = h_sub * nm; +h_layer_dep = h_layer_dep * nm; +h_layer_cov = h_layer_cov * nm; +w_rod_bot = w_rod_bot * nm; +w_rod_top = w_rod_top * nm; +h_rod = h_rod * nm; +h_pmltop = h_pmltop * nm; +h_pmlbot = h_pmlbot * nm; +paramaille_pml = 0.6667*paramaille; + +PMLBOT = 1000; +SUB = 2000; +LAYERDEP = 3000; +RODOUT = 4000; +For k2 In {0:N_rods-1:1} + ROD~{k2}=5000+1+k2; +EndFor +LAYERCOV = 6000; +SUP = 7000; +PMLTOP = 8000; + +SURF_BLOCH_X_LEFT = 101; +SURF_BLOCH_X_RIGHT = 102; +SURF_INTEG_SUP1 = 121; +SURF_INTEG_SUB1 = 131; +SURF_INTEG_SUP2 = 122; +SURF_INTEG_SUB2 = 132; +SURF_PLOT = 141; +PRINT_POINT = 10000; -- GitLab