Chapter 3: Fibre Optics

Example 3.3.1, Page number 3-6

In [2]:
import math

#Variable declaration
n1 = 1.54   #refractive index of core
NA = 0.5    #numerical aperture

#Calculation
n2 = math.sqrt(n1**2-NA**2)

#Result
print "Refractive index of cladding is",round(n2,2)
Refractive index of cladding is 1.46

Example 3.3.2, Page number 3-6

In [1]:
import math

#Variable declaration
n2 = 1.59   #refractive index of cladding
NA = 0.2    #numerical aperture
n0 = 1.33

#Calculation
n1 = (math.sqrt(n2**2-NA**2))
theta_o = (math.asin((math.sqrt(n2**2-n1**2)/n0)))*180/math.pi

#Result
print "Refractive index of core is",n2
print "Acceptance angle =",round(theta_o,2),"degrees"
Refractive index of core is 1.59
Acceptance angle = 8.65 degrees

Example 3.3.3, Page number 3-6

In [5]:
import math

#Variable declaration
n1 = 1.49   #refractive index of core
n2 = 1.44   #refractive index of cladding

#Calculation
NA = math.sqrt(n1**2-n2**2)

theta_o = math.degrees(math.asin(NA))

#Result
print "Numerical Aperture =",round(NA,5)
print "Acceptance angle =",round(theta_o,2),"degrees"
Numerical Aperture = 0.38275
Acceptance angle = 22.5 degrees

Example 3.3.4, Page number 3-7

In [1]:
import math

#Variable declaration
n1 = 1.6   #refractive index of core
n2 = 1.3   #refractive index of cladding

#Calculation
theta_c = math.degrees(math.asin(n2/n1))

theta_o = math.degrees(math.asin(math.sqrt(n1**2-n2**2)))
AC = 2*theta_o

#Result
print "Critical angle =",round(theta_c,2),"degrees"
print "Value of angle of acceptance cone =",round(AC,3),"degrees"
Critical angle = 54.34 degrees
Value of angle of acceptance cone = 137.731 degrees

Example 3.3.5, Page number 3-7

In [11]:
import math

#Variable declaration
n1 = 1.4         #refractive index of core
theta_o = 30     #acceptance angle(degrees)

#Calculation
n2 = math.sqrt(n1**2-math.sin(math.radians(theta_o))**2)

#Result
print "Refractive index of cladding is",round(n2,4)
Refractive index of cladding is 1.3077

Example 3.3.6, Page number 3-8

In [26]:
#Variable declaration
n1 = 1.563   #refractive index of core
n2 = 1.498   #refractive index of cladding

#Calculation
delta = (n1-n2)/n1

#Result
print "Fractional index change =",round(delta,4)
Fractional index change = 0.0416

Example 3.3.7, Page number 3-8

In [28]:
#Variable declaration
n1 = 1.50       #refractive index of cladding
theta_c = 90-5  #critical angle(degrees)

#Calculation
n2 = math.sin(theta_c*math.pi/180)*n1

#Result
print "The maximum index of refraction allowed for cladding is",round(n2,4)
The maximum index of refraction allowed for cladding is 1.4943

Example 3.3.8, Page number 3-8

In [36]:
#Variable declaration
n1 = 1.33       #refractive index 
theta_o = 30    #acceptance angle in air

#Calculations
theta_0 = math.degrees(math.asin(math.sin(theta_o*math.pi/180)/n1))

#Result
print "Acceptance angle =",round(theta_0,2),"degrees"
Acceptance angle = 22.08 degrees

Example 3.4.1, Page number 3-10

In [40]:
import math

#Variable declaration
n1 = 1.52           #refractive index of core
n2 = 1.5189         #refractive index of cladding
d = 29*10**-6       #core diameter(m)
lamda = 1.3*10**-6  #wavelength(m)

#Calculation
V = (math.pi*d*math.sqrt(n1**2-n2**2))/lamda

N = V**2/2

#Results
print "Normalized frequency =",round(V,3)
print "Number of modes =",round(N)
Normalized frequency = 4.052
Number of modes = 8.0

Example 3.4.2, Page number 3-10

In [48]:
import math

#Variable declaration
n1 = 1.47           #refractive index of core
n2 = 1.46           #refractive index of cladding
lamda = 1300*10**-9 #wavelength(nm)
V = 2.405           #for single mode fibre

#Calculation
d = (V*lamda)/(math.pi*math.sqrt(n1**2-n2**2))
r = d/2

#Result
print "Radius =",round(r/1e-6,3),"um"
Radius = 2.907 um

Example 3.4.3, Page number 3-11

In [13]:
import math

#Variable declaration
n1 = 1.48           #refractive index of core
delta = 0.055       #relative RI
lamda = 1           #wavelength(um)
r = 50              #core radius(um)

#Calculations
n2 = -((delta*n1)-n1)

NA = math.sqrt(n1**2-n2**2)

theta_o = math.degrees(math.asin(NA))

V = (math.pi*2*r*NA)/lamda

N = V**2/2

#Results
print "Refractive index of cladding =",n2
print "NA =",round(NA,3)
print "Acceptance angle =",round(theta_o,2),"degrees"
print "Normalized frequency =",round(V,3)
print "Number of modes =",round(N)  #Answer differs due to rounding off in 'V'
Refractive index of cladding = 1.3986
NA = 0.484
Acceptance angle = 28.95 degrees
Normalized frequency = 152.073
Number of modes = 11563.0

Example 3.4.4, Page number 3-12

In [2]:
import math

#Variable declaration
n1 = 1.45           #refractive index of core
n2 = 1.448          #refractive index of cladding
lamda = 1*10**-6    #wavelength(m)
d = 6*10**-6        #core diameter(m)

#Calculations
#Case i
theta_c = math.degrees(math.asin(n2/n1))

#Case ii
theta_o = math.degrees(math.asin(math.sqrt(n1**2-n2**2)))

#Case iii
NA = math.sqrt(n1**2-n2**2)
N = (math.pi**2*d**2*NA**2)/(2*lamda**2)

#Results
print "Critical angle =",round(theta_c),"degrees"
print "Acceptance angle =",round(theta_o,3),"degrees"
print "Number of modes =",round(N)
Critical angle = 87.0 degrees
Acceptance angle = 4.366 degrees
Number of modes = 1.0

Example 3.4.5, Page number 3-12

In [3]:
import math

#Variable declaration
n1 = 1.50           #refractive index of core
n2 = 1.48           #refractive index of cladding
lamda = 1*10**-6    #wavelength(m)
d = 2*50*10**-6     #core diameter(m)

#Calculations
NA = math.sqrt(n1**2-n2**2)
N = (math.pi**2*d**2*NA**2)/(2*lamda**2)

#Result
print "Number of modes =",round(N)
Number of modes = 2941.0

Example 3.4.6, Page number 3-13

In [4]:
import math

#Variable declaration
n1 = 1.55           #refractive index of core
n2 = 1.50           #refractive index of cladding
lamda = 1400*10**-9 #wavelength(m)
d = 40*10**-6       #core diameter(m)

#Calculations
NA = math.sqrt(n1**2-n2**2)

delta = (n1-n2)/n1

V = (math.pi*d*NA)/lamda

#Results
print "NA =",round(NA,4)
print "Fractional index change =",round(delta,5)
print "V-number =",round(V,2)
NA = 0.3905
Fractional index change = 0.03226
V-number = 35.05

Example 3.6.1, Page number 3-17

In [5]:
import math

#Variable declaration
Pout = 0.3   #output power(mW)
Pin = 1      #input power(mW)
L = 0.1      #fibre length(km)

#Calculation
a = (-10/L)*math.log10(Pout/Pin)

#Result
print "Attenuation =",round(a,2),"dB/km"
Attenuation = 52.29 dB/km

Example 3.6.2, Page number 3-18

In [12]:
import math

#Variable declaration
Pin = 9      #input power(mW)
L = 3        #fibre length(km)
a = 1.5      #loss(dB/km)

#Calculation
Pl = a*L
Pout = Pin*10**(-Pl/10)

#Result
print "Output power =",round(Pout,3),"uW"
Output power = 3.193 uW

Example 3.6.3, Page number 3-18

In [17]:
#Variable declaration
a = 2.2    #attenuation(dB/km)
l1 = 2     #km
l2 = 6     #km
from sympy import * 
Pin = symbols('Pin')

#Calculations
#For 2km,
Pl1 = a*l1
Po1 = Pin*round(10**(-Pl1/10),3)

#For 6km,
Pl2 = a*l2
Po2 = Pin*round(10**(-Pl2/10),3)

#Results
print "After 2 km, Pout =",Po1
print "After 6 km, Pout =",Po2
After 2 km, Pout = 0.363*Pin
After 6 km, Pout = 0.048*Pin

Example 3.6.4, Page number 3-19

In [19]:
#Variable declaration
Pout = 7.5   #output power(mW)
Pin = 8.6    #input power(mW)
L = 0.5      #fibre length(km)

#Calculation
Pl = -10*math.log10(Pout/Pin)
a = Pl/L

#Result
print "Loss specification =",round(a,4),"dB/km"
Loss specification = 1.1887 dB/km