From 7c304547a599d83576f01903d88dcfb86da9c70b Mon Sep 17 00:00:00 2001
From: Guillaume Demesy <guillaume.demesy@fresnel.fr>
Date: Tue, 26 Nov 2019 07:00:13 +0100
Subject: [PATCH] new (hidden?) FlagLinkFacets

---
 DiffractionGratings/grating3D.geo              |  1 -
 DiffractionGratings/grating3D.pro              | 18 +++++++++++-------
 .../grating3D_data_2Dlamellar.geo              |  1 +
 DiffractionGratings/grating3D_data_bisin.geo   |  1 +
 DiffractionGratings/grating3D_data_checker.geo |  1 +
 .../grating3D_data_halfellipsoid.geo           |  1 +
 DiffractionGratings/grating3D_data_hole.geo    |  1 +
 DiffractionGratings/grating3D_data_pyramid.geo |  1 +
 .../grating3D_data_solarcell.geo               |  2 ++
 DiffractionGratings/grating3D_data_torus.geo   |  1 +
 10 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/DiffractionGratings/grating3D.geo b/DiffractionGratings/grating3D.geo
index 850abe4..b596ca1 100644
--- a/DiffractionGratings/grating3D.geo
+++ b/DiffractionGratings/grating3D.geo
@@ -221,7 +221,6 @@ EndFor
 If (tag_geom==3) // Split torus weird otherwise
   Mesh.Algorithm = 6;
 EndIf
-Mesh.Optimimze=1;
 // Mesh.SurfaceEdges = 0;
 Mesh.VolumeEdges = 0;
 Mesh.ElementOrder = og;
diff --git a/DiffractionGratings/grating3D.pro b/DiffractionGratings/grating3D.pro
index 8af300f..5c2d3b9 100644
--- a/DiffractionGratings/grating3D.pro
+++ b/DiffractionGratings/grating3D.pro
@@ -31,10 +31,14 @@ Group {
 
   
 	SurfDirichlet  = Region[{401,402}];
-  SurfBloch      = Region[{}];
-  SurfExcludeFacets = Region[501];
-  // SurfBloch      = Region[{SurfBlochXm,SurfBlochXp,SurfBlochYm,SurfBlochYp}];
+  SurfBloch      = Region[{SurfBlochXm,SurfBlochXp,SurfBlochYm,SurfBlochYp}];
 
+  If (FlagLinkFacets==1)
+    SurfExcludeFacets  = Region[{}];
+  Else
+    SurfExcludeFacets  = Region[{SurfBloch}];
+  EndIf
+  
   L_1 = Region[{L_1_temp,SurfIntTop}];
   L_6 = Region[{L_6_temp,SurfIntBot}];
 
@@ -281,17 +285,17 @@ FunctionSpace {
       { NameOfCoef un2; EntityType EdgesOf ; NameOfConstraint BlochX; }
       { NameOfCoef un2; EntityType EdgesOf ; NameOfConstraint BlochY; }
       { NameOfCoef un2; EntityType EdgesOf ; NameOfConstraint Dirichlet; }
-      If(oi==2)
+      If (FlagLinkFacets==1)
         { NameOfCoef un3; EntityType FacetsOf ; NameOfConstraint BlochX; }
         { NameOfCoef un3; EntityType FacetsOf ; NameOfConstraint BlochY; }
-        { NameOfCoef un3; EntityType FacetsOf ; NameOfConstraint Dirichlet; }
         { NameOfCoef un4; EntityType FacetsOf ; NameOfConstraint BlochX; }
         { NameOfCoef un4; EntityType FacetsOf ; NameOfConstraint BlochY; }
-        { NameOfCoef un4; EntityType FacetsOf ; NameOfConstraint Dirichlet; }
         { NameOfCoef un5; EntityType EdgesOf ; NameOfConstraint BlochX; }
         { NameOfCoef un5; EntityType EdgesOf ; NameOfConstraint BlochY; }
-        { NameOfCoef un5; EntityType EdgesOf ; NameOfConstraint Dirichlet; }
       EndIf
+      { NameOfCoef un3; EntityType FacetsOf ; NameOfConstraint Dirichlet; }
+      { NameOfCoef un4; EntityType FacetsOf ; NameOfConstraint Dirichlet; }
+      { NameOfCoef un5; EntityType EdgesOf ; NameOfConstraint Dirichlet; }
     }
   }
 }
diff --git a/DiffractionGratings/grating3D_data_2Dlamellar.geo b/DiffractionGratings/grating3D_data_2Dlamellar.geo
index 396f680..dd11804 100644
--- a/DiffractionGratings/grating3D_data_2Dlamellar.geo
+++ b/DiffractionGratings/grating3D_data_2Dlamellar.geo
@@ -59,6 +59,7 @@ DefineConstant[
     refine_mesh_L_4= {0.3       , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]},
     refine_mesh_L_5= {0.3       , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]},
     refine_mesh_L_6= {0.3       , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]},
+    FlagLinkFacets = {0      , Name StrCat[pp5,"/8FlagLinkFacets? [-]"], Choices {0="1",1="2"}},
     
     InterpSampling     = { 30   , Name StrCat[pp6,"/0Interpolation grid step [nm]"]},
     Flag_interp_cubic  = { 0    , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },
diff --git a/DiffractionGratings/grating3D_data_bisin.geo b/DiffractionGratings/grating3D_data_bisin.geo
index 46c1221..b414a93 100644
--- a/DiffractionGratings/grating3D_data_bisin.geo
+++ b/DiffractionGratings/grating3D_data_bisin.geo
@@ -59,6 +59,7 @@ DefineConstant[
     refine_mesh_L_4= {1      , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]},
     refine_mesh_L_5= {1      , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]},
     refine_mesh_L_6= {1      , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]},
+    FlagLinkFacets = {0      , Name StrCat[pp5,"/8FlagLinkFacets? [-]"], Choices {0="1",1="2"}},
     
     InterpSampling     = { 30   , Name StrCat[pp6,"/0Interpolation grid step [nm]"]},
     Flag_interp_cubic  = { 1    , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },
diff --git a/DiffractionGratings/grating3D_data_checker.geo b/DiffractionGratings/grating3D_data_checker.geo
index 930636e..c670907 100644
--- a/DiffractionGratings/grating3D_data_checker.geo
+++ b/DiffractionGratings/grating3D_data_checker.geo
@@ -59,6 +59,7 @@ DefineConstant[
     refine_mesh_L_4= {1      , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]},
     refine_mesh_L_5= {1      , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]},
     refine_mesh_L_6= {1      , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]},
+    FlagLinkFacets = {0      , Name StrCat[pp5,"/8FlagLinkFacets? [-]"], Choices {0="1",1="2"}},
     
     InterpSampling     = { 30   , Name StrCat[pp6,"/0Interpolation grid step [nm]"]},
     Flag_interp_cubic  = { 1    , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },
diff --git a/DiffractionGratings/grating3D_data_halfellipsoid.geo b/DiffractionGratings/grating3D_data_halfellipsoid.geo
index a2da196..98307e1 100644
--- a/DiffractionGratings/grating3D_data_halfellipsoid.geo
+++ b/DiffractionGratings/grating3D_data_halfellipsoid.geo
@@ -59,6 +59,7 @@ DefineConstant[
     refine_mesh_L_4= {1     , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]},
     refine_mesh_L_5= {1     , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]},
     refine_mesh_L_6= {1     , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]},
+    FlagLinkFacets = {0      , Name StrCat[pp5,"/8FlagLinkFacets? [-]"], Choices {0="1",1="2"}},
         
     InterpSampling     = { 10   , Name StrCat[pp6,"/0Interpolation grid step [nm]"]},
     Flag_interp_cubic  = { 1    , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },
diff --git a/DiffractionGratings/grating3D_data_hole.geo b/DiffractionGratings/grating3D_data_hole.geo
index cbc63f3..3b42b6a 100644
--- a/DiffractionGratings/grating3D_data_hole.geo
+++ b/DiffractionGratings/grating3D_data_hole.geo
@@ -59,6 +59,7 @@ DefineConstant[
     refine_mesh_L_4= {1      , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]},
     refine_mesh_L_5= {1      , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]},
     refine_mesh_L_6= {1      , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]},
+    FlagLinkFacets = {0      , Name StrCat[pp5,"/8FlagLinkFacets? [-]"], Choices {0="1",1="2"}},
     
     InterpSampling     = { 30   , Name StrCat[pp6,"/0Interpolation grid step [nm]"]},
     Flag_interp_cubic  = { 1    , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },
diff --git a/DiffractionGratings/grating3D_data_pyramid.geo b/DiffractionGratings/grating3D_data_pyramid.geo
index 7a05d49..bab8d7f 100644
--- a/DiffractionGratings/grating3D_data_pyramid.geo
+++ b/DiffractionGratings/grating3D_data_pyramid.geo
@@ -59,6 +59,7 @@ DefineConstant[
     refine_mesh_L_4= {1     , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]},
     refine_mesh_L_5= {1     , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]},
     refine_mesh_L_6= {1     , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]},
+    FlagLinkFacets = {0      , Name StrCat[pp5,"/8FlagLinkFacets? [-]"], Choices {0="1",1="2"}},
 
     InterpSampling     = { 50   , Name StrCat[pp6,"/0Interpolation grid step [nm]"]},
     Flag_interp_cubic  = { 1    , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },
diff --git a/DiffractionGratings/grating3D_data_solarcell.geo b/DiffractionGratings/grating3D_data_solarcell.geo
index 86ec842..6b36721 100644
--- a/DiffractionGratings/grating3D_data_solarcell.geo
+++ b/DiffractionGratings/grating3D_data_solarcell.geo
@@ -61,6 +61,8 @@ DefineConstant[
     refine_mesh_L_4= {2      , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]},
     refine_mesh_L_5= {2      , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]},
     refine_mesh_L_6= {2      , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]},
+    FlagLinkFacets = {0      , Name StrCat[pp5,"/8FlagLinkFacets? [-]"], Choices {0="1",1="2"}},
+
     
     InterpSampling     = { 20   , Name StrCat[pp6,"/0Interpolation grid step [nm]"]},
     Flag_interp_cubic  = { 1    , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },
diff --git a/DiffractionGratings/grating3D_data_torus.geo b/DiffractionGratings/grating3D_data_torus.geo
index 9f8bca3..509ce89 100644
--- a/DiffractionGratings/grating3D_data_torus.geo
+++ b/DiffractionGratings/grating3D_data_torus.geo
@@ -59,6 +59,7 @@ DefineConstant[
     refine_mesh_L_4= {1       , Name StrCat[pp5,"/7refine layers/4refine mesh layer 4 [-]"]},
     refine_mesh_L_5= {1       , Name StrCat[pp5,"/7refine layers/5refine mesh layer 5 [-]"]},
     refine_mesh_L_6= {1       , Name StrCat[pp5,"/7refine layers/6refine mesh layer 6 [-]"]},
+    FlagLinkFacets = {1      , Name StrCat[pp5,"/8FlagLinkFacets? [-]"], Choices {0,1}},
     
     InterpSampling     = {15   , Name StrCat[pp6,"/0Interpolation grid step [nm]"]},
     Flag_interp_cubic  = { 1    , Name StrCat[pp6,"/1Interpolate on cubic grid?"], Choices {0,1} },
-- 
GitLab