/* * METRIC-Application: * A circular single mode step-index fiber */ #include #include #include #include"metric.h" #define Pnb 1.455 // cladding refractive index #define Png 1.5 // core refractive index #define PR 1.5 // core radius /mum #define Wavel 1.55 // vacuum wavelength #define DW 5.0 // display window, x&y-extension [-DW, DW] /* ------------------------------------------------------------------------ */ /* radial dielectric profile, interface positions relative to the core radius */ Waveguide fibdef() { Waveguide fib(0); fib.hx(0) = 0.0; fib.n(1) = Pnb; fib.n(0) = Png; fib.lambda = Wavel; return fib; } /* ------------------------------------------------------------------------ */ /* fiber mode analysis */ int main() { FIModeArray fim; Waveguide fib = fibdef(); fimsolve(fib, PR, 0.0, 0.0, 0, 3, fim, 0); // for(int j=0; j<=fim.num-1; ++j) fim(j).reverse(); for(int j=0; j<=fim.num-1; ++j) fim(j).discretize(0.0, PR+DW, 500); Rect disp(-DW, -DW, DW, DW); for(int j=0; j<=fim.num-1; ++j) { fprintf(stderr, "\n[%d] %s: beta = %g, neff = %g, B = %g\n", j, fim(j).ids, fim(j).beta, fim(j).neff, fim(j).npcB); fim(j).plot(ER, MOD, disp, 350, 350, dig10(j), dig1(j)); fim(j).plot(ET, MOD, disp, 350, 350, dig10(j), dig1(j)); fim(j).plot(EZ, MOD, disp, 350, 350, dig10(j), dig1(j)); fim(j).viewer(disp, 350, 350, dig10(j), dig1(j)); } fprintf(stderr, "\nOk.\n"); return 0; }