summaryrefslogtreecommitdiff
path: root/Optical_Communication_/Chapter_4.ipynb
diff options
context:
space:
mode:
authorJovina Dsouza2014-07-07 16:34:28 +0530
committerJovina Dsouza2014-07-07 16:34:28 +0530
commitfffcc90da91b66ee607066d410b57f34024bd1de (patch)
tree7b8011d61013305e0bf7794a275706abd1fdb0d3 /Optical_Communication_/Chapter_4.ipynb
parent299711403e92ffa94a643fbd960c6f879639302c (diff)
downloadPython-Textbook-Companions-fffcc90da91b66ee607066d410b57f34024bd1de.tar.gz
Python-Textbook-Companions-fffcc90da91b66ee607066d410b57f34024bd1de.tar.bz2
Python-Textbook-Companions-fffcc90da91b66ee607066d410b57f34024bd1de.zip
adding book
Diffstat (limited to 'Optical_Communication_/Chapter_4.ipynb')
-rwxr-xr-xOptical_Communication_/Chapter_4.ipynb1221
1 files changed, 1221 insertions, 0 deletions
diff --git a/Optical_Communication_/Chapter_4.ipynb b/Optical_Communication_/Chapter_4.ipynb
new file mode 100755
index 00000000..875e1b2a
--- /dev/null
+++ b/Optical_Communication_/Chapter_4.ipynb
@@ -0,0 +1,1221 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:d4d0afedfad591dd3db7bcb4692f0b80c70309a906e9699c9f80be4fd8fe4dbc"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4: Signal Degradation in Optical Fibers"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.1, Page number 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculate the loss of fiber'''\n",
+ "\n",
+ "from sympy import *\n",
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "L = 400./1000. #distance(km)\n",
+ "Pi = Symbol(\"Pi\")\n",
+ "Po = 0.25*Pi\n",
+ "\n",
+ "#Calculations\n",
+ "Loss = (10*math.log10(Pi/Po))/L\n",
+ "\n",
+ "#Result\n",
+ "print \"Loss =\",round(Loss),\"dB/km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Loss = 15.0 dB/km\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.2, Page number 101"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculate power level'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "L = 3 #distance(km)\n",
+ "a = 0.5 #attenuation loss(dB/km)\n",
+ "lamda = 0.82 #wavelength(um)\n",
+ "Pi = 1 #input power(mW)\n",
+ "\n",
+ "#Calculation\n",
+ "Po = Pi*10**((-a*L)/10)\n",
+ "\n",
+ "#Result\n",
+ "print \"Power level =\",round(Po,2),\"mW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Power level = 0.71 mW\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.3, Page number 101"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determine maximum possible link length'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "a = 0.5 #attenuation loss(dB/km)\n",
+ "Pi = 1.5*10**-3 #input power(uW)\n",
+ "Po = 2.*10**-6 #output power(uW)\n",
+ "\n",
+ "#Calculation\n",
+ "L = (10*math.log10(Pi/Po))/a\n",
+ "\n",
+ "#Result\n",
+ "print \"Maximum possible link length =\",round(L,2),\"km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum possible link length = 57.5 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.4, Page number 102"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determine pulse dispersion per unit length'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "pd = 1.2*10**-3 #pulse broadening(ns)\n",
+ "d = 30 #distance\n",
+ "\n",
+ "#Calculation\n",
+ "D = pd/d\n",
+ "\n",
+ "#Result\n",
+ "print \"Pulse dispersion per unit length =\",D,\"ns/m\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pulse dispersion per unit length = 4e-05 ns/m\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.5, Page number 102"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determine the optical output power'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "L = 30 #distance(km)\n",
+ "a = 0.8 #attenuation loss(dB/km)\n",
+ "lamda = 1300 #wavelength(nm)\n",
+ "Pi = 200 #input power(uW)\n",
+ "\n",
+ "#Calculation\n",
+ "Po = Pi*10**((-a*L)/10)\n",
+ "\n",
+ "#Result\n",
+ "print \"Optical output power =\",round(Po,3),\"uW\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Optical output power = 0.796 uW\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.6, Page number 103"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determine\n",
+ "a)Overall signal attenuation\n",
+ "b)signal attenuation per km\n",
+ "c)signal attenuation for the link\n",
+ "d)input output power ratio'''\n",
+ "\n",
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "L = 8 #distance(km)\n",
+ "Pi = 120*10**-6 #input power(W)\n",
+ "Po = 3*10**-6 #output power(W)\n",
+ "\n",
+ "#Calculations\n",
+ "#Part a\n",
+ "a = 10*math.log10(Pi/Po)\n",
+ "\n",
+ "#Part b\n",
+ "adb = a/L\n",
+ "\n",
+ "#Part c\n",
+ "l = 10\n",
+ "x = adb*l #loss occured along 10km of fiber\n",
+ "y = 9 #loss due to splices(dB)\n",
+ "dB = x+y\n",
+ "\n",
+ "#Part d\n",
+ "pi_by_po = 10**(round(dB)/10)\n",
+ "\n",
+ "#Results\n",
+ "print \"a) Overall signal attenuation =\",round(a),\"dB\"\n",
+ "print \"b) Signal attenuation per km =\",round(adb),\"dB/km\"\n",
+ "print \"c) Signal attenuation for the link =\",round(dB),\"dB\"\n",
+ "print \"d) Input output power ratio =\",round(pi_by_po,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "a) Overall signal attenuation = 16.0 dB\n",
+ "b) Signal attenuation per km = 2.0 dB/km\n",
+ "c) Signal attenuation for the link = 29.0 dB\n",
+ "d) Input output power ratio = 794.3\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.7, Page number 104"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determine theoretical attenuation for two given wavelengths'''\n",
+ "\n",
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "Tf = 1400 #fictive temperature(K)\n",
+ "p = 0.286 #photoelastic coeeficient for silica\n",
+ "n = 1.46 #refractive index\n",
+ "Bo = 7*10**-11 #isothermal compressibility\n",
+ "K = 1.381*10**-23 #Boltzman's constant(J/k)\n",
+ "L = 10**3\n",
+ "\n",
+ "#Calculation\n",
+ "#For lamda = 0.63 um\n",
+ "lamda1 = 0.63*10**-6 #wavelength(m)\n",
+ "Yr1 = (8*math.pi**3*n**8*p**2*Bo*K*Tf)/(3*lamda1**4)\n",
+ "E1 = math.exp(-Yr1*L)\n",
+ "a1 = 10.*math.log10(1/E1)\n",
+ "\n",
+ "#For lamda = 1.30 um\n",
+ "lamda2 = 1.30*10**-6 #wavelength(m)\n",
+ "Yr2 = (8*math.pi**3*n**8*p**2*Bo*K*Tf)/(3*lamda2**4)\n",
+ "E2 = math.exp(-Yr2*L)\n",
+ "a2 = 10.*math.log10(1/E2)\n",
+ "\n",
+ "\n",
+ "#Result\n",
+ "print \"(solutions of example 4.8 and 4.7 are interchanged in the textbook)\"\n",
+ "print \"Theoretical attenuation =\",round(a1,3),\"dB/km\"\n",
+ "print \"Theoretical attenuation =\",round(a2,3),\"dB/km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "(solutions of example 4.8 and 4.7 are interchanged in the textbook)\n",
+ "Theoretical attenuation = 5.21 dB/km\n",
+ "Theoretical attenuation = 0.287 dB/km\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.8, Page number 104"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculating the refractive index of glass'''\n",
+ "\n",
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "lamda = 1*10**-6 #wavelength(m)\n",
+ "p = 0.245 #photoelastic coefficient\n",
+ "Bc = 8.4*10**-11 #isothermal compressebility(m^2/N)\n",
+ "Tf = 758 #fictive temperature(K)\n",
+ "K = 1.381*10**-23 #Boltzman's constant(J/k)\n",
+ "alpha = 0.46 #attenuation(Db/Km)\n",
+ "L = 1.*10**3 #distance(km)\n",
+ "\n",
+ "#Calculations\n",
+ "Yr = (8*math.pi**3*p**2*Bc*K*Tf)/(3*lamda**4)\n",
+ "n= (alpha/(4.34*Yr*10**3))**(1./8.)\n",
+ "\n",
+ "#Result\n",
+ "print \"Refractive index =\",round(n,2)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Refractive index = 1.49\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.9, Page nuber 106"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculating the operating wavelength of laser and attenuation of fiber'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "Pb = 150.*10**-3 #threshold optical power for brillouin(W)\n",
+ "Pr = 1.5 #threshold optical power for raman(W)\n",
+ "d = 8.0 #core diameter(um)\n",
+ "v = 1 #bandwidth(GHz)\n",
+ "\n",
+ "#Calculations\n",
+ "'''\n",
+ "Pb is given by,\n",
+ "Pb = 4.4*10**-3*d^2*lamda^2*alpha*v ----(1)\n",
+ "\n",
+ "Pr is given by,\n",
+ "Pr = 5.9*10**-2*d^2*lamda*alpha ----(2)\n",
+ "\n",
+ "Dividing (1) by (2), we get,\n",
+ "'''\n",
+ "\n",
+ "lamda = (Pb*5.9*10**-2*d**2)/(Pr*4.4*10**-3*d**2)\n",
+ "\n",
+ "alpha = Pr/(5.9*10**-2*d**2*lamda)\n",
+ "\n",
+ "#Results\n",
+ "print \"Operating wavelength =\",round(lamda,2),\"um\"\n",
+ "print \"Attenuation =\",round(alpha,3),\"dB/km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Operating wavelength = 1.34 um\n",
+ "Attenuation = 0.296 dB/km\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.10, Page number 107"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Estimating the threshold optical powers for Brillowin and raman scattering'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "d = 6 #core diameter(um)\n",
+ "v = 0.8 #bandwidth(GHz) \n",
+ "lamda = 1.5 #wavelength(um)\n",
+ "alpha = 0.5 #attenuation(dB/Km)\n",
+ "\n",
+ "#Calculations\n",
+ "Pb = 4.4*10**-3*d**2*lamda**2*alpha*v\n",
+ "\n",
+ "Pr = 5.9*10**-3*d**2*lamda*alpha\n",
+ "\n",
+ "#Results\n",
+ "print \"Threshold optical power for SBS =\",round((Pb/1E-3),2),\"mW\"\n",
+ "print \"Threshold optical power for SRS =\",round((Pr/1E-1),2),\"W\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Threshold optical power for SBS = 142.56 mW\n",
+ "Threshold optical power for SRS = 1.59 W\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.11, Page number 107"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determing the critical radius of curvature'''\n",
+ "\n",
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "delta = 3./100 #relative refracive index difference\n",
+ "n1 = 1.5 #refractive index of core\n",
+ "lamda = 0.82*10**-6 #operating wavelength(m)\n",
+ "\n",
+ "#Calculations\n",
+ "n2 = math.sqrt(n1**2-2*delta*n1**2)\n",
+ "\n",
+ "Rc = (3*n1**2*lamda)/(4*math.pi*(n1**2-n2**2)**0.5)\n",
+ "\n",
+ "#Results\n",
+ "print \"The critical radius of curvature is\",round((Rc/1E-6),3),\"um(Calculation mistake in textbook)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The critical radius of curvature is 1.199 um(Calculation mistake in textbook)\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.12, Page number 108"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculating the crtitical radius of curvature'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "delta = 3./100 #relative refracive index difference\n",
+ "n1 = 2.0 #refractive index of core\n",
+ "lamda = 1.55*10**-6 #operating wavelength(m)\n",
+ "d = 8 #core diameter(um)\n",
+ "\n",
+ "#Calculations\n",
+ "a = d/2\n",
+ "n2 = math.sqrt(n1**2-2*delta*n1**2)\n",
+ "lamda_c = (2*math.pi*a*10**-6*n1*((2*delta)**0.5))/2.405\n",
+ "Rc = (20*lamda*(2.748-0.996*(lamda/lamda_c))**-3)/((n1**2-n2**2)**0.5)\n",
+ "\n",
+ "#Result\n",
+ "print \"The critical radius of curvature is\",round((Rc/1E-6),3),\"um\"\n",
+ "\n",
+ "#note There is a calculation mistake in calculating 'n' in the textbook. Hence, the difference in results\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The critical radius of curvature is 4.322 um\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.13, Page number 109"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determine-\n",
+ "a)Maximum possible bandwidth\n",
+ "b)pulse dispersion per unit length\n",
+ "c)bandwidth length product'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "t = 0.1*10**-6 #pulse broadening(sec)\n",
+ "L = 10 #distance(km)\n",
+ "\n",
+ "#Calculatons\n",
+ "#Part a\n",
+ "Bt = 1/(2*t)\n",
+ "\n",
+ "#Part b\n",
+ "D = t/L\n",
+ "\n",
+ "#Part c\n",
+ "Bl = Bt*L\n",
+ "\n",
+ "#Results\n",
+ "print \"a)Maximum possible bandwidth =\",Bt/1E+6,\"MHz\"\n",
+ "print \"b)Pulse dispersion per unit length =\",D/1E-6,\"us/km\"\n",
+ "print \"c)Bandwidth length product =\",Bl/1E+6,\"Mhz km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "a)Maximum possible bandwidth = 5.0 MHz\n",
+ "b)Pulse dispersion per unit length = 0.01 us/km\n",
+ "c)Bandwidth length product = 50.0 Mhz km\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.14, Page number 109"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Estimating the wavelength of transmitted light'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "Rc = 84*10**-6 #radius of curvature(m)\n",
+ "n1 = 1.46 #core refractive index\n",
+ "n2 = 1.45 #cladding refractive index\n",
+ "\n",
+ "#Calculations\n",
+ "lamda = (Rc*4*math.pi*(n1**2-n2**2)**0.5)/(3*n1**2)\n",
+ "\n",
+ "#Result\n",
+ "print \"Wavelength =\",round(lamda/1e-6,2),\"um(Calculation mistake in textbook)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Wavelength = 28.16 um(Calculation mistake in textbook)\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.15, Page number 110"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculating the pulse broadening due to dispersion'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "lamda = 1.5 #wavelength(um)\n",
+ "M = 20 #dispersion parameter(ps n/m-km)\n",
+ "L = 30 #length of fiber(km)\n",
+ "s_l = 2 #spectral width(nm)\n",
+ "\n",
+ "#Calculations\n",
+ "s_m = s_l*L*M\n",
+ "\n",
+ "#Result\n",
+ "print \"Pulse broadening =\",s_m,\"ps\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pulse broadening = 1200 ps\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.16, Page number 110"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculating material dispersion parameter and rms pulse broadening'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "lamda = 850 #wavelength(nm)\n",
+ "s_l = 20 #spectral width(nm)\n",
+ "Dh = 0.025 #material dispersion\n",
+ "c = 2.998*10**5 #speed of light(km/s)\n",
+ "L = 1 #length of fiber(km)\n",
+ "\n",
+ "#Calculations\n",
+ "M = Dh/(c*lamda)\n",
+ "\n",
+ "s_m = s_l*L*M\n",
+ "\n",
+ "#Results\n",
+ "print \"Material dispersion parameter =\",round((M/1E-12),2),\"ps n/m km^-1\"\n",
+ "print \"RMS pulse broadening =\",round((s_m/1E-9),2),\"ns/km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Material dispersion parameter = 98.1 ps n/m km^-1\n",
+ "RMS pulse broadening = 1.96 ns/km\n"
+ ]
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.17, Pge number 111"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determing the pulse boradening per km'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "lamda = 0.9 #wavelength(um)\n",
+ "s_l = 45 #spectral width(um)\n",
+ "Dh = 4*10**-2 #material dispersion\n",
+ "c = 3*10**8 #speed of light(m/s)\n",
+ "L = 1 #length of fiber(km)\n",
+ "\n",
+ "#Calculations\n",
+ "s_m = (s_l*L*Dh*lamda)/c\n",
+ "\n",
+ "#Result\n",
+ "print \"Pulse boradening =\",s_m/1E-9,\"ns/km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pulse boradening = 5.4 ns/km\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.18, Page number 111"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Determing the pulse boradening per km'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "lamda = 0.85 #wavelength(nm)\n",
+ "M = 95 #material dispersion parameter(ps n/m km^-1)\n",
+ "\n",
+ "#Calculations\n",
+ "s_l = 0.0012*lamda\n",
+ "s_m = s_l*L*M\n",
+ "\n",
+ "#Result\n",
+ "print \"Pulse boradening =\",s_m,\"ns/km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pulse boradening = 0.0969 ns/km\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.19, Page number 112"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculating the pulse broadening'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "NA = 0.275 #numerical aperture\n",
+ "n1 = 1.48 #core refractive index\n",
+ "L = 5 #length of fiber(km)\n",
+ "c = 3.*10**5 #speed of light(km/sec)\n",
+ "\n",
+ "#Calculations\n",
+ "STs = (L*NA**2)/(2*n1*c)\n",
+ "\n",
+ "#Result\n",
+ "print \"Pulse broadening =\",round((STs/1E-9),2),\"ns(Calculation mistake in textbook)\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Pulse broadening = 425.82 ns(Calculation mistake in textbook)\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.20, Page number 112"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculate -\n",
+ "a)delay difference between modes\n",
+ "b)rms pulse broadening\n",
+ "c)maximum bit rate\n",
+ "d)bandwidth length product'''\n",
+ "\n",
+ "from math import sqrt\n",
+ "\n",
+ "#Variable declaration\n",
+ "L = 3*10**3 #length of link(m)\n",
+ "n1 = 1.5 #refractive index of core\n",
+ "D = 2./100 #refractive index difference\n",
+ "c = 2.998*10**8 #speed of light(m/s)\n",
+ "\n",
+ "#Calculations\n",
+ "#Part a\n",
+ "Sts = (L*n1*D)/c\n",
+ "\n",
+ "#Part b\n",
+ "s_s = (L*n1*D)/(2*sqrt(3)*c)\n",
+ "\n",
+ "#Part c\n",
+ "Bt = 1/(2*Sts)\n",
+ "\n",
+ "#Part d\n",
+ "Bl = Bt*L\n",
+ " \n",
+ "#Results\n",
+ "print \"Delay difference is\",round(Sts/1E-9),\"ns\"\n",
+ "print \"rms pulse broadening due to intermodal dispersion is\",round((s_s/1E-9),1),\"ns\"\n",
+ "print \"Maximum bit rate is\",round((Bt/1E+6),1),\"Mbits/sec\"\n",
+ "print \"Bandwidth length product is\",round((Bl/1E+9),1),\"MHz km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Delay difference is 300.0 ns\n",
+ "rms pulse broadening due to intermodal dispersion is 86.7 ns\n",
+ "Maximum bit rate is 1.7 Mbits/sec\n",
+ "Bandwidth length product is 5.0 MHz km\n"
+ ]
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.21, Page number 113"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculating the rms pulse broadening per km for multimode step index fiber and graded index fiber'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "s_s = 86.7 #pulse broadening(ns)\n",
+ "L = 6 #length of link(km)\n",
+ "n1 = 1.5 #core refractive index\n",
+ "delta = 1./100 #refractive index difference\n",
+ "c = 2.998*10**8 #speed of light(m/s)\n",
+ "\n",
+ "#Calculations\n",
+ "s_m = s_s/L\n",
+ "\n",
+ "L1 = 10**3\n",
+ "s_g = (L1*n1*delta**2)/(20*sqrt(3)*c)\n",
+ "\n",
+ "#Result\n",
+ "print \"The rms pulse broadening per km for multimode step index fiber is\",s_m,\"ns/km\"\n",
+ "print \"The rms pulse broadening per km for graded index fiber is\",round((s_g/1E-12),2),\"ps/km\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The rms pulse broadening per km for multimode step index fiber is 14.45 ns/km\n",
+ "The rms pulse broadening per km for graded index fiber is 14.44 ps/km\n"
+ ]
+ }
+ ],
+ "prompt_number": 25
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.22, Page number 114"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Estimating the total pulse broadening per km '''\n",
+ "\n",
+ "#Variable declaration\n",
+ "NA = 0.4 #numerical aperture\n",
+ "n1 = 1.48 #core refractive index\n",
+ "n2 = 1.47 #cladding refractive index\n",
+ "M = 30 #material dispersion parameter(ps n/m /km)\n",
+ "s_l = 25 #spectral width(ns)\n",
+ "L = 1 #length of fiber(km)\n",
+ "delta = 1./100 #refractive index difference\n",
+ "\n",
+ "#Calculations\n",
+ "s_m = M*L*s_l\n",
+ "s_s = (L1*n1*delta**2)/(20*sqrt(3)*c)\n",
+ "s_t = math.sqrt(s_m**2+s_s**2)\n",
+ "\n",
+ "#Results\n",
+ "print \"Total pulse broadening per km is\",s_t,\"ps\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Total pulse broadening per km is 750.0 ps\n"
+ ]
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.23, Page number 115"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculate-\n",
+ "a)total pulse broadening per km\n",
+ "b)bandwidth length product'''\n",
+ "\n",
+ "import math\n",
+ "\n",
+ "#Variable declaration\n",
+ "NA = 0.3 #numerical aperture\n",
+ "n1 = 1.45 #core refractive index\n",
+ "M = 250 #material dispersion parameter(ps n/m /km)\n",
+ "s_l = 50 #spectral width(ns)\n",
+ "L = 1 #length of fiber(km)\n",
+ "c = 2.998*10**8 #speed of light(m/s)\n",
+ "\n",
+ "#Calculations\n",
+ "#Part a\n",
+ "s_m = (M*L*s_l)*10**-3 #ns/km\n",
+ "s_s = ((L*10**3*NA**2)/(4*math.sqrt(3)*n1*c*10**3))*10**12 #ns/km\n",
+ "s_t = math.sqrt(s_m**2+s_s**2)\n",
+ "\n",
+ "#Part b\n",
+ "Bl = 0.2/s_t\n",
+ "\n",
+ "#Results\n",
+ "print \"a)total pulse broadening =\",round(s_t,2),\"ns/km\" #Answer varies due to rounding-off errors\n",
+ "print \"b)bandwidth length product =\",round((Bl/1E-3),1),\"Mhz km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "a)total pulse broadening = 32.39 ns/km\n",
+ "b)bandwidth length product = 6.2 Mhz km\n"
+ ]
+ }
+ ],
+ "prompt_number": 39
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.24, Page number 116"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Finding the beat length'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "lamda = 1.32 #wavelength(um)\n",
+ "Lbc = 100 #length of fiber(km)\n",
+ "Sf = 1.5 #spectral width(nm)\n",
+ "\n",
+ "#Calculations\n",
+ "Bf = lamda**2/(Lbc*Sf)\n",
+ "Lb = lamda/Bf\n",
+ "\n",
+ "#Result\n",
+ "print \"Beat length =\",round(Lb,1),\"km\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Beat length = 113.6 km\n"
+ ]
+ }
+ ],
+ "prompt_number": 28
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.25, Page number 116"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculate modal birefringence'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "lamda = 1.3*10**-6 #wavelength(um)\n",
+ "Lb1 = 0.5*10**-3 #length of fiber(mm)\n",
+ "Lb2 = 60 #(m)\n",
+ "\n",
+ "#Calculations\n",
+ "#for beat length of 0.5mm,\n",
+ "Bf1 = lamda/Lb1\n",
+ "\n",
+ "#for beat length of 60m,\n",
+ "Bf2 = lamda/Lb2\n",
+ "\n",
+ "#Result\n",
+ "print \"The modal birefringences are \",Bf1/1E-3, \"*10^-3 and\",round((Bf2/1E-8),2),\"*10^-4\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The modal birefringences are 2.6 *10^-3 and 2.17 *10^-4\n"
+ ]
+ }
+ ],
+ "prompt_number": 29
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.26, Page number 117"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculate the modal birefringence, coherence length and difference between propagation constants'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "lamda = 0.5*10**-6 #wavelength(um)\n",
+ "Lb = 5*10**-2 #length of fiber(km)\n",
+ "S_l = 1*10**-9 #spectral width(nm)\n",
+ "\n",
+ "#Calculations\n",
+ "Bf = lamda/Lb\n",
+ "\n",
+ "Lbc = lamda**2/(Bf*S_l)\n",
+ "\n",
+ "B = (2*math.pi)/Lb #Bx-By\n",
+ "\n",
+ "#Results\n",
+ "print \"Modal birefringence =\",Bf\n",
+ "print \"Coherence length =\",Lbc,\"m\"\n",
+ "print \"Difference between propagation constants =\",round(B,1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Modal birefringence = 1e-05\n",
+ "Coherence length = 25.0 m\n",
+ "Difference between propagation constants = 125.7\n"
+ ]
+ }
+ ],
+ "prompt_number": 30
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Example 4.27, Page number 117"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "'''Calculating the maximum bit rate'''\n",
+ "\n",
+ "#Variable declaration\n",
+ "L = 10*10**3 #length of fiber(m)\n",
+ "St2 = 600*10**-12 #mode dispersion(s/km)\n",
+ "\n",
+ "#Calculations\n",
+ "Bt = 0.9/(0.55*St2*L)\n",
+ "\n",
+ "#Result\n",
+ "print \"Maximum bit rate =\",round(Bt/1E+3),\"Kbps\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Maximum bit rate = 273.0 Kbps\n"
+ ]
+ }
+ ],
+ "prompt_number": 31
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file