From 1005f723031f6bcfa4f00d4a8beadc71ee24a040 Mon Sep 17 00:00:00 2001
From: Guillaume Demesy <guillaume.demesy@fresnel.fr>
Date: Wed, 20 Nov 2019 11:32:04 +0100
Subject: [PATCH] correct bug for metallic substrates

---
 DiffractionGratings/grating3D.pro | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/DiffractionGratings/grating3D.pro b/DiffractionGratings/grating3D.pro
index 1d1d19e..f82f27f 100644
--- a/DiffractionGratings/grating3D.pro
+++ b/DiffractionGratings/grating3D.pro
@@ -147,12 +147,12 @@ Function{
            -Sqrt[k0^2*epsr2[]-CompX[k1[]]^2-CompY[k1[]]^2]
         ];
   k1r[]  = Vector[CompX[k1[]], CompY[k1[]], -CompZ[k1[]]];
-  k1s[]  = (Abs[theta0]>1e-12) ?  k1[]/\zhat[] / Norm[ k1[]/\zhat[]] : Vector[-Sin[phi0], Cos[phi0], 0.] ;
-  k2s[]  = (Abs[theta0]>1e-12) ?  k2[]/\zhat[] / Norm[ k2[]/\zhat[]] : Vector[-Sin[phi0], Cos[phi0], 0.] ;
-  k1rs[] = (Abs[theta0]>1e-12) ? k1r[]/\zhat[] / Norm[k1r[]/\zhat[]] : Vector[-Sin[phi0], Cos[phi0], 0.] ;
-  k1p[]  = (Abs[theta0]>1e-12) ?  k1[]/\k1s[]  / Norm[ k1[]/\k1s[]]  : Vector[ Cos[phi0], Sin[phi0], 0.] ;
-  k2p[]  = (Abs[theta0]>1e-12) ?  k2[]/\k2s[]  / Norm[ k2[]/\k2s[]]  : Vector[ Cos[phi0], Sin[phi0], 0.] ;
-  k1rp[] = (Abs[theta0]>1e-12) ? k1r[]/\k1rs[] / Norm[k1r[]/\k1rs[]] : Vector[-Cos[phi0],-Sin[phi0], 0.] ;
+  k1s[]  = (Abs[theta0]>1e-12) ?      k1[]/\zhat[] / Norm[    k1[]/\zhat[]] : Vector[-Sin[phi0], Cos[phi0], 0.] ;
+  k2s[]  = (Abs[theta0]>1e-12) ?  Re[k2[]]/\zhat[] / Norm[ Re[k2[]]/\zhat[]] : Vector[-Sin[phi0], Cos[phi0], 0.] ;
+  k1rs[] = (Abs[theta0]>1e-12) ?     k1r[]/\zhat[] / Norm[    k1r[]/\zhat[]] : Vector[-Sin[phi0], Cos[phi0], 0.] ;
+  k1p[]  = (Abs[theta0]>1e-12) ?      k1[]/\k1s[]  / Norm[     k1[]/\k1s[]]  : Vector[ Cos[phi0], Sin[phi0], 0.] ;
+  k2p[]  = (Abs[theta0]>1e-12) ?  Re[k2[]]/\k2s[]  / Norm[ Re[k2[]]/\k2s[]]  : Vector[ Cos[phi0], Sin[phi0], 0.] ;
+  k1rp[] = (Abs[theta0]>1e-12) ?     k1r[]/\k1rs[] / Norm[    k1r[]/\k1rs[]] : Vector[-Cos[phi0],-Sin[phi0], 0.] ;
 
   rs[] = (CompZ[k1[]]-CompZ[k2[]])/(CompZ[k1[]]+CompZ[k2[]]);
   ts[] =           2.*CompZ[k1[]] /(CompZ[k1[]]+CompZ[k2[]]);
-- 
GitLab