From 31bd18d53c1cfe5ccbfb1d34b29c78dd06641884 Mon Sep 17 00:00:00 2001
From: Guillaume Demesy <guillaume.demesy@fresnel.fr>
Date: Fri, 7 May 2021 14:26:52 +0000
Subject: [PATCH] standalone/fast T-matrix computation (no python)

---
 .../scattererTmatrix.geo                      | 76 +++++++++++++++++++
 1 file changed, 76 insertions(+)
 create mode 100644 ElectromagneticScattering/scattererTmatrix.geo

diff --git a/ElectromagneticScattering/scattererTmatrix.geo b/ElectromagneticScattering/scattererTmatrix.geo
new file mode 100644
index 0000000..01c68c9
--- /dev/null
+++ b/ElectromagneticScattering/scattererTmatrix.geo
@@ -0,0 +1,76 @@
+///////////////////////////////
+// Author : Guillaume Demesy //
+// scattererTmatrix.geo      //
+///////////////////////////////
+
+Include "scattererTmatrix_data.geo";
+SetFactory("OpenCASCADE");
+
+In_n =  Sqrt[Fabs[epsr_In_re]];
+  
+paramaille_pml = paramaille/1.1;
+
+Out_lc        = lambda_bg/paramaille;
+PML_lc        = lambda_bg/paramaille_pml;
+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)
+  Torus (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 = 2;
+Mesh.HighOrderOptimize = 1;
-- 
GitLab