-
Guillaume Demesy authoredGuillaume Demesy authored
scattererTmatrix.geo 2.16 KiB
///////////////////////////////
// Author : Guillaume Demesy //
// scattererTmatrix.geo //
///////////////////////////////
Include "scattererTmatrix_data.geo";
SetFactory("OpenCASCADE");
In_n = Sqrt[Fabs[epsr_In_re]];
Out_n = Sqrt[Fabs[epsr_Out_re]];
paramaille_pml = paramaille/1.1;
Out_lc = lambda0/(paramaille*Out_n);
PML_lc = lambda0/(paramaille_pml*Out_n);
In_lc = lambda0/(paramaille*In_n*refine_scat);
CenterScat_lc = lambda0/(paramaille*In_n);
If(flag_shape==ELL)
Sphere (1) = { 0,0,0,ell_rx};
Dilate { { 0,0,0 }, { 1, ell_ry/ell_rx, ell_rz/ell_rx } } { Volume{1}; }
EndIf
If(flag_shape==PARALL)
Box (1) = {-par_ax/2,-par_ay/2,-par_az/2,par_ax,par_ay,par_az};
EndIf
If(flag_shape==CYL)
Cylinder (1) = {0,0,-cyl_h/2,0,0,cyl_h,cyl_rx};
Dilate { { 0,0,0 }, { 1 , cyl_ry/cyl_rx , 1} } { Volume{1}; }
EndIf
If (flag_shape==CONE)
Cone (1) = {0,0,-cone_h/2,0,0,cone_h,cone_rx,0};
Dilate { { 0,0,0 }, { 1 , cone_ry/cone_rx , 1} } { Volume{1}; }
EndIf
If (flag_shape==TOR)
U (1) = {0,0,0,tor_r1,tor_r2x,tor_angle*Pi/180};
Dilate { { 0,0,0 }, { 1 , 1 , tor_r2z/tor_r2x} } { Volume{1}; }
EndIf
Sphere (2) = { 0,0,0,r_pml_in};
Sphere (3) = { 0,0,0,r_pml_out};
Coherence;
Physical Volume("Scatterer" ,1) = {1};
Physical Volume("Background",2) = {2};
Physical Volume("PML" ,3) = {3};
If(flag_shape==ELL)
Physical Surface("SurfInt",10) = {2};
Physical Surface("SurfPML",20) = {3};
EndIf
If(flag_shape==PARALL)
Physical Surface("SurfInt",10) = {7};
Physical Surface("SurfPML",20) = {8};
EndIf
If(flag_shape==CYL)
Physical Surface("SurfInt",10) = {4};
Physical Surface("SurfPML",20) = {5};
EndIf
If(flag_shape==CONE)
Physical Surface("SurfInt",10) = {3};
Physical Surface("SurfPML",20) = {4};
EndIf
If(flag_shape==TOR)
Physical Surface("SurfInt",10) = {4};
Physical Surface("SurfPML",20) = {5};
EndIf
Characteristic Length{PointsOf{Physical Volume{3};}} = PML_lc;
Characteristic Length{PointsOf{Physical Volume{2};}} = Out_lc;
Characteristic Length{PointsOf{Physical Volume{1};}} = In_lc;
Solver.AutoMesh=2;
Geometry.Points = 1;
Mesh.VolumeEdges = 0;
Mesh.ElementOrder = 1;
// Mesh.ElementOrder = 2;
// Mesh.HighOrderOptimize = 1;