summaryrefslogtreecommitdiff
path: root/Optical_Fiber_Communications_Principles_and_Practice
diff options
context:
space:
mode:
Diffstat (limited to 'Optical_Fiber_Communications_Principles_and_Practice')
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_10.ipynb104
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_11.ipynb83
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_12.ipynb488
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_13.ipynb146
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_14.ipynb188
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_2.ipynb251
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_3.ipynb322
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_4.ipynb35
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_5.ipynb239
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_6.ipynb188
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_7.ipynb167
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_8.ipynb209
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/Chapter_9.ipynb188
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/README.txt10
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001.pngbin0 -> 86216 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001_1.pngbin0 -> 86216 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002.pngbin0 -> 89779 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002_1.pngbin0 -> 89779 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel.pngbin0 -> 10443 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_1.pngbin0 -> 10443 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes.pngbin0 -> 10443 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_1.pngbin0 -> 10443 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_2.pngbin0 -> 10443 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_3.pngbin0 -> 10443 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_4.pngbin0 -> 10443 bytes
-rw-r--r--Optical_Fiber_Communications_Principles_and_Practice/techsupport0
26 files changed, 2618 insertions, 0 deletions
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_10.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_10.ipynb
new file mode 100644
index 00000000..077ac9f5
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_10.ipynb
@@ -0,0 +1,104 @@
+{
+ "metadata": {
+ "name": "Chapter_10"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 10 : Optical amplification, wavelength conversion and regeneration\n"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 10.1, page 555"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh=1.5*10**-6 #peak gain wavelength\ndelt=10**-9 #mode spacing\nl=300*10**-6 #length\nc=2.998*10**8 #speed of light\nr=0.09 #facet reflectivities\ngs=3.020\n\n#Calculation\nn=(h**2)/(2*delt*l) #refractive index\na=c/(math.pi*n*l)\nd=1-(math.sqrt(r)*gs)\nf=2*math.sqrt(math.sqrt(r)*gs)\nB=a*math.asin(d/f) #spectral bandwidth\n#Result\nprint'Refractive index of a medium = %.2f'%n\nprint'3dB spectral bandwidth = %.1f GHz'%(B*10**-9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Refractive index of a medium = 3.75\n3dB spectral bandwidth = 4.2 GHz\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 10.3, page 562"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\ngs=30 #gain in dB\ng=200 #net gain\nloge=0.434 #log(e)\ngs1=1000\nm=2.2 #mode no\nnsp=4 #spontaneous emission factor\nh1=6.626*10**-34 #plancks constant\nf=1.94*10**14\nB=1.0*10**12 #bandwidth\n\n#Calculation\nL=gs/(10*g*loge) #length of the device\nP=m*nsp*(gs1-1)*h1*f*B #noise power spectral density\n\n#Result\nprint'(a) Length of the device = %.2f mm'%(L*10**3)\nprint'(b) Noise power spectral density = %.2f mW'%(P*10**3)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Length of the device = 34.56 mm\n(b) Noise power spectral density = 1.13 mW\n"
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 10.4, page 580"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nGp=62.2 #parametric peak gain in dB\nlog=10*math.log10(0.25)\nPp=1.4 #signal power in watt\nL=500 #length in meter\nlog2=20*math.log10(2.7182818284)\n\n\n#Calculation\ny=(Gp-log)/(Pp*L*log2) #fiber nonlinear coefficient\nGp2=10*math.log10((y*Pp*L)**2) #parametric gain\n \n#Result\nprint'(a) Fiber nonlinear coefficient = %.2f x 10^-3 W^-1 km^-1'%(y*1000)\nprint'(b) Quadratic gain, Gp = %.2f dB'%(Gp2)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Fiber nonlinear coefficient = 11.22 x 10^-3 W^-1 km^-1\n(b) Quadratic gain, Gp = 17.90 dB\n"
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 10.5, page 589 "
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\npt=0.5*10**-3 #input signal power\ndpt=0.01*10**-6 #input signal power variation\nh=1.55*10**-6 #signal wavelength\na=-1 #linewidth enhancement factor\ndn=-1.2*10**-26 #differential refractive index\n\n#Calculation\ndelt=(-a*dpt)/(4*math.pi*pt) #frequency chirp\ndg=(4*math.pi*dn)/(h*a) #differential gain\n \n#Result\nprint'(a) Frequency chirp variation = %.2f MHz'%(delt*10**6)\nprint'(b) Differential gain = %.2f x10^-20 m^2'%(dg*10**20)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Frequency chirp variation = 1.59 MHz\n(b) Differential gain = 9.73 x10^-20 m^2\n"
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_11.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_11.ipynb
new file mode 100644
index 00000000..fd7eec66
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_11.ipynb
@@ -0,0 +1,83 @@
+{
+ "metadata": {
+ "name": "Chapter_11"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 11 : Integrated optics and photonics"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 11.1, page 624"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh=1.3*10**-6 #wavlength\nd=25*10**-6 #distance between the electrodes\nn1=2.1 #refractive index\nr=30.8*10**-12 #electro-optic coefficient\nl=2*10**-2 #length\n\n\n#Calculation\nV=(h*d)/(n1**3*r*l) #voltage\n\n#Result\nprint'Voltage = %.1f V'%V",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Voltage = 5.7 V\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 11.2, page 629"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nn1=3.1 #refractive index\nthet=1 #angle in degree\nh=1.52*10**-6 #wavelength\nl=10**-2 #length\n\n#Calculation\nne=n1*math.sin(2*thet*math.pi/180) #effective refractive index\nD=h/(2*ne) #Corrugation period\ns=D*h/l #filter bandwidth\n\n\n#Result\nprint'Corrugation period = %.1f um'%(D*10**6)\nprint'Filter 3 dB bandwidth = %.1f \u00c5 '%(s*10**10)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Corrugation period = 7.0 um\nFilter 3 dB bandwidth = 10.7 \u00c5 \n"
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 11.3, page 631"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nn1=8 #no of bands\nN1=0 #no of channels between any two bands\nN2=1 #no of channels between any two bands\nN3=2 #no of channels between any two bands\nM=4 #no of channels in each band\n\n#Calculation\nCs1=(n1-1)*N1 #total number of channels skipped \nCt1=(n1*M)+Cs1 #total number of channels for 4 skip-0 scheme\nCs2=(n1-1)*N2 #total number of channels skipped \nCt2=(n1*M)+Cs2 #total number of channels for 4 skip-1 scheme\nCs3=(n1-1)*N3 #total number of channels skipped \nCt3=(n1*M)+Cs3 #total number of channels for 4 skip-2 scheme\n\n#Result\nprint'Total number ofchannels required for each interleaver band filter'\nprint'(i) 4-skip-0:'\nprint' Ctotal = %d'%Ct1\nprint'(ii) 4-skip-1:'\nprint' Ctotal = %d'%Ct2\nprint'(iii) 4-skip-2:'\nprint' Ctotal = %d'%Ct3",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Total number ofchannels required for each interleaver band filter\n(i) 4-skip-0:\n Ctotal = 32\n(ii) 4-skip-1:\n Ctotal = 39\n(iii) 4-skip-2:\n Ctotal = 46\n"
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_12.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_12.ipynb
new file mode 100644
index 00000000..38f7d751
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_12.ipynb
@@ -0,0 +1,488 @@
+{
+ "metadata": {
+ "name": "Chapter_12"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 12 :- Optical fiber systems 1: Intensity modulation/direct detection\n"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.1, page 706"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nn=8 #bits in a time slot\nt=32 #bits in a frame\nf=8*10**3 #frequency\nm=16 #bits in a multiframe\n\n#Calculation\nnb=n*t #number of bits in a frame\nfr=nb*f #transmission rate\ntr=fr**-1 #bit duration\nts=tr*n #duration of a time slot\ntf=ts*t #duration of a frame\ntm=tf*m #duration of a multiframe\n\n#Result\nprint'(a) Bit rate for the system = %.3f Mbit s^-1'%(fr*10**-6)\nprint'(b) Duration of the time slot = %.1f \u03bcs'%(ts*10**6)\nprint'(c) Duration of a frame = %d \u03bcs' %(tf*10**6)\nprint'Duration of a multiframe = %d ms' %(tm*10**3)\n\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Bit rate for the system = 2.048 Mbit s^-1\n(b) Duration of the time slot = 3.9 \u03bcs\n(c) Duration of a frame = 125 \u03bcs\nDuration of a multiframe = 2 ms\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.2, page 720"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nm=4.24 #erfc = 2*10^9\na=2*math.sqrt(2)\n\n#Calculation\nsn=m*a #root of S/N = optical\nsn1=10*math.log10(sn) #in dB\nisq=sn**2 #S/N = electrical \nisq1=10*math.log10(isq) #in dB\n#Result\nprint'Optical SNR = %.1f'%sn\nprint' = %.1f dB'%sn1\nprint'Electrical SNR = %.1f'%round(isq)\nprint' = %.1f dB'%isq1",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Optical SNR = 12.0\n = 10.8 dB\nElectrical SNR = 144.0\n = 21.6 dB\n"
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.3, page 723"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nm=100 #multiplication factor\nk=0.02 #ratio of carrier ionization rates \nsn=144 #electrical SNR\nn=0.8 #quantum efficiency\nB=0.6\n\n#Calculation\nfm=(k*m)+(2-(1/m))*(1-k) #avalanche noise factor\nzm=2*B*round(fm)*sn/n #average number of photons\n\n#Result\nprint'Average no of photons = %d photons'%round(zm)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Average no of photons = 864 photons\n"
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.4, page 724"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nzm=864 #average no of photons\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\nl1=10**-6 #wavelength\nl2=10**-14 #wavelength\nbt=10**7 \nn=14\n\n\n#Calculation\npo1=(zm*h*c*bt)/(2*l1) #At 10 Mbit s^-1\npo2=(zm*h*c*n*bt)/(2*l2) #At 140 Mbit s^-1\n\n#Result\nprint'Incident optical power (10 Mbit s^-l) = %.1f pW'%(po1*10**12)\nprint'Incident optical power (140 Mbit s^-l) = %.3f W'%po2 #value given in a textbook is incorrect",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Incident optical power (10 Mbit s^-l) = 858.2 pW\nIncident optical power (140 Mbit s^-l) = 1.201 W\n"
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.5, page 726"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nafc=5 #fibre cable attenuation\nai=2 #splice losses\nl=4 #length in Km\naf=3.5+2.5 #connector losses at source and detector resp\n\n#Calculation\nCl=(afc+ai)*l+af #total channel loss\n\n#Result\nprint'Total channel loss = %d dB'%Cl",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Total channel loss = 34 dB\n"
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.6, page 727"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\ns=0.6*10**-9 #rms pulse broadening\nL=8 #length in km\nbt=25*10**6 #bit rates\nbt1=150*10**6 #bit rates\n\n#Calculation\nst=s*L #total rms pulse broadening\ndl1=2*(2*st*bt*math.sqrt(2))**4 #without mode coupling\nst1=s*math.sqrt(L) #total rms pulse broadening\ndl2=2*(2*st1*bt*math.sqrt(2))**4 #with mode coupling\ndl3=2*(2*st*bt1*math.sqrt(2))**4 #without mode coupling\ndl4=2*(2*st1*bt1*math.sqrt(2))**4 #with mode coupling\n\n#Result\nprint'(a) For 25 Mbit per sec'\nprint'dispersion\u2013equalization penalty (without mode coupling) = %.2f dB'%dl1\nprint'dispersion\u2013equalization penalty (with mode coupling) = %.2f x 10^-4 dB\\n'%(dl2*10**4)\nprint'(b) For 150 Mbit per sec'\nprint'dispersion\u2013equalization penalty (without mode coupling) = %.2f dB'%dl3\nprint'dispersion\u2013equalization penalty (with mode coupling) = %.2f dB'%dl4",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) For 25 Mbit per sec\ndispersion\u2013equalization penalty (without mode coupling) = 0.03 dB\ndispersion\u2013equalization penalty (with mode coupling) = 4.15 x 10^-4 dB\n\n(b) For 150 Mbit per sec\ndispersion\u2013equalization penalty (without mode coupling) = 34.40 dB\ndispersion\u2013equalization penalty (with mode coupling) = 0.54 dB\n"
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.7, page 731"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nts=8 #rise time for source in ns\ntn=5*ts #for fiber intermodal\ntc=1*ts #for pulse broadening\ntd=6 #for detector\n\n#Calculation\ntsys=1.1*(ts**2+tn**2+tc**2+td**2)**0.5 #total system rise time\nBt=0.7/(tsys*10**-9) #max bit rate\n\n\n#Result\nprint'Bt (Max) = %.1f Mbit per sec'%(Bt/10**6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Bt (Max) = 15.2 Mbit per sec\n"
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.8, page 732"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\npo=-55 #mean power required at the APD receiver at 35 Mbit s^-1\npo1=-44 #mean power required at the APD receiver at 400 Mbit s^-1\npi=-3 #mean power launched from the laser transmitter\nl1=0.4 #cable fiber loss\nl2=0.1 #splice losses\nl3=1 #connector loss \nma=7 #safety margin\na=0.5 \nacr=2\ndl=1.5\n\n#Calculation \nL1=(pi-po-acr-ma)/a #for 35 Mbit s^-1\nL2=(pi-po1-acr-ma)/a #for 400 Mbit s^-1\nL3=(pi-po1-acr-dl-ma)/a #reduction in the maximum possible link\n\n#Result\nprint'(a) Maximum possible link length (operating at 35 Mbit s^-1) = %d km'%L1\nprint'(b) Maximum possible link length (operating at 400 Mbit s^-1) = %d km'%L2\nprint'(c) Reduction in the maximum possible link length = %d km'%L3",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Maximum possible link length (operating at 35 Mbit s^-1) = 86 km\n(b) Maximum possible link length (operating at 400 Mbit s^-1) = 64 km\n(c) Reduction in the maximum possible link length = 61 km\n"
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.9, page 734"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\npo=-10 #mean optical power launched into the fiber from the transmitter (100 \u03bcm)\nrs=-41 #receiver sensitivity at 20 Mbit s^-1\nl1=7*2.6 #cabled fiber loss\nl2=6*0.5 #splice losses\nl3=1*1.5 #connector loss \nms=6 #safety margin\n\n#Calculation\nts=po-rs #Total system margin\ntsl=l1+l2+l3+ms #Total system loss\npm=ts-tsl #Excess power margin \n\n#Result\nprint'Total system margin = %d dB'%ts\nprint'Total system loss = %.1f dB'%tsl\nprint'Excess power margin = %.1f dB'%pm\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Total system margin = 31 dB\nTotal system loss = 28.7 dB\nExcess power margin = 2.3 dB\n"
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.10, page 740"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nv=5 #output voltage\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\nk=1.385*10**-23 #boltzman constant\nt=290 #tempreture in kelvin\nzo=100 #cable impedance\nn=0.7 #quantum efficiency\npi=10**-3 #optical power\nlam=0.85*10**-6 #wavelength\n\n#Calculation\nratio=(v**2*h*c)/(2*k*t*zo*n*pi*lam) #ratio\nratio1=10*math.log10(ratio) #ration in dB\n\n#Result\nprint'Ratio = %d dB'%ratio1",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Ratio = 40 dB\n"
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.11, page 744"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nma=0.8 #modulation index\nR=0.5 #responsivity\nb=0.7 #ratio of luminance to composite video\nsnr=3.162*10**5 #SNR\ne=1.602*10**-19 #electron volt\nB=5*10**6 #bandwidth\nK=1.385*10**-23 #boltzman constant \nT=293 #tempreture in kelvin\nFn=1.413\nRl=10**6\n\n#Calculation\na=(2*ma*R*b)**2\nc=snr*2*e*B*R\nd=snr*4*K*T*B*Fn/Rl\nf = (c**2)+(4*a*d)\npo=(c+math.sqrt(f))/(2*a) #average incident optical power \npo1=10*math.log10(po*1000) #in dB\n\n#Result\nprint'Average incident optical power = %.2f uW'%(po*10**6)\nprint' = %.1f dB m'%po1\n\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Average incident optical power = 0.93 uW\n = -30.3 dB m\n"
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.12, page 747"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\ne=1.602*10**-19 #1 electron volt\nn=0.6 #p\u2013i\u2013n photodiode quantum efficiency\nma=0.5 #modulation index\nlam=10**-6 #wavelength\nk=1.385*10**-23 #boltzman constant \nt=300 #tempreture in kelvin\nf=4 #amplifier noise figure\nrl=50*10**3 #effective load impedance\nsn=3.162*10**4 #signal to noise ratio\nB=10**7 #bandwidth\n\n#Calculation\na=h*c/(e*n*ma**2*lam)\nb=math.sqrt((8*k*t*f)/rl)\nc=math.sqrt(sn*B)\npo=a*b*c #optical power\npo1=10*math.log10(po*1000) #optical power in dB\n\n#Result\nprint'Optical power, Po = %.2f uW'%(po*10**6)\nprint' = %.1f dBm'%po1",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Optical power, Po = 7.58 uW\n = -21.2 dBm\n"
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.13, page 748"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\npo=-10 #mean optical power launched into the fiber from the transmitter (100 \u03bcm)\nrs=-25 #receiver sensitivity \nl1=2*3.5 #cable fiber loss\nl2=2*0.7 #splice losses\nl3=1.6 #connector loss \nms=4.0 #safety margin\nafc=3.5\nai=0.7\nacr=1.6\nma=7\n\n#Calculation\nts=po-rs #Total system margi\ntsl=l1+l2+l3+ms #Total system loss\npm=ts-tsl #Excess power margin \nL=((0-rs)-(acr+ma))/(afc+ai)\n\n#Result\nprint'(a) Total system margin = %d dB'%ts\nprint' Total system loss = %.1f dB'%tsl\nprint' Excess power margin = %.1f dB'%pm\nprint'\\n(b) Increase in link length = %.1f Km'%(L)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Total system margin = 15 dB\n Total system loss = 14.0 dB\n Excess power margin = 1.0 dB\n\n(b) Increase in link length = 3.9 Km\n"
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.14, page 750"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nBop=6*10**6\nts=10 #rise time for source in ns\ntn=5*9 #for fiber intermodal\ntc=5*2 #for pulse broadening\ntd=3 #for detector\n\n\n#Calculation\ntsys=0.35/Bop\ntsys1=1.1*(ts**2+tn**2+tc**2+td**2)**0.5 #total system rise time\n\n#Result\nprint'Maximum permitted system rise time = %.1f ns'%(tsys*10**9)\nprint'Total system rise time = %.1f ns'%(tsys1)\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximum permitted system rise time = 58.3 ns\nTotal system rise time = 52.0 ns\n"
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.15, page 755"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nfd=400*10**3 #peak frequency deviation\nBa=4*10**3 #bandwidth\n\n#Calculation\nDf=fd/Ba #frequency deviation ratio\nsnr=1.76+(20*math.log10(Df)) #SNR improvement\nBm=2*(Df+1)*Ba #bandwidth of the FM\u2013IM signal \n \n#Result\nprint'(a) SNR improvement = %.2f dB'%snr\nprint'(b) Frequency deviation ratio = %d'%Df\nprint' Bandwidth of FM-IM signal = %d kHz'%(Bm/1000)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) SNR improvement = 41.76 dB\n(b) Frequency deviation ratio = 100\n Bandwidth of FM-IM signal = 808 kHz\n"
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.16, page 757"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nfm=3 #output FM ratio\npm=1 #output PM ratio\n\n#Calculation\nratio=fm/pm #SNR ratio\nratio1=10*math.log10(ratio) #SNR ratio in dB\n\n#Result\nprint'Ratio of output SNR = %.2f dB'%(ratio1)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Ratio of output SNR = 4.77 dB\n"
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.17, page 759"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nto=5*10**-8 #nominal pulse period\nfd=5*10**6 #Peak-to-peak frequency deviation\nM=60 #A PD multiplication factor\nR=0.7 #A PD responsivity\npo=10**-7 #peak optical power at receiver\ntr=12*10**-9 #Total system 10\u201390% rise time\nB=6*10**6 #baseband noise bandwidth\ni=10**-17 #Receiver mean square noise current\n\n\n#Calculation\nsnp=(3*(to*fd*M*R*po)**2)/(i*(2*math.pi*tr*B)**2) #peak-to-peak signal to rms noise ratio\nsnp1=10*math.log10(snp) #in dB\n\n#Result\nprint'Peak-to-peak signal to rms noise ratio = %.1f dB'%snp1\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Peak-to-peak signal to rms noise ratio = 62.1 dB\n"
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.18, page 763"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "%pylab inline\nimport math\nfrom pylab import *\nfrom numpy import *\n\n#Variable declaration\nacr=1 #connector loss in dB\nafc=5 #loss per kilometer in dB\nLbu=0.1 #fiber length between each of the access couplers\nLac=1 #insertion loss\nLtr=10 #loss due to the tap ratio\nLsp=3 #splitting loss\n \n#Calculating, we get two equation in terms of N, no of nodes, i.e C(1,N-1)=(3.5*N)+8.5 and C(star)=4.5+(10*log10(N)) \n\n#For Bus distribution system\n\nfor N in range(1,13,1):\n C=(3.5*N)+8.5;\n a=plot(N,C,'.r')\n \n \n#for Star distribution system\n \nfor N in range(1,30,1):\n C1=4.5+(10*log10(N));\n b=plot(N,C1,'.g')\n \n \n#To show plot in same graph\n#Graphical comparison showing total channel loss against number of nodes\n\nplt.annotate('Linear Bus',xy=(10, 43.5), xytext=(11, 40))\nplt.annotate('Star',xy=(16, 15), xytext=(17, 13))\nxlabel(\"Number of nodes $N$\")\nylabel(\"Total channel loss $CL$ (dB)\")\ntitle(\"Characteristics showing the total channel loss against the number of nodes\")\ngrid()\nshow(a)\nshow(b)\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Populating the interactive namespace from numpy and matplotlib\n"
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\nEEKIGv0/kAL13NFyzXoAAAAASUVORK5CYII=\n",
+ "text": "<matplotlib.figure.Figure at 0x46877d0>"
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.19, page 782"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\nlam=1.55*10**-6 #wavelength\nL=100*10**3 #length\nK=4 \nB=1.2*10**9 #bandwidth\nsnr=50 #SNR\na=10**-2.5\npi=10**-3\n\n#Calculation\nLt=(pi*lam*a*L)/(K*h*c*B*snr) #link with a large number of cascaded amplifiers\n\n#Result\nprint'Maximum system length = %d x 10^4 km'%(Lt/10**7)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximum system length = 1 x 10^4 km\n"
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.21, page 791"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nb=17 #second-order dispersion coefficient for the latter path\nL2=20 #path length in km\nL1=160.00 #path length in km\ns1=-0.075 #dispersion slope\n\n#Calculation\na=-b*L2\nG=a/L1 #second-order dispersion coefficient\ns2=s1*L1/L2 #chromatic dispersion slope\n\n#Result\nprint'(a) Second-order dispersion coefficient = %.3f ps nm^-1 km^-1'%G \nprint'(b) chromatic dispersion slope = %.1f ps nm^-2 km^-1'%s2",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Second-order dispersion coefficient = -2.125 ps nm^-1 km^-1\n(b) chromatic dispersion slope = -0.6 ps nm^-2 km^-1\n"
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.22, page 798"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nto=70*10**-12 #bit period\nt=6*10**-12 #RZ pulse width\nB2=50*10**-12*10**-12*10**-3 #second-order dispersion coefficient\nL=50*10**3 #amplifier spacing\n\n#Calculation\nqo=0.5*to/t #separation of the soliton pulses \nBt=(2*qo*math.sqrt(B2*L))**-1 #transmission bit rate \n\n#Result\nprint'(a) Separation = %.1f'%qo\nprint'(b) Transmission bit rate = %.2f x 10^9'%(Bt*10**-8)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Separation = 5.8\n(b) Transmission bit rate = 17.14 x 10^9\n"
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 12.23, page 799"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nto=40*10**-12 #bit period\nt=4*10**-12 #RZ pulse width\na=0.2*10**-3 #attenuation coefficient\nB2=1.25*10**-12*10**-12*10**-3 #second-order dispersion coefficient\n\n#Calculation\nqo=0.5*to/t #separation of the soliton pulses \nb=1/(2*qo)\nc=math.sqrt(a/B2)\nBt=b*c #transmission bit rate \n\n#Result\nprint'(a) Separation = %.1f'%qo\nprint'(b) Transmission bit rate = %.2f x 10^10 bit s^-1'%(Bt*10**-10)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Separation = 5.0\n(b) Transmission bit rate = 4.00 x 10^10 bit s^-1\n"
+ }
+ ],
+ "prompt_number": 22
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_13.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_13.ipynb
new file mode 100644
index 00000000..3392b3ce
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_13.ipynb
@@ -0,0 +1,146 @@
+{
+ "metadata": {
+ "name": "Chapter_13"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 13: Optical fiber systems 2: coherent and phase-modulated"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 13.1, page 832"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nf1=150*10**6 #reciever IF\nf2=19*10**9 #output frequency change\n\n\n#Calculation\nm=f1*f2**-1 #maximum tempreture change\n\n#Result\nprint'Maximum tempreture change = %d \u00d7 10^-3 \u00b0C '%round(m*10**3)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximum tempreture change = 8 \u00d7 10^-3 \u00b0C \n"
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 13.2, page 834"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\np=-85.45/10\nn=0.86 #quantum efficiency\nh1=1.54*10**-6 #homodyne receiver operating wavelength\nsn=10**-1.2 #SNR\nh=6.626*10**-34 #plancks constant\nc=2.998*10**8 #velocity of light\n\n\n#Calculation\nps=10**(p) #incoming signal power in dB\nB=(n*ps*sn*h1)/(h*c) #Bandwidth\n\n#Result\nprint'Incoming signal power, Ps = %f nW'%(ps*10**9)\nprint'Operating bandwidth, B = %.1f GHz'%(B*10**-9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Incoming signal power, Ps = 2.851018 nW\nOperating bandwidth, B = 1.2 GHz\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 13.3, page 878"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\npe=4.24 #probability error function\npe2=20 #probability exponential function\n\n\n#Calculation\nNp=pe**2*4 #no of photons\nNp2=pe2*4\nNp3=pe**2/2\n\n#Result\nprint'(a) ASK heterodyne synchronous detection = %d photons'%round(Np)\nprint'(b) ASK heterodyne asynchronous detection = %d photons'%round(Np2)\nprint'(c) pSK homodyne detection = %d photons'%round(Np3)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) ASK heterodyne synchronous detection = 72 photons\n(b) ASK heterodyne asynchronous detection = 80 photons\n(c) pSK homodyne detection = 9 photons\n"
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 13.4, page 881"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\nBt=400*10**6 #FSK signal bit rate\nh=1.55*10**-6 #wavelength\n\n#Calculation\nps=(36*h1*c*Bt)/(h) #optical power\n\n#Result\nprint'Minimum incoming optical power level = %.1f nW'%(ps*10**9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Minimum incoming optical power level = 1.8 nW\n"
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 13.5, page 883"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nNp=36 #average photons\nNp2=9 #average photons\nh=6.63*10**-34 #plancks constant\nf=3*10**8 #frequency\nBt=50*10**6 #bit rates\nBt2=10**9 #bit rates\nh1=1.55*10**-6 #operating wavelength\na=0.2 #connector loss\n\n\n#Calculation\nPs=Np*h*f*Bt/h1 #in watt\nPs1=10*math.log10(Ps*10**3) #in dB\nma=4-Ps1 #Max. system margin\nmar=ma/a #Max. repeater spacing \n \nPs2=Np*h*f*Bt2/h1 #in watt\nPs3=10*math.log10(Ps2*10**3) #in dB\nma1=4-Ps3 #Max. system margin\nmar1=ma1/a #Max. repeater spacing \n\nPs4=Np2*h*f*Bt/h1 #in watt\nPs5=10*math.log10(Ps4*10**3) #in dB\nma2=4-Ps5 #Max. system margin\nmar2=ma2/a #Max. repeater spacing \n\nPs6=Np2*h*f*Bt2/h1 #in watt\nPs7=10*math.log10(Ps6*10**3) #in dB\nma3=4-Ps7 #Max. system margin\nmar3=ma3/a #Max. repeater spacing \n\n\n#Result\nprint'(a)Max. repeater spacing (50 Mbit s^-1) = %.1f km'%round(mar)\nprint' (1 Gbit s^-1) = %.1f km'%round(mar1)\nprint'\\n(b)Max. repeater spacing (50 Mbit s^-1) = %.1f km'%round(mar2)\nprint' (1 Gbit s^-1) = %.1f km'%round(mar3)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a)Max. repeater spacing (50 Mbit s^-1) = 352.0 km\n (1 Gbit s^-1) = 287.0 km\n\n(b)Max. repeater spacing (50 Mbit s^-1) = 382.0 km\n (1 Gbit s^-1) = 317.0 km\n"
+ }
+ ],
+ "prompt_number": 37
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 13.6, page 888"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nnp=150\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\nbf=20*10**12 #optical bandwidth\nh=1.3*10**-6 #wavelength\n\n#Calculation\ntx=(np*h1*c*bf)/h #transmitter power\n\n#Result\nprint'Minimum transmitter power = %.1f mW' %(tx*1000)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Minimum transmitter power = 0.5 mW\n"
+ }
+ ],
+ "prompt_number": 26
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_14.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_14.ipynb
new file mode 100644
index 00000000..80d85c26
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_14.ipynb
@@ -0,0 +1,188 @@
+{
+ "metadata": {
+ "name": "Chapter_14"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 14 : Optical fiber measurements"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 14.1, page 912"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nv2=10.7 #increased voltage\nv1=2.1 #voltage\nl1=2 #length in Km\nl2=0.002 #length in Km\n\n\n\n#Calculation\na=(10/(l1-l2))*math.log10(v2/v1) #Attenuation\nu=0.2/(l1-l2) #incertainty\n\n#Result\nprint'Attenuation per Km = %.1f dB Km^-1'%a\nprint'Uncertainty = \u00b1 %.1f dB'%u",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Attenuation per Km = 3.5 dB Km^-1\nUncertainty = \u00b1 0.1 dB\n"
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 14.2, page 917"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nt2=100 #time in sec\nt1=10 #time in sec\nti=0.525 #micro voltage\nto=0.021 #micro voltage\nC=1.64*10**4 #thermal capacity\ntin=4.3*10**-4 #maximum temperature rise\npop=98*10**-3 #optical power\n\n\n#Calculation\ntc=(t2-t1)/(math.log(ti)-math.log(to)) #time constant for the calorimeter\na=(C*tin)/(pop*tc) #absortion loss\n\n#Result\nprint'Absorption loss in dB = %.1f dB Km^-1'%a",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Absorption loss in dB = 2.6 dB Km^-1\n"
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 14.3, page 919"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nVsc=6.14*10**-9 #voltage\nVop=153.38*10**-6 #voltage without scattering\nl=2.92 #length of fibre in cm\n\n\n#Calculation\na=4.343*10**5*Vsc/(l*Vop) #scattering loss\n\n#Result\nprint'Scattering loss in dB = %.1f dB Km^-1'%a",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Scattering loss in dB = 6.0 dB Km^-1\n"
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 14.4, page 922"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nt1=12.6*10**-9 #time in sec\nt2=0.3*10**-9 #time in sec\n\n\n\n#Calculation\nt=math.sqrt(t1**2-t2**2)/1.2 #pulse broadening \nBop=0.44/t #bandwidth length product\n\n#Result\nprint'(a) 3dB pulse broadening = %.1f ns km^-1'%(t*10**9)\nprint'(b) Fiber bandwidth\u2013length product = %.1f MHz km'%(Bop*10**-6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) 3dB pulse broadening = 10.5 ns km^-1\n(b) Fiber bandwidth\u2013length product = 41.9 MHz km\n"
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 14.5, page 940"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nA=6.2 #output pattern size\nD=10 #screen position\n\n#Calculation\nNA=A/math.sqrt(A**2+(4*D**2)) #numerical aperture\n\n#Result\nprint'Numerical aperture = %.2f'%NA",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Numerical aperture = 0.30\n"
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 14.6, page 942"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nphi=4 #angular velocity\nl=0.1 #length in meter\nwe=300*10**-6 #shadow pulse width\n\n#Calculation\ns=l*phi #shadow velocity\nd=we*s #fibre diameter\n\n#Result\nprint'Outer fibre diameter = %.1f um'%(d*10**6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Outer fibre diameter = 120.0 um\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 14.7, page 950"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\na=5*10**-3 #optical signal power\nb=20*10**-6 #optical signal power\nc=0.3*10**-3 #optical signal power\nd=800*10**-9 #optical signal power\n\n#Calculation\nadb=10*math.log10(a*10**3) #in dBm\nbdb=10*math.log10(b*10**3) #in dBm\ncdb=10*math.log10(c*10**6) #in dBu\nddb=10*math.log10(d*10**6) #in dBu\n\n#Result\nprint'(a) For a 1 mW reference power level'\nprint' optical signal power of 5 mW = %.2f dBm'%adb\nprint' optical signal power of 20 uW = %.2f dBm'%bdb\nprint'\\n(b) For a 1 \u03bcW reference power level'\nprint' optical signal power of 0.3 mW = %.2f dBu'%cdb #value given in a textbook is incorrect\nprint' optical signal power of 800 nW = %.2f dBu'%ddb",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) For a 1 mW reference power level\n optical signal power of 5 mW = 6.99 dBm\n optical signal power of 20 uW = -16.99 dBm\n\n(b) For a 1 \u03bcW reference power level\n optical signal power of 0.3 mW = 24.77 dBu\n optical signal power of 800 nW = -0.97 dBu\n"
+ }
+ ],
+ "prompt_number": 35
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 14.8, page 953"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nNA=0.02 #numerical aperture\nyr=0.7*10**-3 #Rayleigh scattering coefficient\nc=2.998*10**8 #speed of light\nwo=50*10**-9 #pulse time\nn1=1.5\n\n#Calculation\np=0.5*(((NA**2)*yr*wo*c)/(4*(n1**3))) #power ratio\npdb=10*math.log10(p*10**3) #in dB\n\n#Result\nprint'Power ratio = %.3f X 10^-7'%(p*10**7) #value given in a textbook is incorrect\nprint'Power ratio in dB = %.1f dB'%pdb #value given in a textbook is incorrect",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Power ratio = 1.555 X 10^-7\nPower ratio in dB = -38.1 dB\n"
+ }
+ ],
+ "prompt_number": 19
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_2.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_2.ipynb
new file mode 100644
index 00000000..81d67649
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_2.ipynb
@@ -0,0 +1,251 @@
+{
+ "metadata": {
+ "name": "Chapter_2"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 2 : Optical fiber waveguides\n"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.1, page 19"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nn1=1.50 #core refractive index\nn2=1.47 #cladding refractive index\n\n#Calculation\nphic=math.asin(n2/n1)*180/(math.pi) #critical angle at core cladding\nNA=math.sqrt(n1**2-n2**2) #numerical aperture\nphia=math.asin(NA)*180/math.pi #acceptance angle in air\n\n#Result\nprint'(a) Critical angle at the core-cladding = %.1f\u00b0'%phic\nprint'(b) NA for the fiber = %.2f'%NA\nprint'(c) Acceptance angle in air for the fiber = %.1f\u00b0'%phia",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Critical angle at the core-cladding = 78.5\u00b0\n(b) NA for the fiber = 0.30\n(c) Acceptance angle in air for the fiber = 17.4\u00b0\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.2, page 20"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\ndelta=0.01 #relative refractive index = 1%\nn1=1.46 #core index\n\n#Calculation\nNA=n1*math.sqrt(2*delta) #numerical aperture\nzeta=math.pi*(NA)**2 #solid acceptance angle\nn12=1-delta #ratio of(n2/n1)\nphic=math.asin(n12)*180/math.pi #critical angle\n\n#Result\nprint'Numerical aperture (NA) = %.2f'%NA\nprint'Solid acceptance angle = ',round((zeta),2),'rad'\nprint'Critical angle at core-cladding = %.1f\u00b0'%phic",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Numerical aperture (NA) = 0.21\nSolid acceptance angle = 0.13 rad\nCritical angle at core-cladding = 81.9\u00b0\n"
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.3, page 23"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#variable declaration\nNA=0.4 #numerical aperture\ny=50*math.pi/180 #angle between projection of the ray and radius of fibre of core (radians)\n\n#Calculation\nphia1=math.asin(NA)*180/math.pi #acceptance angle for meridional rays\nphia2=math.asin(NA/(math.cos(y)))*180/math.pi #acceptance angle for skew rays\n\n#Result\nprint'Acceptance angle for meridional rays = %.1f\u00b0'%phia1\nprint'Acceptance angle for skew rays = %.1f\u00b0'%phia2\nprint\"Therefore, acceptance angle for the skew rays is about 15\u00b0 greater thanthe corresponding angle for meridional rays\"",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Acceptance angle for meridional rays = 23.6\u00b0\nAcceptance angle for skew rays = 38.5\u00b0\nTherefore, acceptance angle for the skew rays is about 15\u00b0 greater thanthe corresponding angle for meridional rays\n"
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.4, page 45"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#variable declaration\nn1=1.48 #core index\na=40*10**-6 #radius of core\ndelta=1.5/100 #relative refractive index = 1.5%\nh=0.85*10**-6 #operating wavelength\n\n#Calculation \nV=(2*math.pi*a*n1*math.sqrt(2*delta))/h #normalized frequency for the fiber\nMs=(V**2)/2 #no of guided modes\n\n#Result\nprint 'Normalised frequency, V = %.1f'%V\nprint'Total number of guided modes, Ms = %d'%round(Ms)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Normalised frequency, V = 75.8\nTotal number of guided modes, Ms = 2872\n"
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.5, page 54"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#variable declaration\nNA=0.2 #numerical aperture\na=25*10**-6 #radius of core\nh=1*10**-6 #operating wavelength\n\n#Calculation \nV=(2*math.pi*a*NA)/h #normalized frequency for the fiber\nMg=(V**2)/4 #no of guided modes gor parabolic profile\n\n#Result\nprint 'Normalised frequency, V = %.1f'%V\nprint'Total number of guided modes, Mg = %d'%round(Mg)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Normalised frequency, V = 31.4\nTotal number of guided modes, Mg = 247\n"
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.6, page 55"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n#variable declaration\nn1=1.48 #core index \nh=0.85*10**-6 #operating wavelength\nV=2.4 #normalized frequency for the fiber\ndelta=1.5/100 #relative refractive index (RRI)= 1.5%\ndelta1=delta/10 #RRI difference reduced by 10\n\n#Calculation\na=(V*h)/(2*math.pi*n1*math.sqrt(2*delta)) #radius of core\nd=2*a\na1=(V*h)/(2*math.pi*n1*math.sqrt(2*delta1)) #new radius of core\nd1=2*a1\n\n#Result\nprint 'Maximum core diameter for relative refractive index of 1.5 percent = ',round((d*10**6),2),\"um\"\nprint \"Maximum core diameter for relative refractive index = \",round(d1*10**6),\"um\"",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximum core diameter for relative refractive index of 1.5 percent = 2.53 um\nMaximum core diameter for relative refractive index = 8.0 um\n"
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.7, page 2.7"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n#variable declaration\nn1=1.5 #core index \ndelta=0.01 #relative refractive index (RRI)= 1%\nh=1.3*10**-6 #operating wavelength\nalph=2\n\n#Calculation\nV=(2.4)*math.sqrt(1+(2/alph)) #normalized frequency for the fiber\na=(V*h)/(2*math.pi*n1*math.sqrt(2*delta)) #radius of core\nd=2*a\n\n#Result\nprint \"Maximum core diameter for relative refractive index = \",round(d*10**6,1),\"um\"",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximum core diameter for relative refractive index = 6.6 um\n"
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.8, page 60"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n#Variable declaration\na=4.5*10**-6 #radius of core\nn1=1.46 #core index \ndelta=0.25/100 #relative refractive index (RRI)= 0.25%\n\n\n#Calculation \nhc=(2*math.pi*a*n1*math.sqrt(2*delta))/2.405 #cutoff wavelength\n\n\n#Result\nprint 'Fibre is single moded to a wavelength = ',round(hc*10**9),'nm'",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Fibre is single moded to a wavelength = 1214.0 nm\n"
+ }
+ ],
+ "prompt_number": 24
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.10, page 69"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n#Variable declaration\nwo=5.8*10**-6 #spot size \nV=2.2 #normalized frequency\n\n#Calculation \na=wo/((0.65+1.619*V**(-1.5))+(2.879*V**-6)) #radius of the core\nd=2*a\n\n#Result\nprint'Fibre core diameter = ',round(d*10**6,1),\"um\"\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Fibre core diameter = 9.9 um\n"
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.11, page 73"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n#Variable declaration\nh=1.30*10**-6 #operating wavelength \nhc=1.08*10**-6 #cutoff wavelength\ntheta=12 #in angle (degree)\n\n#Calculation \naeff=3.832*h/(2*math.pi*math.sin(theta)) #effective core radius\nVeff=2.405*hc/h #effective normalised frequency\nwo=3.81*10**-6*(0.6043+(1.755*Veff**-1.5)+(2.78*Veff**-6)) #spot size\n\n#Result\nprint 'Spot size = ',round(wo*10**6,2),'um'",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Spot size = 4.84 um\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 2.12, page 74"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nwo=5.2*10**-6 #spot size\nn1=1.485 #core index\nhc=1.190*10**-6 #cutoff wavelength\n\n#Calculation \naesi=1.820*wo #ESI core radius\nD=(0.293/n1**2)*(hc/aesi)**2 #ESI relative index difference\n\n#Result\nprint'ESI relative refractive index difference = ',round(D*10**2,2),'%'",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "ESI relative refractive index difference = 0.21 %\n"
+ }
+ ],
+ "prompt_number": 22
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_3.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_3.ipynb
new file mode 100644
index 00000000..44b64c87
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_3.ipynb
@@ -0,0 +1,322 @@
+{
+ "metadata": {
+ "name": "Chapter_3"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 3 : Transmission characteristics of\noptical fibers"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.1, page 89"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nPi=120*10**-6 #mean i/p power in uW\nPo=3*10**-6 #mean o/p power in uW\nL=8 #length of fibre in Km\na1=2 #loss in dB\nL1=10 #length of fibre in Km\nloss=9 #loss in dB\n\n#Calculation \nSA=10*math.log10(Pi/Po) #overall signal attenuation\na=SA/L #signal attenuation per kilometer\nal=a1*L1\nSA1=al+loss #signal attenuation for the 10KM link\nP=10**(2.9) #i/o power ratio, 2.9 is numeric value\n\n\n#Result\nprint'Overall signal attenuation = ',round(SA),'dB'\nprint'Signal attenuation per kilometer = ',round(a),'dB Km^-1'\nprint'Overall signal attenuation for the 10KM link = ',round(SA1),'dB'\nprint'Numeric value for i/o power ratio = %.1f' %P",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Overall signal attenuation = 16.0 dB\nSignal attenuation per kilometer = 2.0 dB Km^-1\nOverall signal attenuation for the 10KM link = 29.0 dB\nNumeric value for i/o power ratio = 794.3\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.2, page 96"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nTf=1400 #tempreture in kelvin\nK=1.381*10**-23 #Boltzmann\u2019s constant\nBc=7*10**-11 #isothermal compressibility\nn=1.46 #refractive index\np=0.286 #refractive index\nh1=0.63*10**-6 #wavelength\nh2=10**-6 #wavelength\nh3=1.3*10**-6 #wavelength\nL=10**3 #length in km\n\n#Calculation \na=(8*math.pi**3*n**8*p**2*Bc*K*Tf)/3\nyr=a/h1**4 #Rayleigh scattering coefficient \nLk=math.exp(-yr*L) #transmission loss factor\nAt=10*math.log10(Lk**-1) #attenuation due to Rayleigh scattering\nyr1=a/h2**4 #Rayleigh scattering coefficient \nLk1=math.exp(-yr1*L) #transmission loss factor\nAt1=10*math.log10(Lk1**-1) #attenuation due to Rayleigh scattering\nyr2=a/h3**4 #Rayleigh scattering coefficient \nLk2=math.exp(-yr2*L) #transmission loss factor\nAt2=10*math.log10(Lk2**-1) #attenuation due to Rayleigh scattering\n\n#Result\nprint'Attenuation due to Rayleigh scattering (in 0.63 \u03bcm)= %.1f dB km^-1'%(At)\nprint'Attenuation due to Rayleigh scattering (in 1.0 \u03bcm)= %.1f dB km^-1'%(At1)\nprint'Attenuation due to Rayleigh scattering (in 1.30 \u03bcm)= %.1f dB km^-1'%(At2)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Attenuation due to Rayleigh scattering (in 0.63 \u03bcm)= 5.2 dB\nAttenuation due to Rayleigh scattering (in 1.0 \u03bcm)= 0.8 dB\nAttenuation due to Rayleigh scattering (in 1.30 \u03bcm)= 0.3 dB\n"
+ }
+ ],
+ "prompt_number": 20
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.3, page 99"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nd=6 #diameter in \u03bcm\nh=1.3 #wavelength in \u03bcm\nadb=0.5 #attenuation in dB\nv=0.6\n\n#Calculation \nPb=4.4*10**-3*d**2*h**2*adb*v #for SBS\nPr=5.9*10**-2*d**2*h*adb #for SRS\n\n#result\nprint'Threshold optical power for SBS = %.1f mW'%(Pb*1000)\nprint 'Threshold optical power for SRS = %.2f W'%Pr\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Threshold optical power for SBS = 80.3 mW\nThreshold optical power for SRS = 1.38 W\n"
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.4, page 101"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration \nn1=1.5 #refractive index\nh=0.82*10**-6 #operating wavelength\ndelta=0.03 #relative refractive index difference \ndelta1=0.003 #relative refractive index difference\nh1=1.55*10**-6 #operating wavelength\na=4*10**-6 #radius of core\n\n#Calculation\nn2=(n1**2)-(2*delta*n1**2) #refractive index\nRc=(3*n1**2*h)/(4*math.pi*(n1**2-n2)**0.5) #multimode fiber critical radius of curvature\nn21=(n1**2)-(2*delta1*n1**2) #refractive index \nhc=(2*math.pi*a*n1*math.sqrt(2*delta1))/(2.405) #cutoff wavelength for the single-mode fiber\nb=20*h1/math.sqrt(0.043)\nc=(2.748-(0.996*h1/hc))**-3\nRcs=b*c #critical radius of curvature for the single-mode\n\n#Result\nprint'Multimode fiber critical radius of curvature = %.2f um'%(Rc*10**6) #value given in the textbook is wrong \nprint'Single-mode fiber critical radius of curvature = %.2f um'%(Rcs*10**3) #value given in the textbook is wrong",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Multimode fiber critical radius of curvature = 1.20 um\nSingle-mode fiber critical radius of curvature = 0.05 um\n"
+ }
+ ],
+ "prompt_number": 36
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.5, page 109"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration \nt=0.1*10**-6 #total pulse time \nd=15 #distance in Km\n\n#Calculation\nBt=1/(2*t) #Maximum Bandwidth\nD=t/d #Pulse Dispersion\nBop=Bt*d #Bandwidth-length product\n\n#Result\nprint'Maximum Bandwidth = %d Mhz'%(Bt/10**6)\nprint'Pulse Dispersion = %.2f ns per Km'%(D*10**9)\nprint'Bandwidth-length product = %d Mhz Km'%(Bop/10**6)\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximum Bandwidth = 5 Mhz\nPulse Dispersion = 6.67 ns per Km\nBandwidth-length product = 75 Mhz Km\n"
+ }
+ ],
+ "prompt_number": 51
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.6, page 111"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nb=0.025 #material dispersion \nc=2.998 #speed of light (x 10^8)\nh=85*10**6 #wavelength dispersion parameter\n\n\n#Calculation\nM=b/(c*h) #Material dispersion parameter\ns=M*20 #RMS pulse broadening (1 Km)\n\n#Result\nprint'Material dispersion parameter = %.1f ps n/m K/m'%(M*10**12)\nprint'RMS pulse broadening (1 Km) = %.2f ns K/m'%(s*10**9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Material dispersion parameter = 98.1 ps n/m K/m\nRMS pulse broadening (1 Km) = 1.96 ns K/m\n"
+ }
+ ],
+ "prompt_number": 55
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.7, page 112"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh=0.85*10**-6 #wavelength \nb=0.0012 #relative spectral width\nM=98.1*10**-12 #material dispersion parameter\n\n#Calculation\nsh=b*h #relative spectral width\nsm=sh*M*10**9 #RMS pulse braodening\n\n#Result\nprint'RMS pulse braodening (1 Km) = %.2f ns K/m'%(sm*10**9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "RMS pulse braodening (1 Km) = 0.10 ns K/m\n"
+ }
+ ],
+ "prompt_number": 66
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.8, page 117"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nL=6000 #optical link\nn1=1.5 #core refractive index\ndelt=0.01 #relative refractive index difference\nc=2.998*10**8 #speed of light\n\n\n#Calculation\nTs=(L*n1*delt)/c #Delay difference\nsc=(L*n1*delt)/(2*math.sqrt(3)*c) #RMS pulse broadening\nBt=1/(2*Ts)\nBtm=0.2/sc #Maximum bit rate using RMS pulse broadening\nBop=Btm*L #Bandwidth-length product\n\n#Result\nprint'(a) Delay difference = %d ns' %(Ts*10**9)\nprint'(b) RMS pulse broadening = %.1f ns' %(sc*10**9)\nprint'(c) Maximum bit rate using RMS pulse broadening = %.1f Mbit/s'%(Btm/10**6)\nprint'(d) Bandwidth-length product = %.1f Mhz km'%(Bop/10**9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Delay difference = 300 ns\n(b) RMS pulse broadening = 86.7 ns\n(c) Maximum bit rate using RMS pulse broadening = 2.3 Mbit/s\n(d) Bandwidth-length product = 13.8 Mhz km\n"
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.9, page 121"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nsc=86.7 #RMS pulse broadening\nL1=6 #optical link\nL=10**3 #for 1 Km\nn1=1.5 #core refractive index\ndelt=0.01 #relative refractive index difference\nc=3*10**8 #speed of light\n\n#Calculation\nd=sc/L1 #for multimode step index fiber\nsg=(L*n1*delt**2)/(20*math.sqrt(3)*c) #gradient index fiber\n\n#Result\nprint'RMS pulse broadening for multimode step index fiber = %.1f ns K/m'%(d)\nprint'RMS pulse broadening for gradient index fiber = %.1f ps K/m'%(sg*10**12)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "RMS pulse broadening for multimode step index fiber = 14.5 ns K/m\nRMS pulse broadening for gradient index fiber = 14.4 ps K/m\n"
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.10, page 125"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nsh=50 #rms spectral width\nL=1 #1 Km\nM=250*10**-12 #material dispersion parameter\nL1=10**3 \nNA=0.3 #numerical aperture\nn1=1.45 #refractive index\nc=2.998*10**8 #speed of light\n\n#Calculation\nsm=sh*L*M #rms pulse broadening\nss=(L1*NA**2)/(4*math.sqrt(3)*n1*c) #rms pulse broadening per kilometer\nst=math.sqrt(sm**2+ss**2) #total rms pulse broadening per kilometer\nBop=0.2/st #bandwidth\u2013length product\n\n#Result\nprint'(a) Total RMS pulse broadening per Km = %.1f ns K/m'%(st*10**9)\nprint'(b) Bandwidth length product = %.1f Mhz Km'%(Bop*10**-6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Total RMS pulse broadening per Km = 32.4 ns K/m\n(b) Bandwidth length product = 6.2 Mhz Km\n"
+ }
+ ],
+ "prompt_number": 17
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.11, page 131"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "\n#Variable declaration\nh=1280 #wavelength in nm\nS0=0.09*10**-12 #dispersion slope\nh0=1310 #zero dispersion wavlength in nm\nh1=1550 #wavelength in nm\nDm=13.5*10**-12 #material dispersion wavelength in m\nDp=0.4*10**-12 #profile dispersion wavelength in m\n\n#Calculation\na=h*S0/4\nb=1-((h0*h**-1)**4)\nDt=a*b\nDt1=(h1*S0/4)*(1-(h0*h1**-1)**4)\nDw=Dt1-(Dm+Dp)\n\n#Result\nprint'Total first order dispersion (1280 nm) = %.1f nm^-1 km^-1'%(Dt*10**12)\nprint'Total first order dispersion (1550 nm) = %.1f ps n/m K/m'%(Dt1*10**12)\nprint'Waveguide dispersion at wavelength 1.55um = %.1f ps n/m K/m'%(Dw*10**12)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Total first order dispersion (1280 nm) = -2.8 nm^-1 km^-1\nTotal first order dispersion (1550 nm) = 17.1 ps n/m K/m\nWaveguide dispersion at wavelength 1.55um = 3.2 ps n/m K/m\n"
+ }
+ ],
+ "prompt_number": 15
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.12, page 143"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh=0.9*10**-6 #peak wavelength \nLb=0.09 #beat length\ns=10**-9 #spectral linewidth\n\n\n#Calculation\nBf=h/Lb #modal birefringence\nLbc=h**2/(Bf*s) #coherence length\nBxy=(2*math.pi)/Lb #difference between propagation constant\n\n#Result\nprint'Modal birefringence, Bf = %.1f x 10^-5' %(Bf*10**5)\nprint'Coherence length, Lf = %.1f m' %Lbc\nprint'Difference between propagation constant = %.1f' %Bxy",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Modal birefringence, Bf = 1.0 x 10^-5\nCoherence length, Lf = 81.0 m\nDifference between propagation constant = 69.8\n"
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.13, page 144"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nh=1.3*10**-6 #fibers operating wavelength\nLs=0.7*10**-3 #beat length\nL=80 #beat length\n\n#Calculation\nBf=h/Ls #Fiber birefringence (0.7mm)\nBf1=h/L #Fiber birefringence (80m)\n\n#Result\nprint'Fiber birefringence (0.7mm) = %.2f x 10^-3'%(Bf*1000)\nprint'Fiber birefringence (80m) = %.2f x 10^-8'%(Bf1*10**8)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Fiber birefringence (0.7mm) = 1.86 x 10^-3\nFiber birefringence (80m) = 1.62 x 10^-8\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 3.14, page 150"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nL=3.5*10**3 #length of fiber\na=2*10**-3 #tanh(h*L)\n\n\n#Calculation\nh=a/L #mode coupling parameter \n\n#Result\nprint'Mode coupling parameter = %.1f x 10^-7 m^-1'%(h*10**7)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Mode coupling parameter = 5.7 x 10^-7 m^-1\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "",
+ "language": "python",
+ "metadata": {},
+ "outputs": []
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_4.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_4.ipynb
new file mode 100644
index 00000000..7a8733a2
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_4.ipynb
@@ -0,0 +1,35 @@
+{
+ "metadata": {
+ "name": "Chapter_4"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 4 : Optical fibers and cables"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 4.1, page 196"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nl=0.16*10**-9 #bond distance\nSt=2.6*10**6 #cohesive strength\npsi=6894.76\nE=9*10**10 #Young modulus of silica\nC=10**-8\n\n#Calculation\nYp=4*l*St**2/E\nSf=math.sqrt((2*E*Yp)/(math.pi*C)) #Fracture stress for elliptical crack\nStr=Sf/E #Strain\n\n#Result\nprint'Fracture stress for elliptical crack = %.2f x 10^5 psi'%(Sf*10**-5)\nprint'Strain in percentage = %d percent'%(Str*6894.76*100)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": "*"
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_5.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_5.ipynb
new file mode 100644
index 00000000..3b95860b
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_5.ipynb
@@ -0,0 +1,239 @@
+{
+ "metadata": {
+ "name": "Chapter_5"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 5 : Optical fiber connection: joints, couplers and isolators"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.1, page 220"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nn1=1.5 #core refractive index\nn=1.0 #refractive index of medium\n\n#Calculation\nr=((n1-n)/(n1+n))**2 #magnitude of the Fresnel reflection at the fiber\u2013air interface\nLoss=-10*math.log10(1-r) #loss in decibels at the single interface\nLoss1=2*Loss #total loss\n\n#Result\nprint'Total loss due to Fresnel reflection = %.2f dB'%Loss1 #loss due to fresnel resolution = 0.18X2 dB\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Total loss due to Fresnel reflection = 0.35 dB\n"
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.2, page 224"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nn1=1.5 #refractive index\ny=5 #lateral offset of the fiber core axes in um\na=25 #radius in um\n\n#Calculation\nb=(16*n1**2)/(math.pi*(1+n1)**4)\nc=math.acos(y*(2*a)**-1)\ne=(y*a**-1)\nf=math.sqrt(1-(y*(2*a)**-1)**2)\nn=b*((2*c)-(e*f)) #coupling efficiency \nLoss=-10*math.log10(n) #insertion loss\nna=(math.pi**-1)*((2*c)-(e*f))\nLoss1=-10*math.log10(na) \n\n#Result\nprint'(a) Insertion loss = %.3f dB'%Loss\nprint'(b) Insertion loss = %.2f dB'%Loss1",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Insertion loss = 0.945 dB\n(b) Insertion loss = 0.59 dB\n"
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.3, page 226"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\ny=3 #lateral misalignment in um\na=25 #core radius in um\n\n#Calculation\nLt=0.85*(y*a**-1) #misalignment loss for guided modes\nn=1-Lt #coupling efficiency\nLoss=-10*math.log10(n) #insertion loss\nLt1=0.75*(y*a**-1) #both guided and leaky modes \nn1=1-Lt1 #coupling efficiency\nLoss1=-10*math.log10(n1) #insertion loss\n\n#Result\nprint'(a) Uniform illumination of all guided modes only = %.2f dB'%Loss\nprint'(b) Uniform illumination of all guided and leaky modes = %.2f dB'%Loss1",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Uniform illumination of all guided modes only = 0.47 dB\n(b) Uniform illumination of all guided and leaky modes = 0.41 dB\n"
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.4, page 227"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nNA=0.2 #numerical aperture\nn1=1.48 #core refractive index\nang=(5*math.pi)/180 #angular misalignment (radians)\nNA1=0.4 #numerical aperture\n\n#Calculation\nna=((16*(n1)**2)/((1+n1)**4))*(1-(ang/(math.pi*NA))) #angular coupling efficiency\nLoss=-10*math.log10(na) #insertion loss\nna1=((16*(n1)**2)/((1+n1)**4))*(1-(ang/(math.pi*NA1))) #angular coupling efficiency\nLoss1=-10*math.log10(na1) #insertion loss\n\n#Result\nprint'Insertion loss at a joint (NA = 0.2) = %.2f dB'%Loss\nprint'Insertion loss at a joint (NA = 0.4) = %.2f dB'%Loss1 #in textbook, value is not calculated",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Insertion loss at a joint (NA = 0.2) = 0.98 dB\nInsertion loss at a joint (NA = 0.4) = 0.64 dB\n"
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.5, page 231"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nV=2.4 #normalized frequency\na=4 #core radius in um\nNA=0.1 #numerical aperture \nn1=1.46 #core refractive index\ny=1 #lateral misalignment in um\nteta=math.pi/180 #angular misalignment in rad\n\n#Calculation\nw=a*(0.65+(1.62/V**1.5)+(2.88/V**6))/(2**0.5) #normalized spot size\nTl=2.17*(y/w)**2 #loss due to the lateral offset\nTa=2.17*((teta*w*n1*V)/(a*NA))**2 #loss due to angular misalignment\nTt=Tl+Ta #total insertion loss\n\n#Result\nprint'Total insertion loss = %.2f dB'%Tt",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Total insertion loss = 0.72 dB\n"
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.6, page 232"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nw01=5.6 #mode-field radius in um\nw02=4.2 #mode-field radius in um\n\n#Calculation\nLoss=-10*math.log10(4*((w02/w01)+(w01/w02))**(-2)) #intrinsic loss \n\n#Result\nprint'Intrinsic loss = %.2f dB'%Loss",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Intrinsic loss = 0.35 dB\n"
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.7, page 262"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\np1=60 #input port power\np2=0.004 #output port power\np3=26 #output port power\np4=27.5 #output port power\n\n\n#Calculation\nxloss=10*math.log10(p1/(p3+p4)) #Excess Loss\niloss1=10*math.log10(p1*p3**-1) #Insertion Loss at input\niloss2=10*math.log10(p1/p4) #Insertion Loss at output\ncross=10*math.log10(p2/p1) #Crosstalk ratio\nsrat=((p3/(p3+p4))*100) #Split ratio\n\n#Result\nprint'Excess Loss = %.1f dB'%xloss\nprint'Insertion Loss at input = %.2f dB'%iloss1\nprint'Insertion Loss at output = %.2f dB'%iloss2\nprint'Crosstalk ratio = %.1f dB'%cross\nprint'Split ratio = %.1f percent'%srat",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Excess Loss = 0.5 dB\nInsertion Loss at input = 3.63 dB\nInsertion Loss at output = 3.39 dB\nCrosstalk ratio = -41.8 dB\nSplit ratio = 48.6 percent\n"
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.8, page 266"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nN=32 #total no of ports\npi=10**3 #optical power at input in micro-watt\npj=14 #optical power at input in micro-watt\n\n\n#Calculation\nsloss=10*math.log10(N) #splitting loss\nxloss=10*math.log10(pi*(pj*N)**-1) #excess loss\ntloss=sloss+xloss #total loss\niloss=10*math.log10(pi*pj**-1) #insertion loss\n\n#Result\nprint'Total loss = %.2f dB'%tloss\nprint'Insertion loss = %.2f dB'%iloss\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Total loss = 18.54 dB\nInsertion loss = 18.54 dB\n"
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.9, page 268"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\np=16 #output ports\nl=0.2 #excess loss with split ratio of 50%\nl1=0.1 #splice loss\n\n#Calculation\nm=math.log(p)/math.log(2) #no of stages\nxloss=(4*l)+(3*l1) #excess loss\nsloss=10*math.log10(p) #split loss\niloss=sloss+xloss #insertion loss\n\n#Result\nprint'Insertion loss = %.2f dB'%iloss",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Insertion loss = 13.14 dB\n"
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 5.10, page 277"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nh=1.55*10**-6 #optical signal wavelength\nN=1.46 #refractive index\n\n\n#Calculation\nv=h/(2*N) #grating period of the FBG\n\n#Result\nprint'Grating period of FBG = %.2f um'%(v*10**6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Grating period of FBG = 0.53 um\n"
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "",
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 11
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_6.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_6.ipynb
new file mode 100644
index 00000000..fa4189b4
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_6.ipynb
@@ -0,0 +1,188 @@
+{
+ "metadata": {
+ "name": "Chapter_6"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 6 - Optical sources 1: the laser\n"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 6.1, page 301"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nc=2.998*10**8 #speed of light in m/s\nh=0.5*10**-6 #operating wavelength in um\nt=1000 #tempreture in K\n\n#Calculation\nf=c/h #operating frequency\nr=1/math.exp((6.626*10**-34*f)/(1.381*10**-23*t)) #ratio\n\n#Result\nprint'Ratio = %.1f x 10^-13 '%(r*10**13)\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Ratio = 3.2 x 10^-13 \n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 6.2, page 306"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nn=1.78 #refractive index\nL=0.04 #length in meter\nh=0.55*10**-6 #peak emission wavelength in um\nc=2.998*10**8 #speed of light in meter\n\n#Calculation\nq=2*n*L/h #no of longitudinal modes\nsf=c/(2*n*L) #frequency separation modes\n\n#Result\nprint'No of longitudinal modes = %.1f x 10^5'%(q/10**5)\nprint'Frequency separation modes = %.1f GHz'%(sf/10**9)\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "No of longitudinal modes = 2.6 x 10^5\nFrequency separation modes = 2.1 GHz\n"
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 6.3, page 308"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\na=30 #active cavity losses\nL=0.06 #length in meter\nr=0.3 #reflectivity\n\n\n#Calculation\ngm=a+(1/L)+(1/r) #laser gain coefficient\n\n\n#Result\nprint'Laser gain coefficient = %.1f cm^-1'%gm",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Laser gain coefficient = 50.0 cm^-1\n"
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 6.4, page 315"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nBt1=7.21*10**-10 #recombination coefficient of GaAs\nBt2=1.79*10**-15 #recombination coefficient of Si\nN=10**18 #hole concentration \n\n#Calculation\ntr1=(Bt1*N)**-1 #radiative carrier lifetime of GaAs\ntr2=(Bt2*N)**-1 #radiative carrier lifetime of Si\n\n#Result\nprint'Radiative carrier lifetime of silicon = %.2f ms'%(tr2*1000)\nprint'Radiative carrier lifetime of gallium arsenide = %.2f ns'%(tr1*10**9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Radiative carrier lifetime of silicon = 0.56 ms\nRadiative carrier lifetime of gallium arsenide = 1.39 ns\n"
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 6.5, page 322"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nn=3.6 #refractive index\nB=21*10**-3 #gain factor\na=10 #loss coefficient per cm\nL=250*10**-4 #optical cavity length\nw=100*10**-4 #optical cavity width\n\n#Calculation\nr=((n-1)/(n+1))**2 #reflectivity\njth=(1/B)*(a+math.log(1/r)/L) #threshold current density\narea=L*w #area\nith=jth*area #threshold current\n \n#Result\nprint'Threshold current = %.1f mA'%(ith*1000)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Threshold current = 662.4 mA\n"
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 6.6, page 330"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nnt=0.18 #total efficiency\nE=1.43 #bandgap energy\nV=2.5 #voltage\n\n\n#Calculation\nnep=nt*(E/V)*100 #external power efficiency\n\n#Result\nprint'External power efficiency = %d percent'%nep",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "External power efficiency = 10 percent\n"
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 6.7, page 352"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nt1=20+273 #tempreture 20 \u00b0C convert to kelvin\nt2=80+273 #tempreture 80 \u00b0C convert to kelvin\nL1=160 #tempreture 160K\nL2=55 #tempreture 55K\n\n#Calculation\na=t1*L1**-1 \nb=t2*L1**-1\nc=t1*L2**-1\nd=t2*L2**-1\nJa1=math.exp(a) #For the AlGaAs device\nJa2=math.exp(b) #For the AlGaAs device\nJa=Ja2/Ja1 #ratio of the current densities\nJb1=math.exp(c) #For the InGaAsP device\nJb2=math.exp(d) #For the InGaAsP device\nJb=Jb2/Jb1 #ratio of the current densities\n\n#Result\nprint'Threshold current density at 20 \u00b0C = %.2f'%Ja\nprint' at 80 \u00b0C = %.2f' %Jb\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Threshold current density at 20 \u00b0C = 1.45\n at 80 \u00b0C = 2.98\n"
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 6.8, page 359"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\ns=10**-15 #RIN value \nf=100*10**6 #bandwidth\ne=1.602*10**-19 #1 electron volt\nn=0.6 #quantum efficiency\nh=1.55*10**-6 #wavelength in um\npe=2*10**-3 #power incident\nB=100*10**6 #bandwidth\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\n\n#Calculation\nsr=s*f \nrin=math.sqrt(sr) #RMS value of power fluctuation\nirn=e*n*h*rin*pe*math.sqrt(B)*10**-4/(h1*c) #RMS noise current\n\n#Result\nprint'(a) RMS value of power fluctuation = %.2f x 10^-4 W'%(rin*10**4)\nprint'(b) RMS noise current = %.2f x 10^-7 A'%(irn*10**7)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) RMS value of power fluctuation = 3.16 x 10^-4 W\n(b) RMS noise current = 4.74 x 10^-7 A\n"
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_7.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_7.ipynb
new file mode 100644
index 00000000..7150478c
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_7.ipynb
@@ -0,0 +1,167 @@
+{
+ "metadata": {
+ "name": "Chapter_7"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 2 - Optical sources 2: the light-emitting diode\n"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 7.1, page 401"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\ntr=60*10**-9 #radiative ecombination lifetime\ntnr=100*10**-9 #nonradiative ecombination lifetime\nh=6.626*10**-34 #plancks const\nc=2.998*10**8 #speed of light\ni=40*10**-3 #drive current\ne=1.602*10**-19 #1 electron volt\nh1=0.87*10**-6 #wavelength\n\n#Calculation\nt=(tr*tnr)/(tr+tnr) #total carrier recombination lifetime\nn=t/tr #quantum efficiency \npin=n*h*c*i/(e*h1) #internal power generated\n\n#Result\nprint'Total carrier recombination lifetime = %.1f ns'%(t*10**9)\nprint'Power internally generated = %.1f mW'%(pin*10**3)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Total carrier recombination lifetime = 37.5 ns\nPower internally generated = 35.6 mW\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 7.2, page 402"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nF=0.68 #crystal\u2013air interface\nn=1 #refractive index of air\nnx=3.6 #refractive index of Ga\n\n\n#Calculation\npe=(F*n**2)/(4*nx**2) #Optical power emitted\nn1=pe*100/2 #External power efficiency\n\n#Result\nprint'Optical power emitted = %.3f *Pint'%(pe)\nprint'External power efficiency = %.2f percent'%n1",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Optical power emitted = 0.013 *Pint\nExternal power efficiency = 0.66 percent\n"
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 7.3, page 404"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nNA=0.2 #numerical aperture\npe=0.013 #optical power emitted\n\n#Calculation\nnc=NA**2 #coupling efficiency\nLoss=-10*math.log10(nc) #optical loss\npc=nc*pe #coupling power\nLoss1=-10*math.log10(pc) #internal power relative loss\n\n#Result\nprint'Coupling efficiency = %.2f'%nc\nprint'Optical loss = %.1f dB'%Loss\nprint'Loss due internal optical power = %.1f dB'%Loss1",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Coupling efficiency = 0.04\nOptical loss = 14.0 dB\nLoss due internal optical power = 32.8 dB\n"
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 7.4, page 409"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nr=0.01 #fresnel reflection coefficient \nRd=30 #radiance\nNA=0.15 #numerical aperture\na=25*10**-4 \n\n#Calculation\nA=math.pi*a**2 #emission area\npc=math.pi*(1-r)*A*Rd*NA**2 #optical power\n\n#Result\nprint'Optical power = %.1f uW'%(pc*10**6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Optical power = 41.2 uW\n"
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 7.5, page 421"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\npc=190*10**-6 #optical power\np=25*10**-3 #forward current\nv=1.5 #voltage\n\n\n#Calculation\nn=(pc/(p*v))*100 #power efficiency\n\n#Result\nprint'Overall power efficiency = %.1f percent'%n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Overall power efficiency = 0.5 percent\n"
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 7.7, page 430"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\npdc=300*10**-6 #optical output power\nf=20*10**6 #frequency in hertz\nti=5*10**-9 #minority carrier recombination lifetime\nf2=100*10**6 #frequency in hertz\nt=10**-8\nw=math.sqrt(3)\n\n#Calculation\npe1=pdc/math.sqrt(1+(2*math.pi*f*ti)**2) #Optical output power (f=20 MHz)\npe2=pdc/math.sqrt(1+(2*math.pi*f2*ti)**2) #Optical output power (f=100 MHz)\nf=w/(math.pi*t)\nB=f/math.sqrt(2)\n\n#Result\nprint'(a) Optical output power (f=20 MHz) = %.2f uW'%(pe1*10**6)\nprint'(b) Optical output power (f=100 MHz) = %.2f uW'%(pe2*10**6)\nprint'Electrical bandwidth = %.1f MHz'%(B*10**-6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Optical output power (f=20 MHz) = 254.02 uW\n(b) Optical output power (f=100 MHz) = 90.99 uW\nElectrical bandwidth = 39.0 MHz\n"
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 7.8, page 435"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nbo=1.84*10**7 #proportionality constant\ne=-1.602*10**-19 #charge of electron\nk=1.38*10**-23 #boltzman constant\nt1=290 #tempreture in kelvin\nexp=0.67\n\n\n\n#Calculation\nbt=bo*math.exp(e/(k*t1)) #degradation rate\nt=-math.log(exp)/bt #operating lifetime\n\n#Result\nprint'CW operating lifetime = %.1f x 10^9 h'%(t*10**-9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "CW operating lifetime = 5.3 x 10^9 h\n"
+ }
+ ],
+ "prompt_number": 7
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_8.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_8.ipynb
new file mode 100644
index 00000000..ef4b2404
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_8.ipynb
@@ -0,0 +1,209 @@
+{
+ "metadata": {
+ "name": "Chapter_8"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter - 8 : Optical detectors"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.1, page 454"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "#Variable declaration\nn=1.2*10**11 #no of electrons\nm=3*10**11 #no of photons\ne=1.602*10**-19 #1 electron volt\nh=0.85*10**-6 #wavelength\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\n\n#Calculation\nQ=n/m #quantum efficiency\nR=(Q*e*h)/(h1*c) #responsivity\n\n#Result\nprint'Quantum efficiency = %.1f '%Q\nprint'Responsivity = %.3f A W^-1'%R",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Quantum efficiency = 0.4 \nResponsivity = 0.274 A W^-1\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.2, page 454"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\nE=1.5*10**-19 #energy of photons\nn=0.65 #quantum efficiency\ne=1.602*10**-19 #1 electron volt\nio=2.5*10**-6 #photocurrent\n\n#Calculation\nh=h1*c/E #wavelength\nR=(n*e)/(E) #responsivity\npo=io/R #incident optical power\n\n#Result\nprint'(a) Wavelength = %.2f um'%(h*10**6)\nprint'(b) Incident optical power = %.2f uW'%(po*10**6) \n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Wavelength = 1.32 um\n(b) Incident optical power = 3.60 uW\n"
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.3, page 456"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\ne=1.602*10**-19 #1 electron volt\nE=1.43 #bandgap energy in eV\n\n#Calculation\nh=h1*c/(E*e) #wavelength\n\n#Result\nprint'Wavelength = %.3f um'%(h*10**6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Wavelength = 0.867 um\n"
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.4, page 463"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nw=20*10**-6 #width\nvd=10**5 #drift velocity\nr=500*10**-6 #diameter in meter\nes=10.5*10**-13 #permitivity\n\n#Calculation\ntd=w/vd #drift time\nA=math.pi*r**2 #area\ncj=es*A/w #junction capacitance\n\n#Result\nprint'Drift time = %.1f x 10^-10 S'%(td*10**10)\nprint'Junction capacitance = %.2f x 10^-13 F'%(cj*10**13)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Drift time = 2.0 x 10^-10 S\nJunction capacitance = 0.41 x 10^-13 F\n"
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.5, page 464"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nvd=3*10**4 #drift velocity\nw=25*10**-6 #width\n\n#Calculation\nBm=vd/(2*math.pi*w) #maximum bandwidth\ntr=1/Bm #maximum response time\n\n#Result\nprint'Maximum response time = %.1f ns'%(tr*10**9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximum response time = 5.2 ns\n"
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.6, page 470"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\ne=1.602*10**-19 #1 electron volt\nl=8*10**-9 #dark current\nn=0.55 #quantum efficiency\nh=1.3*10**-6 #wavelength\nA=100*50*10**-12\n\n#Calculation\nnep=(h1*c*math.sqrt(2*e*l))/(n*e*h) #Noise equivalent power\nD=math.sqrt(A)/nep #Specific detectivity\n\n#Result\nprint'Noise equivalent power = %.2f x 10^-14 W'%(nep*10**14)\nprint'Specific detectivity = %.1f x 10^8 m Hz^(1/2) W^-1'%(D*10**-8)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Noise equivalent power = 8.78 x 10^-14 W\nSpecific detectivity = 8.1 x 10^8 m Hz^(1/2) W^-1\n"
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.7, page 482"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\ne=1.602*10**-19 #1 electron volt\nn=0.8 #quantum efficiency\nh=0.9*10**-6 #wavelength\npo=0.5*10**-6 #incident optical power\nI=11*10**-6 #output current\n\n#Calculation\nR=(n*e*h)/(h1*c) #resposivity\nIp=po*R #photocurrent\nM=I/Ip #multiplication factor\n\n#Result\nprint'Multiplication factor = %.2f '%M\n",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Multiplication factor = 37.89 \n"
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.8, page 487"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\ne=1.602*10**-19 #1 electron volt\nh=1.26*10**-6 #wavelength\nIc=15*10**-3 #collector current\npo=125*10**-6 #incident optical power\nn=0.4 #quantum efficiency\n\n#Calculation\ngo=(h1*c*Ic)/(h*e*po) #Optical gain\nhfe=go/n #Common emitter current gain\n \n#Result\nprint'Optical gain, Go = %.1f'%go\nprint'Common emitter current gain, hfe = %.1f '%hfe",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Optical gain, Go = 118.1\nCommon emitter current gain, hfe = 295.2 \n"
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 8.9, page 491"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nt=5*10**-12 #electron transit time\nG=70 #Optical gain\n\n#Calculation\nB=1/(2*math.pi*t*G) #Maximum 3dB bandwidth\n\n#Result\nprint'Maximum bandwidth = %.1f MHz'%(B*10**-6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximum bandwidth = 454.7 MHz\n"
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/Chapter_9.ipynb b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_9.ipynb
new file mode 100644
index 00000000..42d197be
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/Chapter_9.ipynb
@@ -0,0 +1,188 @@
+{
+ "metadata": {
+ "name": "Chapter_9"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": "Chapter 9 :Direct detection receiver performance considerations\n"
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 9.1, page 506"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nzm=20.7 #average number of photons\nh=6.626*10**-34 #plancks constant\nf=2.998*10**14 #frequency in hertz \nn=1 #for ideal detector\nBt=10**7 #bit rate\n\n#Calculation\npo=zm*h*f*Bt/(2*n) #output power in binary\npod=10*math.log10(po) #output power in dBW\npod1=10*math.log10(po*10**3) #output power in dBm\n\n#Result\nprint'Minimum incident optical power = %.1f dBW'%(pod)\nprint' = %.1f dBm'%(pod1)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Minimum incident optical power = -106.9 dBW\n = -76.9 dBm\n"
+ }
+ ],
+ "prompt_number": 26
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 9.2, page 508"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nsn=50/10 #signal to noise ratio in dB\nf=2.998*10**14 #frequency in hertz\nn=1 #for an ideal detector\nB=5*10**6 #bandwidth\nh=6.626*10**-34 #plancks constant\n\n#Calculation\nSN=10**(sn) \npo=SN*f*2*h*B/n #incident optical power\npdb=10*math.log10(po*10**3) #incident optical power in dB\n\n#Result\nprint'Incident optical power = %.1f nW '%(po*10**9)\nprint' in dB = %.1f dBm'%(pdb)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Incident optical power = 198.6 nW \n in dB = -37.0 dBm\n"
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 9.3, page 512"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\npo=200*10**-9 #incident optical power in W\ne=1.602*10**-19 #1 electron volt\nh=0.9*10**-6 #operating wavelength\nh1=6.626*10**-34 #plancks constant\nc=2.998*10**8 #speed of light\nK=1.38*10**-23 #boltzman constant\nT=293 #tempreture in kelvin\nn=0.6 #quantum efficiency\nB=5*10**6 #post-detection bandwidth \nib=3*10**-9 #dark current in ampere\nRl=4*10**3 #load resistance\n\n#Calculation\nip=n*po*e*h/(h1*c) #photocurrent\ni2=2*e*B*(ib+ip) #total shot noise current\ni2rms=math.sqrt(i2) #RMS value \nit=4*K*T*B/Rl #thermal noise current\nitrms=math.sqrt(it) #RMS value\n\n#Result\nprint'RMS shot noise current = %.2f x10^-10 A'%(i2rms*10**10)\nprint'RMS thermal noise current = %.2f x10^-9 A'%(itrms*10**9)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "RMS shot noise current = 3.80 x10^-10 A\nRMS thermal noise current = 4.50 x10^-9 A\n"
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 9.4, page 514"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nip=87.1*10**-9 #photocurrent\nits=1.44*10**-19 #rms shot noise current \nit=2.02*10**-17 #rms thermal noise current\nfd=0.3 #frequency in 3 dB\n\n#Calculation\nf=10**(fd)\nsn=ip**2/(its+(it*f)) #signal to noise ratio\nsnr=10*math.log10(sn) #signal to noise ratio in dB\n\n#Result\nprint'SNR at output = %.2f dB'%snr",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "SNR at output = 22.73 dB\n"
+ }
+ ],
+ "prompt_number": 39
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 9.5, page 516"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nB=8*10**6 #post detection bandwidth\nCd=6*10**-12 #capacitance in farad\nCa=12*10**-12 #input capacitance in farad\n\n\n#Calculation\nRl=1/(2*math.pi*Cd*B) #maximum load resistance\nB1=1/(2*math.pi*Rl*Ca) #maximum bandwidth\n\n#Result\nprint'Maximu load resistance = %.2f K\u03a9'%(Rl*10**-3)\nprint'Maximum bandwidth = %.1f MHz'%(B1*10**-6)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Maximu load resistance = 3.32 K\u03a9\nMaximum bandwidth = 4.0 MHz\n"
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 9.6, page 518"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nB=50*10**6 #post detection bandwidth\nCd=5*10**-12 #capacitance in farad\ne=1.602*10**-19 #1 electron volt\nK=1.38*10**-23 #boltzman constant\nT=291 #tempreture in kelvin\nib=10**-7 #photocurrent before gain\nx=0.3\n\n#Calculation\nRl=1/(2*math.pi*Cd*B) #maximum value of the load resistor\na=2*e*B*ib #shot noise\nb=4*K*T*B/Rl #thermal noise\nsn=ib**2/(a+b) #SNR, when M = 1,\nsnd=10*math.log10(sn) #SNR in dB\nMop=((4*K*T)/(x*e*Rl*ib))**0.435\nsn1=(Mop**2*ib**2)/((2*e*B*ib*Mop**2.3)+b) #SNR, when M = Mop,\nsdb=10*math.log10(sn1) #SNR in dB\n\n#Result\nprint'SNR (M=1) = %.2f dB'%(snd)\nprint'SNR (M=Mop) = %.1f dB'%(sdb)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "SNR (M=1) = 8.99 dB\nSNR (M=Mop) = 32.5 dB\n"
+ }
+ ],
+ "prompt_number": 16
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 9.7, page 520"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\ne=1.602*10**-19 #1 electron volt\nK=1.38*10**-23 #boltzman constant\nT=120 #tempreture in kelvin\nB=10**7 #post detection bandwidth\nsn=3.5 #SNR/10\nfn=0.1 #noise figure/10\nRl=10**4 #load resistance\n\n#Calculation\nsn1=10**(sn)\nfn1=10**(fn)\na=12*K*T*B*fn1/Rl\nb=((4*K*T*fn1)/(1.1*e*Rl))**0.667\nIp=(sn1*a/b)**0.75 #minimum photocurrent\nMop=((4*K*T*fn1)/(e*Ip*1.1*10**3))**0.334 #optimum avalanche multiplication factor\n\n#Result\nprint'Optimum avalanche multiplication factor = %.1f '%(Mop)",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "Optimum avalanche multiplication factor = 8.9 \n"
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": "Example 9.8, page 528"
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": "import math\n\n#Variable declaration\nr1=4*10**6 #effective input resistance in ohm\nr2=8*10**6 #resistance in ohm\nct=6*10**-12 #total capacitance in farad\nK=1.38*10**-23 #boltzman constant\nT=300 #tempreture in kelvin\nRf=10**5 #feedback resitor\nG=400 #open loop gain\n\n#Calculation\nRt=(r1**2)/r2 #total effective load resistance\nB=1/(2*math.pi*Rt*ct) #maximum bandwidth\ni2=4*K*T/Rt #for highimpedance config\nB1=G/(2*math.pi*Rf*ct) #maximum bandwidth for transimpedance config\nit=4*K*T/(Rf) #for transimpedance\n\n#transimpedance configuration factor of 20 greater than that obtained high-input-impedance configuration.\nn=it/i2\nndb=10*math.log10(n)\n\n#Result\nprint'(a) Maximum bandwidth = %.2f x10^4 Hz'%(B*10**-4)\nprint'(b) Mean square thermal noise current (high impedance config)= %.2f x10^-27 A^2 Hz^-1'%(i2*10**27)\nprint'\\n(c) Maximum bandwidth for transimpedance = %.2f X 10^6 Hz'%(B1*10**-8)\nprint' Mean square thermal noise current (transimpedance config) = %.2f x10^-25 A^2 Hz^-1'%(it*10**25)\nprint' Ratio of these noise power = %d dB'%ndb",
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": "(a) Maximum bandwidth = 1.33 x10^4 Hz\n(b) Mean square thermal noise current (high impedance config)= 8.28 x10^-27 A^2 Hz^-1\n\n(c) Maximum bandwidth for transimpedance = 1.06 X 10^6 Hz\n Mean square thermal noise current (transimpedance config) = 1.66 x10^-25 A^2 Hz^-1\n Ratio of these noise power = 13 dB\n"
+ }
+ ],
+ "prompt_number": 21
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/README.txt b/Optical_Fiber_Communications_Principles_and_Practice/README.txt
new file mode 100644
index 00000000..7fb62b0e
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/README.txt
@@ -0,0 +1,10 @@
+Contributed By: Sufiyan Siddique
+Course: be
+College/Institute/Organization: A.I Kalsekar Technical Campus, Mumbai University
+Department/Designation: Electronics & Telecommunication
+Book Title: Optical Fiber Communications Principles and Practice
+Author: John M. Senior
+Publisher: Prentice Hall, UK
+Year of publication: 2009
+Isbn: 9780130326812
+Edition: 3 \ No newline at end of file
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001.png
new file mode 100644
index 00000000..effd888e
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001_1.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001_1.png
new file mode 100644
index 00000000..effd888e
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_001_1.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002.png
new file mode 100644
index 00000000..394be49f
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002_1.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002_1.png
new file mode 100644
index 00000000..394be49f
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Selection_002_1.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel.png
new file mode 100644
index 00000000..e92adc62
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_1.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_1.png
new file mode 100644
index 00000000..e92adc62
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_1.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes.png
new file mode 100644
index 00000000..e92adc62
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_1.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_1.png
new file mode 100644
index 00000000..e92adc62
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_1.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_2.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_2.png
new file mode 100644
index 00000000..e92adc62
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_2.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_3.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_3.png
new file mode 100644
index 00000000..e92adc62
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_3.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_4.png b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_4.png
new file mode 100644
index 00000000..e92adc62
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/screenshots/Total_channel_loss_against_number_of_nodes_4.png
Binary files differ
diff --git a/Optical_Fiber_Communications_Principles_and_Practice/techsupport b/Optical_Fiber_Communications_Principles_and_Practice/techsupport
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/Optical_Fiber_Communications_Principles_and_Practice/techsupport