{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 13: Fiber Optics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 1, Page number 13.19" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "critical angle is 78.5 degrees\n", "numerical aperture is 0.3\n", "acceptance angle is 17.4 degrees\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "n2=1.47; #refractive index of cladding\n", "n1=1.5; #refractive index of core\n", "\n", "#Calculation\n", "phi_c=math.asin(n2/n1); #critical angle(radian)\n", "phi_c=phi_c*180/math.pi; #critical angle(degrees)\n", "NA=math.sqrt(n1**2-n2**2); #numerical aperture\n", "phi_max=math.asin(NA); #acceptance angle(radian)\n", "phi_max=phi_max*180/math.pi; #acceptance angle(degrees)\n", "\n", "#Result\n", "print \"critical angle is\",round(phi_c,1),\"degrees\"\n", "print \"numerical aperture is\",round(NA,1)\n", "print \"acceptance angle is\",round(phi_max,1),\"degrees\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 2, Page number 13.19" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total number of guided modes is 490\n", "number of modes propagated inside fibre is 245\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "d=50*10**-6; #diameter(m)\n", "NA=0.2; #numerical aperture(m)\n", "lamda=1*10**-6; #wavelength(m)\n", "\n", "#Calculation\n", "N=4.9*(d*NA/lamda)**2; #total number of guided modes\n", "Nf=N/2; #number of modes propagated inside fibre\n", "\n", "#Result\n", "print \"total number of guided modes is\",int(N)\n", "print \"number of modes propagated inside fibre is\",int(Nf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 3, Page number 13.19" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total number of guided modes is 1\n", "it is a single mode propagation\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "d=5*10**-6; #diameter(m)\n", "n2=1.447; #refractive index of cladding\n", "n1=1.45; #refractive index of core\n", "lamda=1*10**-6; #wavelength(m)\n", "\n", "#Calculation\n", "NA=math.sqrt(n1**2-n2**2); #numerical aperture\n", "N=4.9*(d*NA/lamda)**2; #total number of guided modes\n", "\n", "#Result\n", "print \"total number of guided modes is\",int(N)\n", "print \"it is a single mode propagation\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 4, Page number 13.19" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "numerical aperture is 0.46\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "n1=1.46; #refractive index of core\n", "delta=0.05; #refractive index difference\n", "\n", "#Calculation\n", "NA=n1*math.sqrt(2*delta); #numerical aperture\n", "\n", "#Result\n", "print \"numerical aperture is\",round(NA,2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 5, Page number 13.20" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "V number is 94.72\n", "maximum number of modes is 4486\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "a=50;\n", "n2=1.5; #refractive index of cladding\n", "n1=1.53; #refractive index of core\n", "lamda0=1; #wavelength(micro m)\n", "\n", "#Calculation\n", "V_number=round(2*math.pi*a*math.sqrt(n1**2-n2**2)/lamda0,2); #V number\n", "n=V_number**2/2; #maximum number of modes\n", "\n", "#Result\n", "print \"V number is\",V_number\n", "print \"maximum number of modes is\",int(round(n))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 6, Page number 13.20" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total number of modes is 49178\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "a=100*10**-6;\n", "NA=0.3; #numerical aperture(m)\n", "lamda=850*10**-9; #wavelength(m)\n", "\n", "#Calculation\n", "V_number=round(2*math.pi**2*a**2*NA**2/lamda**2); #number of modes\n", "\n", "#Result\n", "print \"total number of modes is\",int(2*V_number)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 7, Page number 13.20" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cutoff wavelength is 1.315 micro m\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "a=25*10**-6;\n", "n1=1.48; #refractive index of core\n", "delta=0.01; #refractive index difference\n", "V=25; #Vnumber\n", "\n", "#Calculation\n", "lamda=2*math.pi*a*n1*math.sqrt(2*delta)/V; #cutoff wavelength(m)\n", "\n", "#Result\n", "print \"cutoff wavelength is\",round(lamda*10**6,3),\"micro m\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 8, Page number 13.20" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "maximum value of core radius is 9.95 micro m\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "V=2.405; #Vnumber\n", "lamda=1.3; #wavelength(micro m)\n", "NA=0.05; #numerical aperture(m)\n", "\n", "#Calculation\n", "amax=V*lamda/(2*math.pi*NA); #maximum value of core radius(micro m)\n", "\n", "#Result\n", "print \"maximum value of core radius is\",round(amax,2),\"micro m\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 9, Page number 13.21" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acceptance angle for meridional rays is 17.46 degrees\n", "acceptance angle for skew rays is 25.104 degrees\n", "answer for acceptance angle for skew rays given in the book is wrong\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "NA=0.3; #numerical aperture(m)\n", "gama=45*math.pi/180; #angle(radian)\n", "\n", "#Calculation\n", "thetaa=math.asin(NA); #acceptance angle for meridional rays(radian)\n", "thetaa=thetaa*180/math.pi; #acceptance angle for meridional rays(degrees)\n", "thetaas=math.asin(NA/math.cos(gama)); #acceptance angle for skew rays(radian)\n", "thetaas=thetaas*180/math.pi; #acceptance angle for skew rays(degrees)\n", "\n", "#Result\n", "print \"acceptance angle for meridional rays is\",round(thetaa,2),\"degrees\"\n", "print \"acceptance angle for skew rays is\",round(thetaas,3),\"degrees\"\n", "print \"answer for acceptance angle for skew rays given in the book is wrong\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 10, Page number 13.21" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "numerical aperture is 0.303\n", "acceptance angle is 17.633 degrees\n", "answer for angle given in the book varies due to rounding off errors\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "delta=0.0196; #relative refractive index difference\n", "n1=1.53; #refractive index of core\n", "\n", "#Calculation\n", "NA=n1*math.sqrt(2*delta); #numerical aperture\n", "theta=math.asin(NA); #acceptance angle(radian)\n", "theta=theta*180/math.pi; #acceptance angle(degrees)\n", "\n", "#Result\n", "print \"numerical aperture is\",round(NA,3)\n", "print \"acceptance angle is\",round(theta,3),\"degrees\"\n", "print \"answer for angle given in the book varies due to rounding off errors\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 11, Page number 13.21" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "core radius is 1.548 micro m\n", "answer given in the book is wrong\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "n2=1.465; #refractive index of cladding\n", "n1=1.480; #refractive index of core\n", "lamda=850*10**-9; #wavelength(m)\n", "\n", "#Calculation\n", "delta=(n1**2-n2**2)/(2*n1**2); #relative refractive index difference\n", "a=2.405*lamda*10**6/(2*math.pi*n1*math.sqrt(2*delta)); #core radius(micro m)\n", "\n", "#Result\n", "print \"core radius is\",round(a,3),\"micro m\"\n", "print \"answer given in the book is wrong\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 12, Page number 13.21" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total number of reflections per metre is 2321\n", "total distance travelled by light is 1.0067 m\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "n2=1.49; #refractive index of cladding\n", "n1=1.5; #refractive index of core\n", "a=25; #core radius(micro m)\n", "\n", "#Calculation\n", "phic=math.asin(n2/n1); #angle(degrees)\n", "l=2*a*math.tan(phic); #fibre length covered in 1 reflection(micro m)\n", "n=10**6/l; #total number of reflections per metre\n", "d=1/math.sin(phic); #total distance travelled by light(m)\n", "\n", "#Result\n", "print \"total number of reflections per metre is\",int(n)\n", "print \"total distance travelled by light is\",round(d,4),\"m\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 13, Page number 13.22" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total number of modes is 309\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "alpha=1.85; #index profile\n", "a=25; #core radius(micro m)\n", "NA=0.21; #numerical aperture\n", "lamda=1.3; #wavelength(micro m)\n", "\n", "#Calculation\n", "n=(alpha*2*math.pi**2*a**2*NA**2)/(lamda**2*(alpha+2)); #number of modes\n", "N=2*n; #total number of modes\n", "\n", "#Result\n", "print \"total number of modes is\",int(N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 14, Page number 13.22" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "signal attenuation per unit length is 1.7 dB km-1\n", "overall signal attenuation is 17 dB\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "L=10; #transmission distance(km)\n", "Pi=100; #optical power(micro W)\n", "Po=2; #optical power output(micro W)\n", "\n", "#Calculation\n", "sa=round(10*math.log10(Pi/Po)/L,1); #signal attenuation per unit length(dB km-1)\n", "osa=sa*L; #overall signal attenuation(dB)\n", "\n", "#Result\n", "print \"signal attenuation per unit length is\",sa,\"dB km-1\"\n", "print \"overall signal attenuation is\",int(osa),\"dB\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example number 15, Page number 13.23" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dispersion is 1343.3 ns\n", "bandwidth length product is 7.44 *10**6 Hz-km\n", "answer for bandwidth given in the book is wrong\n" ] } ], "source": [ "#importing modules\n", "import math\n", "from __future__ import division\n", "\n", "#Variable declaration\n", "L=10; #transmission distance(km)\n", "n1=1.55; #refractive index of core\n", "delta=0.026; #relative refractive index difference\n", "C=3*10**5; \n", "\n", "#Calculation\n", "deltaT=L*n1*delta/C; #dispersion(s)\n", "blp=L/deltaT; #bandwidth length product(Hz-km)\n", "\n", "#Result\n", "print \"dispersion is\",round(deltaT*10**9,1),\"ns\"\n", "print \"bandwidth length product is\",round(blp/10**6,2),\"*10**6 Hz-km\"\n", "print \"answer for bandwidth given in the book is wrong\"" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }