diff --git a/DiffractionGratings/grating3D.geo b/DiffractionGratings/grating3D.geo
index 690b336a33b0554cbc8dabd607ffa3cf6f0e675f..146627814d73d88a1ad9b31c4ce3585811349883 100644
--- a/DiffractionGratings/grating3D.geo
+++ b/DiffractionGratings/grating3D.geo
@@ -24,204 +24,28 @@ Macro SetPBCs
   Periodic Surface{slaveY()} = {masterY()} Translate{       0, period_y,        0};
 Return
 
-If (tag_geom==6)
-  // Bi-sinusoidal profile by Spline surface filling
-  // not the most general way to implement a freesurface height=f(x,y) and relies on multiple Coherence calls
-  nsin = 20;
-  For i In {0:nsin}
-      xx1~{i} = -period_x/2+i*period_x/2/(nsin-1);
-      xx2~{i} =             i*period_x/2/(nsin-1);
-  EndFor
-  pp=newp;//pp=pp-1;
-  For i In {0:nsin-1}
-    yy=-period_y/2;
-    Point(newp) = {xx1~{i},yy,rz/4*(Cos(2*Pi*xx1~{i}/period_x)+Cos(2*Pi*yy/period_y))+hh_L_3+thick_L_3/2};
-    Point(newp) = {yy,xx1~{i},rz/4*(Cos(2*Pi*yy/period_x)+Cos(2*Pi*xx1~{i}/period_y))+hh_L_3+thick_L_3/2};
-    yy=0;
-    Point(newp) = {xx1~{i},yy,rz/4*(Cos(2*Pi*xx1~{i}/period_x)+Cos(2*Pi*yy/period_y))+hh_L_3+thick_L_3/2};
-    Point(newp) = {yy,xx1~{i},rz/4*(Cos(2*Pi*yy/period_x)+Cos(2*Pi*xx1~{i}/period_y))+hh_L_3+thick_L_3/2};
-    yy=period_y/2;
-    Point(newp) = {xx1~{i},yy,rz/4*(Cos(2*Pi*xx1~{i}/period_x)+Cos(2*Pi*yy/period_y))+hh_L_3+thick_L_3/2};
-    Point(newp) = {yy,xx1~{i},rz/4*(Cos(2*Pi*yy/period_x)+Cos(2*Pi*xx1~{i}/period_y))+hh_L_3+thick_L_3/2};
-    yy=-period_y/2;
-    Point(newp) = {xx2~{i},yy,rz/4*(Cos(2*Pi*xx2~{i}/period_x)+Cos(2*Pi*yy/period_y))+hh_L_3+thick_L_3/2};
-    Point(newp) = {yy,xx2~{i},rz/4*(Cos(2*Pi*yy/period_x)+Cos(2*Pi*xx2~{i}/period_y))+hh_L_3+thick_L_3/2};
-    yy=0;
-    Point(newp) = {xx2~{i},yy,rz/4*(Cos(2*Pi*xx2~{i}/period_x)+Cos(2*Pi*yy/period_y))+hh_L_3+thick_L_3/2};
-    Point(newp) = {yy,xx2~{i},rz/4*(Cos(2*Pi*yy/period_x)+Cos(2*Pi*xx2~{i}/period_y))+hh_L_3+thick_L_3/2};
-    yy=period_y/2;
-    Point(newp) = {xx2~{i},yy,rz/4*(Cos(2*Pi*xx2~{i}/period_x)+Cos(2*Pi*yy/period_y))+hh_L_3+thick_L_3/2};
-    Point(newp) = {yy,xx2~{i},rz/4*(Cos(2*Pi*yy/period_x)+Cos(2*Pi*xx2~{i}/period_y))+hh_L_3+thick_L_3/2};
-  EndFor
-  For k In {1:11}
-    BSpline(newl) = {pp+k:pp+12*nsin:12};
-  EndFor
-  BSpline(newl) = {pp  :pp+12*(nsin-1):12};
-  Coherence;
-  Box(1) = {-period_x/2,-period_y/2,     hh_L_3,period_x,period_y, thick_L_3};
-  Delete{Volume{1}; Surface{1,2,3,4} ; Line{13,15,17,19};}
-  Curve Loop(7) = {21, 20, -23, -16};
-  Curve Loop(8) = {1, 2, -3, -12};
-  Surface(7) = {8};
-  Curve Loop(10) = {6, 5, -8, -3};
-  Surface(8) = {10};
-  Curve Loop(12) = {9, 10, -11, -8};
-  Surface(9) = {12};
-  Curve Loop(14) = {2, 9, -4, -7};
-  Surface(10) = {14};
-  Line(25) = {239, 229};
-  Line(26) = {229, 238};
-  Line(27) = {243, 235};
-  Line(28) = {235, 242};
-  Line(29) = {237, 244};
-  Line(30) = {233, 240};
-  Line(31) = {237, 245};
-  Line(32) = {241, 233};
-  Curve Loop(16) = {25, 12, 6, -27, -21};
-  Surface(11) = {16};
-  Curve Loop(18) = {20, -31, -11, -5, -27};
-  Surface(12) = {18};
-  Curve Loop(20) = {29, -18, -28, 5, 11};
-  Surface(13) = {20};
-  Curve Loop(22) = {10, 29, -24, -30, 4};
-  Surface(14) = {22};
-  Curve Loop(24) = {30, -14, -26, 1, 7};
-  Surface(15) = {24};
-  Curve Loop(26) = {25, 1, 7, -32, -16};
-  Surface(16) = {26};
-  Curve Loop(28) = {26, 22, -28, -6, -12};
-  Surface(17) = {28};
-  Curve Loop(30) = {31, -23, 32, 4, 10};
-  Surface(18) = {30};
-  Surface Loop(3) = {5, 16, 18, 12, 11, 9, 8, 7, 10};
-  Volume(9) = {3};    
-  Surface Loop(2) = {6, 15, 14, 10, 7, 8, 9, 13, 17};
-  Volume(10) = {2};
-EndIf
-
 Box(1) = {-period_x/2,-period_y/2, PML_bot_hh,period_x,period_y, PML_bot  };
-Box(2) = {-period_x/2,-period_y/2,     hh_L_6,period_x,period_y, thick_L_6};
-Box(3) = {-period_x/2,-period_y/2,     hh_L_5,period_x,period_y, thick_L_5};
-Box(4) = {-period_x/2,-period_y/2,     hh_L_4,period_x,period_y, thick_L_4};
-If (tag_geom!=6)
-  Box(5) = {-period_x/2,-period_y/2,     hh_L_3,period_x,period_y, thick_L_3};
-EndIf
-Box(6) = {-period_x/2,-period_y/2,     hh_L_2,period_x,period_y, thick_L_2};
-Box(7) = {-period_x/2,-period_y/2,     hh_L_1,period_x,period_y, thick_L_1};
-Box(8) = {-period_x/2,-period_y/2, PML_top_hh,period_x,period_y, PML_top  };
-
-If (tag_geom==1)
-  p=newp;
-  Point(p) = {0,0,hh_L_3+rz};
-  Line(97) = {25, 65};
-  Line(98) = {65, 27};
-  Line(99) = {65, 29};
-  Line(100) = {31, 65};
-  Curve Loop(49) = {97, 99, -46};
-  Plane Surface(49) = {49};
-  Curve Loop(50) = {99, 42, 100};
-  Plane Surface(50) = {50};
-  Curve Loop(51) = {98, -38, 97};
-  Plane Surface(51) = {51};
-  Curve Loop(52) = {98, 48, 100};
-  Plane Surface(52) = {52};
-  Curve Loop(53) = {38, 48, -42, -46};
-  Plane Surface(53) = {53};
-  Surface Loop(9) = {49, 51, 52, 50, 53};
-  Volume(9) = {9};
-EndIf
-
-If (tag_geom==2)
-  Cylinder(9) = {0,0,hh_L_3,0,0,thick_L_3,rx};
-EndIf
-
-If (tag_geom==3)
-  Torus(9) = {0,0,hh_L_3+ry-1*nm,rx,ry};
-  Dilate { { 0,0,hh_L_3 }, { 1, 1, rz/ry } } { Volume{9}; }
-  BooleanDifference{ Volume{9}; Delete; }{ Volume{4}; }
-EndIf
-
-If (tag_geom==4)
-  Sphere(9) = {0,0,hh_L_3,rx};
-  Dilate { { 0,0,hh_L_3 }, { 1, ry/rx, rz/rx } } { Volume{9}; }
-  BooleanDifference{ Volume{9}; Delete; }{ Volume{4}; }
-EndIf
-
-If (tag_geom==5)
-  Box(9) = {-rx/2,-ry/2, hh_L_2-rz, rx, ry, rz};
-  Rotate {{0, 0, 1}, {0,0,0}, Pi/4} {Volume{9};}
-EndIf
-
-If (tag_geom==7)
-  Box(9) = {-period_x/2,-ry/2, hh_L_3, period_x, ry, rz};
-EndIf
-
-
 Coherence;
-// // // // Physical Surface("ENDPML",770) = {69,37};
-
 Call SetPBCs;
-
 Physical Volume("PMLBOT"        ,1) = {1};
-Physical Volume("LAYER_L6_SUBS" ,2) = {2};
-Physical Volume("LAYER_L5"      ,3) = {3};
-Physical Volume("LAYER_L4"      ,4) = {4};
-Physical Volume("LAYER_L3"      ,5) = {10};
-Physical Volume("LAYER_L2"      ,6) = {6};
-Physical Volume("LAYER_L1_SUPER",7) = {7};
-Physical Volume("PMLTOP"        ,8) = {8};
-Physical Volume("SCAT"          ,9) = {9};
+Physical Volume("LAYER_L6_SUBS" ,2) = {};
+Physical Volume("LAYER_L5"      ,3) = {};
+Physical Volume("LAYER_L4"      ,4) = {};
+Physical Volume("LAYER_L3"      ,5) = {};
+Physical Volume("LAYER_L2"      ,6) = {};
+Physical Volume("LAYER_L1_SUPER",7) = {};
+Physical Volume("PMLTOP"        ,8) = {};
+Physical Volume("SCAT"          ,9) = {};
 
 Physical Surface("BXM" ,101 ) = masterX();
 Physical Surface("BXP" ,102 ) = slaveX();
 Physical Surface("BYM" ,201 ) = masterY();
 Physical Surface("BYP" ,202 ) = slaveY();
-Physical Surface("STOP",301 ) = Surface In BoundingBox{-period_x/2-e,-period_y/2-e, PML_top_hh-e,period_x/2+e, period_y/2+e, PML_top_hh+e};
-Physical Surface("SBOT",302 ) = Surface In BoundingBox{-period_x/2-e,-period_y/2-e, hh_L_6-e,period_x/2+e, period_y/2+e, hh_L_6+e};
-Physical Surface("SPMLTOP",401 ) = Surface In BoundingBox{-period_x/2-e,-period_y/2-e, PML_top_hh+PML_top-e,period_x/2+e, period_y/2+e, PML_top_hh+PML_top+e};
-Physical Surface("SPMLBOT",402 ) = Surface In BoundingBox{-period_x/2-e,-period_y/2-e, PML_bot_hh-e,period_x/2+e, period_y/2+e, PML_bot_hh+e};
-
-pts_PMLBOT()   = PointsOf{ Physical Volume{1}; };
-pts_LAYER_L6() = PointsOf{ Physical Volume{2}; };
-pts_LAYER_L5() = PointsOf{ Physical Volume{3}; };
-pts_LAYER_L4() = PointsOf{ Physical Volume{4}; };
-pts_LAYER_L3() = PointsOf{ Physical Volume{5}; };
-pts_LAYER_L2() = PointsOf{ Physical Volume{6}; };
-pts_LAYER_L1() = PointsOf{ Physical Volume{7}; };
-pts_PMLTOP()   = PointsOf{ Physical Volume{8}; };
-pts_ROD()      = PointsOf{ Physical Volume{9}; };
-
-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})/refine_mesh_L~{k};
-  list_lc(7-k) = lc_L~{k};
-EndFor
-list_lc(7) = lc_PML;
-list_lc(8) = lc_scat;
-
-// This helps meshing: The default behavior of the PointsOf techinque
-// overides points belonging to several domains
-If (tag_geom==7)
-  meshing_sequence() = {1,8,2,3,5,6,7,4,9};
-Else
-    meshing_sequence() = {1,8,2,3,4,6,7,5,9};
-EndIf
-
-// Start with coarsest
-Characteristic Length{:} = lc_PML;
-
-For k In {0:8}
-  which_dom = meshing_sequence(k);
-  Characteristic Length{PointsOf{Physical Volume{which_dom};}} = list_lc(which_dom-1);
-EndFor
-
-
-If (tag_geom==3) // Split torus weird otherwise
-  Mesh.Algorithm = 6;
-EndIf
-// Mesh.Optimimze3D=1;
-// Mesh.SurfaceEdges = 0;
+Physical Surface("STOP",301 )    = {};
+Physical Surface("SBOT",302 )    = {};
+Physical Surface("SPMLTOP",401 ) = {};
+Physical Surface("SPMLBOT",402 ) = {};
+Characteristic Length{:} = 1000*nm;
+Mesh.Algorithm3D =4;
 Mesh.VolumeEdges = 0;
 Mesh.ElementOrder = og;
diff --git a/DiffractionGratings/grating3D.pro b/DiffractionGratings/grating3D.pro
index 06f854976913d30ead3ff08de062394044a33e3f..dbf6bcc6b387832e17936a0048eeb10ebe7bbea0 100644
--- a/DiffractionGratings/grating3D.pro
+++ b/DiffractionGratings/grating3D.pro
@@ -416,6 +416,7 @@ PostOperation {
       // Print [ H1x , OnElementsOf Omega, File StrCat[myDir,"H1x.pos"]];
       // Print [ Etot , OnElementsOf Omega, File StrCat[myDir,"Etot.pos"]];
       Print [ u , OnElementsOf Omega, File StrCat[myDir,"u.pos"]];
+      Print [ E1 , OnElementsOf Omega, File StrCat[myDir,"E1.pos"]];
       // Print [ Htotx , OnElementsOf Omega, File StrCat[myDir,"Htotx.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 ];