/* * METRIC-Application: * A circular step-index fiber, one tube-shaped guiding layer */ #include #include #include #include"metric.h" #define Pnb 1.5 // background refractive index #define Png 2.0 // guiding layer, refractive index #define Pd 0.4 // guiding layer, thickness /mum #define PR 2.0 // tube radius, outer rim /mum #define Wavel 1.3 // vacuum wavelength #define DW 4.0 // display window, x&y-extension [-DW, DW] /* ------------------------------------------------------------------------ */ /* radial dielectric profile, interface positions relative to the core radius */ Waveguide twgdef() { Waveguide twg(1); twg.hx(1) = 0.0; twg.hx(0) = -Pd; twg.n(2) = Pnb; twg.n(1) = Png; twg.n(0) = Pnb; twg.lambda = Wavel; return twg; } /* ------------------------------------------------------------------------ */ /* fiber mode analysis */ int main() { FIModeArray fim; Waveguide twg = twgdef(); fimsolve(twg, PR, 0.0, 0.0, 0, 15, 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, REP, disp, 350, 350, dig10(j), dig1(j)); // fim(j).plot(ER, MOD, disp, 350, 350, dig10(j), dig1(j)); // fim(j).plot(ET, REP, disp, 350, 350, dig10(j), dig1(j)); // fim(j).plot(ET, MOD, disp, 350, 350, dig10(j), dig1(j)); fim(j).viewer(disp, 350, 350, dig10(j), dig1(j)); } fprintf(stderr, "\nOk.\n"); return 0; }