summaryrefslogtreecommitdiff
path: root/Optical_fiber_communication_by_gerd_keiser
diff options
context:
space:
mode:
Diffstat (limited to 'Optical_fiber_communication_by_gerd_keiser')
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter1.ipynb251
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter10.ipynb546
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter10_1.ipynb546
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter11.ipynb416
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter11_1.ipynb416
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter12.ipynb426
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter12_1.ipynb426
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter13.ipynb288
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter13_1.ipynb274
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter1_1.ipynb251
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter2.ipynb231
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter2_1.ipynb231
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter3.ipynb358
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter3_1.ipynb358
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter4.ipynb356
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter4_1.ipynb356
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter5.ipynb270
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter5_1.ipynb270
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter6.ipynb321
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter6_1.ipynb321
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter7.ipynb287
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter7_1.ipynb270
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter8.ipynb335
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter8_1.ipynb335
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter9.ipynb203
-rwxr-xr-xOptical_fiber_communication_by_gerd_keiser/chapter9_1.ipynb186
26 files changed, 0 insertions, 8528 deletions
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter1.ipynb
deleted file mode 100755
index 668d3a3b..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter1.ipynb
+++ /dev/null
@@ -1,251 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:f6057f567522f2ec05cc49c207f47842aee03556e2aab087a974cae3593d6b0b"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 1: Overview of optical fiber communication"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.1, Page Number: 8"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "f1 = 100*1e3 #frequency1 = 100KHz\n",
- "f2 = 1e9 #frequency2 = 1GHz\n",
- "T1 = 1.0/f1 #Time period1 = 0.01ms\n",
- "T2 = 1.0/f2 #Time period2 = 1 ns\n",
- "\n",
- "#calculation\n",
- "phi = (0.25)*360.0 # Phase shift(degree)\n",
- "\n",
- "#result\n",
- "print \"Phase shift = \",round(phi),\"Degree\",\"= \",round((round(phi)*math.pi)/180,4), \"radian\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Phase shift = 90.0 Degree = 1.5708 radian\n"
- ]
- }
- ],
- "prompt_number": 24
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.2, Page Number: 10"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "flow=10*1e3 #Lowest frequency(KHz)\n",
- "fhigh=100*1e3 #Highest frequency(KHz)\n",
- "\n",
- "#calculation\n",
- "bandwidth=fhigh-flow #bandwidth(KHz)\n",
- "\n",
- "#result\n",
- "print \"Bandwidth=\",bandwidth/1000 ,\"KHz\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bandwidth= 90.0 KHz\n"
- ]
- }
- ],
- "prompt_number": 25
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.4, Page Number: 12"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "B = 10*1e6 # Bandwidth of noisy channel 1MHZ\n",
- "S_N = 1 # signal to noise ratio is 1\n",
- "\n",
- "#calculation\n",
- "C=B*(math.log(1+S_N)/math.log(2)) #capacity of channel(Mb/s)\n",
- "\n",
- "#result\n",
- "print \"Capacity of channel =\",C/(10*1e6),\"Mb/s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Capacity of channel = 1.0 Mb/s\n"
- ]
- }
- ],
- "prompt_number": 26
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.5, Page Number: 12"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "fLow = 3*1e6 #low frequency = 3MHz\n",
- "fHigh = 4*1e6 #high frequency = 4MHz\n",
- "SNR_dB = 20 #signal to noise ratio 20 dB\n",
- "\n",
- "#calculation\n",
- "B = fHigh-fLow #Bandwidth(MHz)\n",
- "S_N = 10**(SNR_dB/10) #signal to noise ratio\n",
- "C = B*(math.log(1+S_N)/math.log(2)) #capacity of channel(Mb/s)\n",
- "\n",
- "#result\n",
- "print \"Capacity of channel=\",round(C/(1e6),1),\"Mb/s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Capacity of channel= 6.7 Mb/s\n"
- ]
- }
- ],
- "prompt_number": 27
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.6, Page Number: 14"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "P1 = 1 # Let p1 be 1 watt\n",
- "P2 = P1*0.5 # P2 is half of p1 so 1/2\n",
- "\n",
- "#calculation\n",
- "Atten_dB = 10*(math.log(P2/P1)/math.log(10)) #attenuation or loss of power(dB)\n",
- "\n",
- "#result\n",
- "print \"Attenuation loss =\",round(Atten_dB,0), \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Attenuation loss = -3.0 dB\n"
- ]
- }
- ],
- "prompt_number": 28
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.7, Page Number: 14"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "Loss_line1 = -9 #attenuation of signal between point 1 to 2 = 9 dB\n",
- "Amp_gain2 = 14 #Amplification of signal between point 2 to 3 = 14 dB\n",
- "Loss_line3 = -3 #attenuation of signal between point 3 to 4 = 3 dB\n",
- "\n",
- "#calculation\n",
- "dB_at_line4 = Loss_line1+Amp_gain2+Loss_line3 #power gain(dB)\n",
- "\n",
- "#result\n",
- "print \"Power gain for a signal travelling from point1 to another point4 = \",dB_at_line4, \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power gain for a signal travelling from point1 to another point4 = 2 dB\n"
- ]
- }
- ],
- "prompt_number": 29
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter10.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter10.ipynb
deleted file mode 100755
index eea0d5e9..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter10.ipynb
+++ /dev/null
@@ -1,546 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:d17d5fe4155b7f2d086c5c988af67c717660e52a459d2e6f74c5f9135d5d0a50"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 10: WDM concepts and Components"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.1, Page Number: 343"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration \n",
- "Lambda2 = 1520.0*10**-9 #spectral bandwidth(nHz)\n",
- "Lambda1 = 1420.0*10**-9\n",
- "C = 3.0*10**8 #free space velocity(m/s)\n",
- "delta_Lambda1=100.0*10**-9 #spectral band(nm)\n",
- "delta_Lambda2=105.0*10**-9\n",
- "\n",
- "#calculation\n",
- "delta_v1= C*delta_Lambda1 /(Lambda1**2) #optical bandwidth(Hz) \n",
- "delta_v2= C*delta_Lambda2/(Lambda2**2)\n",
- "\n",
- "#result\n",
- "print \"Usable spectral band for 100 nm = \",round(delta_v1*10**-12,1),\"THz\"\n",
- "print \"Usable spectral band for 100 nm = \",round(delta_v2*10**-12),\"THz\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Usable spectral band for 100 nm = 14.9 THz\n",
- "Usable spectral band for 100 nm = 14.0 THz\n"
- ]
- }
- ],
- "prompt_number": 20
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.2, Page Number: 343"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "c=3.0*pow(10,8) #free space velocity(m/s)\n",
- "delta_lambda=0.8*pow(10,-9) #spectral band (meter)\n",
- "lam_bda=1550*pow(10,-9) #wavwlenth (meter)\n",
- "\n",
- "#calculation\n",
- "delta_v=(c*delta_lambda)/lam_bda**2 #Mean freqency spacing(GHz)\n",
- "\n",
- "#result\n",
- "print \"Mean freqency spacing = \" , round(delta_v*(pow(10,-9))),\"GHz\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Mean freqency spacing = 100.0 GHz\n"
- ]
- }
- ],
- "prompt_number": 21
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.3, Page Number: 348"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "p0=200.0*pow(10,-6) #input optical power level (watts)\n",
- "p1=90.0*pow(10,-6) #output power at port-1\n",
- "p2=85.0*pow(10,-6) #output power at port-2\n",
- "p3=6.3*pow(10,-9) #output power at port-3\n",
- "\n",
- "#calculation\n",
- "coupling_ratio=(p2/(p1+p2))*100 #Coupling ratio(%)\n",
- "Excess_loss=10*(math.log10(p0/(p1+p2))) #Excess loss(dB)\n",
- "Insertion_loss_0_1=10*(math.log10(p0/p1)) #Insertion loss(dB)\n",
- "Insertion_loss_0_2=10*(math.log10(p0/p2))\n",
- "Return_loss = 10*(math.log10(p3/p0)) #Return loss(dB)\n",
- "\n",
- "#result\n",
- "print \"Coupling ratio = \" , round(coupling_ratio,1) , \"%\"\n",
- "print \"Excess loss = \" , round(Excess_loss,2) , \"dB\"\n",
- "print \"Insertion loss (port0 to port1 = \" , round(Insertion_loss_0_1,2), \"dB\"\n",
- "print \"Insertion loss (port0 to port2 = \" , round(Insertion_loss_0_2,2), \"dB\"\n",
- "print \"Return loss = \" , round(Return_loss), \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Coupling ratio = 48.6 %\n",
- "Excess loss = 0.58 dB\n",
- "Insertion loss (port0 to port1 = 3.47 dB\n",
- "Insertion loss (port0 to port2 = 3.72 dB\n",
- "Return loss = -45.0 dB\n"
- ]
- }
- ],
- "prompt_number": 22
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.6, Page Number: 353"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "k = 0.6/(10**-3) #Coupling coefficint (per mm)\n",
- "m = 1 #mode=1\n",
- "\n",
- "#calculation\n",
- "L = ((math.pi)*(m+1))/(2*k) #coupling length(mm)\n",
- "\n",
- "#result\n",
- "print \"Coupling length L = \",round(L*(10**3),2),\"mm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Coupling length L = 5.24 mm\n"
- ]
- }
- ],
- "prompt_number": 23
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.7, Page Number: 355"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Power_Lost = 5.0/100.0 #lost power%\n",
- "FT = 1-Power_Lost #power coupled\n",
- "N = 32\n",
- "\n",
- "#calculation\n",
- "Excess_Loss = -10*(math.log10(FT**(math.log10(N)/math.log10(2)))) #Excess Loss(dB)\n",
- "Splitting_Loss = -10*math.log10(N) #Splitting Loss(dB)\n",
- "Total_Loss = (-Excess_Loss) + Splitting_Loss \n",
- "\n",
- "#result\n",
- "print \"Excess Loss = \" , round(Excess_Loss,1) ,\"dB\"\n",
- "print \"Splitting Loss = \" , round(abs(Splitting_Loss)) ,\"dB\"\n",
- "print \"Total Loss experienced in Star Couplers = \" , round(-Total_Loss,1) , \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Excess Loss = 1.1 dB\n",
- "Splitting Loss = 15.0 dB\n",
- "Total Loss experienced in Star Couplers = 16.2 dB\n"
- ]
- }
- ],
- "prompt_number": 24
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.8, Page Number: 357"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 10.8(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "delta_lambda=0.08*pow(10,-9) #wavelength spacing (nm)\n",
- "lam_bda=1550*pow(10,-9) #wavelength (meters)\n",
- "neff=1.5 #effective refractive index in the waveguide\n",
- "c=3*10**8 #free space velocity(m/s)\n",
- "\n",
- "#calculation\n",
- "delta_v1=10*10**9 #Frequency sepration\n",
- "delta_l1=c/(2*neff*delta_v1) #Waveguide length(mm)\n",
- "\n",
- "#result\n",
- "print \"Waveguide length1 diffrence = \" , round(delta_l1*10**3) ,\"mm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Waveguide length1 diffrence = 10.0 mm\n"
- ]
- }
- ],
- "prompt_number": 28
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 10.8(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "delta_lambda=0.08*pow(10,-9) #wavelength spacing (nm)\n",
- "lam_bda=1550*pow(10,-9) #wavelength (meters)\n",
- "neff=1.5 #effective refractive index in the waveguide\n",
- "c=3*10**8 #free space velocity(m/s)\n",
- "\n",
- "#calculation\n",
- "delta_v2=130*10**9 #Frequency sepration\n",
- "delta_l2=c/(2*neff*delta_v2) #Waveguide length(mm)\n",
- "\n",
- "#result\n",
- "print \"Waveguide length2 diffrence = \" , round(delta_l2*10**3,2) ,\"mm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Waveguide length2 diffrence = 0.77 mm\n"
- ]
- }
- ],
- "prompt_number": 29
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.9, Page Number: 364"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 10.9(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "kl=1.0 #coupling coeffiecint and length \n",
- "k2=2.0\n",
- "k3=3.0\n",
- "\n",
- "#calculation\n",
- "rmax1=math.tanh(kl)**2 #peak reflectivity Rmax\n",
- "rmax2=math.tanh(k2)**2\n",
- "rmax3=math.tanh(k3)**2\n",
- "\n",
- "#result\n",
- "print \"For k1 Rmax = \" , round(rmax1*100) ,\"%\"\n",
- "print \"For k2 Rmax = \" , round(rmax2*100) ,\"%\"\n",
- "print \"For k3 Rmax = \" ,round(rmax3*100) ,\"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "For k1 Rmax = 58.0 %\n",
- "For k2 Rmax = 93.0 %\n",
- "For k3 Rmax = 99.0 %\n"
- ]
- }
- ],
- "prompt_number": 30
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 10.9(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "L=0.5 #length (cm)\n",
- "lam_bda_brg = 1530*10**-9 #reflaaction wavelength(nm)\n",
- "n_eff = 1.48 #mode effective index of core\n",
- "delta_n = 2.5*10**-4\n",
- "etta = 0.82 #efficiency(%)\n",
- "\n",
- "#calculation\n",
- "k = (math.pi*delta_n*etta)/(lam_bda_brg) #coupling coefficint\n",
- "delta_lambda = (lam_bda_brg**2)*(math.sqrt(((k/100*L)**2)+math.pi**2))/(math.pi*n_eff*L) #bandwidth\n",
- "\n",
- "#result\n",
- "print \"Coupling coefficint = \", round(k/100,1), \"1/cm\"\n",
- "print \"Total bandwidth = \", round(delta_lambda*10**11,2),\"nm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Coupling coefficint = 4.2 1/cm\n",
- "Total bandwidth = 0.38 nm\n"
- ]
- }
- ],
- "prompt_number": 31
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.10, Page Number: 372"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "lambda_c=1550*pow(10,-9) #wavelength(nm)\n",
- "nc=1.45 #refrective index of grating array waveguide \n",
- "ns=1.45 #refrective index of teh star coupler\n",
- "ng=1.47 #group index of grating array waveguide\n",
- "x=5*10**-6 #spacing between input waveguide(um)\n",
- "d=5*10**-6 #spacing between output waveguide(um)\n",
- "m=1 #mode\n",
- "lf=10*10**-3 #distance between Tx to Rx\n",
- "\n",
- "#calculation\n",
- "delta_l=m*lambda_c/nc #waveguide length diffrence(um)\n",
- "delta_lambda=(x/lf)*(ns*d/m)*(ns/ng) #channel spacing(nm)\n",
- "\n",
- "#result\n",
- "print \"Waveguide length diffrence = \" , round(delta_l*10**6,3), \"um\"\n",
- "print \"Channel spacing interms of wavelength = \" , round(delta_lambda*10**9,2) ,\"nm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Waveguide length diffrence = 1.069 um\n",
- "Channel spacing interms of wavelength = 3.58 nm\n"
- ]
- }
- ],
- "prompt_number": 32
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.11, Page Number: 373"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration \n",
- "nc=1.45 #refractive index\n",
- "Lambda_C = 1550.5*pow(10,-9) #center wavelength(nm)\n",
- "delta_Lambda = 32.2*pow(10,-9) #free spectral range(nm)\n",
- "c=3*10**8 #free space velocity(m/s)\n",
- "\n",
- "#calculation\n",
- "delta_L = Lambda_C**2/(nc*delta_Lambda) #length diffrence(um)\n",
- "\n",
- "#result\n",
- "print \"Length diffrence between adjacent array waveguide = \" , round(delta_L*10**6,2) , \"um\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Length diffrence between adjacent array waveguide = 51.49 um\n"
- ]
- }
- ],
- "prompt_number": 33
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.12, Page Number: 383"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lam_bda = 1550*pow(10,-9) #DBR laser wavelength(nm)\n",
- "delta_neff = 0.0065 #index change\n",
- "\n",
- "#calculation\n",
- "delta_Lambda_tune = Lam_bda*delta_neff #tuning range (meter) \n",
- "delta_Lambda_signal = 0.02*pow(10,-9) #spectral width(meter)\n",
- "delta_Lambda_channel = 10*delta_Lambda_signal #channal width\n",
- "N = delta_Lambda_tune/delta_Lambda_channel #The number of channels\n",
- "\n",
- "#result\n",
- "print \"Tuning wavelength = \" , round(delta_Lambda_tune*10**9) , \"nm\"\n",
- "print \"The number of channels that can operate in this tuning range is N = \" , round(N)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Tuning wavelength = 10.0 nm\n",
- "The number of channels that can operate in this tuning range is N = 50.0\n"
- ]
- }
- ],
- "prompt_number": 34
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter10_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter10_1.ipynb
deleted file mode 100755
index eea0d5e9..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter10_1.ipynb
+++ /dev/null
@@ -1,546 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:d17d5fe4155b7f2d086c5c988af67c717660e52a459d2e6f74c5f9135d5d0a50"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 10: WDM concepts and Components"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.1, Page Number: 343"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration \n",
- "Lambda2 = 1520.0*10**-9 #spectral bandwidth(nHz)\n",
- "Lambda1 = 1420.0*10**-9\n",
- "C = 3.0*10**8 #free space velocity(m/s)\n",
- "delta_Lambda1=100.0*10**-9 #spectral band(nm)\n",
- "delta_Lambda2=105.0*10**-9\n",
- "\n",
- "#calculation\n",
- "delta_v1= C*delta_Lambda1 /(Lambda1**2) #optical bandwidth(Hz) \n",
- "delta_v2= C*delta_Lambda2/(Lambda2**2)\n",
- "\n",
- "#result\n",
- "print \"Usable spectral band for 100 nm = \",round(delta_v1*10**-12,1),\"THz\"\n",
- "print \"Usable spectral band for 100 nm = \",round(delta_v2*10**-12),\"THz\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Usable spectral band for 100 nm = 14.9 THz\n",
- "Usable spectral band for 100 nm = 14.0 THz\n"
- ]
- }
- ],
- "prompt_number": 20
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.2, Page Number: 343"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "c=3.0*pow(10,8) #free space velocity(m/s)\n",
- "delta_lambda=0.8*pow(10,-9) #spectral band (meter)\n",
- "lam_bda=1550*pow(10,-9) #wavwlenth (meter)\n",
- "\n",
- "#calculation\n",
- "delta_v=(c*delta_lambda)/lam_bda**2 #Mean freqency spacing(GHz)\n",
- "\n",
- "#result\n",
- "print \"Mean freqency spacing = \" , round(delta_v*(pow(10,-9))),\"GHz\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Mean freqency spacing = 100.0 GHz\n"
- ]
- }
- ],
- "prompt_number": 21
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.3, Page Number: 348"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "p0=200.0*pow(10,-6) #input optical power level (watts)\n",
- "p1=90.0*pow(10,-6) #output power at port-1\n",
- "p2=85.0*pow(10,-6) #output power at port-2\n",
- "p3=6.3*pow(10,-9) #output power at port-3\n",
- "\n",
- "#calculation\n",
- "coupling_ratio=(p2/(p1+p2))*100 #Coupling ratio(%)\n",
- "Excess_loss=10*(math.log10(p0/(p1+p2))) #Excess loss(dB)\n",
- "Insertion_loss_0_1=10*(math.log10(p0/p1)) #Insertion loss(dB)\n",
- "Insertion_loss_0_2=10*(math.log10(p0/p2))\n",
- "Return_loss = 10*(math.log10(p3/p0)) #Return loss(dB)\n",
- "\n",
- "#result\n",
- "print \"Coupling ratio = \" , round(coupling_ratio,1) , \"%\"\n",
- "print \"Excess loss = \" , round(Excess_loss,2) , \"dB\"\n",
- "print \"Insertion loss (port0 to port1 = \" , round(Insertion_loss_0_1,2), \"dB\"\n",
- "print \"Insertion loss (port0 to port2 = \" , round(Insertion_loss_0_2,2), \"dB\"\n",
- "print \"Return loss = \" , round(Return_loss), \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Coupling ratio = 48.6 %\n",
- "Excess loss = 0.58 dB\n",
- "Insertion loss (port0 to port1 = 3.47 dB\n",
- "Insertion loss (port0 to port2 = 3.72 dB\n",
- "Return loss = -45.0 dB\n"
- ]
- }
- ],
- "prompt_number": 22
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.6, Page Number: 353"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "k = 0.6/(10**-3) #Coupling coefficint (per mm)\n",
- "m = 1 #mode=1\n",
- "\n",
- "#calculation\n",
- "L = ((math.pi)*(m+1))/(2*k) #coupling length(mm)\n",
- "\n",
- "#result\n",
- "print \"Coupling length L = \",round(L*(10**3),2),\"mm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Coupling length L = 5.24 mm\n"
- ]
- }
- ],
- "prompt_number": 23
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.7, Page Number: 355"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Power_Lost = 5.0/100.0 #lost power%\n",
- "FT = 1-Power_Lost #power coupled\n",
- "N = 32\n",
- "\n",
- "#calculation\n",
- "Excess_Loss = -10*(math.log10(FT**(math.log10(N)/math.log10(2)))) #Excess Loss(dB)\n",
- "Splitting_Loss = -10*math.log10(N) #Splitting Loss(dB)\n",
- "Total_Loss = (-Excess_Loss) + Splitting_Loss \n",
- "\n",
- "#result\n",
- "print \"Excess Loss = \" , round(Excess_Loss,1) ,\"dB\"\n",
- "print \"Splitting Loss = \" , round(abs(Splitting_Loss)) ,\"dB\"\n",
- "print \"Total Loss experienced in Star Couplers = \" , round(-Total_Loss,1) , \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Excess Loss = 1.1 dB\n",
- "Splitting Loss = 15.0 dB\n",
- "Total Loss experienced in Star Couplers = 16.2 dB\n"
- ]
- }
- ],
- "prompt_number": 24
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.8, Page Number: 357"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 10.8(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "delta_lambda=0.08*pow(10,-9) #wavelength spacing (nm)\n",
- "lam_bda=1550*pow(10,-9) #wavelength (meters)\n",
- "neff=1.5 #effective refractive index in the waveguide\n",
- "c=3*10**8 #free space velocity(m/s)\n",
- "\n",
- "#calculation\n",
- "delta_v1=10*10**9 #Frequency sepration\n",
- "delta_l1=c/(2*neff*delta_v1) #Waveguide length(mm)\n",
- "\n",
- "#result\n",
- "print \"Waveguide length1 diffrence = \" , round(delta_l1*10**3) ,\"mm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Waveguide length1 diffrence = 10.0 mm\n"
- ]
- }
- ],
- "prompt_number": 28
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 10.8(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "delta_lambda=0.08*pow(10,-9) #wavelength spacing (nm)\n",
- "lam_bda=1550*pow(10,-9) #wavelength (meters)\n",
- "neff=1.5 #effective refractive index in the waveguide\n",
- "c=3*10**8 #free space velocity(m/s)\n",
- "\n",
- "#calculation\n",
- "delta_v2=130*10**9 #Frequency sepration\n",
- "delta_l2=c/(2*neff*delta_v2) #Waveguide length(mm)\n",
- "\n",
- "#result\n",
- "print \"Waveguide length2 diffrence = \" , round(delta_l2*10**3,2) ,\"mm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Waveguide length2 diffrence = 0.77 mm\n"
- ]
- }
- ],
- "prompt_number": 29
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.9, Page Number: 364"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 10.9(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "kl=1.0 #coupling coeffiecint and length \n",
- "k2=2.0\n",
- "k3=3.0\n",
- "\n",
- "#calculation\n",
- "rmax1=math.tanh(kl)**2 #peak reflectivity Rmax\n",
- "rmax2=math.tanh(k2)**2\n",
- "rmax3=math.tanh(k3)**2\n",
- "\n",
- "#result\n",
- "print \"For k1 Rmax = \" , round(rmax1*100) ,\"%\"\n",
- "print \"For k2 Rmax = \" , round(rmax2*100) ,\"%\"\n",
- "print \"For k3 Rmax = \" ,round(rmax3*100) ,\"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "For k1 Rmax = 58.0 %\n",
- "For k2 Rmax = 93.0 %\n",
- "For k3 Rmax = 99.0 %\n"
- ]
- }
- ],
- "prompt_number": 30
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 10.9(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "L=0.5 #length (cm)\n",
- "lam_bda_brg = 1530*10**-9 #reflaaction wavelength(nm)\n",
- "n_eff = 1.48 #mode effective index of core\n",
- "delta_n = 2.5*10**-4\n",
- "etta = 0.82 #efficiency(%)\n",
- "\n",
- "#calculation\n",
- "k = (math.pi*delta_n*etta)/(lam_bda_brg) #coupling coefficint\n",
- "delta_lambda = (lam_bda_brg**2)*(math.sqrt(((k/100*L)**2)+math.pi**2))/(math.pi*n_eff*L) #bandwidth\n",
- "\n",
- "#result\n",
- "print \"Coupling coefficint = \", round(k/100,1), \"1/cm\"\n",
- "print \"Total bandwidth = \", round(delta_lambda*10**11,2),\"nm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Coupling coefficint = 4.2 1/cm\n",
- "Total bandwidth = 0.38 nm\n"
- ]
- }
- ],
- "prompt_number": 31
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.10, Page Number: 372"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "lambda_c=1550*pow(10,-9) #wavelength(nm)\n",
- "nc=1.45 #refrective index of grating array waveguide \n",
- "ns=1.45 #refrective index of teh star coupler\n",
- "ng=1.47 #group index of grating array waveguide\n",
- "x=5*10**-6 #spacing between input waveguide(um)\n",
- "d=5*10**-6 #spacing between output waveguide(um)\n",
- "m=1 #mode\n",
- "lf=10*10**-3 #distance between Tx to Rx\n",
- "\n",
- "#calculation\n",
- "delta_l=m*lambda_c/nc #waveguide length diffrence(um)\n",
- "delta_lambda=(x/lf)*(ns*d/m)*(ns/ng) #channel spacing(nm)\n",
- "\n",
- "#result\n",
- "print \"Waveguide length diffrence = \" , round(delta_l*10**6,3), \"um\"\n",
- "print \"Channel spacing interms of wavelength = \" , round(delta_lambda*10**9,2) ,\"nm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Waveguide length diffrence = 1.069 um\n",
- "Channel spacing interms of wavelength = 3.58 nm\n"
- ]
- }
- ],
- "prompt_number": 32
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.11, Page Number: 373"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration \n",
- "nc=1.45 #refractive index\n",
- "Lambda_C = 1550.5*pow(10,-9) #center wavelength(nm)\n",
- "delta_Lambda = 32.2*pow(10,-9) #free spectral range(nm)\n",
- "c=3*10**8 #free space velocity(m/s)\n",
- "\n",
- "#calculation\n",
- "delta_L = Lambda_C**2/(nc*delta_Lambda) #length diffrence(um)\n",
- "\n",
- "#result\n",
- "print \"Length diffrence between adjacent array waveguide = \" , round(delta_L*10**6,2) , \"um\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Length diffrence between adjacent array waveguide = 51.49 um\n"
- ]
- }
- ],
- "prompt_number": 33
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 10.12, Page Number: 383"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lam_bda = 1550*pow(10,-9) #DBR laser wavelength(nm)\n",
- "delta_neff = 0.0065 #index change\n",
- "\n",
- "#calculation\n",
- "delta_Lambda_tune = Lam_bda*delta_neff #tuning range (meter) \n",
- "delta_Lambda_signal = 0.02*pow(10,-9) #spectral width(meter)\n",
- "delta_Lambda_channel = 10*delta_Lambda_signal #channal width\n",
- "N = delta_Lambda_tune/delta_Lambda_channel #The number of channels\n",
- "\n",
- "#result\n",
- "print \"Tuning wavelength = \" , round(delta_Lambda_tune*10**9) , \"nm\"\n",
- "print \"The number of channels that can operate in this tuning range is N = \" , round(N)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Tuning wavelength = 10.0 nm\n",
- "The number of channels that can operate in this tuning range is N = 50.0\n"
- ]
- }
- ],
- "prompt_number": 34
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter11.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter11.ipynb
deleted file mode 100755
index c71b9640..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter11.ipynb
+++ /dev/null
@@ -1,416 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:4930bebda7035fefc5221e84cdee44dfb2c772873b238e2ca2714c2de4369a09"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 11: Optical amplifires"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.1, Page Number: 397"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Vg = 2*10**8 #group velocity (m/s)\n",
- "h = 6.625*10**-34 #planks constant (J*s)\n",
- "C = 3*10**8 #free space velocity (m/s)\n",
- "Lam_bda = 1550*10**-9 #operating wave length(nm)\n",
- "V = C/Lam_bda #frequency (Hz)\n",
- "w = 5*10**-6 #width of optical amplifier (meters)\n",
- "d = 0.5*10**-6 #thickness of optical amplifier (meter)\n",
- "Ps = 10**-6 #optical signal of power\n",
- "\n",
- "#calculation\n",
- "Nph = Ps/(Vg*h*V*w*d) #photon density\n",
- "\n",
- "#result\n",
- "print \"The photon density Nph = \" ,round(Nph*1e-16,2),\"e+6 photons/m3\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The photon density Nph = 1.56 e+6 photons/m3\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.2, Page Number: 397"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 11.2(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#varible declaration\n",
- "I = 100.0*10**-3 #bias current (Amps)\n",
- "w = 3.0*10**-6 #active area width (meters)\n",
- "L = 500.0*10**-6 #amplifier lenght (meters)\n",
- "d = 0.3*10**-6 #active area thick ness(meters)\n",
- "q = 1.6*10**-19 #charge (coulombs)\n",
- "Tuo = 0.3 #The confinement factor\n",
- "a = 2*10**-20 #gain coefficient (square meter)\n",
- "J = I/(w*L) #3bias current density (Amp/squre meter)\n",
- "nth = 10**24 #threshold density (per cubic meter)\n",
- "Tuor = 10**-9; #Time constant (seconds)\n",
- "\n",
- "\n",
- "#calculation\n",
- "Rp = I/(q*d*w*L) # The pumping rate((electron/m3)/s)\n",
- "\n",
- "#result\n",
- "print \"The pumping rate Rp = \" , round(Rp*1e-33,2)*10**33,\" (electron/m3)/s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The pumping rate Rp = 1.39e+33 (electron/m3)/s\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 11.2(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#varible declaration\n",
- "I = 100.0*10**-3 #bias current (Amps)\n",
- "w = 3.0*10**-6 #active area width (meters)\n",
- "L = 500.0*10**-6 #amplifier lenght (meters)\n",
- "d = 0.3*10**-6 #active area thick ness(meters)\n",
- "q = 1.6*10**-19 #charge (coulombs)\n",
- "Tuo = 0.3 #The confinement factor\n",
- "a = 2*10**-20 #gain coefficient (square meter)\n",
- "J = I/(w*L) #3bias current density (Amp/squre meter)\n",
- "nth = 10**24 #threshold density (per cubic meter)\n",
- "Tuor = 10**-9; #Time constant (seconds)\n",
- "\n",
- "\n",
- "#calculation\n",
- "Rp=I/(q*d*w*L) #The pumping rate((electron/m3)/s)\n",
- "g0 = Tuo*a*Tuor*(round(Rp*1e-33,2)*10**33-(nth/Tuor)) #The zero singal(1/cm)\n",
- "\n",
- "#result\n",
- "print \"The zero singal g0 = \" ,round(g0),\"1/m =\", round(g0/100,1),\"1/cm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The zero singal g0 = 2340.0 1/m = 23.4 1/cm\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.3, Page Number: 404"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda_p = 980.0*10**-9 #pump wavelength(nm)\n",
- "Lambda_s = 1550.0*10**-9 #signal wavelength(nm)\n",
- "Pp_in = 30.0*10**-3 #input pump power (watts)\n",
- "G = 1.0*10**2 #gain\n",
- "\n",
- "#calculation\n",
- "Ps_in = (Lambda_p/Lambda_s)*Pp_in/(G-1) #maximum input power(W)\n",
- "Ps_out = Ps_in+(Lambda_p/Lambda_s)*Pp_in #maximum output power(W)\n",
- "Ps_out_db = 10*(math.log10(Ps_out*10**3)) #maximum output power(dBm)\n",
- "\n",
- "#result\n",
- "print \"The maximum input power = \" , round(Ps_in*10**6) , \"uW\"\n",
- "print \"The maximum output power = \" , round(Ps_out*10**3,1),\"mW\"\n",
- "print \"The maximum output power = \" , round(Ps_out_db,1),\"dBm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The maximum input power = 192.0 uW\n",
- "The maximum output power = 19.2 mW\n",
- "The maximum output power = 12.8 dBm\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.6, Page Number: 412"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declarion\n",
- "Q = 6 #Q factor of 6\n",
- "\n",
- "#calculation\n",
- "OSNR = 0.5*Q*(Q+math.sqrt(2))\n",
- "OSNR_DB = 10*(math.log10(OSNR)) #The optical signal to noise ratio(dB)\n",
- "\n",
- "#result\n",
- "print \"The optical signal to noise ratio (OSNR) = \" ,round(OSNR,2),\"=\", round(OSNR_DB,1),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The optical signal to noise ratio (OSNR) = 22.24 = 13.5 dB\n"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.7, Page Number: 413"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda_p = 980*10**-9 #pump wavelength (meters)\n",
- "Lambda_s = 1540*10**-9 #signal wavelength (meters)\n",
- "Ps_out = 10*10**-3 #output signal power(mW)\n",
- "Ps_in = 10**-3 #input signal power(mW)\n",
- "\n",
- "#calculation\n",
- "Pp_in = (Lambda_s/Lambda_p)*(Ps_out-Ps_in) #pump power at input(mW)\n",
- "\n",
- "#result\n",
- "print \"Pump power = \" , round(Pp_in*10**3) ,\"mW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Pump power = 14.0 mW\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.8, Page Number: 413"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "P_ASE1 = -22 #ASE level (dBm)\n",
- "P_ASE2 = -16 #ASE level (dBm)\n",
- "Pout = 6 #amplified signal level (dBm)\n",
- "\n",
- "#calculation\n",
- "OSNR1 = Pout-P_ASE1 \n",
- "OSNR2 = Pout-P_ASE2 #The optical signal to noise ratio(dBm)\n",
- "\n",
- "#result\n",
- "print \"Optical SNR OSNR1 = \" , round(OSNR1) , \"dBm\"\n",
- "print \"Optical SNR OSNR2 = \" , round(OSNR2) , \"dBm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Optical SNR OSNR1 = 28.0 dBm\n",
- "Optical SNR OSNR2 = 22.0 dBm\n"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.9, Page Number: 414"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "G1 = 10**(30/10) #gain(dB)\n",
- "G2 = 10**(20/10)\n",
- "\n",
- "#calculation\n",
- "Fpath1 = (((G1-1)/math.log(G1))**2)/G1 #noise penalty factor for G1\n",
- "fpath_db1=10*math.log10(Fpath1) #noise penalty factor(dB)\n",
- "Fpath2 = (((G2-1)/math.log(G2))**2)/G2 #noise penalty factor for G2\n",
- "fpath_db2=10*math.log10(Fpath2) #noise penalty factor(dB)\n",
- "\n",
- "#result\n",
- "print \"Noise penalty factor for G1 = \",round(fpath_db1,1),\"dB\"\n",
- "print \"Noise penalty factor for G2 = \",round(fpath_db2,1),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Noise penalty factor for G1 = 13.2 dB\n",
- "Noise penalty factor for G2 = 6.6 dB\n"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.10, Page Number: 415"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "etta = 0.65 #quantum efficiency\n",
- "nsp = 2 #population inversion\n",
- "R =50 #load resistance(ohms)\n",
- "Lambda = 1550*10**-9 #oprating wavelength(meters)\n",
- "T = 300 #room temperature(kelvin)\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "C = 3*10**8 #free space velocity(m/s)\n",
- "kB = 1.38*10**-23 #boltzmann's constant \n",
- "V = C/ Lambda #(Hz)\n",
- "q = 1.6*10**-19 #Charge (coulombs)\n",
- "\n",
- "#calculation\n",
- "Ps_in = kB*T*h*V/(R*nsp*(etta**2)*(q**2)) #maxiamum input optical power level(Watt)\n",
- "\n",
- "#result\n",
- "print \"Upper bound input otical power level <\",round(Ps_in*10**6,1),\"uW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Upper bound input otical power level < 490.8 uW\n"
- ]
- }
- ],
- "prompt_number": 11
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter11_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter11_1.ipynb
deleted file mode 100755
index c71b9640..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter11_1.ipynb
+++ /dev/null
@@ -1,416 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:4930bebda7035fefc5221e84cdee44dfb2c772873b238e2ca2714c2de4369a09"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 11: Optical amplifires"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.1, Page Number: 397"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Vg = 2*10**8 #group velocity (m/s)\n",
- "h = 6.625*10**-34 #planks constant (J*s)\n",
- "C = 3*10**8 #free space velocity (m/s)\n",
- "Lam_bda = 1550*10**-9 #operating wave length(nm)\n",
- "V = C/Lam_bda #frequency (Hz)\n",
- "w = 5*10**-6 #width of optical amplifier (meters)\n",
- "d = 0.5*10**-6 #thickness of optical amplifier (meter)\n",
- "Ps = 10**-6 #optical signal of power\n",
- "\n",
- "#calculation\n",
- "Nph = Ps/(Vg*h*V*w*d) #photon density\n",
- "\n",
- "#result\n",
- "print \"The photon density Nph = \" ,round(Nph*1e-16,2),\"e+6 photons/m3\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The photon density Nph = 1.56 e+6 photons/m3\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.2, Page Number: 397"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 11.2(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#varible declaration\n",
- "I = 100.0*10**-3 #bias current (Amps)\n",
- "w = 3.0*10**-6 #active area width (meters)\n",
- "L = 500.0*10**-6 #amplifier lenght (meters)\n",
- "d = 0.3*10**-6 #active area thick ness(meters)\n",
- "q = 1.6*10**-19 #charge (coulombs)\n",
- "Tuo = 0.3 #The confinement factor\n",
- "a = 2*10**-20 #gain coefficient (square meter)\n",
- "J = I/(w*L) #3bias current density (Amp/squre meter)\n",
- "nth = 10**24 #threshold density (per cubic meter)\n",
- "Tuor = 10**-9; #Time constant (seconds)\n",
- "\n",
- "\n",
- "#calculation\n",
- "Rp = I/(q*d*w*L) # The pumping rate((electron/m3)/s)\n",
- "\n",
- "#result\n",
- "print \"The pumping rate Rp = \" , round(Rp*1e-33,2)*10**33,\" (electron/m3)/s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The pumping rate Rp = 1.39e+33 (electron/m3)/s\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 11.2(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#varible declaration\n",
- "I = 100.0*10**-3 #bias current (Amps)\n",
- "w = 3.0*10**-6 #active area width (meters)\n",
- "L = 500.0*10**-6 #amplifier lenght (meters)\n",
- "d = 0.3*10**-6 #active area thick ness(meters)\n",
- "q = 1.6*10**-19 #charge (coulombs)\n",
- "Tuo = 0.3 #The confinement factor\n",
- "a = 2*10**-20 #gain coefficient (square meter)\n",
- "J = I/(w*L) #3bias current density (Amp/squre meter)\n",
- "nth = 10**24 #threshold density (per cubic meter)\n",
- "Tuor = 10**-9; #Time constant (seconds)\n",
- "\n",
- "\n",
- "#calculation\n",
- "Rp=I/(q*d*w*L) #The pumping rate((electron/m3)/s)\n",
- "g0 = Tuo*a*Tuor*(round(Rp*1e-33,2)*10**33-(nth/Tuor)) #The zero singal(1/cm)\n",
- "\n",
- "#result\n",
- "print \"The zero singal g0 = \" ,round(g0),\"1/m =\", round(g0/100,1),\"1/cm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The zero singal g0 = 2340.0 1/m = 23.4 1/cm\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.3, Page Number: 404"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda_p = 980.0*10**-9 #pump wavelength(nm)\n",
- "Lambda_s = 1550.0*10**-9 #signal wavelength(nm)\n",
- "Pp_in = 30.0*10**-3 #input pump power (watts)\n",
- "G = 1.0*10**2 #gain\n",
- "\n",
- "#calculation\n",
- "Ps_in = (Lambda_p/Lambda_s)*Pp_in/(G-1) #maximum input power(W)\n",
- "Ps_out = Ps_in+(Lambda_p/Lambda_s)*Pp_in #maximum output power(W)\n",
- "Ps_out_db = 10*(math.log10(Ps_out*10**3)) #maximum output power(dBm)\n",
- "\n",
- "#result\n",
- "print \"The maximum input power = \" , round(Ps_in*10**6) , \"uW\"\n",
- "print \"The maximum output power = \" , round(Ps_out*10**3,1),\"mW\"\n",
- "print \"The maximum output power = \" , round(Ps_out_db,1),\"dBm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The maximum input power = 192.0 uW\n",
- "The maximum output power = 19.2 mW\n",
- "The maximum output power = 12.8 dBm\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.6, Page Number: 412"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declarion\n",
- "Q = 6 #Q factor of 6\n",
- "\n",
- "#calculation\n",
- "OSNR = 0.5*Q*(Q+math.sqrt(2))\n",
- "OSNR_DB = 10*(math.log10(OSNR)) #The optical signal to noise ratio(dB)\n",
- "\n",
- "#result\n",
- "print \"The optical signal to noise ratio (OSNR) = \" ,round(OSNR,2),\"=\", round(OSNR_DB,1),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The optical signal to noise ratio (OSNR) = 22.24 = 13.5 dB\n"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.7, Page Number: 413"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda_p = 980*10**-9 #pump wavelength (meters)\n",
- "Lambda_s = 1540*10**-9 #signal wavelength (meters)\n",
- "Ps_out = 10*10**-3 #output signal power(mW)\n",
- "Ps_in = 10**-3 #input signal power(mW)\n",
- "\n",
- "#calculation\n",
- "Pp_in = (Lambda_s/Lambda_p)*(Ps_out-Ps_in) #pump power at input(mW)\n",
- "\n",
- "#result\n",
- "print \"Pump power = \" , round(Pp_in*10**3) ,\"mW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Pump power = 14.0 mW\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.8, Page Number: 413"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "P_ASE1 = -22 #ASE level (dBm)\n",
- "P_ASE2 = -16 #ASE level (dBm)\n",
- "Pout = 6 #amplified signal level (dBm)\n",
- "\n",
- "#calculation\n",
- "OSNR1 = Pout-P_ASE1 \n",
- "OSNR2 = Pout-P_ASE2 #The optical signal to noise ratio(dBm)\n",
- "\n",
- "#result\n",
- "print \"Optical SNR OSNR1 = \" , round(OSNR1) , \"dBm\"\n",
- "print \"Optical SNR OSNR2 = \" , round(OSNR2) , \"dBm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Optical SNR OSNR1 = 28.0 dBm\n",
- "Optical SNR OSNR2 = 22.0 dBm\n"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.9, Page Number: 414"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "G1 = 10**(30/10) #gain(dB)\n",
- "G2 = 10**(20/10)\n",
- "\n",
- "#calculation\n",
- "Fpath1 = (((G1-1)/math.log(G1))**2)/G1 #noise penalty factor for G1\n",
- "fpath_db1=10*math.log10(Fpath1) #noise penalty factor(dB)\n",
- "Fpath2 = (((G2-1)/math.log(G2))**2)/G2 #noise penalty factor for G2\n",
- "fpath_db2=10*math.log10(Fpath2) #noise penalty factor(dB)\n",
- "\n",
- "#result\n",
- "print \"Noise penalty factor for G1 = \",round(fpath_db1,1),\"dB\"\n",
- "print \"Noise penalty factor for G2 = \",round(fpath_db2,1),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Noise penalty factor for G1 = 13.2 dB\n",
- "Noise penalty factor for G2 = 6.6 dB\n"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 11.10, Page Number: 415"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "etta = 0.65 #quantum efficiency\n",
- "nsp = 2 #population inversion\n",
- "R =50 #load resistance(ohms)\n",
- "Lambda = 1550*10**-9 #oprating wavelength(meters)\n",
- "T = 300 #room temperature(kelvin)\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "C = 3*10**8 #free space velocity(m/s)\n",
- "kB = 1.38*10**-23 #boltzmann's constant \n",
- "V = C/ Lambda #(Hz)\n",
- "q = 1.6*10**-19 #Charge (coulombs)\n",
- "\n",
- "#calculation\n",
- "Ps_in = kB*T*h*V/(R*nsp*(etta**2)*(q**2)) #maxiamum input optical power level(Watt)\n",
- "\n",
- "#result\n",
- "print \"Upper bound input otical power level <\",round(Ps_in*10**6,1),\"uW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Upper bound input otical power level < 490.8 uW\n"
- ]
- }
- ],
- "prompt_number": 11
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter12.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter12.ipynb
deleted file mode 100755
index 9cb33486..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter12.ipynb
+++ /dev/null
@@ -1,426 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:c3f1cf4a5fa47c6ef9a25eb541b21d8b2dacc1e06513af0b6ceab3905b06fd91"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 12: Nonlinear effects"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.1, Page Number: 432"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "L = 75.0 #amplifier spcaing (kilometer)\n",
- "alpha = 4.61*10**-2 #fiber attenuation (per Km)\n",
- "\n",
- "#calculation\n",
- "Leff = (1-math.exp(-alpha*L))/alpha #effective length(km)\n",
- "\n",
- "#result\n",
- "print \"Effective length of fiber = \" , round(Leff,0) , \"km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Effective length of fiber = 21.0 km\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.2, Page Number: 433"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "delta_VB = 20*10**6 #Brillouin linewidth (Hz)\n",
- "Aeff = 55*10**-12 #effective cross-sectional area of the propagating wave (square meter)\n",
- "Leff = 20*10**03 #effective length(km)\n",
- "b = 2 #polarization factor\n",
- "gB = 4*10**-11 #Brillous gain co-efficient (m/W)\n",
- "delta_Vsource = 40*10**6 #optical source linewidth (Hz)\n",
- "\n",
- "#calculation\n",
- "Pth = 21*(Aeff*b/(gB*Leff))*(1+(delta_Vsource/delta_VB)) #SBS threshold power(W)\n",
- "Ps_out_db = 10*(math.log10(Pth*10**3)) #SBS threshold power(dB)\n",
- "\n",
- "#result\n",
- "print \"SBS threshold power = \" , round(Pth*10**3,1) ,\"mW\"\n",
- "print \"SBS threshold power = \" , round(Ps_out_db,1) ,\"dBm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "SBS threshold power = 8.7 mW\n",
- "SBS threshold power = 9.4 dBm\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.3, Page Number: 438"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "sus_P=6*10**-15 #Third order nonliner suseptibility (m^3/Ws)\n",
- "D = 3 #degenereting factor\n",
- "Leff = 22*10**03 #effective length (meters)\n",
- "Aeff = 6.4*10**-11 #effective cross-sectional area of the fiber (m^2)\n",
- "etta = 0.05 #quantum efficiency\n",
- "Lambda = 1540*10**-9 #Wavelength in single mode fibers (meters)\n",
- "C = 3*10**8 #free space velocity (m/s)\n",
- "alpha = 0.0461 #attenuation (per Km)\n",
- "L = 75 #fiberlink length (Km)\n",
- "P = 10**-3 #each channel input power of 1 mW\n",
- "n = 1.48 #refractive index\n",
- "\n",
- "#calculation\n",
- "k = ((32*(math.pi**3)*sus_P)/((n**2)*Lambda*C))*(Leff/Aeff) #nonlinear interaction constant\n",
- "P112 = etta*(D**2)*(k**2)*(P**3)*(math.exp(-alpha*L)) #power genreted(W)\n",
- "\n",
- "#result\n",
- "print \"Power genreted due to intrection of signals at different freqencies = \" , round(P112*10**11,2)*10**-8 , \"mW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power genreted due to intrection of signals at different freqencies = 5.8e-08 mW\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.4, Page Number: 446"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration \n",
- "Ts1 = 15*10**-12 #FWHM soliton pulse width\n",
- "Ts2 = 50*10**-12\n",
- "\n",
- "#calculation\n",
- "To1 = Ts1/1.7627 #normalized time(sec)\n",
- "To2 = Ts2/1.7627\n",
- "\n",
- "#result\n",
- "print \"Normalized time for FWHM soliton pulse = \" , round(To1*10**12) , \"-\" , round(To2*10**12+2) , \"ps\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Normalized time for FWHM soliton pulse = 9.0 - 30.0 ps\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.5, Page Number: 446"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Ts = 20*10**-12 #FWHM soliton pulse width (sec) \n",
- "D = 0.5*10**-6 #dispersion of the fiber (ps/(nm*km))\n",
- "Lambda = 1550*10**-9 #wavelength (meter)\n",
- "C = 3*10**8 #free space velocity (m/s)\n",
- "\n",
- "#calculation\n",
- "Ldisp = 0.322*2*math.pi*C*(Ts**2)/((Lambda**2)*D) #dispersion length(Km)\n",
- "\n",
- "#result\n",
- "print \"Dispersion length = \" , round(Ldisp/1000) , \"Km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Dispersion length = 202.0 Km\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.6, Page Number: 447"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda = 1550*10**-9 #wavelength (meters)\n",
- "n2 = 2.6*10**-20 #power (square m/w)\n",
- "Aeff = 50*10**-12 #effective area (m^2)\n",
- "Ldisp = 202*10**3 #dispersion length (meters)\n",
- "\n",
- "#calculation\n",
- "Ppeak = (Aeff/(2*math.pi*n2))*(Lambda/Ldisp) #soliton of peak power()\n",
- "\n",
- "#result\n",
- "print \"Soliton of peak power = \" , round(Ppeak*1000,2) , \"mW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Soliton of peak power = 2.35 mW\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.7, Page Number: 448"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 12.7(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Ldisp = 100*10**03 #disperison length in m\n",
- "omega = 4682 #oscillation period\n",
- "\n",
- "#calculation\n",
- "LI = omega*Ldisp #interaction distance(km)\n",
- "\n",
- "#result\n",
- "print \"Interaction distance >= \" , round(LI*10**-5/1000,1) , \"e+05 km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Interaction distance >= 4.7 e+05 km\n"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 12.7(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "D = 0.5*10**-6 #disperison of fiber (ps/nm.km)\n",
- "C = 3*10**8 #free space velocity(m/s)\n",
- "S0 = 8 #normalized separation of neighnoring solitons\n",
- "B = 10*10**9 #data rate (10Gb/sec)\n",
- "Lambda = 1550*10**-9 #wavelength (m)\n",
- "\n",
- "#calculation\n",
- "Beta2 = (Lambda/(2*math.pi));\n",
- "LT = (C*math.exp(S0))/(16*D*B**2*(Beta2**2)*(S0**2)) #Total transmission distance(km)\n",
- "\n",
- "#result\n",
- "print \"Total transmission distance in km << \" , round(LT/10000),\"km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Total transmission distance in km << 28701.0 km\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 12.7(c), Page Number: 449"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "S0 = 8 #normalized separation of neighnoring solitons\n",
- "B = 10*10**9 #data rate (10Gb/sec)\n",
- "\n",
- "#calculation\n",
- "Ts = 0.881/(S0*B) #FHWM soliton pulse width\n",
- "\n",
- "#result\n",
- "print \"FWHM soliton pulse width = \" , round(Ts*1000*10**9),\"ps\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "FWHM soliton pulse width = 11.0 ps\n"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 12.7(d), Page Number: 449"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "S0 = 8 #normalized separation of neighnoring solitons\n",
- "\n",
- "#calculation \n",
- "Ts_TB = 0.881/S0 #fraction of bit slot occupied by a soliton\n",
- "\n",
- "#result\n",
- "print \"Fraction of bit slot occupied by a soliton in % = \" , round(Ts_TB*100),\"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Fraction of bit slot occupied by a soliton in % = 11.0 %\n"
- ]
- }
- ],
- "prompt_number": 10
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter12_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter12_1.ipynb
deleted file mode 100755
index 9cb33486..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter12_1.ipynb
+++ /dev/null
@@ -1,426 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:c3f1cf4a5fa47c6ef9a25eb541b21d8b2dacc1e06513af0b6ceab3905b06fd91"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 12: Nonlinear effects"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.1, Page Number: 432"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "L = 75.0 #amplifier spcaing (kilometer)\n",
- "alpha = 4.61*10**-2 #fiber attenuation (per Km)\n",
- "\n",
- "#calculation\n",
- "Leff = (1-math.exp(-alpha*L))/alpha #effective length(km)\n",
- "\n",
- "#result\n",
- "print \"Effective length of fiber = \" , round(Leff,0) , \"km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Effective length of fiber = 21.0 km\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.2, Page Number: 433"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "delta_VB = 20*10**6 #Brillouin linewidth (Hz)\n",
- "Aeff = 55*10**-12 #effective cross-sectional area of the propagating wave (square meter)\n",
- "Leff = 20*10**03 #effective length(km)\n",
- "b = 2 #polarization factor\n",
- "gB = 4*10**-11 #Brillous gain co-efficient (m/W)\n",
- "delta_Vsource = 40*10**6 #optical source linewidth (Hz)\n",
- "\n",
- "#calculation\n",
- "Pth = 21*(Aeff*b/(gB*Leff))*(1+(delta_Vsource/delta_VB)) #SBS threshold power(W)\n",
- "Ps_out_db = 10*(math.log10(Pth*10**3)) #SBS threshold power(dB)\n",
- "\n",
- "#result\n",
- "print \"SBS threshold power = \" , round(Pth*10**3,1) ,\"mW\"\n",
- "print \"SBS threshold power = \" , round(Ps_out_db,1) ,\"dBm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "SBS threshold power = 8.7 mW\n",
- "SBS threshold power = 9.4 dBm\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.3, Page Number: 438"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "sus_P=6*10**-15 #Third order nonliner suseptibility (m^3/Ws)\n",
- "D = 3 #degenereting factor\n",
- "Leff = 22*10**03 #effective length (meters)\n",
- "Aeff = 6.4*10**-11 #effective cross-sectional area of the fiber (m^2)\n",
- "etta = 0.05 #quantum efficiency\n",
- "Lambda = 1540*10**-9 #Wavelength in single mode fibers (meters)\n",
- "C = 3*10**8 #free space velocity (m/s)\n",
- "alpha = 0.0461 #attenuation (per Km)\n",
- "L = 75 #fiberlink length (Km)\n",
- "P = 10**-3 #each channel input power of 1 mW\n",
- "n = 1.48 #refractive index\n",
- "\n",
- "#calculation\n",
- "k = ((32*(math.pi**3)*sus_P)/((n**2)*Lambda*C))*(Leff/Aeff) #nonlinear interaction constant\n",
- "P112 = etta*(D**2)*(k**2)*(P**3)*(math.exp(-alpha*L)) #power genreted(W)\n",
- "\n",
- "#result\n",
- "print \"Power genreted due to intrection of signals at different freqencies = \" , round(P112*10**11,2)*10**-8 , \"mW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power genreted due to intrection of signals at different freqencies = 5.8e-08 mW\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.4, Page Number: 446"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration \n",
- "Ts1 = 15*10**-12 #FWHM soliton pulse width\n",
- "Ts2 = 50*10**-12\n",
- "\n",
- "#calculation\n",
- "To1 = Ts1/1.7627 #normalized time(sec)\n",
- "To2 = Ts2/1.7627\n",
- "\n",
- "#result\n",
- "print \"Normalized time for FWHM soliton pulse = \" , round(To1*10**12) , \"-\" , round(To2*10**12+2) , \"ps\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Normalized time for FWHM soliton pulse = 9.0 - 30.0 ps\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.5, Page Number: 446"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Ts = 20*10**-12 #FWHM soliton pulse width (sec) \n",
- "D = 0.5*10**-6 #dispersion of the fiber (ps/(nm*km))\n",
- "Lambda = 1550*10**-9 #wavelength (meter)\n",
- "C = 3*10**8 #free space velocity (m/s)\n",
- "\n",
- "#calculation\n",
- "Ldisp = 0.322*2*math.pi*C*(Ts**2)/((Lambda**2)*D) #dispersion length(Km)\n",
- "\n",
- "#result\n",
- "print \"Dispersion length = \" , round(Ldisp/1000) , \"Km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Dispersion length = 202.0 Km\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.6, Page Number: 447"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda = 1550*10**-9 #wavelength (meters)\n",
- "n2 = 2.6*10**-20 #power (square m/w)\n",
- "Aeff = 50*10**-12 #effective area (m^2)\n",
- "Ldisp = 202*10**3 #dispersion length (meters)\n",
- "\n",
- "#calculation\n",
- "Ppeak = (Aeff/(2*math.pi*n2))*(Lambda/Ldisp) #soliton of peak power()\n",
- "\n",
- "#result\n",
- "print \"Soliton of peak power = \" , round(Ppeak*1000,2) , \"mW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Soliton of peak power = 2.35 mW\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 12.7, Page Number: 448"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 12.7(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Ldisp = 100*10**03 #disperison length in m\n",
- "omega = 4682 #oscillation period\n",
- "\n",
- "#calculation\n",
- "LI = omega*Ldisp #interaction distance(km)\n",
- "\n",
- "#result\n",
- "print \"Interaction distance >= \" , round(LI*10**-5/1000,1) , \"e+05 km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Interaction distance >= 4.7 e+05 km\n"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 12.7(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "D = 0.5*10**-6 #disperison of fiber (ps/nm.km)\n",
- "C = 3*10**8 #free space velocity(m/s)\n",
- "S0 = 8 #normalized separation of neighnoring solitons\n",
- "B = 10*10**9 #data rate (10Gb/sec)\n",
- "Lambda = 1550*10**-9 #wavelength (m)\n",
- "\n",
- "#calculation\n",
- "Beta2 = (Lambda/(2*math.pi));\n",
- "LT = (C*math.exp(S0))/(16*D*B**2*(Beta2**2)*(S0**2)) #Total transmission distance(km)\n",
- "\n",
- "#result\n",
- "print \"Total transmission distance in km << \" , round(LT/10000),\"km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Total transmission distance in km << 28701.0 km\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 12.7(c), Page Number: 449"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "S0 = 8 #normalized separation of neighnoring solitons\n",
- "B = 10*10**9 #data rate (10Gb/sec)\n",
- "\n",
- "#calculation\n",
- "Ts = 0.881/(S0*B) #FHWM soliton pulse width\n",
- "\n",
- "#result\n",
- "print \"FWHM soliton pulse width = \" , round(Ts*1000*10**9),\"ps\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "FWHM soliton pulse width = 11.0 ps\n"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 12.7(d), Page Number: 449"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "S0 = 8 #normalized separation of neighnoring solitons\n",
- "\n",
- "#calculation \n",
- "Ts_TB = 0.881/S0 #fraction of bit slot occupied by a soliton\n",
- "\n",
- "#result\n",
- "print \"Fraction of bit slot occupied by a soliton in % = \" , round(Ts_TB*100),\"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Fraction of bit slot occupied by a soliton in % = 11.0 %\n"
- ]
- }
- ],
- "prompt_number": 10
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter13.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter13.ipynb
deleted file mode 100755
index a4e60fb6..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter13.ipynb
+++ /dev/null
@@ -1,288 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:c6afe886b35f839c6b21d9b923636eae669b57d891ae4e8ca4f9a2a2af74f6ba"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 13: Optical networks"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.1, Page Number: 464"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import numpy as np\n",
- "\n",
- "#variable declaration\n",
- "N=np.array([5,10,50]) #number of station\n",
- "alpha = 0.4 #attanuation (dB/km)\n",
- "L_tap = 10 #coupling loss (dB)\n",
- "L_thru = 0.9 #coupler throughput(dB)\n",
- "Li = 0.5 #intrinsic coupler loss(dB)\n",
- "Lc = 1.0 #coupler to fiber loss(dB)\n",
- "L = 0.5 #link length(km)\n",
- "\n",
- "#calculation\n",
- "fiber_Loss = alpha *L #fiber loss(dB)\n",
- "Pbudget = N*(alpha*L+2*Lc+Li+ L_thru)-alpha*L-2*L_thru +2* L_tap #power budget(dB)\n",
- "\n",
- "#result\n",
- "print \"Fiber loss at 500m =\",fiber_Loss,\"dB\"\n",
- "print \"Power budget of three stations 5, 10, 50 respectively = \",Pbudget[0],\"dB\",Pbudget[1],\"dB\",Pbudget[2],\"dB\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Fiber loss at 500m = 0.2 dB\n",
- "Power budget of three stations 5, 10, 50 respectively = 36.0 dB 54.0 dB 198.0 dB\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.2, Page Number: 465"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "%pylab inline"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Populating the interactive namespace from numpy and matplotlib\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import pylab\n",
- "\n",
- "#variable declaration\n",
- "alpha = 0.4 #attanuation (dB/km)\n",
- "L_tap = 10 #coupling loss (dB)\n",
- "L_thru = 0.9 #coupler throughput(dB)\n",
- "Li = 0.5 #intrinsic coupler loss(dB)\n",
- "Lc = 1.0 #coupler to fiber loss(dB)\n",
- "L = 0.5 #link length(km)\n",
- "Pbudget_LED = 38 #power loss of LED\n",
- "Pbudget_LASER = 51 #power loss of LASER\n",
- "\n",
- "#calculation\n",
- "N_LED = (Pbudget_LED + alpha*L-2*L_thru-2*L_tap)/(alpha*L+2*Lc+Li+L_thru)\n",
- "N_LASER = (Pbudget_LASER + alpha*L-2*L_thru-2*L_tap)/(alpha*L+2*Lc+Li+L_thru)\n",
- "\n",
- "#result\n",
- "print \"Number of stations allowed for given loss of 38 dB with LED source =\",round(N_LED,0)\n",
- "print \"Number of stations allowed for given loss of 51 dB with LASER source =\",round(N_LASER,0)\n",
- "\n",
- "#plot\n",
- "x1=arange(0.0, 50.0, 10.0)\n",
- "Pbudget1 = x1*(alpha*L+2*Lc+Li+ L_thru)-alpha*L-2*L_thru +2* L_tap\n",
- "plot(x1,Pbudget1)\n",
- "title('Plot of total power loss as a function of number attached station for linear bus')\n",
- "ylabel('Power loss between station 1 and N(dB)')\n",
- "xlabel('Number of stations')\n",
- "text(30,120,'Linear bus')"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Number of stations allowed for given loss of 38 dB with LED source = 5.0\n",
- "Number of stations allowed for given loss of 51 dB with LASER source = 8.0\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 9,
- "text": [
- "<matplotlib.text.Text at 0xbbc4358>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\nJRpPW+PSytfODaeW6OtacZShxPw6MLHG3yOkEafMzDpt1qx0DXnrraF/f3j66TTdlpTrGTFiBOed\ndx4ALS0tDBs2jB133JEtttiCe++9F4C5c+fyne98hyFDhrDNNtswenSq3HvnnXfYZ5992H777dl6\n6625+eabAZg6dSpbbLEFRx11FIMGDeKll15a5HXPOecctt56a3bccUeee+45AI4++miuv/76+cus\nvPLKALz88svsvvvuDB48mEGDBs2Py8qhDIn5b0BLRGxa/QfMaG9FSZdKmiHp8Yp5P5P0pKTHJN0g\nabWK54ZLekbSU5L2W3JvycyapbIv8syZqS/yqFGN90WWNL80K4m5c+fy0EMPcf7553PWWWcBcMkl\nl9C/f38mTJjAhAkTuPjii5k6dSorrLACN954IxMnTuRPf/oTp5xyyvztPvvss3zta1/jiSeeYMMN\nN1zkdfv378+kSZP4+te/zre+9a35r18dG8BVV13F0KFDefTRR5k0aRLbbrttp/eTNU8ZEvP5wOp1\nnvtZB+vWum3n7cDHImIbYAowHEDSVsBhwFZ5nYsklWH/mFkD5syB0aNTQn744TQu8ujRsMEGi7fd\nf//3fwdgu+22Y+rUqQDcfvvtXHHFFQwePJiddtqJmTNn8uyzzxIRDB8+nG222YZ9992X6dOn8+qr\nrwKw8cYbM6Sdvlif//znATj88MN54IEH2o1pyJAhXHbZZZx11llMmjRpfknayqHw15gj4sJ2nvvv\nDtYdL2mTqnl3VEw+xIK7hx0EjI2IOcBUSc8CQ4AHuxC2mRVEZV/kDTaAG2+ET3yi+7a/3HLLAdCv\nXz8++OCD+fMvvPBC9t1334WWHTNmDK+//jp//vOf6devH5tuuinvvvsuACuttFLDr9lWMl566aWZ\nN28eAPPmzeP9998HYLfddmP8+PHceuutHH300Zx88skceeSRXX+T1qP6eonwWOD/8uP1gcoLOy8B\nA3o8IjPrNnfemZLwyJFw4YULphdXRw2xPvWpT3HRRRfNT9RTpkxh9uzZvP3226y99tr069ePcePG\n8fe//73h17vmmmsAuOaaa9h5552B1Fp74sSJANx8883MmTMHgBdeeIG11lqL448/nuOPP55HH320\nS+/TmqPwJeYlRdLpwPsRcVU7i9X89o0YMWL+45aWFlpaWro1NjNbPJV9kX/849T9qSt9kWfPnr3Q\n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\n",
- "text": [
- "<matplotlib.figure.Figure at 0xb94d4a8>"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.3, Page Number: 465"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import numpy as np\n",
- "\n",
- "#variable declaration\n",
- "N=np.array([5,10]) #number of station\n",
- "alpha = 0.4 #attanuation (dB/km)\n",
- "L_thru = 0.9 #coupler throughput(dB)\n",
- "Li = 0.5 #intrinsic coupler loss(dB)\n",
- "Lc = 1.0 #coupler to fiber loss(dB)\n",
- "L = 0.5 #link length(km)\n",
- "\n",
- "#calculation\n",
- "DR = (N-2)*(alpha*L+2*Lc+Li+L_thru) #dynamic range(dB)\n",
- "\n",
- "#result\n",
- "print \"Dynamic range for number of station 5 = \",DR[0],\"dB\"\n",
- "print \"Dynamic range for number of station 10 = \",DR[1],\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Dynamic range for number of station 5 = 10.8 dB\n",
- "Dynamic range for number of station 10 = 28.8 dB\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.4, Page Number: 466"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "N1=10 #number of station\n",
- "N2=50 #number of station\n",
- "alpha = 0.4 #attanuation (dB/km)\n",
- "L = 0.5 #link length(km)\n",
- "Lc = 1.0 #coupler to fiber loss(dB)\n",
- "Lexcess1 = 0.75 #excess loss for 10 station\n",
- "Lexcess2 = 1.25 #excess loss for 50 station\n",
- "\n",
- "#calculation\n",
- "Ps_Pr1 = Lexcess1+alpha*2*L+2*Lc+10*math.log10(N1) #power margin for 10 station(dB)\n",
- "Ps_Pr2 = Lexcess2+alpha*2*L+2*Lc+10*math.log10(N2) #power margin for 50 station(dB)\n",
- "\n",
- "#result\n",
- "print \"Power margin between transmitter and receiver for 10 station =\",round(Ps_Pr1,1),\"dB\"\n",
- "print \"Power margin between transmitter and receiver for 50 station =\",round(Ps_Pr2,1),\"dB\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power margin between transmitter and receiver for 10 station = 13.2 dB\n",
- "Power margin between transmitter and receiver for 50 station = 20.6 dB\n"
- ]
- }
- ],
- "prompt_number": 14
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.5, Page Number: 477"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "L_OM2 = 40 #Length of OM2 fiber(meter)\n",
- "L_OM3 = 100 #Length of OM3 fiber(meter)\n",
- "BW_OM2 = 500*10**6 #bandwidth of OM2 fiber(MHz)\n",
- "BW_OM3 = 2000*10**6 #bandwidth of OM3 fiber(MHz)\n",
- "\n",
- "#calculation\n",
- "Lmax = L_OM2*(BW_OM3/BW_OM2)+L_OM3 #Maximum link length(meter)\n",
- "\n",
- "#result\n",
- "print \"Maximum link length = \",Lmax,\"m\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Maximum link length = 260 m\n"
- ]
- }
- ],
- "prompt_number": 15
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter13_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter13_1.ipynb
deleted file mode 100755
index 92a1e261..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter13_1.ipynb
+++ /dev/null
@@ -1,274 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:a2081322aeeec1f784d913a531d652947d3374639d5b34917181cf0739e34394"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 13: Optical networks"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.1, Page Number: 464"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import numpy as np\n",
- "\n",
- "#variable declaration\n",
- "N=np.array([5,10,50]) #number of station\n",
- "alpha = 0.4 #attanuation (dB/km)\n",
- "L_tap = 10 #coupling loss (dB)\n",
- "L_thru = 0.9 #coupler throughput(dB)\n",
- "Li = 0.5 #intrinsic coupler loss(dB)\n",
- "Lc = 1.0 #coupler to fiber loss(dB)\n",
- "L = 0.5 #link length(km)\n",
- "\n",
- "#calculation\n",
- "fiber_Loss = alpha *L #fiber loss(dB)\n",
- "Pbudget = N*(alpha*L+2*Lc+Li+ L_thru)-alpha*L-2*L_thru +2* L_tap #power budget(dB)\n",
- "\n",
- "#result\n",
- "print \"Fiber loss at 500m =\",fiber_Loss,\"dB\"\n",
- "print \"Power budget of three stations 5, 10, 50 respectively = \",Pbudget[0],\"dB\",Pbudget[1],\"dB\",Pbudget[2],\"dB\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Fiber loss at 500m = 0.2 dB\n",
- "Power budget of three stations 5, 10, 50 respectively = 36.0 dB 54.0 dB 198.0 dB\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.2, Page Number: 465"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import scipy as sp\n",
- "from scipy import special\n",
- "\n",
- "%matplotlib inline\n",
- "\n",
- "#variable declaration\n",
- "alpha = 0.4 #attanuation (dB/km)\n",
- "L_tap = 10 #coupling loss (dB)\n",
- "L_thru = 0.9 #coupler throughput(dB)\n",
- "Li = 0.5 #intrinsic coupler loss(dB)\n",
- "Lc = 1.0 #coupler to fiber loss(dB)\n",
- "L = 0.5 #link length(km)\n",
- "Pbudget_LED = 38 #power loss of LED\n",
- "Pbudget_LASER = 51 #power loss of LASER\n",
- "\n",
- "#calculation\n",
- "N_LED = (Pbudget_LED + alpha*L-2*L_thru-2*L_tap)/(alpha*L+2*Lc+Li+L_thru)\n",
- "N_LASER = (Pbudget_LASER + alpha*L-2*L_thru-2*L_tap)/(alpha*L+2*Lc+Li+L_thru)\n",
- "\n",
- "#result\n",
- "print \"Number of stations allowed for given loss of 38 dB with LED source =\",round(N_LED,0)\n",
- "print \"Number of stations allowed for given loss of 51 dB with LASER source =\",round(N_LASER,0)\n",
- "\n",
- "#plot\n",
- "x1=arange(0.0, 50.0, 10.0)\n",
- "Pbudget1 = x1*(alpha*L+2*Lc+Li+ L_thru)-alpha*L-2*L_thru +2* L_tap\n",
- "plot(x1,Pbudget1)\n",
- "title('Plot of total power loss as a function of number attached station for linear bus')\n",
- "ylabel('Power loss between station 1 and N(dB)')\n",
- "xlabel('Number of stations')\n",
- "text(30,120,'Linear bus')"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Number of stations allowed for given loss of 38 dB with LED source = 5.0\n",
- "Number of stations allowed for given loss of 51 dB with LASER source = 8.0\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 4,
- "text": [
- "<matplotlib.text.Text at 0xa859828>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\nJRpPW+PSytfODaeW6OtacZShxPw6MLHG3yOkEafMzDpt1qx0DXnrraF/f3j66TTdlpTrGTFiBOed\ndx4ALS0tDBs2jB133JEtttiCe++9F4C5c+fyne98hyFDhrDNNtswenSq3HvnnXfYZ5992H777dl6\n6625+eabAZg6dSpbbLEFRx11FIMGDeKll15a5HXPOecctt56a3bccUeee+45AI4++miuv/76+cus\nvPLKALz88svsvvvuDB48mEGDBs2Py8qhDIn5b0BLRGxa/QfMaG9FSZdKmiHp8Yp5P5P0pKTHJN0g\nabWK54ZLekbSU5L2W3JvycyapbIv8syZqS/yqFGN90WWNL80K4m5c+fy0EMPcf7553PWWWcBcMkl\nl9C/f38mTJjAhAkTuPjii5k6dSorrLACN954IxMnTuRPf/oTp5xyyvztPvvss3zta1/jiSeeYMMN\nN1zkdfv378+kSZP4+te/zre+9a35r18dG8BVV13F0KFDefTRR5k0aRLbbrttp/eTNU8ZEvP5wOp1\nnvtZB+vWum3n7cDHImIbYAowHEDSVsBhwFZ5nYsklWH/mFkD5syB0aNTQn744TQu8ujRsMEGi7fd\nf//3fwdgu+22Y+rUqQDcfvvtXHHFFQwePJiddtqJmTNn8uyzzxIRDB8+nG222YZ9992X6dOn8+qr\nrwKw8cYbM6Sdvlif//znATj88MN54IEH2o1pyJAhXHbZZZx11llMmjRpfknayqHw15gj4sJ2nvvv\nDtYdL2mTqnl3VEw+xIK7hx0EjI2IOcBUSc8CQ4AHuxC2mRVEZV/kDTaAG2+ET3yi+7a/3HLLAdCv\nXz8++OCD+fMvvPBC9t1334WWHTNmDK+//jp//vOf6devH5tuuinvvvsuACuttFLDr9lWMl566aWZ\nN28eAPPmzeP9998HYLfddmP8+PHceuutHH300Zx88skceeSRXX+T1qP6eonwWOD/8uP1gcoLOy8B\nA3o8IjPrNnfemZLwyJFw4YULphdXRw2xPvWpT3HRRRfNT9RTpkxh9uzZvP3226y99tr069ePcePG\n8fe//73h17vmmmsAuOaaa9h5552B1Fp74sSJANx8883MmTMHgBdeeIG11lqL448/nuOPP55HH320\nS+/TmqPwJeYlRdLpwPsRcVU7i9X89o0YMWL+45aWFlpaWro1NjNbPJV9kX/849T9qSt9kWfPnr3Q\n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\n",
- "text": [
- "<matplotlib.figure.Figure at 0xa4215f8>"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.3, Page Number: 465"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import numpy as np\n",
- "\n",
- "#variable declaration\n",
- "N=np.array([5,10]) #number of station\n",
- "alpha = 0.4 #attanuation (dB/km)\n",
- "L_thru = 0.9 #coupler throughput(dB)\n",
- "Li = 0.5 #intrinsic coupler loss(dB)\n",
- "Lc = 1.0 #coupler to fiber loss(dB)\n",
- "L = 0.5 #link length(km)\n",
- "\n",
- "#calculation\n",
- "DR = (N-2)*(alpha*L+2*Lc+Li+L_thru) #dynamic range(dB)\n",
- "\n",
- "#result\n",
- "print \"Dynamic range for number of station 5 = \",DR[0],\"dB\"\n",
- "print \"Dynamic range for number of station 10 = \",DR[1],\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Dynamic range for number of station 5 = 10.8 dB\n",
- "Dynamic range for number of station 10 = 28.8 dB\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.4, Page Number: 466"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "N1=10 #number of station\n",
- "N2=50 #number of station\n",
- "alpha = 0.4 #attanuation (dB/km)\n",
- "L = 0.5 #link length(km)\n",
- "Lc = 1.0 #coupler to fiber loss(dB)\n",
- "Lexcess1 = 0.75 #excess loss for 10 station\n",
- "Lexcess2 = 1.25 #excess loss for 50 station\n",
- "\n",
- "#calculation\n",
- "Ps_Pr1 = Lexcess1+alpha*2*L+2*Lc+10*math.log10(N1) #power margin for 10 station(dB)\n",
- "Ps_Pr2 = Lexcess2+alpha*2*L+2*Lc+10*math.log10(N2) #power margin for 50 station(dB)\n",
- "\n",
- "#result\n",
- "print \"Power margin between transmitter and receiver for 10 station =\",round(Ps_Pr1,1),\"dB\"\n",
- "print \"Power margin between transmitter and receiver for 50 station =\",round(Ps_Pr2,1),\"dB\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power margin between transmitter and receiver for 10 station = 13.2 dB\n",
- "Power margin between transmitter and receiver for 50 station = 20.6 dB\n"
- ]
- }
- ],
- "prompt_number": 14
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 13.5, Page Number: 477"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "L_OM2 = 40 #Length of OM2 fiber(meter)\n",
- "L_OM3 = 100 #Length of OM3 fiber(meter)\n",
- "BW_OM2 = 500*10**6 #bandwidth of OM2 fiber(MHz)\n",
- "BW_OM3 = 2000*10**6 #bandwidth of OM3 fiber(MHz)\n",
- "\n",
- "#calculation\n",
- "Lmax = L_OM2*(BW_OM3/BW_OM2)+L_OM3 #Maximum link length(meter)\n",
- "\n",
- "#result\n",
- "print \"Maximum link length = \",Lmax,\"m\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Maximum link length = 260 m\n"
- ]
- }
- ],
- "prompt_number": 15
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter1_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter1_1.ipynb
deleted file mode 100755
index 668d3a3b..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter1_1.ipynb
+++ /dev/null
@@ -1,251 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:f6057f567522f2ec05cc49c207f47842aee03556e2aab087a974cae3593d6b0b"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 1: Overview of optical fiber communication"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.1, Page Number: 8"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "f1 = 100*1e3 #frequency1 = 100KHz\n",
- "f2 = 1e9 #frequency2 = 1GHz\n",
- "T1 = 1.0/f1 #Time period1 = 0.01ms\n",
- "T2 = 1.0/f2 #Time period2 = 1 ns\n",
- "\n",
- "#calculation\n",
- "phi = (0.25)*360.0 # Phase shift(degree)\n",
- "\n",
- "#result\n",
- "print \"Phase shift = \",round(phi),\"Degree\",\"= \",round((round(phi)*math.pi)/180,4), \"radian\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Phase shift = 90.0 Degree = 1.5708 radian\n"
- ]
- }
- ],
- "prompt_number": 24
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.2, Page Number: 10"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "flow=10*1e3 #Lowest frequency(KHz)\n",
- "fhigh=100*1e3 #Highest frequency(KHz)\n",
- "\n",
- "#calculation\n",
- "bandwidth=fhigh-flow #bandwidth(KHz)\n",
- "\n",
- "#result\n",
- "print \"Bandwidth=\",bandwidth/1000 ,\"KHz\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bandwidth= 90.0 KHz\n"
- ]
- }
- ],
- "prompt_number": 25
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.4, Page Number: 12"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "B = 10*1e6 # Bandwidth of noisy channel 1MHZ\n",
- "S_N = 1 # signal to noise ratio is 1\n",
- "\n",
- "#calculation\n",
- "C=B*(math.log(1+S_N)/math.log(2)) #capacity of channel(Mb/s)\n",
- "\n",
- "#result\n",
- "print \"Capacity of channel =\",C/(10*1e6),\"Mb/s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Capacity of channel = 1.0 Mb/s\n"
- ]
- }
- ],
- "prompt_number": 26
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.5, Page Number: 12"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "fLow = 3*1e6 #low frequency = 3MHz\n",
- "fHigh = 4*1e6 #high frequency = 4MHz\n",
- "SNR_dB = 20 #signal to noise ratio 20 dB\n",
- "\n",
- "#calculation\n",
- "B = fHigh-fLow #Bandwidth(MHz)\n",
- "S_N = 10**(SNR_dB/10) #signal to noise ratio\n",
- "C = B*(math.log(1+S_N)/math.log(2)) #capacity of channel(Mb/s)\n",
- "\n",
- "#result\n",
- "print \"Capacity of channel=\",round(C/(1e6),1),\"Mb/s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Capacity of channel= 6.7 Mb/s\n"
- ]
- }
- ],
- "prompt_number": 27
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.6, Page Number: 14"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "P1 = 1 # Let p1 be 1 watt\n",
- "P2 = P1*0.5 # P2 is half of p1 so 1/2\n",
- "\n",
- "#calculation\n",
- "Atten_dB = 10*(math.log(P2/P1)/math.log(10)) #attenuation or loss of power(dB)\n",
- "\n",
- "#result\n",
- "print \"Attenuation loss =\",round(Atten_dB,0), \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Attenuation loss = -3.0 dB\n"
- ]
- }
- ],
- "prompt_number": 28
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 1.7, Page Number: 14"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable Declaration\n",
- "Loss_line1 = -9 #attenuation of signal between point 1 to 2 = 9 dB\n",
- "Amp_gain2 = 14 #Amplification of signal between point 2 to 3 = 14 dB\n",
- "Loss_line3 = -3 #attenuation of signal between point 3 to 4 = 3 dB\n",
- "\n",
- "#calculation\n",
- "dB_at_line4 = Loss_line1+Amp_gain2+Loss_line3 #power gain(dB)\n",
- "\n",
- "#result\n",
- "print \"Power gain for a signal travelling from point1 to another point4 = \",dB_at_line4, \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power gain for a signal travelling from point1 to another point4 = 2 dB\n"
- ]
- }
- ],
- "prompt_number": 29
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter2.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter2.ipynb
deleted file mode 100755
index 5cd59824..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter2.ipynb
+++ /dev/null
@@ -1,231 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:161f2af28057c1d070e2d9170a764b41538f5b5faa1a2af8f60c6674471beb1e"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 2: Optical fibers: Structures, Waveguiding, and Fabrication"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.1, Page Number: 37"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n1 = 1.48 #core refractive index for glass n1\n",
- "n2 = 1.00 #core refractive index for air n2\n",
- "\n",
- "#calculation\n",
- "phic = math.asin(n2/n1) #Interflaction reflaction angle(degree)\n",
- "\n",
- "#result\n",
- "print \"Total Interflaction reflaction angle = \",round(phic*57.3,1),\"degree\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Total Interflaction reflaction angle = 42.5 degree\n"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.2, Page Number: 45"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n1=1.48 #core refractive index\n",
- "n2=1.46 #cladding refractive index\n",
- "\n",
- "#calculation\n",
- "phiC=math.degrees(math.asin(n2/n1)) #critical angle (degree)\n",
- "NA=math.sqrt((n1*n1)-(n2*n2)) #numerical apperture\n",
- "phiO=math.degrees(math.asin(NA)) #maximum entrance angle (degree)\n",
- "\n",
- "#result\n",
- "print \"Critical angle =\" ,round(phiC,1),\"degree\"\n",
- "print \"Numerical apperture =\" ,round(NA,3)\n",
- "print \"Acceptance angle =\" ,int(phiO),\"degree\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Critical angle = 80.6 degree\n",
- "Numerical apperture = 0.242\n",
- "Acceptance angle = 14 degree\n"
- ]
- }
- ],
- "prompt_number": 11
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.3 , Page Number: 58"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "V=26.6 #normalized frequency\n",
- "lamda=1300*1e-9 #wavelength(nm)\n",
- "a=25*1e-6 #core radius(um)\n",
- "\n",
- "\n",
- "#caculation\n",
- "NA=(V*lamda)/(2*math.pi*a) #numerical aperture\n",
- "\n",
- "#result\n",
- "print \"Numerical aperture =\",round(NA,2)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Numerical aperture = 0.22\n"
- ]
- }
- ],
- "prompt_number": 12
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.4 , Page Number: 62"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math \n",
- " \n",
- "#variable declaration\n",
- "V2 = 22 #normalized frequency2\n",
- "V1=39 #normalized frequency1\n",
- "p=1.4 \n",
- "\n",
- "#calculation\n",
- "M1=(V1**2)/2 #modes in fiber1\n",
- "M2=V2**2/2 #modes in fiber2\n",
- "Pcladd_P1 = (4/3)*(M1**(-0.5))*p\n",
- "Pcore_P1= 1-Pcladd_P1\n",
- "Pcladd_P2 = (4/3)*(M2**(-0.5))*p\n",
- "Pcore_P2= 1-Pcladd_P2 \n",
- "\n",
- "#result\n",
- "print 'case1 : Total number of modes',M1\n",
- "print 'case1 : Percent age of power propagates in the cladding',int(Pcladd_P1 *100)\n",
- "print 'case2 : Total number of modes',M2\n",
- "print 'case2 : Percent age of power propagates in the cladding',int(round(Pcladd_P2 *100,0)) "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "case1 : Total number of modes 760\n",
- "case1 : Percent age of power propagates in the cladding 5\n",
- "case2 : Total number of modes 242\n",
- "case2 : Percent age of power propagates in the cladding 9\n"
- ]
- }
- ],
- "prompt_number": 13
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.5 , Page Number: 65"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- " \n",
- "#variable declaration\n",
- "lamda=1300*1e-9 #wavelength(nm)\n",
- "Lp=8*1e-2 #beat length(cm)\n",
- "\n",
- "#calculation\n",
- "Bf=lamda/Lp #modal birefringence\n",
- "bita=(2*math.pi)/Lp #birefringence(1/m)\n",
- "\n",
- "#result\n",
- "print \"Modal birefringence =\",round(Bf,7)\n",
- "print \"Birefringence Bita =\",bita,\"1/m\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Modal birefringence = 1.62e-05\n",
- "Birefringence Bita = 78.5398163397 1/m\n"
- ]
- }
- ],
- "prompt_number": 15
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter2_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter2_1.ipynb
deleted file mode 100755
index 5cd59824..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter2_1.ipynb
+++ /dev/null
@@ -1,231 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:161f2af28057c1d070e2d9170a764b41538f5b5faa1a2af8f60c6674471beb1e"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 2: Optical fibers: Structures, Waveguiding, and Fabrication"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.1, Page Number: 37"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n1 = 1.48 #core refractive index for glass n1\n",
- "n2 = 1.00 #core refractive index for air n2\n",
- "\n",
- "#calculation\n",
- "phic = math.asin(n2/n1) #Interflaction reflaction angle(degree)\n",
- "\n",
- "#result\n",
- "print \"Total Interflaction reflaction angle = \",round(phic*57.3,1),\"degree\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Total Interflaction reflaction angle = 42.5 degree\n"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.2, Page Number: 45"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n1=1.48 #core refractive index\n",
- "n2=1.46 #cladding refractive index\n",
- "\n",
- "#calculation\n",
- "phiC=math.degrees(math.asin(n2/n1)) #critical angle (degree)\n",
- "NA=math.sqrt((n1*n1)-(n2*n2)) #numerical apperture\n",
- "phiO=math.degrees(math.asin(NA)) #maximum entrance angle (degree)\n",
- "\n",
- "#result\n",
- "print \"Critical angle =\" ,round(phiC,1),\"degree\"\n",
- "print \"Numerical apperture =\" ,round(NA,3)\n",
- "print \"Acceptance angle =\" ,int(phiO),\"degree\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Critical angle = 80.6 degree\n",
- "Numerical apperture = 0.242\n",
- "Acceptance angle = 14 degree\n"
- ]
- }
- ],
- "prompt_number": 11
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.3 , Page Number: 58"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "V=26.6 #normalized frequency\n",
- "lamda=1300*1e-9 #wavelength(nm)\n",
- "a=25*1e-6 #core radius(um)\n",
- "\n",
- "\n",
- "#caculation\n",
- "NA=(V*lamda)/(2*math.pi*a) #numerical aperture\n",
- "\n",
- "#result\n",
- "print \"Numerical aperture =\",round(NA,2)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Numerical aperture = 0.22\n"
- ]
- }
- ],
- "prompt_number": 12
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.4 , Page Number: 62"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math \n",
- " \n",
- "#variable declaration\n",
- "V2 = 22 #normalized frequency2\n",
- "V1=39 #normalized frequency1\n",
- "p=1.4 \n",
- "\n",
- "#calculation\n",
- "M1=(V1**2)/2 #modes in fiber1\n",
- "M2=V2**2/2 #modes in fiber2\n",
- "Pcladd_P1 = (4/3)*(M1**(-0.5))*p\n",
- "Pcore_P1= 1-Pcladd_P1\n",
- "Pcladd_P2 = (4/3)*(M2**(-0.5))*p\n",
- "Pcore_P2= 1-Pcladd_P2 \n",
- "\n",
- "#result\n",
- "print 'case1 : Total number of modes',M1\n",
- "print 'case1 : Percent age of power propagates in the cladding',int(Pcladd_P1 *100)\n",
- "print 'case2 : Total number of modes',M2\n",
- "print 'case2 : Percent age of power propagates in the cladding',int(round(Pcladd_P2 *100,0)) "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "case1 : Total number of modes 760\n",
- "case1 : Percent age of power propagates in the cladding 5\n",
- "case2 : Total number of modes 242\n",
- "case2 : Percent age of power propagates in the cladding 9\n"
- ]
- }
- ],
- "prompt_number": 13
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 2.5 , Page Number: 65"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- " \n",
- "#variable declaration\n",
- "lamda=1300*1e-9 #wavelength(nm)\n",
- "Lp=8*1e-2 #beat length(cm)\n",
- "\n",
- "#calculation\n",
- "Bf=lamda/Lp #modal birefringence\n",
- "bita=(2*math.pi)/Lp #birefringence(1/m)\n",
- "\n",
- "#result\n",
- "print \"Modal birefringence =\",round(Bf,7)\n",
- "print \"Birefringence Bita =\",bita,\"1/m\" "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Modal birefringence = 1.62e-05\n",
- "Birefringence Bita = 78.5398163397 1/m\n"
- ]
- }
- ],
- "prompt_number": 15
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter3.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter3.ipynb
deleted file mode 100755
index 83e3dde2..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter3.ipynb
+++ /dev/null
@@ -1,358 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:c31c7734af7a6179a63aac4a4be2acaa7976b91a58a8c77446fe6a6c4b3a076e"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 3: Signal degradation in optical fibers"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.1, Page Number: 91"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Z1 = 1.0 #distance (km)\n",
- "Z2 = 2.0 #distance (km)\n",
- "alpha_in_dB_per_km = 3.0 #loss(dB/km)\n",
- "\n",
- "#calculation\n",
- "R1 = (alpha_in_dB_per_km *Z1)/10.0 \n",
- "R2 = (alpha_in_dB_per_km *Z2)/10.0\n",
- "P0_Pz1 = (10**R1) #power loss at 1 km\n",
- "P0_Pz2 = (10**R2) #power loss at 2 km\n",
- "Pz_P01 = 1-(1/P0_Pz1)\n",
- "Pz_P02 = 1-(1/P0_Pz2)\n",
- "\n",
- "#result\n",
- "print \"Optical signal power decresed for 1km = \" , round(Pz_P01*100,0) , \"%\"\n",
- "print \"Optical signal power decresed for 2km = \" , round(Pz_P02*100,0) , \"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Optical signal power decresed for 1km = 50.0 %\n",
- "Optical signal power decresed for 2km = 75.0 %\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.2, Page Number: 91"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Pin = 200*10**-6 #power launched into the fiber(uW)\n",
- "alpha = 0.4 #attenuation (dB/KM)\n",
- "z = 30 #optical fiber length 30 KM\n",
- "\n",
- "#calculation\n",
- "Pin_dBm = 10*(math.log10(Pin/10**-3)) #input power (dBm)\n",
- "Pout_dBm = 10*(math.log10(Pin/10**-3))-alpha*z #output power(dBm)\n",
- "Pout = 10**(Pout_dBm/10)\n",
- "\n",
- "#result\n",
- "print \"Input power = \" , round(Pin_dBm,1),\"dBm\"\n",
- "print \"Output power = \" , round(Pout_dBm,1),\"dBm\"\n",
- "print \"Output power = \" , round(Pout*10**3,1),\"um\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Input power = -7.0 dBm\n",
- "Output power = -19.0 dBm\n",
- "Output power = 12.6 um\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.3, Page Number: 97"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "alpha_0 = 1.64 #attenuation at Lam_bda_0 in dB/KM\n",
- "Lam_bda_0 = 850*10**-9 #wavelength 850 nm\n",
- "Lam_bda1 = 1310*10**-9 #wavelength 1350 nm\n",
- "Lam_bda2 = 1550*10**-9 #waavelength 1550 nm \n",
- "\n",
- "#calculation\n",
- "alpha_Lambda1 = alpha_0*((Lam_bda_0/Lam_bda1)**4) #rayleigh scattering loss1(dB/Km)\n",
- "alpha_Lambda2 = alpha_0*((Lam_bda_0/Lam_bda2)**4) #rayleigh scattering loss2(dB/Km)\n",
- "\n",
- "#result\n",
- "print \"Rayleigh scattering loss alpha at 1310 nm = \" , round(alpha_Lambda1,3),\"dB/Km\"\n",
- "print \"Rayleigh scattering loss alpha at 1550 nm = \" , round(alpha_Lambda2,3),\"dB/Km\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Rayleigh scattering loss alpha at 1310 nm = 0.291 dB/Km\n",
- "Rayleigh scattering loss alpha at 1550 nm = 0.148 dB/Km\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.4, Page Number: 99"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "alpha = 2 #graded index profile\n",
- "n2 = 1.5 #cladding\n",
- "Lam_bda = 1.3*10**-6 #wavelength\n",
- "R = 0.01 #bend radius of curvature\n",
- "a = 25*10**-6 #core radius\n",
- "delta = 0.01 #core cladding index profile\n",
- "k = 4.83*10**6 #propagation constant\n",
- "\n",
- "#calculation\n",
- "no_of_modes= -10000.0 #number of modes decreased by 50% in greded index fibre\n",
- "part1 = (alpha+2)/(2*alpha*delta)\n",
- "part2 = (1-no_of_modes)/part1 #Right side of equation\n",
- "part3 = (2*a/R)+math.floor((3/(2*n2*k*R))**(2/3))*100 #left side of equation\n",
- "\n",
- "#result\n",
- "print \"From equation part2 =\",round(part2,1),\"= part3 =\",round(part3,1)\n",
- "print \"Radius of curvature = \", round(R*100,1),\"cm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "From equation part2 = 100.0 = part3 = 100.0\n",
- "Radius of curvature = 1.0 cm\n"
- ]
- }
- ],
- "prompt_number": 27
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.5, Page Number: 103"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "C = 3*10**8 #free space velocity(m/s) \n",
- "n1 = 1.48 #core refractive index\n",
- "n2 = 1.465 #cladding refractive index\n",
- "delta = 0.01 #index difference\n",
- "L = 10**3 #fiber length (Km)\n",
- "\n",
- "#calculation\n",
- "deltaT = (L*(n1**2)/(C*n2))*delta #pulse broadening(ns/Km)\n",
- "\n",
- "#result\n",
- "print \"Pulse broadening = \" , round((deltaT/L)*10**12,0),\"ns/Km\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Pulse broadening = 50.0 ns/Km\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.6, Page Number: 104"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n1 = 1.48 #core refractive index\n",
- "n2 = 1.465 #cladding refractive index\n",
- "delta = 0.01 #index difference\n",
- "C =3*(10**8) #free space velcotiy(m/s)\n",
- "\n",
- "#calculation\n",
- "BL = (n2/(n1**2))*(C/delta) #bit rate distance product(Mb/s-km)\n",
- "\n",
- "#result\n",
- "print \"Bandwidth distance at pulse spreding of 50ns/km = \" , round(BL*10**-9),\"Mb/s-km\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bandwidth distance at pulse spreding of 50ns/km = 20.0 Mb/s-km\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.7, Page Number: 107"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lamda = 800*10**-9 #Wavelength (m)\n",
- "sigma_Lamda_LED = 40*10**-9 #spectral width (m)\n",
- "mat_dispersion = 0.00011 #material dispersion \n",
- "\n",
- "#calculation\n",
- "pulse_spread = sigma_Lamda_LED*mat_dispersion #pulse spread(ns/km)\n",
- "\n",
- "#result\n",
- "print \"Material dispersion =\" ,round(pulse_spread*10**12,1),\"ns/km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Material dispersion = 4.4 ns/km\n"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.8, Page Number: 110"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n2 = 1.48 #index of cladding\n",
- "delta = 0.002 #index difference\n",
- "Lam_bda = 1320*10**-9 #Wavelength (nm)\n",
- "V_dVb_dV = 0.26 #The value in square brackets for v = 2.4\n",
- "C =3*10**8 #velocity of light in free space\n",
- "\n",
- "#calculation\n",
- "Dwg_Lamda = -(((n2*delta)/C)*(1/Lam_bda))*V_dVb_dV #waveguide dispersion(ps/nm*km)\n",
- "\n",
- "#result\n",
- "print \"Waveguide dispersion = \" ,round(Dwg_Lamda*10**6,1),\"ps/(nm*km)\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Waveguide dispersion = -1.9 ps/(nm*km)\n"
- ]
- }
- ],
- "prompt_number": 11
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter3_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter3_1.ipynb
deleted file mode 100755
index 83e3dde2..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter3_1.ipynb
+++ /dev/null
@@ -1,358 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:c31c7734af7a6179a63aac4a4be2acaa7976b91a58a8c77446fe6a6c4b3a076e"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 3: Signal degradation in optical fibers"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.1, Page Number: 91"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Z1 = 1.0 #distance (km)\n",
- "Z2 = 2.0 #distance (km)\n",
- "alpha_in_dB_per_km = 3.0 #loss(dB/km)\n",
- "\n",
- "#calculation\n",
- "R1 = (alpha_in_dB_per_km *Z1)/10.0 \n",
- "R2 = (alpha_in_dB_per_km *Z2)/10.0\n",
- "P0_Pz1 = (10**R1) #power loss at 1 km\n",
- "P0_Pz2 = (10**R2) #power loss at 2 km\n",
- "Pz_P01 = 1-(1/P0_Pz1)\n",
- "Pz_P02 = 1-(1/P0_Pz2)\n",
- "\n",
- "#result\n",
- "print \"Optical signal power decresed for 1km = \" , round(Pz_P01*100,0) , \"%\"\n",
- "print \"Optical signal power decresed for 2km = \" , round(Pz_P02*100,0) , \"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Optical signal power decresed for 1km = 50.0 %\n",
- "Optical signal power decresed for 2km = 75.0 %\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.2, Page Number: 91"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Pin = 200*10**-6 #power launched into the fiber(uW)\n",
- "alpha = 0.4 #attenuation (dB/KM)\n",
- "z = 30 #optical fiber length 30 KM\n",
- "\n",
- "#calculation\n",
- "Pin_dBm = 10*(math.log10(Pin/10**-3)) #input power (dBm)\n",
- "Pout_dBm = 10*(math.log10(Pin/10**-3))-alpha*z #output power(dBm)\n",
- "Pout = 10**(Pout_dBm/10)\n",
- "\n",
- "#result\n",
- "print \"Input power = \" , round(Pin_dBm,1),\"dBm\"\n",
- "print \"Output power = \" , round(Pout_dBm,1),\"dBm\"\n",
- "print \"Output power = \" , round(Pout*10**3,1),\"um\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Input power = -7.0 dBm\n",
- "Output power = -19.0 dBm\n",
- "Output power = 12.6 um\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.3, Page Number: 97"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "alpha_0 = 1.64 #attenuation at Lam_bda_0 in dB/KM\n",
- "Lam_bda_0 = 850*10**-9 #wavelength 850 nm\n",
- "Lam_bda1 = 1310*10**-9 #wavelength 1350 nm\n",
- "Lam_bda2 = 1550*10**-9 #waavelength 1550 nm \n",
- "\n",
- "#calculation\n",
- "alpha_Lambda1 = alpha_0*((Lam_bda_0/Lam_bda1)**4) #rayleigh scattering loss1(dB/Km)\n",
- "alpha_Lambda2 = alpha_0*((Lam_bda_0/Lam_bda2)**4) #rayleigh scattering loss2(dB/Km)\n",
- "\n",
- "#result\n",
- "print \"Rayleigh scattering loss alpha at 1310 nm = \" , round(alpha_Lambda1,3),\"dB/Km\"\n",
- "print \"Rayleigh scattering loss alpha at 1550 nm = \" , round(alpha_Lambda2,3),\"dB/Km\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Rayleigh scattering loss alpha at 1310 nm = 0.291 dB/Km\n",
- "Rayleigh scattering loss alpha at 1550 nm = 0.148 dB/Km\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.4, Page Number: 99"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "alpha = 2 #graded index profile\n",
- "n2 = 1.5 #cladding\n",
- "Lam_bda = 1.3*10**-6 #wavelength\n",
- "R = 0.01 #bend radius of curvature\n",
- "a = 25*10**-6 #core radius\n",
- "delta = 0.01 #core cladding index profile\n",
- "k = 4.83*10**6 #propagation constant\n",
- "\n",
- "#calculation\n",
- "no_of_modes= -10000.0 #number of modes decreased by 50% in greded index fibre\n",
- "part1 = (alpha+2)/(2*alpha*delta)\n",
- "part2 = (1-no_of_modes)/part1 #Right side of equation\n",
- "part3 = (2*a/R)+math.floor((3/(2*n2*k*R))**(2/3))*100 #left side of equation\n",
- "\n",
- "#result\n",
- "print \"From equation part2 =\",round(part2,1),\"= part3 =\",round(part3,1)\n",
- "print \"Radius of curvature = \", round(R*100,1),\"cm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "From equation part2 = 100.0 = part3 = 100.0\n",
- "Radius of curvature = 1.0 cm\n"
- ]
- }
- ],
- "prompt_number": 27
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.5, Page Number: 103"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "C = 3*10**8 #free space velocity(m/s) \n",
- "n1 = 1.48 #core refractive index\n",
- "n2 = 1.465 #cladding refractive index\n",
- "delta = 0.01 #index difference\n",
- "L = 10**3 #fiber length (Km)\n",
- "\n",
- "#calculation\n",
- "deltaT = (L*(n1**2)/(C*n2))*delta #pulse broadening(ns/Km)\n",
- "\n",
- "#result\n",
- "print \"Pulse broadening = \" , round((deltaT/L)*10**12,0),\"ns/Km\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Pulse broadening = 50.0 ns/Km\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.6, Page Number: 104"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n1 = 1.48 #core refractive index\n",
- "n2 = 1.465 #cladding refractive index\n",
- "delta = 0.01 #index difference\n",
- "C =3*(10**8) #free space velcotiy(m/s)\n",
- "\n",
- "#calculation\n",
- "BL = (n2/(n1**2))*(C/delta) #bit rate distance product(Mb/s-km)\n",
- "\n",
- "#result\n",
- "print \"Bandwidth distance at pulse spreding of 50ns/km = \" , round(BL*10**-9),\"Mb/s-km\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bandwidth distance at pulse spreding of 50ns/km = 20.0 Mb/s-km\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.7, Page Number: 107"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lamda = 800*10**-9 #Wavelength (m)\n",
- "sigma_Lamda_LED = 40*10**-9 #spectral width (m)\n",
- "mat_dispersion = 0.00011 #material dispersion \n",
- "\n",
- "#calculation\n",
- "pulse_spread = sigma_Lamda_LED*mat_dispersion #pulse spread(ns/km)\n",
- "\n",
- "#result\n",
- "print \"Material dispersion =\" ,round(pulse_spread*10**12,1),\"ns/km\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Material dispersion = 4.4 ns/km\n"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 3.8, Page Number: 110"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n2 = 1.48 #index of cladding\n",
- "delta = 0.002 #index difference\n",
- "Lam_bda = 1320*10**-9 #Wavelength (nm)\n",
- "V_dVb_dV = 0.26 #The value in square brackets for v = 2.4\n",
- "C =3*10**8 #velocity of light in free space\n",
- "\n",
- "#calculation\n",
- "Dwg_Lamda = -(((n2*delta)/C)*(1/Lam_bda))*V_dVb_dV #waveguide dispersion(ps/nm*km)\n",
- "\n",
- "#result\n",
- "print \"Waveguide dispersion = \" ,round(Dwg_Lamda*10**6,1),\"ps/(nm*km)\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Waveguide dispersion = -1.9 ps/(nm*km)\n"
- ]
- }
- ],
- "prompt_number": 11
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter4.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter4.ipynb
deleted file mode 100755
index 67742607..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter4.ipynb
+++ /dev/null
@@ -1,356 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:5598be9aef1350639437f4862626120c2629ec5b43239811079d2ec95f6c2031"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 4: Optical Sources"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.1, Page Number: 136"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "m = 9.11*1e-31 #Electron rest mass (kg)\n",
- "me = 6.19*10**-32 #Effective electron mass = 0.068m (kg)\n",
- "mh = 5.10*10**-31 #Effective hole mass = 0.56m (kg) \n",
- "Eg = 1.42*1.60218*1e-19 #bandgap energy (volts)\n",
- "kB = 1.38054*1e-23 #Boltzman's constant\n",
- "T = 300 #room temperature (kelvin)\n",
- "h = 6.6256*1e-34 #Planck's constant\n",
- "\n",
- "#calculation\n",
- "K = 2.0*((2.0*math.pi*kB*T/(h**2.0))**(1.5))*((me*mh)**(0.75)) #characteristic constant of material\n",
- "ni = K*(math.exp(-Eg/(2.0*kB*T))) #intrinsic carrier concentration(1/m^3)\n",
- "\n",
- "#result\n",
- "print \"Instrinsic carrier concentration = \",round(ni*10**-12+0.07,2)*1e12,\"1/m^3\",\"=\",round(ni*10**-12+0.07,2)*10**6 ,\"1/cm^3\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Instrinsic carrier concentration = 2.62e+12 1/m^3 = 2620000.0 1/cm^3\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.3, Page Number: 146"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "x = 0.07 #compositional parameter of GaAlAs\n",
- "\n",
- "#calculation\n",
- "Eg = 1.424+1.266*x+0.266*x**2 #energy gap(eV)\n",
- "Lam_bda = 1.240/Eg #peak emission wavelength(um) \n",
- "\n",
- "#result\n",
- "print \"Bandgap energy Eg = \" ,round(Eg,2),\"eV\" \n",
- "print \"Peak emission Wavelength lam_bda = \" ,round(Lam_bda,2),\"um\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bandgap energy Eg = 1.51 eV\n",
- "Peak emission Wavelength lam_bda = 0.82 um\n"
- ]
- }
- ],
- "prompt_number": 45
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.4, Page Number: 146"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "y = 0.57 #compositional parameter of InGaAsP\n",
- "\n",
- "#calculation\n",
- "Eg = 1.35-0.72*y+0.12*(y**2) #energy gap(eV)\n",
- "Lam_bda = 1.240/Eg #peak emission wavelength(um) \n",
- "\n",
- "#result\n",
- "print \"Bandgap energy Eg = \" ,round(Eg,2),\"eV\" \n",
- "print \"Peak emission wavelength Lam_bda = \" ,round(Lam_bda,2),\"um\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bandgap energy Eg = 0.98 eV\n",
- "Peak emission wavelength Lam_bda = 1.27 um\n"
- ]
- }
- ],
- "prompt_number": 46
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.5, Page Number: 149"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "tuo_r = 30.0 #radiative re-combination (ns)\n",
- "tuo_nr =100.0 #non-radiative re-combination (ns)\n",
- "h = 6.6256*1e-34 #Plank's constant (J.s)\n",
- "C = 3.0*1e8 #free space velocity (m/sec)\n",
- "q = 1.602*1e-19 #electron charge (coulombs)\n",
- "I = 0.040 #drive current (Amps)\n",
- "Lam_bda = 1.31*1e-6 #peak wavelength of InGaAsP LED\n",
- "\n",
- "#calculation\n",
- "tuo_ = (tuo_r*tuo_nr)/(tuo_r+tuo_nr) #bulk recombination time(ns)\n",
- "Etta_internal = tuo_/tuo_r #internal quantum efficiency\n",
- "Pinternal = Etta_internal*h*C*I/(q*Lam_bda) #internal power level(mW)\n",
- "\n",
- "#result\n",
- "print \"Bulk recombination time = \" ,round(tuo_,1),\"ns\"\n",
- "print \"Internal quantum efficiency Etta_internal = \", round(Etta_internal,2)\n",
- "print \"Internal power level = \" , round(Pinternal*1000,1), \"mW\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bulk recombination time = 23.1 ns\n",
- "Internal quantum efficiency Etta_internal = 0.77\n",
- "Internal power level = 29.1 mW\n"
- ]
- }
- ],
- "prompt_number": 47
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.6, Page Number: 151"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n = 3.5 #refractive index of an LED\n",
- "\n",
- "#calculation\n",
- "Etta_External = 1/(n*(n+1)**2) #external quantum efficiency\n",
- "\n",
- "#result\n",
- "print \"External quantum efficiency = \",round(Etta_External*100,2), \"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "External quantum efficiency = 1.41 %\n"
- ]
- }
- ],
- "prompt_number": 49
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.7, Page Number: 157"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "L = 500*1e-6 #Laser diode length (meters)\n",
- "R1 = 0.32 #reflection co-efficient value of one end \n",
- "R2 = 0.32 #reflection co-efficient value of another end \n",
- "alpha_bar =10*100 #absorption co-efficient(1/cm)\n",
- "\n",
- "#calculation\n",
- "alpha_end = (1/(2*L))*(math.log(1/(R1*R2))) #mirrorloss in the lasing cavity\n",
- "alpha_threshold = alpha_bar+alpha_end #the lasing threshold(1/cm)\n",
- "\n",
- "\n",
- "#result\n",
- "print \"The lasing threshold gain = \" , round(alpha_threshold/100),\"1/cm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The lasing threshold gain = 33.0 1/cm\n"
- ]
- }
- ],
- "prompt_number": 72
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.8, Page Number: 161"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lam_bda = 850*1e-9 #Emission wavelength of LASER diode(nm)\n",
- "n = 3.7 #refractive index of LASER diode\n",
- "L = 500.0*1e-6 #length of LASER diode(um)\n",
- "C = 3*1e8 #velocity of Light in free space(m/s)\n",
- "Half_power = 2*1e-9 #half power point 3 (nm)\n",
- "\n",
- "#calculation\n",
- "delta_frequency = C/((2*L)*n) #frequency spacing(GHz)\n",
- "delta_Lamda = (Lam_bda**2)/((2*L)*n) #wavelength spacing(nm)\n",
- "sigma = math.sqrt(-(Half_power**2)/(2*math.log(0.5))) #spectral width of gain(nm)\n",
- "\n",
- "#result\n",
- "print \"Freqency spacing = \" ,round(delta_frequency/1e9),\"GHz\"\n",
- "print \"Wavelegth spacing = \" , round(delta_Lamda/1e-9,2),\"nm\"\n",
- "print \"Spectral width of gain = \" , round(sigma/1e-9,2),\"nm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Freqency spacing = 81.0 GHz\n",
- "Wavelegth spacing = 0.2 nm\n",
- "Spectral width of gain = 1.7 nm\n"
- ]
- }
- ],
- "prompt_number": 74
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.9, Page Number: 161"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lam_bda = 900*10e-9 # wavelength of light emitted by laser diode(nm)\n",
- "L = 300*10e-6 #length of laser chip(um)\n",
- "n = 4.3 #refractive index of the laser material\n",
- "\n",
- "#calculation\n",
- "m = 2*L*n/Lam_bda #number of half-wavelengths\n",
- "delta_Lambda = (Lam_bda**2)/(2*L*n) #wavelength spacing(nm)\n",
- "\n",
- "#result\n",
- "print \"Number of half-wavelength spanning the region betwen mirror = \" , round(m)\n",
- "print \"Wavelength spacing between lasing modes = \" , round(delta_Lambda*1e8,1),\"nm\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Number of half-wavelength spanning the region betwen mirror = 2867.0\n",
- "Wavelength spacing between lasing modes = 0.3 nm\n"
- ]
- }
- ],
- "prompt_number": 3
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter4_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter4_1.ipynb
deleted file mode 100755
index 67742607..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter4_1.ipynb
+++ /dev/null
@@ -1,356 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:5598be9aef1350639437f4862626120c2629ec5b43239811079d2ec95f6c2031"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 4: Optical Sources"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.1, Page Number: 136"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "m = 9.11*1e-31 #Electron rest mass (kg)\n",
- "me = 6.19*10**-32 #Effective electron mass = 0.068m (kg)\n",
- "mh = 5.10*10**-31 #Effective hole mass = 0.56m (kg) \n",
- "Eg = 1.42*1.60218*1e-19 #bandgap energy (volts)\n",
- "kB = 1.38054*1e-23 #Boltzman's constant\n",
- "T = 300 #room temperature (kelvin)\n",
- "h = 6.6256*1e-34 #Planck's constant\n",
- "\n",
- "#calculation\n",
- "K = 2.0*((2.0*math.pi*kB*T/(h**2.0))**(1.5))*((me*mh)**(0.75)) #characteristic constant of material\n",
- "ni = K*(math.exp(-Eg/(2.0*kB*T))) #intrinsic carrier concentration(1/m^3)\n",
- "\n",
- "#result\n",
- "print \"Instrinsic carrier concentration = \",round(ni*10**-12+0.07,2)*1e12,\"1/m^3\",\"=\",round(ni*10**-12+0.07,2)*10**6 ,\"1/cm^3\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Instrinsic carrier concentration = 2.62e+12 1/m^3 = 2620000.0 1/cm^3\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.3, Page Number: 146"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "x = 0.07 #compositional parameter of GaAlAs\n",
- "\n",
- "#calculation\n",
- "Eg = 1.424+1.266*x+0.266*x**2 #energy gap(eV)\n",
- "Lam_bda = 1.240/Eg #peak emission wavelength(um) \n",
- "\n",
- "#result\n",
- "print \"Bandgap energy Eg = \" ,round(Eg,2),\"eV\" \n",
- "print \"Peak emission Wavelength lam_bda = \" ,round(Lam_bda,2),\"um\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bandgap energy Eg = 1.51 eV\n",
- "Peak emission Wavelength lam_bda = 0.82 um\n"
- ]
- }
- ],
- "prompt_number": 45
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.4, Page Number: 146"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "y = 0.57 #compositional parameter of InGaAsP\n",
- "\n",
- "#calculation\n",
- "Eg = 1.35-0.72*y+0.12*(y**2) #energy gap(eV)\n",
- "Lam_bda = 1.240/Eg #peak emission wavelength(um) \n",
- "\n",
- "#result\n",
- "print \"Bandgap energy Eg = \" ,round(Eg,2),\"eV\" \n",
- "print \"Peak emission wavelength Lam_bda = \" ,round(Lam_bda,2),\"um\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bandgap energy Eg = 0.98 eV\n",
- "Peak emission wavelength Lam_bda = 1.27 um\n"
- ]
- }
- ],
- "prompt_number": 46
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.5, Page Number: 149"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "tuo_r = 30.0 #radiative re-combination (ns)\n",
- "tuo_nr =100.0 #non-radiative re-combination (ns)\n",
- "h = 6.6256*1e-34 #Plank's constant (J.s)\n",
- "C = 3.0*1e8 #free space velocity (m/sec)\n",
- "q = 1.602*1e-19 #electron charge (coulombs)\n",
- "I = 0.040 #drive current (Amps)\n",
- "Lam_bda = 1.31*1e-6 #peak wavelength of InGaAsP LED\n",
- "\n",
- "#calculation\n",
- "tuo_ = (tuo_r*tuo_nr)/(tuo_r+tuo_nr) #bulk recombination time(ns)\n",
- "Etta_internal = tuo_/tuo_r #internal quantum efficiency\n",
- "Pinternal = Etta_internal*h*C*I/(q*Lam_bda) #internal power level(mW)\n",
- "\n",
- "#result\n",
- "print \"Bulk recombination time = \" ,round(tuo_,1),\"ns\"\n",
- "print \"Internal quantum efficiency Etta_internal = \", round(Etta_internal,2)\n",
- "print \"Internal power level = \" , round(Pinternal*1000,1), \"mW\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Bulk recombination time = 23.1 ns\n",
- "Internal quantum efficiency Etta_internal = 0.77\n",
- "Internal power level = 29.1 mW\n"
- ]
- }
- ],
- "prompt_number": 47
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.6, Page Number: 151"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "n = 3.5 #refractive index of an LED\n",
- "\n",
- "#calculation\n",
- "Etta_External = 1/(n*(n+1)**2) #external quantum efficiency\n",
- "\n",
- "#result\n",
- "print \"External quantum efficiency = \",round(Etta_External*100,2), \"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "External quantum efficiency = 1.41 %\n"
- ]
- }
- ],
- "prompt_number": 49
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.7, Page Number: 157"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "L = 500*1e-6 #Laser diode length (meters)\n",
- "R1 = 0.32 #reflection co-efficient value of one end \n",
- "R2 = 0.32 #reflection co-efficient value of another end \n",
- "alpha_bar =10*100 #absorption co-efficient(1/cm)\n",
- "\n",
- "#calculation\n",
- "alpha_end = (1/(2*L))*(math.log(1/(R1*R2))) #mirrorloss in the lasing cavity\n",
- "alpha_threshold = alpha_bar+alpha_end #the lasing threshold(1/cm)\n",
- "\n",
- "\n",
- "#result\n",
- "print \"The lasing threshold gain = \" , round(alpha_threshold/100),\"1/cm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The lasing threshold gain = 33.0 1/cm\n"
- ]
- }
- ],
- "prompt_number": 72
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.8, Page Number: 161"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lam_bda = 850*1e-9 #Emission wavelength of LASER diode(nm)\n",
- "n = 3.7 #refractive index of LASER diode\n",
- "L = 500.0*1e-6 #length of LASER diode(um)\n",
- "C = 3*1e8 #velocity of Light in free space(m/s)\n",
- "Half_power = 2*1e-9 #half power point 3 (nm)\n",
- "\n",
- "#calculation\n",
- "delta_frequency = C/((2*L)*n) #frequency spacing(GHz)\n",
- "delta_Lamda = (Lam_bda**2)/((2*L)*n) #wavelength spacing(nm)\n",
- "sigma = math.sqrt(-(Half_power**2)/(2*math.log(0.5))) #spectral width of gain(nm)\n",
- "\n",
- "#result\n",
- "print \"Freqency spacing = \" ,round(delta_frequency/1e9),\"GHz\"\n",
- "print \"Wavelegth spacing = \" , round(delta_Lamda/1e-9,2),\"nm\"\n",
- "print \"Spectral width of gain = \" , round(sigma/1e-9,2),\"nm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Freqency spacing = 81.0 GHz\n",
- "Wavelegth spacing = 0.2 nm\n",
- "Spectral width of gain = 1.7 nm\n"
- ]
- }
- ],
- "prompt_number": 74
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 4.9, Page Number: 161"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lam_bda = 900*10e-9 # wavelength of light emitted by laser diode(nm)\n",
- "L = 300*10e-6 #length of laser chip(um)\n",
- "n = 4.3 #refractive index of the laser material\n",
- "\n",
- "#calculation\n",
- "m = 2*L*n/Lam_bda #number of half-wavelengths\n",
- "delta_Lambda = (Lam_bda**2)/(2*L*n) #wavelength spacing(nm)\n",
- "\n",
- "#result\n",
- "print \"Number of half-wavelength spanning the region betwen mirror = \" , round(m)\n",
- "print \"Wavelength spacing between lasing modes = \" , round(delta_Lambda*1e8,1),\"nm\"\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Number of half-wavelength spanning the region betwen mirror = 2867.0\n",
- "Wavelength spacing between lasing modes = 0.3 nm\n"
- ]
- }
- ],
- "prompt_number": 3
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter5.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter5.ipynb
deleted file mode 100755
index e65f2645..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter5.ipynb
+++ /dev/null
@@ -1,270 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:36c911cea36773d62dbfdfd257319508866d11b39912270afd0ba3c55a7245e6"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chepter 5: Power launching and coupling"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.1, Page Number: 192"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "phi = 0 #lateral coordinate(degree)\n",
- "Half_power = 10 #half power beam width(degree)\n",
- "\n",
- "#calculation\n",
- "teta = Half_power/2\n",
- "teta_rad = teta/57.3\n",
- "L = math.log(0.5)/math.log(math.cos(teta_rad)) #power distribution co-efficient\n",
- "\n",
- "#result\n",
- "print \"Power distribution co-efficient L = \" ,round(L)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power distribution co-efficient L = 182.0\n"
- ]
- }
- ],
- "prompt_number": 14
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.2, Page Number: 194"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "rs = 35.0*1e-6 #the source radius (meter)\n",
- "a = 25.0*1e-6 #the core radius of stepindex fiber (meter)\n",
- "NA = 0.20 #the numerical aperture value\n",
- "Bo = 150.0*1e4 #radiance ( W/cm^2 * sr)\n",
- "\n",
- "#calculation\n",
- "Ps = ((math.pi**2)*(rs**2))*Bo #power emitted by the source\n",
- "PLED_step = Ps*(NA**2) #for larger core fiber(W)\n",
- "PLED_step1 = (((a/rs)**2)*Ps)*(NA**2) #for smaller core fiber at the end face(W)\n",
- "\n",
- "#result\n",
- "print \"For larger core fiber optical power emitted from the LED light source = \" , round(PLED_step*1e3,3),\"mW\"\n",
- "print \"For smaller core fiber then area optical power coupled to step index fiber on W = \" , round(PLED_step1*1e3,3),\"mW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "For larger core fiber optical power emitted from the LED light source = 0.725 mW\n",
- "For smaller core fiber then area optical power coupled to step index fiber on W = 0.37 mW\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.3, Page Number: 194"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "n1 = 3.6 #refractive index of optical source\n",
- "n = 1.48 #refractive index of silica fiber\n",
- "\n",
- "#calculation\n",
- "R = ((n1-n)/(n1+n))**2 #fresnel reflection\n",
- "L = -10*(math.log10(1-R)) #power loss(dB)\n",
- "\n",
- "#result\n",
- "print\"Fresnel reflection = \",round(R,3),\" = \",round(R*100,1),\"%\"\n",
- "print\"Power loss = \" , round(L,2),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Fresnel reflection = 0.174 = 17.4 %\n",
- "Power loss = 0.83 dB\n"
- ]
- }
- ],
- "prompt_number": 16
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.4, Page Number: 205"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "a =1*1e-6 #core radii (meters)\n",
- "d = 0.3*a #axial offset\n",
- "\n",
- "#calculation\n",
- "PT_P = (2/math.pi)*(math.acos(d/(2*a))-(1-(d/(2*a))**2)**0.5*(d/(6*a))*(5-0.5*(d/a)**2)) \n",
- "PT_P_dB = 10*(math.log10(PT_P)) #power coupled between two fibers(dB)\n",
- "\n",
- "#result\n",
- "print \"Power coupled between two graded index fibers = \" , round(PT_P_dB,2),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power coupled between two graded index fibers = -1.26 dB\n"
- ]
- }
- ],
- "prompt_number": 17
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.5, Page Number: 211"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "V = 2.4 #normalized frequency\n",
- "n1 = 1.47 #core refractive index\n",
- "n2 = 1.465 #cladding refractive index\n",
- "a = (9.0/2.0)*10**-6 #core radii (meters)\n",
- "d = 1*10**-6 #lateral offset (meters)\n",
- "\n",
- "#calculation\n",
- "W = a*(0.65+1.619*V**(-1.5)+2.879*V**-6) #mode field diameter (um)\n",
- "Lsm = -10*(math.log10(math.exp(-(d/W)**2))) #Loss between identical fibers(dB)\n",
- "\n",
- "#result\n",
- "print \"Mode field diameter = \" , round(W*1e6,2),\"um\"\n",
- "print \"Loss between single mode fibers due to lateral misalignment = \" , round(Lsm,2),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Mode field diameter = 4.95 um\n",
- "Loss between single mode fibers due to lateral misalignment = 0.18 dB\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.6, Page Number: 212"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "V = 2.4 #normalized frequency\n",
- "n1 = 1.47 #core refractive index\n",
- "n2 = 1.465 #cladding refractive index\n",
- "a = (9.0/2.0)*1e-6 #coreradii in meters\n",
- "d = 1*1e-6 #lateral offset (m)\n",
- "teta = 1 #in (degrees)\n",
- "teta = 1/57.3 #in (radaians) \n",
- "\n",
- "#calculation\n",
- "W = a*(0.65+1.619*V**(-1.5)+2.879*V**-6) #mode field diameter\n",
- "Lam_bda = 1300.0*10**-9 #wavelength (m)\n",
- "Lsm_ang = -10*(math.log10(math.exp(-(math.pi*n2*W*teta/Lam_bda)**2))) #(dB)\n",
- "\n",
- "#result\n",
- "print \"Loss between single mode fibers due to angular misalignment = \",round(Lsm_ang,2),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Loss between single mode fibers due to angular misalignment = 0.41 dB\n"
- ]
- }
- ],
- "prompt_number": 3
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter5_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter5_1.ipynb
deleted file mode 100755
index e65f2645..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter5_1.ipynb
+++ /dev/null
@@ -1,270 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:36c911cea36773d62dbfdfd257319508866d11b39912270afd0ba3c55a7245e6"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chepter 5: Power launching and coupling"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.1, Page Number: 192"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "phi = 0 #lateral coordinate(degree)\n",
- "Half_power = 10 #half power beam width(degree)\n",
- "\n",
- "#calculation\n",
- "teta = Half_power/2\n",
- "teta_rad = teta/57.3\n",
- "L = math.log(0.5)/math.log(math.cos(teta_rad)) #power distribution co-efficient\n",
- "\n",
- "#result\n",
- "print \"Power distribution co-efficient L = \" ,round(L)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power distribution co-efficient L = 182.0\n"
- ]
- }
- ],
- "prompt_number": 14
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.2, Page Number: 194"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "rs = 35.0*1e-6 #the source radius (meter)\n",
- "a = 25.0*1e-6 #the core radius of stepindex fiber (meter)\n",
- "NA = 0.20 #the numerical aperture value\n",
- "Bo = 150.0*1e4 #radiance ( W/cm^2 * sr)\n",
- "\n",
- "#calculation\n",
- "Ps = ((math.pi**2)*(rs**2))*Bo #power emitted by the source\n",
- "PLED_step = Ps*(NA**2) #for larger core fiber(W)\n",
- "PLED_step1 = (((a/rs)**2)*Ps)*(NA**2) #for smaller core fiber at the end face(W)\n",
- "\n",
- "#result\n",
- "print \"For larger core fiber optical power emitted from the LED light source = \" , round(PLED_step*1e3,3),\"mW\"\n",
- "print \"For smaller core fiber then area optical power coupled to step index fiber on W = \" , round(PLED_step1*1e3,3),\"mW\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "For larger core fiber optical power emitted from the LED light source = 0.725 mW\n",
- "For smaller core fiber then area optical power coupled to step index fiber on W = 0.37 mW\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.3, Page Number: 194"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "n1 = 3.6 #refractive index of optical source\n",
- "n = 1.48 #refractive index of silica fiber\n",
- "\n",
- "#calculation\n",
- "R = ((n1-n)/(n1+n))**2 #fresnel reflection\n",
- "L = -10*(math.log10(1-R)) #power loss(dB)\n",
- "\n",
- "#result\n",
- "print\"Fresnel reflection = \",round(R,3),\" = \",round(R*100,1),\"%\"\n",
- "print\"Power loss = \" , round(L,2),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Fresnel reflection = 0.174 = 17.4 %\n",
- "Power loss = 0.83 dB\n"
- ]
- }
- ],
- "prompt_number": 16
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.4, Page Number: 205"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "a =1*1e-6 #core radii (meters)\n",
- "d = 0.3*a #axial offset\n",
- "\n",
- "#calculation\n",
- "PT_P = (2/math.pi)*(math.acos(d/(2*a))-(1-(d/(2*a))**2)**0.5*(d/(6*a))*(5-0.5*(d/a)**2)) \n",
- "PT_P_dB = 10*(math.log10(PT_P)) #power coupled between two fibers(dB)\n",
- "\n",
- "#result\n",
- "print \"Power coupled between two graded index fibers = \" , round(PT_P_dB,2),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Power coupled between two graded index fibers = -1.26 dB\n"
- ]
- }
- ],
- "prompt_number": 17
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.5, Page Number: 211"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "V = 2.4 #normalized frequency\n",
- "n1 = 1.47 #core refractive index\n",
- "n2 = 1.465 #cladding refractive index\n",
- "a = (9.0/2.0)*10**-6 #core radii (meters)\n",
- "d = 1*10**-6 #lateral offset (meters)\n",
- "\n",
- "#calculation\n",
- "W = a*(0.65+1.619*V**(-1.5)+2.879*V**-6) #mode field diameter (um)\n",
- "Lsm = -10*(math.log10(math.exp(-(d/W)**2))) #Loss between identical fibers(dB)\n",
- "\n",
- "#result\n",
- "print \"Mode field diameter = \" , round(W*1e6,2),\"um\"\n",
- "print \"Loss between single mode fibers due to lateral misalignment = \" , round(Lsm,2),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Mode field diameter = 4.95 um\n",
- "Loss between single mode fibers due to lateral misalignment = 0.18 dB\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 5.6, Page Number: 212"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declartion\n",
- "V = 2.4 #normalized frequency\n",
- "n1 = 1.47 #core refractive index\n",
- "n2 = 1.465 #cladding refractive index\n",
- "a = (9.0/2.0)*1e-6 #coreradii in meters\n",
- "d = 1*1e-6 #lateral offset (m)\n",
- "teta = 1 #in (degrees)\n",
- "teta = 1/57.3 #in (radaians) \n",
- "\n",
- "#calculation\n",
- "W = a*(0.65+1.619*V**(-1.5)+2.879*V**-6) #mode field diameter\n",
- "Lam_bda = 1300.0*10**-9 #wavelength (m)\n",
- "Lsm_ang = -10*(math.log10(math.exp(-(math.pi*n2*W*teta/Lam_bda)**2))) #(dB)\n",
- "\n",
- "#result\n",
- "print \"Loss between single mode fibers due to angular misalignment = \",round(Lsm_ang,2),\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Loss between single mode fibers due to angular misalignment = 0.41 dB\n"
- ]
- }
- ],
- "prompt_number": 3
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter6.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter6.ipynb
deleted file mode 100755
index 0d75f992..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter6.ipynb
+++ /dev/null
@@ -1,321 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:1d457d6d35a4d96cef8f5c393fb2ad194f0093b445ed9ceab1c1a00b3a80e8fa"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 6: Photodetectors"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.1, Page Number: 224"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "C = 3*10**8 #free space velocity(m/s)\n",
- "Eg = 1.43*1.6*10**-19 #(joules)\n",
- "\n",
- "#calculation\n",
- "LambdaC = h*C/Eg #wavelength(nm)\n",
- "\n",
- "#result\n",
- "print \"Maximum wavelength for photodiode GaAs = \", round(LambdaC*10**9,0),\"nm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Maximum wavelength for photodiode GaAs = 869.0 nm\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.2, Page Number: 226"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Ip_q = 5.4*10**6 #electron-hole pair generated\n",
- "Pin_hv = 6*10**6 #number of incident photons\n",
- "\n",
- "#calculation\n",
- "etta = Ip_q / Pin_hv #Quantum efficiency\n",
- "\n",
- "#result\n",
- "print \"Quantum efficiency at 1300nm =\" ,etta*100,\"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Quantum efficiency at 1300nm = 90.0 %\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.3, Page Number: 226"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "R = 0.65 #Responsivity of photodiode(A/W)\n",
- "Pin = 10*10**-6 #Optical power level(watts)\n",
- "\n",
- "#calculation\n",
- "Ip = R*Pin #Photocurrent(A)\n",
- "\n",
- "#result\n",
- "print \"Photocurrent =\",Ip*10**6,\"uA\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Photocurrent = 6.5 uA\n"
- ]
- }
- ],
- "prompt_number": 12
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.4, Page Number: 227"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda = 1300*10**-9 #Wavelength (m)\n",
- "C = 3*10**8 #freespace velocity(m/s)\n",
- "q = 1.6*10**-19 #Charge (coulombs)\n",
- "etta = 0.9 #Quantum efficiency\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "Eg = 0.73 #energy gap(eV)\n",
- "\n",
- "#calculation\n",
- "R = (etta*q*Lambda)/(h*C) #responsivity(A/W)\n",
- "LambdaC = 1.24/ Eg #cut\udbc0\udc00off wavelength(meters)\n",
- "\n",
- "#result\n",
- "print \"Responsivity = \",round(R,2),\"A/W\"\n",
- "print \"Cutoff wavelength = \",round(LambdaC,1),\"um\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Responsivity = 0.94 A/W\n",
- "Cutoff wavelength = 1.7 um\n"
- ]
- }
- ],
- "prompt_number": 20
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.5, Page Number: 230"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "etta = 0.65 #Quantum efficiency\n",
- "C = 3*10**8 #freespace velocity(m/s)\n",
- "Lambda = 900*10**-9 #Wavelength (m)\n",
- "q = 1.6*10**-19 #Charge (coulombs)\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "Pin = 0.5*10**-06 #optical power(W)\n",
- "Im = 10*10**-06 #multiplied photocurrent(uA)\n",
- "\n",
- "#calculation\n",
- "Ip = ((etta*q*Lambda)/(h*C))*Pin #photocurrent(uA)\n",
- "M = Im/Ip #multiplication\n",
- "\n",
- "#result\n",
- "print \"Primary photocurrent = \",round(Ip*10**6,3),\"uA\"\n",
- "print \"Primary photocurrent is multiplied by \" ,round(M+1,0)\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Primary photocurrent = 0.235 uA\n",
- "Primary photocurrent is multiplied by 43.0\n"
- ]
- }
- ],
- "prompt_number": 26
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.6, Page Number: 234"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda = 1330.0*10**-9 #Wavelength (m)\n",
- "ID = 4.0*10**-9 #photdiode current(nA)\n",
- "etta = 0.90 #Quantum efficiency\n",
- "RL = 1000.0 #load resistance(ohms)\n",
- "Pin = 300.0*10**-9 #incident optical power(nW)\n",
- "Be = 20.0*10**6 #reciver bandwidth\n",
- "q = 1.6*10**-19 #Charge (coulombs)\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "T = 283.0 #room temperature(kelvin)\n",
- "KB = 1.38*10**-23 #boltzmann's constant\n",
- "\n",
- "#calculation\n",
- "Ip = (etta*q*Pin*1.3*10**-6)/(h*C) #primary current(uA)\n",
- "Ishot = 2*q*Ip*Be #mean-squre shot noise current(A^2)\n",
- "IDB = 2*q*ID*Be #mean-squre dark current(A^2)\n",
- "IT = (4*KB*T)*Be/RL #mean-sqare thermal current(A^2)\n",
- "\n",
- "#result\n",
- "print \"Primary current = \",round(Ip*10**6,3),\"uA\"\n",
- "print \"Mean-squre shot noise current = \",round(Ishot*10**18,2)*10**-18,\"A^2 OR = \",round(math.sqrt(Ishot)*10**9,2),\"nA\"\n",
- "print \"Mean-squre dark current = \",round(IDB*10**20,2)*10**-20,\"A^2 OR = \",round(math.sqrt(IDB)*10**9,2),\"nA\"\n",
- "print \"Mean-squre thermal current = \",round(math.sqrt(IT)*10**9,0),\"nA\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Primary current = 0.283 uA\n",
- "Mean-squre shot noise current = 1.81e-18 A^2 OR = 1.34 nA\n",
- "Mean-squre dark current = 2.56e-20 A^2 OR = 0.16 nA\n",
- "Mean-squre thermal current = 18.0 nA\n"
- ]
- }
- ],
- "prompt_number": 13
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.7, Page Number: 239"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "CP = 3*10**-12 #photodiode capacitance(pF)\n",
- "CA = 4*10**-12 #amplifier capacitance(pF)\n",
- "CT = CP+CA #total capacitance\n",
- "RT1 = 1000 #load resistance 1(ohms)\n",
- "RT2 = 50 #load resistance 2(ohms)\n",
- "\n",
- "#calculation\n",
- "BC1 = 1/(2*math.pi*RT1*CT) #circuit bandwidth 1 (Hz)\n",
- "BC2 = 1/(2*math.pi*RT2*CT) #circuit bandwidth 2 (Hz)\n",
- "\n",
- "#result\n",
- "print \"Circuit bandwidth for 1k ohms = \",round(BC1*10**-6,0),\"MHz\"\n",
- "print \"Circuit bandwidth for 50 ohms = \",round(BC2*10**-6,0), \"MHz\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Circuit bandwidth for 1k ohms = 23.0 MHz\n",
- "Circuit bandwidth for 50 ohms = 455.0 MHz\n"
- ]
- }
- ],
- "prompt_number": 9
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter6_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter6_1.ipynb
deleted file mode 100755
index 0d75f992..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter6_1.ipynb
+++ /dev/null
@@ -1,321 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:1d457d6d35a4d96cef8f5c393fb2ad194f0093b445ed9ceab1c1a00b3a80e8fa"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 6: Photodetectors"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.1, Page Number: 224"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "C = 3*10**8 #free space velocity(m/s)\n",
- "Eg = 1.43*1.6*10**-19 #(joules)\n",
- "\n",
- "#calculation\n",
- "LambdaC = h*C/Eg #wavelength(nm)\n",
- "\n",
- "#result\n",
- "print \"Maximum wavelength for photodiode GaAs = \", round(LambdaC*10**9,0),\"nm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Maximum wavelength for photodiode GaAs = 869.0 nm\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.2, Page Number: 226"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Ip_q = 5.4*10**6 #electron-hole pair generated\n",
- "Pin_hv = 6*10**6 #number of incident photons\n",
- "\n",
- "#calculation\n",
- "etta = Ip_q / Pin_hv #Quantum efficiency\n",
- "\n",
- "#result\n",
- "print \"Quantum efficiency at 1300nm =\" ,etta*100,\"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Quantum efficiency at 1300nm = 90.0 %\n"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.3, Page Number: 226"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "R = 0.65 #Responsivity of photodiode(A/W)\n",
- "Pin = 10*10**-6 #Optical power level(watts)\n",
- "\n",
- "#calculation\n",
- "Ip = R*Pin #Photocurrent(A)\n",
- "\n",
- "#result\n",
- "print \"Photocurrent =\",Ip*10**6,\"uA\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Photocurrent = 6.5 uA\n"
- ]
- }
- ],
- "prompt_number": 12
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.4, Page Number: 227"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda = 1300*10**-9 #Wavelength (m)\n",
- "C = 3*10**8 #freespace velocity(m/s)\n",
- "q = 1.6*10**-19 #Charge (coulombs)\n",
- "etta = 0.9 #Quantum efficiency\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "Eg = 0.73 #energy gap(eV)\n",
- "\n",
- "#calculation\n",
- "R = (etta*q*Lambda)/(h*C) #responsivity(A/W)\n",
- "LambdaC = 1.24/ Eg #cut\udbc0\udc00off wavelength(meters)\n",
- "\n",
- "#result\n",
- "print \"Responsivity = \",round(R,2),\"A/W\"\n",
- "print \"Cutoff wavelength = \",round(LambdaC,1),\"um\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Responsivity = 0.94 A/W\n",
- "Cutoff wavelength = 1.7 um\n"
- ]
- }
- ],
- "prompt_number": 20
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.5, Page Number: 230"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "etta = 0.65 #Quantum efficiency\n",
- "C = 3*10**8 #freespace velocity(m/s)\n",
- "Lambda = 900*10**-9 #Wavelength (m)\n",
- "q = 1.6*10**-19 #Charge (coulombs)\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "Pin = 0.5*10**-06 #optical power(W)\n",
- "Im = 10*10**-06 #multiplied photocurrent(uA)\n",
- "\n",
- "#calculation\n",
- "Ip = ((etta*q*Lambda)/(h*C))*Pin #photocurrent(uA)\n",
- "M = Im/Ip #multiplication\n",
- "\n",
- "#result\n",
- "print \"Primary photocurrent = \",round(Ip*10**6,3),\"uA\"\n",
- "print \"Primary photocurrent is multiplied by \" ,round(M+1,0)\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Primary photocurrent = 0.235 uA\n",
- "Primary photocurrent is multiplied by 43.0\n"
- ]
- }
- ],
- "prompt_number": 26
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.6, Page Number: 234"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Lambda = 1330.0*10**-9 #Wavelength (m)\n",
- "ID = 4.0*10**-9 #photdiode current(nA)\n",
- "etta = 0.90 #Quantum efficiency\n",
- "RL = 1000.0 #load resistance(ohms)\n",
- "Pin = 300.0*10**-9 #incident optical power(nW)\n",
- "Be = 20.0*10**6 #reciver bandwidth\n",
- "q = 1.6*10**-19 #Charge (coulombs)\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "T = 283.0 #room temperature(kelvin)\n",
- "KB = 1.38*10**-23 #boltzmann's constant\n",
- "\n",
- "#calculation\n",
- "Ip = (etta*q*Pin*1.3*10**-6)/(h*C) #primary current(uA)\n",
- "Ishot = 2*q*Ip*Be #mean-squre shot noise current(A^2)\n",
- "IDB = 2*q*ID*Be #mean-squre dark current(A^2)\n",
- "IT = (4*KB*T)*Be/RL #mean-sqare thermal current(A^2)\n",
- "\n",
- "#result\n",
- "print \"Primary current = \",round(Ip*10**6,3),\"uA\"\n",
- "print \"Mean-squre shot noise current = \",round(Ishot*10**18,2)*10**-18,\"A^2 OR = \",round(math.sqrt(Ishot)*10**9,2),\"nA\"\n",
- "print \"Mean-squre dark current = \",round(IDB*10**20,2)*10**-20,\"A^2 OR = \",round(math.sqrt(IDB)*10**9,2),\"nA\"\n",
- "print \"Mean-squre thermal current = \",round(math.sqrt(IT)*10**9,0),\"nA\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Primary current = 0.283 uA\n",
- "Mean-squre shot noise current = 1.81e-18 A^2 OR = 1.34 nA\n",
- "Mean-squre dark current = 2.56e-20 A^2 OR = 0.16 nA\n",
- "Mean-squre thermal current = 18.0 nA\n"
- ]
- }
- ],
- "prompt_number": 13
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 6.7, Page Number: 239"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "CP = 3*10**-12 #photodiode capacitance(pF)\n",
- "CA = 4*10**-12 #amplifier capacitance(pF)\n",
- "CT = CP+CA #total capacitance\n",
- "RT1 = 1000 #load resistance 1(ohms)\n",
- "RT2 = 50 #load resistance 2(ohms)\n",
- "\n",
- "#calculation\n",
- "BC1 = 1/(2*math.pi*RT1*CT) #circuit bandwidth 1 (Hz)\n",
- "BC2 = 1/(2*math.pi*RT2*CT) #circuit bandwidth 2 (Hz)\n",
- "\n",
- "#result\n",
- "print \"Circuit bandwidth for 1k ohms = \",round(BC1*10**-6,0),\"MHz\"\n",
- "print \"Circuit bandwidth for 50 ohms = \",round(BC2*10**-6,0), \"MHz\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Circuit bandwidth for 1k ohms = 23.0 MHz\n",
- "Circuit bandwidth for 50 ohms = 455.0 MHz\n"
- ]
- }
- ],
- "prompt_number": 9
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter7.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter7.ipynb
deleted file mode 100755
index 4d206c90..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter7.ipynb
+++ /dev/null
@@ -1,287 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:eea7d16ffc875a17e4b117d7d13d2969329f1fcef753cbcc5ca0b70025950287"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 7: Optical receiver operation"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 7.1, Page Number: 258"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "bon = 1.0 #signal on level\n",
- "boff = 0.0 #signal off level\n",
- "sigma_on = 1.0 #variance sigma-on level\n",
- "sigma_off = 1.0 #variance sigma-on level\n",
- "\n",
- "#calculation\n",
- "Q = (bon - boff)/(sigma_on + sigma_off) #parameter value\n",
- "Vth = bon-Q*sigma_on #optimum decision threshold\n",
- "\n",
- "#result\n",
- "print \"Q parameter value = \" ,Q\n",
- "print \"Optimum decision threshold Vth = \",Vth"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Q parameter value = 0.5\n",
- "Optimum decision threshold Vth = 0.5\n"
- ]
- }
- ],
- "prompt_number": 69
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 7.2, Page Number: 258"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "%pylab inline"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Populating the interactive namespace from numpy and matplotlib\n"
- ]
- }
- ],
- "prompt_number": 1
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import pylab\n",
- "import numpy as np\n",
- "import scipy as sp\n",
- "from scipy import special\n",
- "\n",
- "#variable declaration\n",
- "Q = 6.0 #parameter value from figure\n",
- "\n",
- "#calculation\n",
- "Pe = (1.0/2.0)*(1-math.erf(Q/math.sqrt(2.0))) #probability of error \n",
- "S_N_dB = 10*math.log10(2*Q) #signal to naoise ratio (dB)\n",
- "\n",
- "#result\n",
- "print \"Probability of error = \" ,round(Pe,10)\n",
- "print \"Signal to naoise ratio =\",round(S_N_dB,1),\"dB\"\n",
- "\n",
- "#plot\n",
- "q1=arange(0.0, 8.0, 0.5)\n",
- "Pe1 = (1.0/2.0)*(1-sp.special.erf(q1/sqrt(2.0))) \n",
- "plot(-q1+8,-Pe1)\n",
- "ylabel('BER (Pe)')\n",
- "xlabel('factor Q')\n",
- "title('Plot of BER (Pe) versus the factor Q')\n",
- "text(6,-0.3,'Q=5.99 for')\n",
- "text(6,-0.35,' Pe=10^-9') "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Probability of error = 1e-09\n",
- "Signal to naoise ratio = 10.8 dB\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 7,
- "text": [
- "<matplotlib.text.Text at 0x12d58c88>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0xa8c5e10>"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 7.3, Page Number: 259"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.3(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "s_n=8.5 #signal-to-noise ratio\n",
- "s_n_db=18.6 #signal-to-noise ratio (dB)\n",
- "tele_rate=1.544 #telephone rate\n",
- "v_by_sig=12.0 #peak signal-to-rms-noise ratio\n",
- "v_by_sig_db=21.6 #peak signal-to-rms-noise ratio(dB)\n",
- "\n",
- "#calculation\n",
- "Pe1=(1.0/math.sqrt(2.0*math.pi))*(math.exp(-((s_n**2.0)/8.0))/(s_n/2.0)) #Probability of error 1 \n",
- "q=v_by_sig/2 #parameter value\n",
- "ber=(1.0/2.0)*(1.0-math.erf(q/math.sqrt(2.0))) #bit error rate or Probability of error 2\n",
- "\n",
- "#result\n",
- "print \"Probability of error for signal-to-noise ratio 8.5 = \", round(Pe1,5)\n",
- "print \"Probability of error for peak signal-to-rms-noise ratio 12.0 = \", round(ber,10)\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Probability of error for signal-to-noise ratio 8.5 = 1e-05\n",
- "Probability of error for peak signal-to-rms-noise ratio 12.0 = 1e-09\n"
- ]
- }
- ],
- "prompt_number": 71
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.3(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "v_by_sig=13.0 #peak signal-to-rms-noise ratio for SONET\n",
- "v_by_sig_db=22.3 #peak signal-to-rms-noise ratio(dB) for SONET\n",
- "\n",
- "#calculation\n",
- "q=v_by_sig /2 #parameter value\n",
- "ber=(1.0/(2.0*4.0))*(1.0-math.erf(q/math.sqrt(2.0))) #bit error rate or Probability of error \n",
- "\n",
- "#result\n",
- "print \"Probability of error for peak signal-to-rms-noise ratio 13.0 = \", round(ber,11), \"OR\",round(ber/10,12)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Probability of error for peak signal-to-rms-noise ratio 13.0 = 1e-11 OR 1e-12\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 7.4, Page Number: 262"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "C = 3*10**8 #freespace velocity(m/s)\n",
- "B = 10**6 #data rate(Mb/s)\n",
- "Lambda = 850*10**-9 #Wavelength (m)\n",
- "\n",
- "#calculation\n",
- "tuo = 2.0/B\n",
- "E = 20.7*h*C/Lambda #Energy of incident photon\n",
- "Pi = E/tuo #Minimum incident optical power(W)\n",
- "Pi_db = 10.0*(math.log10(Pi))-(-40) #optical power level with reference 1mW = -40dBm\n",
- "\n",
- "#result\n",
- "print \"Minimum incident optical power = \",round(Pi*10**13,2),\"pW\"\n",
- "print \"Optical power level with reference 1mW = \",round(Pi_db,1),\"dBm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Minimum incident optical power = 24.2 pW\n",
- "Optical power level with reference 1mW = -76.2 dBm\n"
- ]
- }
- ],
- "prompt_number": 75
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter7_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter7_1.ipynb
deleted file mode 100755
index c47a16e1..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter7_1.ipynb
+++ /dev/null
@@ -1,270 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:52945d2ecbd107493bfdff515b21007d6d8bd600f51e01015bc9fd9a03be50eb"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 7: Optical receiver operation"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 7.1, Page Number: 258"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "bon = 1.0 #signal on level\n",
- "boff = 0.0 #signal off level\n",
- "sigma_on = 1.0 #variance sigma-on level\n",
- "sigma_off = 1.0 #variance sigma-on level\n",
- "\n",
- "#calculation\n",
- "Q = (bon - boff)/(sigma_on + sigma_off) #parameter value\n",
- "Vth = bon-Q*sigma_on #optimum decision threshold\n",
- "\n",
- "#result\n",
- "print \"Q parameter value = \" ,Q\n",
- "print \"Optimum decision threshold Vth = \",Vth"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Q parameter value = 0.5\n",
- "Optimum decision threshold Vth = 0.5\n"
- ]
- }
- ],
- "prompt_number": 69
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 7.2, Page Number: 258"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import scipy as sp\n",
- "from scipy import special\n",
- "\n",
- "%matplotlib inline\n",
- "\n",
- "#variable declaration\n",
- "Q = 6.0 #parameter value from figure\n",
- "\n",
- "#calculation\n",
- "Pe = (1.0/2.0)*(1-math.erf(Q/math.sqrt(2.0))) #probability of error \n",
- "S_N_dB = 10*math.log10(2*Q) #signal to naoise ratio (dB)\n",
- "\n",
- "#result\n",
- "print \"Probability of error = \" ,round(Pe,10)\n",
- "print \"Signal to naoise ratio =\",round(S_N_dB,1),\"dB\"\n",
- "\n",
- "#plot\n",
- "q1=arange(0.0, 8.0, 0.5)\n",
- "Pe1 = (1.0/2.0)*(1-sp.special.erf(q1/sqrt(2.0))) \n",
- "plot(-q1+8,-Pe1)\n",
- "ylabel('BER (Pe)')\n",
- "xlabel('factor Q')\n",
- "title('Plot of BER (Pe) versus the factor Q')\n",
- "text(6,-0.3,'Q=5.99 for')\n",
- "text(6,-0.35,' Pe=10^-9') "
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Probability of error = 1e-09\n",
- "Signal to naoise ratio = 10.8 dB\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 4,
- "text": [
- "<matplotlib.text.Text at 0xa73bd30>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0xa4e30b8>"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 7.3, Page Number: 259"
- ]
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.3(a)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "s_n=8.5 #signal-to-noise ratio\n",
- "s_n_db=18.6 #signal-to-noise ratio (dB)\n",
- "tele_rate=1.544 #telephone rate\n",
- "v_by_sig=12.0 #peak signal-to-rms-noise ratio\n",
- "v_by_sig_db=21.6 #peak signal-to-rms-noise ratio(dB)\n",
- "\n",
- "#calculation\n",
- "Pe1=(1.0/math.sqrt(2.0*math.pi))*(math.exp(-((s_n**2.0)/8.0))/(s_n/2.0)) #Probability of error 1 \n",
- "q=v_by_sig/2 #parameter value\n",
- "ber=(1.0/2.0)*(1.0-math.erf(q/math.sqrt(2.0))) #bit error rate or Probability of error 2\n",
- "\n",
- "#result\n",
- "print \"Probability of error for signal-to-noise ratio 8.5 = \", round(Pe1,5)\n",
- "print \"Probability of error for peak signal-to-rms-noise ratio 12.0 = \", round(ber,10)\n"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Probability of error for signal-to-noise ratio 8.5 = 1e-05\n",
- "Probability of error for peak signal-to-rms-noise ratio 12.0 = 1e-09\n"
- ]
- }
- ],
- "prompt_number": 71
- },
- {
- "cell_type": "heading",
- "level": 3,
- "metadata": {},
- "source": [
- "Example 7.3(b)"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "v_by_sig=13.0 #peak signal-to-rms-noise ratio for SONET\n",
- "v_by_sig_db=22.3 #peak signal-to-rms-noise ratio(dB) for SONET\n",
- "\n",
- "#calculation\n",
- "q=v_by_sig /2 #parameter value\n",
- "ber=(1.0/(2.0*4.0))*(1.0-math.erf(q/math.sqrt(2.0))) #bit error rate or Probability of error \n",
- "\n",
- "#result\n",
- "print \"Probability of error for peak signal-to-rms-noise ratio 13.0 = \", round(ber,11), \"OR\",round(ber/10,12)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Probability of error for peak signal-to-rms-noise ratio 13.0 = 1e-11 OR 1e-12\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 7.4, Page Number: 262"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "h = 6.625*10**-34 #planks constant(J*s)\n",
- "C = 3*10**8 #freespace velocity(m/s)\n",
- "B = 10**6 #data rate(Mb/s)\n",
- "Lambda = 850*10**-9 #Wavelength (m)\n",
- "\n",
- "#calculation\n",
- "tuo = 2.0/B\n",
- "E = 20.7*h*C/Lambda #Energy of incident photon\n",
- "Pi = E/tuo #Minimum incident optical power(W)\n",
- "Pi_db = 10.0*(math.log10(Pi))-(-40) #optical power level with reference 1mW = -40dBm\n",
- "\n",
- "#result\n",
- "print \"Minimum incident optical power = \",round(Pi*10**13,2),\"pW\"\n",
- "print \"Optical power level with reference 1mW = \",round(Pi_db,1),\"dBm\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Minimum incident optical power = 24.2 pW\n",
- "Optical power level with reference 1mW = -76.2 dBm\n"
- ]
- }
- ],
- "prompt_number": 75
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter8.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter8.ipynb
deleted file mode 100755
index 7624efd8..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter8.ipynb
+++ /dev/null
@@ -1,335 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:c41fce225679ac457a37b8135a3b4343e35e5bc26e64b35427fb89f090d39c55"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chepter 8: Digital links"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.1, Page Number: 287"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "system_margin = 6 # (dB)\n",
- "alpha = 3.5 #attenuation (dB/Km)\n",
- "L =6 #Length of transmission path (Km)\n",
- "lc = 1 #connector loss (dB)\n",
- "\n",
- "#calculation\n",
- "PT = 2*lc+alpha*L+system_margin #total optical power loss(dB)\n",
- "\n",
- "#result\n",
- "print \"Total optical power loss = \" , round(PT) ,\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Total optical power loss = 29.0 dB\n"
- ]
- }
- ],
- "prompt_number": 34
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.2, Page Number: 288"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Ps = 3 #laser output (dBm)\n",
- "APD_sen = -32 #APD sensitivity (dBm)\n",
- "lsc = 1 #source connectorloss (dB)\n",
- "ljc = 2*4 #two (jumper+connector loss) (dB)\n",
- "alpha = 0.3 #attenuation (dB/Km)\n",
- "L = 60 #cable length (Km)\n",
- "cable_att = alpha*60 #cable attenuation (dB)\n",
- "lrc = 1 #receiver connector loss (dB)\n",
- "\n",
- "#calculation\n",
- "Allowed_Loss = Ps-APD_sen # (dB)\n",
- "system_margin = Allowed_Loss-lsc-ljc-cable_att-lrc #system margin(dB)\n",
- "\n",
- "#result\n",
- "print \"Allowed loss between light source and photodetector = \",Allowed_Loss,\"dB\"\n",
- "print \"The Final power margin = \" , round(system_margin) , \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Allowed loss between light source and photodetector = 35 dB\n",
- "The Final power margin = 7.0 dB\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.3, Page Number: 291"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "t_tx = 15*10**-9 #transmitter rise time(ns)\n",
- "t_mat = 21*10**-9 #material dispersion related rise time(ns)\n",
- "t_mod = 3.9*10**-9 #rise time resulting from modal dispersion(ns)\n",
- "t_rx = 14*10**-9 #receiver rise time(ns)\n",
- "\n",
- "#calculation\n",
- "tsys = math.sqrt(t_tx**2+t_mat**2+t_mod**2+t_rx**2) #link rise time(ns)\n",
- "\n",
- "#result\n",
- "print \"Link rise time = \" , round(tsys*10**9),\"ns\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Link rise time = 30.0 ns\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.4, Page Number: 292"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "t_tx = 25*10**-12 #transmission rise time (sec)\n",
- "t_GVD = 12*10**-12 #GVD rise time (sec)\n",
- "t_rx = 0.14*10**-9 #receiver rise time (sec)\n",
- "\n",
- "#calculation\n",
- "tsys = math.sqrt(t_tx**2+t_GVD**2+t_rx**2) #Link rise time(ns)\n",
- "\n",
- "#result\n",
- "print \"System rise time = \" , round(tsys*10**9,2) , \"ns\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "System rise time = 0.14 ns\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.5, Page Number: 306"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "bit_error_dur = 1*10**-3 #bit-corrupting burst noise duration (ms)\n",
- "B = 10*10**3 #data rate (kb/sec)\n",
- "\n",
- "#calculation\n",
- "N = B*bit_error_dur #number of bits affected by by burst error (MB/s)\n",
- "\n",
- "#result\n",
- "print \"Number of bits affected by a burst error = \" , round(N) , \"Mb/s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Number of bits affected by a burst error = 10.0 Mb/s\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.6, Page Number: 308"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "x=1\n",
- "\n",
- "#calculation\n",
- "polynomial = str(x**7)+\"0\"+str(x**5)+\"0\"+\"0\"+str(x**2)+str(x)+\"1\" #generator polynommial\n",
- "\n",
- "#result\n",
- "print \"The generator polynomial to 8-bit binary represantation = \",polynomial"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The generator polynomial to 8-bit binary represantation = 10100111\n"
- ]
- }
- ],
- "prompt_number": 39
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.8, Page Number: 309"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "N = 32.0 #number of CRC\n",
- "\n",
- "#calculation\n",
- "Ped = 1.0-(1.0/(2.0**N)) #burst error\n",
- "\n",
- "#result\n",
- "print \"Burst error detected by CRC = \" , round(Ped*100,8), \"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Burst error detected by CRC = 99.99999998 %\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.9, Page Number: 309"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "S = 8 #Reed-Solomon code with 1 byte\n",
- "n = (2**S-1) #length of coded sequence\n",
- "k = 239.0 #length of message sequence\n",
- "\n",
- "#calculation\n",
- "r = n-k #number of redundent bytes\n",
- "over_head = (r/k) #overhead %\n",
- "\n",
- "#result\n",
- "print \"Number of redundent bytes r = \" ,round(r),\"bytes\"\n",
- "print \"Percent overhead = \" , round(over_head*100) , \"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Number of redundent bytes r = 16.0 bytes\n",
- "Percent overhead = 7.0 %\n"
- ]
- }
- ],
- "prompt_number": 7
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter8_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter8_1.ipynb
deleted file mode 100755
index 7624efd8..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter8_1.ipynb
+++ /dev/null
@@ -1,335 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:c41fce225679ac457a37b8135a3b4343e35e5bc26e64b35427fb89f090d39c55"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chepter 8: Digital links"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.1, Page Number: 287"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "system_margin = 6 # (dB)\n",
- "alpha = 3.5 #attenuation (dB/Km)\n",
- "L =6 #Length of transmission path (Km)\n",
- "lc = 1 #connector loss (dB)\n",
- "\n",
- "#calculation\n",
- "PT = 2*lc+alpha*L+system_margin #total optical power loss(dB)\n",
- "\n",
- "#result\n",
- "print \"Total optical power loss = \" , round(PT) ,\"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Total optical power loss = 29.0 dB\n"
- ]
- }
- ],
- "prompt_number": 34
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.2, Page Number: 288"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "Ps = 3 #laser output (dBm)\n",
- "APD_sen = -32 #APD sensitivity (dBm)\n",
- "lsc = 1 #source connectorloss (dB)\n",
- "ljc = 2*4 #two (jumper+connector loss) (dB)\n",
- "alpha = 0.3 #attenuation (dB/Km)\n",
- "L = 60 #cable length (Km)\n",
- "cable_att = alpha*60 #cable attenuation (dB)\n",
- "lrc = 1 #receiver connector loss (dB)\n",
- "\n",
- "#calculation\n",
- "Allowed_Loss = Ps-APD_sen # (dB)\n",
- "system_margin = Allowed_Loss-lsc-ljc-cable_att-lrc #system margin(dB)\n",
- "\n",
- "#result\n",
- "print \"Allowed loss between light source and photodetector = \",Allowed_Loss,\"dB\"\n",
- "print \"The Final power margin = \" , round(system_margin) , \"dB\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Allowed loss between light source and photodetector = 35 dB\n",
- "The Final power margin = 7.0 dB\n"
- ]
- }
- ],
- "prompt_number": 2
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.3, Page Number: 291"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "t_tx = 15*10**-9 #transmitter rise time(ns)\n",
- "t_mat = 21*10**-9 #material dispersion related rise time(ns)\n",
- "t_mod = 3.9*10**-9 #rise time resulting from modal dispersion(ns)\n",
- "t_rx = 14*10**-9 #receiver rise time(ns)\n",
- "\n",
- "#calculation\n",
- "tsys = math.sqrt(t_tx**2+t_mat**2+t_mod**2+t_rx**2) #link rise time(ns)\n",
- "\n",
- "#result\n",
- "print \"Link rise time = \" , round(tsys*10**9),\"ns\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Link rise time = 30.0 ns\n"
- ]
- }
- ],
- "prompt_number": 3
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.4, Page Number: 292"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "t_tx = 25*10**-12 #transmission rise time (sec)\n",
- "t_GVD = 12*10**-12 #GVD rise time (sec)\n",
- "t_rx = 0.14*10**-9 #receiver rise time (sec)\n",
- "\n",
- "#calculation\n",
- "tsys = math.sqrt(t_tx**2+t_GVD**2+t_rx**2) #Link rise time(ns)\n",
- "\n",
- "#result\n",
- "print \"System rise time = \" , round(tsys*10**9,2) , \"ns\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "System rise time = 0.14 ns\n"
- ]
- }
- ],
- "prompt_number": 4
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.5, Page Number: 306"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "bit_error_dur = 1*10**-3 #bit-corrupting burst noise duration (ms)\n",
- "B = 10*10**3 #data rate (kb/sec)\n",
- "\n",
- "#calculation\n",
- "N = B*bit_error_dur #number of bits affected by by burst error (MB/s)\n",
- "\n",
- "#result\n",
- "print \"Number of bits affected by a burst error = \" , round(N) , \"Mb/s\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Number of bits affected by a burst error = 10.0 Mb/s\n"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.6, Page Number: 308"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "x=1\n",
- "\n",
- "#calculation\n",
- "polynomial = str(x**7)+\"0\"+str(x**5)+\"0\"+\"0\"+str(x**2)+str(x)+\"1\" #generator polynommial\n",
- "\n",
- "#result\n",
- "print \"The generator polynomial to 8-bit binary represantation = \",polynomial"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "The generator polynomial to 8-bit binary represantation = 10100111\n"
- ]
- }
- ],
- "prompt_number": 39
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.8, Page Number: 309"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "N = 32.0 #number of CRC\n",
- "\n",
- "#calculation\n",
- "Ped = 1.0-(1.0/(2.0**N)) #burst error\n",
- "\n",
- "#result\n",
- "print \"Burst error detected by CRC = \" , round(Ped*100,8), \"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Burst error detected by CRC = 99.99999998 %\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 8.9, Page Number: 309"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "\n",
- "#variable declaration\n",
- "S = 8 #Reed-Solomon code with 1 byte\n",
- "n = (2**S-1) #length of coded sequence\n",
- "k = 239.0 #length of message sequence\n",
- "\n",
- "#calculation\n",
- "r = n-k #number of redundent bytes\n",
- "over_head = (r/k) #overhead %\n",
- "\n",
- "#result\n",
- "print \"Number of redundent bytes r = \" ,round(r),\"bytes\"\n",
- "print \"Percent overhead = \" , round(over_head*100) , \"%\""
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Number of redundent bytes r = 16.0 bytes\n",
- "Percent overhead = 7.0 %\n"
- ]
- }
- ],
- "prompt_number": 7
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter9.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter9.ipynb
deleted file mode 100755
index b9aab8ae..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter9.ipynb
+++ /dev/null
@@ -1,203 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:324a9a4da13d8ac7961f467603671985ce43ffe3c8500eed13354d67d0e20662"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 9: Analog links"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 9.1, Page Number: 320"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "%pylab inline"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Populating the interactive namespace from numpy and matplotlib\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stderr",
- "text": [
- "WARNING: pylab import has clobbered these variables: ['f', 'pylab']\n",
- "`%matplotlib` prevents importing * from pylab and numpy\n"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import pylab\n",
- "\n",
- "#variable decalration\n",
- "ib_by_ith1=1.5 #injection current1 > 1.2\n",
- "ib_by_ith2=1.6 #injection current2\n",
- "ib_by_ith3=1.7 #injection current3\n",
- "f = 100.0*10**6 #frequency (hz)\n",
- "\n",
- "#calculation\n",
- "RIN1 = ((ib_by_ith1-1)**-3)/f\n",
- "RIN2 = ((ib_by_ith2-1)**-3)/f\n",
- "RIN3 = ((ib_by_ith3-1)**-3)/f\n",
- "RIN_dB1 = 20*math.log10(RIN1) #noise to signal power ratio1(dB/Hz)\n",
- "RIN_dB2 = 20*math.log10(RIN2) #noise to signal power ratio2(dB/Hz)\n",
- "RIN_dB3 = 20*math.log10(RIN3) #noise to signal power ratio3(dB/Hz)\n",
- "\n",
- "#result\n",
- "print \"Index guided lasers lies between \",round(RIN_dB1,0),\"dB/Hz\",round(RIN_dB2,0),\"dB/Hz\",round(RIN_dB3,1),\"dB/Hz\"\n",
- "\n",
- "#plot\n",
- "f1=1.0*10**8 # several hundrede MHz\n",
- "ib_by_ith = arange(0.0, 2.5, 0.1)\n",
- "RIN12 = ((ib_by_ith-1.0)**-3)/f1\n",
- "plot(ib_by_ith,20*log10(RIN12))\n",
- "ylabel('RIN(dB/Hz)')\n",
- "xlabel('Ib/Ith')\n",
- "title('Plot of relative intensity. The noise level=100MHz ')"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Index guided lasers lies between -142.0 dB/Hz -147.0 dB/Hz -150.7 dB/Hz\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 7,
- "text": [
- "<matplotlib.text.Text at 0xa7d9cf8>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0xa2eec18>"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 9.3, Page Number: 323"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import pylab\n",
- "\n",
- "#variable declaration\n",
- "T =300.0 #room temperature(kelvin)\n",
- "kB = 1.38054*10**-23 #boltzmann's constant\n",
- "m =0.25 #modulation index\n",
- "RIN_dB = -143 \n",
- "RIN = 10.0**( RIN_dB /10) #relative intensity(db/Hz)\n",
- "Pc = (10**(0/10) )*10**-3 #power coupled(dB)\n",
- "R = 0.6 #responsivity(A/w)\n",
- "Be = 10**6 #bandwidth(hz) \n",
- "ID = 10**-9 #dark current(nA)\n",
- "Req = 750 #equialent resistance(ohm) \n",
- "Ft = 10**(3/10) #(dB)\n",
- "M = 1 #multiplication factor\n",
- "q = 1.602*10**-19 #Charge (coulombs)\n",
- "\n",
- "#calculation\n",
- "p = arange(0.0, -20.0, -1.0)\n",
- "P = (10**(p/10) )*10**-3\n",
- "C_N_1 = 0.5*((m*R*P)**2) /(4* kB*T*Be*Ft/ Req ) #limit of carrier-to-noise ratio\n",
- "C_N_3 = 0.5* (m**2)/( RIN *Be)\n",
- "C_N_2 = 0.5* (m**2)*R*P /(2* q*Be)\n",
- "\n",
- "#result\n",
- "print \"Decrese in received optical power at 1-db drop of C/N = 1 dB \"\n",
- "print \"Receiver thermal noise yields a 2-dB C/N roll off per 1-dB drop in received power at low light levels\"\n",
- "\n",
- "#plot\n",
- "plot(p,10*log10( C_N_1 ))\n",
- "plot(p,10*log10( C_N_2 ))\n",
- "plot (p,10*log10( C_N_3-30.6*10**6)*ones(len(p)))\n",
- "ylim((46,70))\n",
- "ylabel('Carrier-to-noise ratio(dB)')\n",
- "xlabel('Received optical power(dBm)')\n",
- "title('Plot of Carrier-to-noise ratio as a function of receiver optical power level')\n",
- "text(-10,57,'RIN limit')\n",
- "text(-17,67,'Quantum noise limit')\n",
- "text(-17,51,'Receiver noise limit')"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Decrese in received optical power at 1-db drop of C/N = 1 dB \n",
- "Receiver thermal noise yields a 2-dB C/N roll off per 1-dB drop in received power at low light levels\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 5,
- "text": [
- "<matplotlib.text.Text at 0xa7c36a0>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n7rgDZn6wmMMvvpGN/ytmbO+x1sHF1Cq7D9AYE3f3Tixi4urbObh3Pn/MsQ4uxkSD/YKMSWCbdm5i\n8JNjmPX9NIYPGM79/f5qGVyMiRKrAI1JQIEMLne+eS87lvbnP39YRu+u1sHFmGiyCtCYBBKcwaVR\nZgt4Zi5vTOnAGV3jHZkxqccqQGMSxOK1i7lxzo1s2LGB2ztN5LYL+/DouLJZXowx0WMVoDFxVrSx\niNvzbyd/ZT739LyH8465gtO7Z3LzzfuyvBhjos8ywSSZ1atXM2DAANq2bUvr1q0ZPnw4u3btino5\nCxYs4L333ov6cqurW7duNV7GkCFDePnllwG46qqrWLFiRcTzLlmyhBEjRgDRWzdlMrg0chlcLjlh\nKAPOy2TgQLjhhhoXYYypgFWASURVueCCC7jgggv48ssv+eqrr9ixYwc333xz1MuaP38+7777btSX\nW10LFy6s8TJEpPSeuWnTptGuXbuI5+3cuTMTJkwAar5udu/ZzeRFk2k7uS3rt61n+bDljM4dzUEZ\nDbjoIpflZcyYai/eGBMpVU35P/cxk9+bb76pp59+eplhmzdv1sMPP1y3bt2qTz31lF5//fWl4/r1\n66cFBQWqqjps2DA9+eST9aSTTtK77rqrdJoWLVroXXfdpZ06ddKsrCz9/PPPdeXKldqsWTNt3ry5\n5uTk6Ntvv62DBw/WvLy80vnq16+vqqrz58/X008/XQcMGKDHHXec3nLLLfrss89qly5dNCsrS7/5\n5pv9Psddd92lV1xxhebm5upxxx2nEydOLB03btw4bd++vbZv317Hjx+/X3lr167V7t27a3Z2trZv\n317ffvttVVWdPXu2du3aVTt16qSDBg3SrVu37lfukCFD9OWXX1ZV1R49euiSJUtKl33TTTfpSSed\npGeeeaZ+8MEH2qNHDz3uuON01qxZpZ+zf//+umrVqtJ1k52dXVp+JPbu3auvrnhV205qq72f6a1L\nf1gaNE71yitVzz5bddeuiBdpTK3y+86478Nr689agEnk008/pXPnzmWGNWzYkJYtW/L111/vlxEk\nuMVz//338+GHH7J06VIWLFjAJ598UjpNkyZNWLJkCcOGDWPs2LG0bNmSa6+9lj/96U989NFHnHba\naWGXHbBs2TIee+wxVqxYwTPPPMPXX3/NBx98wNChQ5k0aVLYz/Lll18yZ84cFi1axN13382ePXtY\nsmQJ06dPZ9GiRbz//vtMmzaNpUuXlinvH//4B3379qWwsJClS5eSnZ3NTz/9xP3338+8efNYsmQJ\nnTt35pFHHqlwXQbHv337dnr16sUnn3xCw4YNGTVqFPPmzWPmzJnceeedZeZr0aJF6bopLCzktNNO\nq7CcgMVrF5P791zumH8HE/tOZPZls+nQtEPp+FGjYPlyeOklqFMnokUaY2rIOsEkkYpSXlWWDuuF\nF15g2rRplJSU8P333/PZZ5/Rvn17AC644AIAOnXqxCuvvFI6j0aYPu5Xv/oVTZs2BaB169b07t0b\ngPbt2zN//vywsfbr1486derQuHFjjjzySH744QfeeecdLrjgAurVq1ca11tvvUXHjvvyXHbp0oUr\nr7yS3bt3M3DgQDp27EhBQQGfffYZp556KgC7du0qfR2JunXr0qdPHwCysrI46KCDyMzMpH379qxa\ntSrsPJGum9AOLldkX0FmRmaZaSZPhhdfhIULoX79iMM2xtSQtQCTyIknnsiSJUvKDNu8eTM//PAD\nJ5xwApmZmezdu7d03M6dOwFYuXIl48aNIz8/n6VLl9KvX7/ScQAHHnggAJmZmZSUlIQt+4ADDihd\n9t69e8t0vAnMD5CRkVH6PiMjo9zl1a1bt/R1oFyfd7B0uKruV7F3796dt99+m+bNmzNkyBCeeeYZ\nAM466ywKCwspLCzk008/Zdq0aWHLDadOUJMrIyOjNLaK4q9MuA4uQzsN3a/yy8tz1/tmz4YmTapV\nlDGmmqwCTCK9evVi+/btpTv9PXv2cOONNzJ8+HAOPPBAWrVqxccff4yq8t1337Fo0SIAtmzZQv36\n9TnkkENYt24d//73vystq2HDhmzZsqX0fcuWLUsr31mzZrF79+6ofjYRoXv37rz66qvs2LGDbdu2\n8eqrr9K9e/cy03377bc0adKEoUOHMnToUAoLC/n1r3/NwoUL+eabbwDYtm0bX331VVTjCxa6boKV\n18ElXPqyggK47jp44w1o1arWwjXGlMMqwCQzc+ZM8vLyaNu2LUcccQSZmZnceuutgLtVoFWrVpx4\n4omMGDGi9Hphhw4dyMnJ4Ze//CWXXnppudetgq8ZnnvuucycOZOcnBwWLlzIVVddxYIFC8jOzub9\n99+nQYMGZearbHnhxoXKyclhyJAhdOnShV//+tdcddVVpac/A9PPnz+f7OxsOnXqxIsvvsiIESM4\n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\n",
- "text": [
- "<matplotlib.figure.Figure at 0xa2f6710>"
- ]
- }
- ],
- "prompt_number": 5
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file
diff --git a/Optical_fiber_communication_by_gerd_keiser/chapter9_1.ipynb b/Optical_fiber_communication_by_gerd_keiser/chapter9_1.ipynb
deleted file mode 100755
index 393ba56c..00000000
--- a/Optical_fiber_communication_by_gerd_keiser/chapter9_1.ipynb
+++ /dev/null
@@ -1,186 +0,0 @@
-{
- "metadata": {
- "name": "",
- "signature": "sha256:9cbde2192d4d6413345bc42e22f07c27c74ab50c952d19ad97876c0eed323258"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "heading",
- "level": 1,
- "metadata": {},
- "source": [
- "Chapter 9: Analog links"
- ]
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 9.1, Page Number: 320"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import scipy as sp\n",
- "from scipy import special\n",
- "\n",
- "%matplotlib inline\n",
- "\n",
- "#variable decalration\n",
- "ib_by_ith1=1.5 #injection current1 > 1.2\n",
- "ib_by_ith2=1.6 #injection current2\n",
- "ib_by_ith3=1.7 #injection current3\n",
- "f = 100.0*10**6 #frequency (hz)\n",
- "\n",
- "#calculation\n",
- "RIN1 = ((ib_by_ith1-1)**-3)/f\n",
- "RIN2 = ((ib_by_ith2-1)**-3)/f\n",
- "RIN3 = ((ib_by_ith3-1)**-3)/f\n",
- "RIN_dB1 = 20*math.log10(RIN1) #noise to signal power ratio1(dB/Hz)\n",
- "RIN_dB2 = 20*math.log10(RIN2) #noise to signal power ratio2(dB/Hz)\n",
- "RIN_dB3 = 20*math.log10(RIN3) #noise to signal power ratio3(dB/Hz)\n",
- "\n",
- "#result\n",
- "print \"Index guided lasers lies between \",round(RIN_dB1,0),\"dB/Hz\",round(RIN_dB2,0),\"dB/Hz\",round(RIN_dB3,1),\"dB/Hz\"\n",
- "\n",
- "#plot\n",
- "f1=1.0*10**8 # several hundrede MHz\n",
- "ib_by_ith = arange(0.0, 2.5, 0.1)\n",
- "RIN12 = ((ib_by_ith-1.0)**-3)/f1\n",
- "plot(ib_by_ith,20*log10(RIN12))\n",
- "ylabel('RIN(dB/Hz)')\n",
- "xlabel('Ib/Ith')\n",
- "title('Plot of relative intensity. The noise level=100MHz ')"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Index guided lasers lies between -142.0 dB/Hz -147.0 dB/Hz -150.7 dB/Hz\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 10,
- "text": [
- "<matplotlib.text.Text at 0x12a82e10>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n",
- "text": [
- "<matplotlib.figure.Figure at 0xa0e70b8>"
- ]
- }
- ],
- "prompt_number": 10
- },
- {
- "cell_type": "heading",
- "level": 2,
- "metadata": {},
- "source": [
- "Example 9.3, Page Number: 323"
- ]
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import math\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import scipy as sp\n",
- "from scipy import special\n",
- "\n",
- "%matplotlib inline\n",
- "\n",
- "#variable declaration\n",
- "T =300.0 #room temperature(kelvin)\n",
- "kB = 1.38054*10**-23 #boltzmann's constant\n",
- "m =0.25 #modulation index\n",
- "RIN_dB = -143 \n",
- "RIN = 10.0**( RIN_dB /10) #relative intensity(db/Hz)\n",
- "Pc = (10**(0/10) )*10**-3 #power coupled(dB)\n",
- "R = 0.6 #responsivity(A/w)\n",
- "Be = 10**6 #bandwidth(hz) \n",
- "ID = 10**-9 #dark current(nA)\n",
- "Req = 750 #equialent resistance(ohm) \n",
- "Ft = 10**(3/10) #(dB)\n",
- "M = 1 #multiplication factor\n",
- "q = 1.602*10**-19 #Charge (coulombs)\n",
- "\n",
- "#calculation\n",
- "p = arange(0.0, -20.0, -1.0)\n",
- "P = (10**(p/10) )*10**-3\n",
- "C_N_1 = 0.5*((m*R*P)**2) /(4* kB*T*Be*Ft/ Req ) #limit of carrier-to-noise ratio\n",
- "C_N_3 = 0.5* (m**2)/( RIN *Be)\n",
- "C_N_2 = 0.5* (m**2)*R*P /(2* q*Be)\n",
- "\n",
- "#result\n",
- "print \"Decrese in received optical power at 1-db drop of C/N = 1 dB \"\n",
- "print \"Receiver thermal noise yields a 2-dB C/N roll off per 1-dB drop in received power at low light levels\"\n",
- "\n",
- "#plot\n",
- "plot(p,10*log10( C_N_1 ))\n",
- "plot(p,10*log10( C_N_2 ))\n",
- "plot (p,10*log10( C_N_3-30.6*10**6)*ones(len(p)))\n",
- "ylim((46,70))\n",
- "ylabel('Carrier-to-noise ratio(dB)')\n",
- "xlabel('Received optical power(dBm)')\n",
- "title('Plot of Carrier-to-noise ratio as a function of receiver optical power level')\n",
- "text(-10,57,'RIN limit')\n",
- "text(-17,67,'Quantum noise limit')\n",
- "text(-17,51,'Receiver noise limit')"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Decrese in received optical power at 1-db drop of C/N = 1 dB \n",
- "Receiver thermal noise yields a 2-dB C/N roll off per 1-dB drop in received power at low light levels\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 11,
- "text": [
- "<matplotlib.text.Text at 0x12d79b70>"
- ]
- },
- {
- "metadata": {},
- "output_type": "display_data",
- "png": "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\n7rgDZn6wmMMvvpGN/ytmbO+x1sHF1Cq7D9AYE3f3Tixi4urbObh3Pn/MsQ4uxkSD/YKMSWCbdm5i\n8JNjmPX9NIYPGM79/f5qGVyMiRKrAI1JQIEMLne+eS87lvbnP39YRu+u1sHFmGiyCtCYBBKcwaVR\nZgt4Zi5vTOnAGV3jHZkxqccqQGMSxOK1i7lxzo1s2LGB2ztN5LYL+/DouLJZXowx0WMVoDFxVrSx\niNvzbyd/ZT739LyH8465gtO7Z3LzzfuyvBhjos8ywSSZ1atXM2DAANq2bUvr1q0ZPnw4u3btino5\nCxYs4L333ov6cqurW7duNV7GkCFDePnllwG46qqrWLFiRcTzLlmyhBEjRgDRWzdlMrg0chlcLjlh\nKAPOy2TgQLjhhhoXYYypgFWASURVueCCC7jgggv48ssv+eqrr9ixYwc333xz1MuaP38+7777btSX\nW10LFy6s8TJEpPSeuWnTptGuXbuI5+3cuTMTJkwAar5udu/ZzeRFk2k7uS3rt61n+bDljM4dzUEZ\nDbjoIpflZcyYai/eGBMpVU35P/cxk9+bb76pp59+eplhmzdv1sMPP1y3bt2qTz31lF5//fWl4/r1\n66cFBQWqqjps2DA9+eST9aSTTtK77rqrdJoWLVroXXfdpZ06ddKsrCz9/PPPdeXKldqsWTNt3ry5\n5uTk6Ntvv62DBw/WvLy80vnq16+vqqrz58/X008/XQcMGKDHHXec3nLLLfrss89qly5dNCsrS7/5\n5pv9Psddd92lV1xxhebm5upxxx2nEydOLB03btw4bd++vbZv317Hjx+/X3lr167V7t27a3Z2trZv\n317ffvttVVWdPXu2du3aVTt16qSDBg3SrVu37lfukCFD9OWXX1ZV1R49euiSJUtKl33TTTfpSSed\npGeeeaZ+8MEH2qNHDz3uuON01qxZpZ+zf//+umrVqtJ1k52dXVp+JPbu3auvrnhV205qq72f6a1L\nf1gaNE71yitVzz5bddeuiBdpTK3y+86478Nr689agEnk008/pXPnzmWGNWzYkJYtW/L111/vlxEk\nuMVz//338+GHH7J06VIWLFjAJ598UjpNkyZNWLJkCcOGDWPs2LG0bNmSa6+9lj/96U989NFHnHba\naWGXHbBs2TIee+wxVqxYwTPPPMPXX3/NBx98wNChQ5k0aVLYz/Lll18yZ84cFi1axN13382ePXtY\nsmQJ06dPZ9GiRbz//vtMmzaNpUuXlinvH//4B3379qWwsJClS5eSnZ3NTz/9xP3338+8efNYsmQJ\nnTt35pFHHqlwXQbHv337dnr16sUnn3xCw4YNGTVqFPPmzWPmzJnceeedZeZr0aJF6bopLCzktNNO\nq7CcgMVrF5P791zumH8HE/tOZPZls+nQtEPp+FGjYPlyeOklqFMnokUaY2rIOsEkkYpSXlWWDuuF\nF15g2rRplJSU8P333/PZZ5/Rvn17AC644AIAOnXqxCuvvFI6j0aYPu5Xv/oVTZs2BaB169b07t0b\ngPbt2zN//vywsfbr1486derQuHFjjjzySH744QfeeecdLrjgAurVq1ca11tvvUXHjvvyXHbp0oUr\nr7yS3bt3M3DgQDp27EhBQQGfffYZp556KgC7du0qfR2JunXr0qdPHwCysrI46KCDyMzMpH379qxa\ntSrsPJGum9AOLldkX0FmRmaZaSZPhhdfhIULoX79iMM2xtSQtQCTyIknnsiSJUvKDNu8eTM//PAD\nJ5xwApmZmezdu7d03M6dOwFYuXIl48aNIz8/n6VLl9KvX7/ScQAHHnggAJmZmZSUlIQt+4ADDihd\n9t69e8t0vAnMD5CRkVH6PiMjo9zl1a1bt/R1oFyfd7B0uKruV7F3796dt99+m+bNmzNkyBCeeeYZ\nAM466ywKCwspLCzk008/Zdq0aWHLDadOUJMrIyOjNLaK4q9MuA4uQzsN3a/yy8tz1/tmz4YmTapV\nlDGmmqwCTCK9evVi+/btpTv9PXv2cOONNzJ8+HAOPPBAWrVqxccff4yq8t1337Fo0SIAtmzZQv36\n9TnkkENYt24d//73vystq2HDhmzZsqX0fcuWLUsr31mzZrF79+6ofjYRoXv37rz66qvs2LGDbdu2\n8eqrr9K9e/cy03377bc0adKEoUOHMnToUAoLC/n1r3/NwoUL+eabbwDYtm0bX331VVTjCxa6boKV\n18ElXPqyggK47jp44w1o1arWwjXGlMMqwCQzc+ZM8vLyaNu2LUcccQSZmZnceuutgLtVoFWrVpx4\n4omMGDGi9Hphhw4dyMnJ4Ze//CWXXnppudetgq8ZnnvuucycOZOcnBwWLlzIVVddxYIFC8jOzub9\n99+nQYMGZearbHnhxoXKyclhyJAhdOnShV//+tdcddVVpac/A9PPnz+f7OxsOnXqxIsvvsiIESM4\n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\n",
- "text": [
- "<matplotlib.figure.Figure at 0xa288b70>"
- ]
- }
- ],
- "prompt_number": 11
- }
- ],
- "metadata": {}
- }
- ]
-} \ No newline at end of file