Skip to content
Snippets Groups Projects
Commit 84d51846 authored by Guillaume Demesy's avatar Guillaume Demesy
Browse files

skew geometry

parent 90d9dd89
No related branches found
No related tags found
No related merge requests found
...@@ -7,13 +7,26 @@ ...@@ -7,13 +7,26 @@
Include StrCat["grating3D_data_",test_case,".geo"]; Include StrCat["grating3D_data_",test_case,".geo"];
SetFactory("OpenCASCADE"); SetFactory("OpenCASCADE");
e = 5*nm;
E = 10*(period_x+period_x/2);
Macro SetPBCs Macro SetPBCs
e = 5*nm; masterX() = Surface In BoundingBox{.5*(-period_x-dys)-e,-dyc/2-e, PML_bot_hh-e,(-period_x+dys)/2+e, dyc/2+e, PML_top_hh+PML_top+e};
masterX() = Surface In BoundingBox{-period_x/2-e,-period_y/2-e, PML_bot_hh-e,-period_x/2+e, period_y/2+e, PML_top_hh+PML_top+e}; slaveX() = Surface In BoundingBox{.5*( period_x-dys)-e,-dyc/2-e, PML_bot_hh-e,( period_x+dys)/2+e, dyc/2+e, PML_top_hh+PML_top+e};
slaveX() = Surface In BoundingBox{ period_x/2-e,-period_y/2-e, PML_bot_hh-e, period_x/2+e, period_y/2+e, PML_top_hh+PML_top+e}; masterY() = Surface In BoundingBox{.5*(-period_x-dys)-e,-dyc/2-e, PML_bot_hh-e,( period_x+dys)/2+e,-dyc/2+e, PML_top_hh+PML_top+e};
masterY() = Surface In BoundingBox{-period_x/2-e,-period_y/2-e, PML_bot_hh-e, period_x/2+e,-period_y/2+e, PML_top_hh+PML_top+e}; slaveY() = Surface In BoundingBox{.5*(-period_x-dys)-e, dyc/2-e, PML_bot_hh-e,( period_x+dys)/2+e, dyc/2+e, PML_top_hh+PML_top+e};
slaveY() = Surface In BoundingBox{-period_x/2-e, period_y/2-e, PML_bot_hh-e, period_x/2+e, period_y/2+e, PML_top_hh+PML_top+e}; // For k In {1:#masterX()-1}
// Printf("masterX surf %g",masterX(k));
// EndFor
// For k In {1:#masterY()-1}
// Printf("masterY surf %g",masterY(k));
// EndFor
// For k In {1:#slaveX()-1}
// Printf("slaveX surf %g",slaveX(k));
// EndFor
// For k In {1:#slaveY()-1}
// Printf("slaveY surf %g",slaveY(k));
// EndFor
If (tag_geom==6) // bi-sin : BoundingBox does not catch BSpline Surfaces? If (tag_geom==6) // bi-sin : BoundingBox does not catch BSpline Surfaces?
masterX()+={48,52}; masterX()+={48,52};
slaveX()+={50,54}; slaveX()+={50,54};
...@@ -21,7 +34,7 @@ Macro SetPBCs ...@@ -21,7 +34,7 @@ Macro SetPBCs
slaveY()+={49,53}; slaveY()+={49,53};
EndIf EndIf
Periodic Surface{slaveX()} = {masterX()} Translate{period_x, 0, 0}; Periodic Surface{slaveX()} = {masterX()} Translate{period_x, 0, 0};
Periodic Surface{slaveY()} = {masterY()} Translate{ 0, period_y, 0}; Periodic Surface{slaveY()} = {masterY()} Translate{ dys, dyc, 0};
Return Return
If (tag_geom==6) If (tag_geom==6)
...@@ -99,16 +112,38 @@ If (tag_geom==6) ...@@ -99,16 +112,38 @@ If (tag_geom==6)
Volume(10) = {2}; Volume(10) = {2};
EndIf EndIf
Box(1) = {-period_x/2,-period_y/2, PML_bot_hh,period_x,period_y, PML_bot }; dyc = period_y*Cos(xsi);
Box(2) = {-period_x/2,-period_y/2, hh_L_6,period_x,period_y, thick_L_6}; dys = period_y*Sin(xsi);
Box(3) = {-period_x/2,-period_y/2, hh_L_5,period_x,period_y, thick_L_5}; hh_L_7 = PML_bot_hh;
Box(4) = {-period_x/2,-period_y/2, hh_L_4,period_x,period_y, thick_L_4}; hh_L_0 = PML_top_hh;
thick_L_7 = PML_bot;
thick_L_0 = PML_top;
For k In {7:0:-1}
If (tag_geom!=6) If (tag_geom!=6)
Box(5) = {-period_x/2,-period_y/2, hh_L_3,period_x,period_y, thick_L_3}; p=newp; l=newl; ll=newll; s=news;
Point(p) = {0.5*(-period_x-dys), -dyc/2, hh_L~{k}};
Point(p+1) = {0.5*( period_x-dys), -dyc/2, hh_L~{k}};
Point(p+2) = {0.5*( period_x+dys), dyc/2, hh_L~{k}};
Point(p+3) = {0.5*(-period_x+dys), dyc/2, hh_L~{k}};
Line(l)={p,p+1};Line(l+1)={p+1,p+2};Line(l+2)={p+2,p+3};Line(l+3)={p+3,p};
Curve Loop(ll) = {l,l+1,l+2,l+3};
Surface(s) = {ll};
Extrude {0, 0, thick_L~{k}} {Surface{s};}
Else
v=newv;
EndIf EndIf
Box(6) = {-period_x/2,-period_y/2, hh_L_2,period_x,period_y, thick_L_2}; EndFor
Box(7) = {-period_x/2,-period_y/2, hh_L_1,period_x,period_y, thick_L_1}; // Box(1) = {-period_x/2,-period_y/2, PML_bot_hh,period_x,period_y, PML_bot };
Box(8) = {-period_x/2,-period_y/2, PML_top_hh,period_x,period_y, PML_top }; // 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) If (tag_geom==1)
p=newp; p=newp;
...@@ -158,7 +193,7 @@ EndIf ...@@ -158,7 +193,7 @@ EndIf
Coherence; Coherence;
// // // // Physical Surface("ENDPML",770) = {69,37}; // // // Physical Surface("ENDPML",770) = {69,37};
Call SetPBCs; Call SetPBCs;
...@@ -176,10 +211,10 @@ Physical Surface("BXM" ,101 ) = masterX(); ...@@ -176,10 +211,10 @@ Physical Surface("BXM" ,101 ) = masterX();
Physical Surface("BXP" ,102 ) = slaveX(); Physical Surface("BXP" ,102 ) = slaveX();
Physical Surface("BYM" ,201 ) = masterY(); Physical Surface("BYM" ,201 ) = masterY();
Physical Surface("BYP" ,202 ) = slaveY(); 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("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("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("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}; 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_PMLBOT() = PointsOf{ Physical Volume{1}; };
pts_LAYER_L6() = PointsOf{ Physical Volume{2}; }; pts_LAYER_L6() = PointsOf{ Physical Volume{2}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment