/* * METRIC-Application: * Plane wave reflection from a dielectric slab, parameter scans */ #include #include #include #include"metric.h" #define Pol TE // light polarization #define SPnb 1.0 // backgound refractive index #define SPng 2.0 // refractive index of high index region double SPt = 0.3; // slab thickness double Wavel = 1.0; // vacuum wavelength double Theta = 45.0; // incidence angle, in degrees #define Pmin 0.01 // parameter scan: minimum, #define Pmax 2.01 // maximum, #define NumP 200 // number of parameter values /* layer stack definition */ Waveguide stdef() { Waveguide g(1); g.n(0) = SPnb; g.n(1) = SPng; g.n(2) = SPnb; g.hx(0) = 0.0; g.hx(1) = SPt; g.lambda = Wavel; return g; } /* calculate the plane wave reflection & transmission, parameter scan */ int main() { for(int pi=0; pi<=NumP; ++pi) { double pv = Pmin+((double) pi)/((double) NumP)*(Pmax-Pmin); SPt = pv; fprintf(stderr, "\n[%d]: t = %g\n", pi, SPt); ModeArray fld; Cvector amp(2); double in, ref, trans; // define the layer stack Waveguide st = stdef(); // solve the problem in = 1.0; mlref(st, Pol, Theta*PI/180.0, in, ref, trans, fld, amp); fprintf(stderr, "I = %g\n", in); fprintf(stderr, "R = %g\n", ref); fprintf(stderr, "T = %g\n", trans); apptoxyf("trans", pv, trans); apptoxyf("ref", pv, ref); } fprintf(stderr, "\nOk.\n"); return 0; }