diff options
author | Trupti Kini | 2016-04-19 23:31:06 +0600 |
---|---|---|
committer | Trupti Kini | 2016-04-19 23:31:06 +0600 |
commit | cec9a6b8dd9b3afd0d25c36cfde9fd1de5efc248 (patch) | |
tree | 6cabc9c8910b599c46d9e914eb271609356bafaa /Fiber_Optics_and_Optoelectronics_by_R._P._Khare | |
parent | d1c12393903db3f9fb2a2458efad5583a6a90c30 (diff) | |
download | Python-Textbook-Companions-cec9a6b8dd9b3afd0d25c36cfde9fd1de5efc248.tar.gz Python-Textbook-Companions-cec9a6b8dd9b3afd0d25c36cfde9fd1de5efc248.tar.bz2 Python-Textbook-Companions-cec9a6b8dd9b3afd0d25c36cfde9fd1de5efc248.zip |
Added(A)/Deleted(D) following books
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch11_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch12_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch15_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch16_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch1_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch3_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch5_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch6_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch7_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch8_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/Ch9_1.ipynb
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/ConGruenceEqn.png
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/DivisionAlgo.png
A Discrete_Mathematics_by_S._Lipschutz,_M._Lipson_And_V._H._Patil/screenshots/EuclideanAlgo.png
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch10_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch11_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch12_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch13_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch1_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch2_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch3_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch4_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch5_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch6_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch7_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch8_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/Ch9_1.ipynb
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/opNip3_1.png
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/opNipV3_1.png
A Electronic_Devices_And_Circuits_by_B._Kumar_And_S._B._Jain/screenshots/transferChar3_1.png
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter10_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter11_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter12_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter13_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter14_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter1_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter2_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter3_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter4_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter5_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter6_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter8_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/Chapter9_1.ipynb
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/1_1.png
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/2_1.png
A Engineering_Physics_by_S.L.Gupta,_Sanjeev_Gupta/screenshots/3_1.png
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter10_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter11_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter12_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter13_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter14_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter2_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter3_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter4_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter5_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter6_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter7_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter8_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter9_1.ipynb
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13AngularDisplacement.png
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LateralDisplacement.png
A Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LongitudinalDisplacement.png
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch10_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch11_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch12_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch1_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch2_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch3_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch4_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch5_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch6_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch7_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch8_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/Ch9_1.ipynb
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/Ch9MolFracNMolVol_1.png
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/Ch9_molarFracNMolVol_1.png
A Introduction_To_Chemical_Engineering_Thermodynamics_by_G._Halder/screenshots/ch10_consistency_1.png
A Microwave_engineering__by_D.M.Pozar_/Chapter_10_ACTIVE_MICROWAVE_CIRCUITS_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_12_INTRODUCTION_TO_MICROWAVE_SYSTEMS_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_1_ELECTROMAGNETIC_THEORY_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_2_TRANSMISSION_LINE_THEORY_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_3_TRANSMISSION_LINE_AND_WAVEGUIDES_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_4_MICROWAVE_NETWORK_ANALYSIS_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_5_IMPEDENCE_MATCHING_AND_TUNNING_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_6_MICROWAVE_RESONATORS_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_7_POWER_DIVIDERS_DIRECTIONAL_COUPLERS_AND_HYBRIDS_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_8_MICROWAVE_FILTERS_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/Chapter_9_THEORY_AND_DESIGN_OF_FERRIMAGNETIC_COMPONENTS_1.ipynb
A Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_1.59.04_pm.png
A Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_1.59.33_pm.png
A Microwave_engineering__by_D.M.Pozar_/screenshots/Screen_Shot_2016-04-19_at_2.00.38_pm.png
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter11_Control_of_DC_Motors_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter12_Controllers_and_Their_Optimisation_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter13_Choppers_and_Transportation_system_Application_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter15_The_AC_motor_control_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter16_Faults_and_Protection_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter3_Fabrication_and_Thermal_characteristics_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter4_Series_and_Parallel_Connection_of_Thyristors_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter5_Line_Commutated_converters_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter7_Inverter_Circuits_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter8_Harmonic_and_PowerFactor_with_the_converter_system_1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/Chapter_2_The_Device__1_1.ipynb
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/11.PNG
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/15.PNG
A Thyristors_Theory_And_Applications_by_R._K._Sugandhi_And_K._K._Sugandhi/screenshots/8.PNG
Diffstat (limited to 'Fiber_Optics_and_Optoelectronics_by_R._P._Khare')
16 files changed, 3113 insertions, 0 deletions
diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter10_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter10_1.ipynb new file mode 100644 index 00000000..65279f94 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter10_1.ipynb @@ -0,0 +1,168 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter10 - Optical Amplifiers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.1 : Page 254" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "refrative index is : 3.75\n", + "spectral bandwidth = 2.09 GHz\n" + ] + } + ], + "source": [ + "from math import pi, asin, sqrt\n", + "from __future__ import division\n", + "#refractive index and bandwidth\n", + "#given data :\n", + "lamda=1.55*10**-6## in m\n", + "del_lamda=1*10**-9## in m\n", + "L=320*10**-6## in m\n", + "n=(lamda)**2/(2*del_lamda*L)#\n", + "Gs=10**(5/10)## 5 dB is equivalent to 3.16\n", + "R1=30/100#\n", + "R2=R1#\n", + "c=3*10**8## in m/s\n", + "del_v=(c/(pi*n*L))*asin((1-(Gs*sqrt(R1*R2)))/(sqrt(4*Gs*sqrt(R1*R2))))#\n", + "print \"refrative index is : %0.2f\"%n\n", + "print \"spectral bandwidth = %0.2f GHz\"%(del_v*10**-9)\n", + "#bandwidth is calculated wrong in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.2 : Page 260" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "small signal gain of EDFA = 32.91 dB\n", + "maximum possible achievable gain = 84.71 dB\n" + ] + } + ], + "source": [ + "from math import log10, exp\n", + "#small-signal gain of EDFA and maximum pssible achievable gain\n", + "ts=0.80##\n", + "sa=4.6444*10**-25##in m**2\n", + "n12=6*10**24##m**-3\n", + "se=4.644*10**-25##m**2\n", + "n21=0.70##\n", + "l=7##in meter\n", + "x=((sa*n12*l*(((se/sa)+1)*n21-1)))##\n", + "G=ts*exp(x)##\n", + "Gdb=10*log10(G)##\n", + "Gmax=exp(se*n12*l)##\n", + "Gmaxdb=10*log10(Gmax)##\n", + "print \"small signal gain of EDFA = %0.2f dB\"%Gdb\n", + "print \"maximum possible achievable gain = %0.2f dB\"%Gmaxdb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 10.3 : Page 264" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "output signal power for forward pumping = 4.60 micro Watt\n", + "part (b)\n", + "overall gain = 6.63 dB\n" + ] + } + ], + "source": [ + "from math import log10, exp\n", + "#output signal power and overall gain\n", + "print \"part (a)\"\n", + "psin=1*10**-6##in watts\n", + "ppin=1##in watts\n", + "gr=5*10**-14##mW**-1\n", + "ap1=60*10**-12##m**2\n", + "l=2000##meter\n", + "asdb=0.15##dB/km\n", + "As=3.39*10**-5##m**-1\n", + "apdb=0.20##db/km\n", + "ap=4.50*10**-5##m**-1\n", + "z=(1-exp(-ap*l))/ap##\n", + "y=(gr/ap1)##\n", + "y1=z*y##\n", + "y2=y1-(As*l)##\n", + "psl=psin*exp(y2)##\n", + "print \"output signal power for forward pumping = %0.2f micro Watt\"%(psl*10**6)\n", + "print \"part (b)\"\n", + "y1=z*y##\n", + "y2=y1-(As*l)##\n", + "psl=psin*exp(y2)##\n", + "gfra=psl/(psin)##\n", + "Gdb=10*log10(gfra)##\n", + "print \"overall gain = %0.2f dB\"%Gdb" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter11_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter11_1.ipynb new file mode 100644 index 00000000..b7959d16 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter11_1.ipynb @@ -0,0 +1,145 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter11 - Wavelength-division multiplexing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.1 : Page 277" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "interaction length = 0.785 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi, asin\n", + "#interaction length \n", + "po=1##assume\n", + "p1=po/2##\n", + "p2=p1##\n", + "kl=asin(sqrt(p1))##in degree\n", + "print \"interaction length = %0.3f \"%kl\n", + "#answer is in the form of pi in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.2 : Page 279" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "output port positioned at 0.7492 mm with respect to the input port will gather signals at h1=1310nm\n", + "output port positioned at 0.6117 mm with respect to the input port will gather signals at h1=1550nm\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi, asin\n", + "#position \n", + "a=8.2##in micro meter\n", + "n1=1.45##\n", + "n2=1.446##\n", + "h1=1.31##in micro meter\n", + "h2=1.55##/in micro meter\n", + "v1=((2*pi*a*sqrt(n1**2-n2**2))/h1)##\n", + "v2=((2*pi*a*sqrt(n1**2-n2**2))/h2)##\n", + "db=2.439##\n", + "Del=5.5096*10**-3##\n", + "k1=1.0483##mm**-1##\n", + "k2=1.2839#/m**-1\n", + "l1=((pi)/(4*k1))##in mm\n", + "l2=((pi)/(4*k2))##in mm\n", + "print \"output port positioned at %0.4f\"%(l1),\" mm with respect to the input port will gather signals at h1=1310nm\"\n", + "print \"output port positioned at %0.4f\"%(l2),\" mm with respect to the input port will gather signals at h1=1550nm\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 11.4 : Page 286" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "required order of the arrayed waveguide, = 121.0\n" + ] + } + ], + "source": [ + "# ARRAYED GUIDE\n", + "#given data\n", + "c=3*10**8#\n", + "lamda_c=1.55*10**-6## in m\n", + "vc=c/lamda_c#\n", + "n=16## number of channel\n", + "f=100*10**9## in Hz\n", + "delV_FSR=n*f#\n", + "m=round(vc/delV_FSR)#\n", + "print \"required order of the arrayed waveguide, = \",m" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter12_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter12_1.ipynb new file mode 100644 index 00000000..e34608c5 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter12_1.ipynb @@ -0,0 +1,263 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter12 - Fiber-optic communiation systems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.1 : Page 299" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum possible link length = 8.00 km\n", + "total rise time of the system in ns is 30.0\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi\n", + "#link length and reise time\n", + "af=2.5##dB/km\n", + "ac=0.5##dB/splice\n", + "nc=1##\n", + "lc=1##dB\n", + "ncc=2##\n", + "plx=-10##dBm\n", + "prx=-42##dBm\n", + "Ms=6##dB\n", + "L=((plx-prx-Ms-(lc*ncc))/(af+ac))##\n", + "TTX=12##NS\n", + "TRX=11##NS\n", + "NS1=3##NS/KM\n", + "NS2=1##NS/KM\n", + "tmat=(NS1*L)##ns\n", + "tint=(NS2*L)##ns\n", + "tsys=sqrt((TTX**2+tmat**2+tint**2+TRX**2))##ns\n", + "print\"maximum possible link length = %0.2f km\"% L\n", + "print \"total rise time of the system in ns is\",round(tsys)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.2: Page 305" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "maximum possible link length = 4.71 km\n", + "part (b)\n", + "system bandwidth = 8.00 MHz\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi\n", + "## link length and bandwidth\n", + "print \"part (a)\"\n", + "af=3##dB/km\n", + "ac=0.5##dB/splice\n", + "nc=1##\n", + "lc=1##dB\n", + "ncc=1.5##\n", + "plx=0##dBm\n", + "prx=-25##dBm\n", + "Ms=7##dB\n", + "L=((plx-prx-Ms-(lc*ncc))/(af+ac))##\n", + "TTX=12##NS\n", + "TRX=11##NS\n", + "NS1=3##NS/KM\n", + "NS2=1##NS/KM\n", + "tmat=(NS1*L)##ns\n", + "tint=(NS2*L)##ns\n", + "tsys=sqrt((TTX**2+tmat**2+tint**2+TRX**2))##ns\n", + "print \"maximum possible link length = %0.2f km\"%L\n", + "print \"part (b)\"\n", + "af=3##dB/km\n", + "ac=0.5##dB/splice\n", + "nc=1##\n", + "lc=1##dB\n", + "ncc=1.5##\n", + "plx=-0##dBm\n", + "prx=-25##dBm\n", + "Ms=7##dB\n", + "L=((plx-prx-Ms-(lc*ncc))/(af+ac))##\n", + "TTX=1##NS\n", + "TRX=5##NS\n", + "NS1=9##NS/KM\n", + "NS2=2##NS/KM\n", + "tf=((NS1*L)**2+(NS2*L)**2)##\n", + "tsys=sqrt((TTX**2+tf+TRX**2))##ns\n", + "df=0.35/(tsys*10**-3)##\n", + "print \"system bandwidth = %0.2f MHz\"%round(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.3 : Page 310" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "no. of subscribers are 38.0\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi,log10\n", + "\n", + "#no. of subscribers\n", + "pt=1##mW\n", + "pn=-40##dBm\n", + "pn1=10**(pn/10)##\n", + "c=0.05##\n", + "d=0.11##\n", + "x=((pn1)/(pt*c))##\n", + "y=((log10(x))/(log10((1-d)*(1-c))))##\n", + "n=y+1##\n", + "print \"no. of subscribers are\",round(n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.4: Page 311" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total power, P_tot = 92.4 mW\n" + ] + } + ], + "source": [ + "# Total power\n", + "#given data :\n", + "L_eff=20## in km\n", + "del_lamdaC=125## in nm\n", + "gR=6*10**-14## m/W\n", + "A_eff=55*10**-12## in m**2#\n", + "del_lamdaS=0.8## in nm\n", + "N=32## number of channels\n", + "F=0.1## constant\n", + "P_tot=(4*F*del_lamdaC*A_eff)/(gR*del_lamdaS*L_eff*(N-1))#\n", + "print \"Total power, P_tot = %0.1f mW\"%P_tot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 12.5 : Page 312" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SBS threshold power for the worst case = 8.66 mW\n", + "SBS threshold power for the best possible case = 17.33 mW\n" + ] + } + ], + "source": [ + "#SBS threshold power\n", + "#given data :\n", + "gb=4*10**-11## in m/W\n", + "A_eff=55*10**-12## in m**2\n", + "L_eff=20## in km\n", + "lamda_p=1.55## micro-m\n", + "n=1.46## constant\n", + "Va=5960## for the silica fiber in m-s**-1\n", + "Vb=(2*n*Va)/lamda_p#\n", + "del_v=100*10**6## in Hz\n", + "del_Vb=20*10**6## in Hz\n", + "b1=1#\n", + "b2=2#\n", + "P_th=((21*b1*A_eff)/(gb*L_eff))*(1+(del_v/del_Vb))\n", + "P_th1=((21*b2*A_eff)/(gb*L_eff))*(1+(del_v/del_Vb))\n", + "print \"SBS threshold power for the worst case = %0.2f mW\"%P_th\n", + "print \"SBS threshold power for the best possible case = %0.2f mW\"%P_th1" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter13_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter13_1.ipynb new file mode 100644 index 00000000..0f45a4e0 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter13_1.ipynb @@ -0,0 +1,187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter13 - Fiber-optic sensors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.1: Page 327" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f105deb4d90>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\np53mVDqWnESdRM2sy1RS6fTpKZWefLJTqY0dJ1GcRM26lVPp2HISdRI1sy7mVGpjzUkUJ1GzXuBU\nOvqcRJ0tvR97AAAPYklEQVREzaxHOJXaWHASxUnUrNc4lY4OJ1EnUTPrQU6lNlqcRHESNetlTqUj\n5yTqJGpmPa6SSvfYw6nUhs9JFCdRM0ucSofHSbQLkqikaZJmS7pH0hdrfL6PpFsl3SbpaklblFFO\nM2t/TqU2XB2dRCX1AXcDU4FHgBuAvSPirkI/2wN3RsTfJE0DZkbEdlXjcRI1s0U4lQ7NSbTzk+gU\n4N6IuD8iXgbOA2YUe4iIayPib/ntH4G1WlxGM+tATqXWjE5vRNcEHiq8fzh3q+dA4KIxLZGZdY2+\nPjjssNSYnnMO7Lor3Hdf2aWydrJU2QVYQk0fg5W0C/BhYIdan8+cOXPh6/7+fvr7+5ewaGbWLSqp\n9LvfhSlT4Kij4OMfh3GdHkOGaWBggIGBgbKL0VY6/ZzodqRznNPy+yOABRFxbFV/WwC/BKZFxL01\nxuNzombWlOK50lmzYL31yi5ReXxOtPMP594IbChpsqTxwF7ABcUeJK1DakD3rdWAmpkNR/Fc6ZQp\nPlfa6zo6iQJI2h04HugDZkXE0ZIOBoiIH0j6EfAu4ME8yMsRMaVqHE6iZjZsvZ5KnUS7oBEdDW5E\nzWyk5s9P50qPOab3zpW6EXUjCrgRNbMl14up1I1o558TNTNrCz5X2pucRHESNbPR1Sup1EnUSdTM\nbNQ5lfYOJ1GcRM1s7HRzKnUSdRI1MxtTTqXdzUkUJ1Eza41uS6VOok6iZmYt41TafZxEcRI1s9br\nhlTqJOokamZWCqfS7uAkipOomZWrU1Opk6iTqJlZ6ZxKO5eTKE6iZtY+OimVOok6iZqZtRWn0s7i\nJIqTqJm1p3ZPpU6iTqJmZm3LqbT9OYniJGpm7a8dU6mTqJOomVlHcCptT06iOImaWWcpptLTToN1\n1y2nHE6iTqJmZh2nmEq33daptExOojiJmlnnKjOVOok6iZqZdTSn0nI5ieIkambdodWp1EnUSdTM\nrGs4lbaekyhOombWfVqRSp1EnUTNzLqSU2lrOIniJGpm3W2sUqmTqJOomVnXcyodO06iOImaWe8Y\nzVTqJOokambWU5xKR5eTKE6iZtabljSVOok6iZqZ9Syn0iXnJIqTqJlZJZUut1x6XmkzqdRJ1EnU\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f10487627d0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdQAAAEZCAYAAAAuUdQGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcHFW5//HPl7AjJEGQyJYoImuAgDeERRkBvQFUEBcE\ntyAg6uXiBnLxohm8P0UEL8QVBERcAEFBFmUnA8hqJEBYDUhYZFFJwqZcCXl+f5zTpNLpnulJerq6\np7/v12te07Wfqq6up+o8p6oUEZiZmdmyWa7sApiZmQ0HDqhmZmZN4IBqZmbWBA6oZmZmTeCAamZm\n1gQOqGZmZk3Q8oAq6XlJ45Zy2g9LuqK5JWpouTtJmp3L/p5WL7+dSVpF0iWS5kv6ZYuXfbekt7Vy\nmXm5Z0qaK+mWBsYdJ2mhpAF/a5KmSLqhOaVctrIMYRnOkbT3IKc5WtJp/Qxfpu0m6SeS/qfBcedI\n2m1pl9UMkt4r6TFJz0naplW/A0k9kh4bxPh9kg5qcNyFkt649KVbdpI+LenpvF3XLMYqSSdK+tRA\n8+j3hyXpcknH1ui/t6Qnl+aHGRGrR8Scgcar9eOPiF9ExL8PdplN8DXgO7nsF1cPlLSzpJtyUHlG\n0u8lvaWEcpbh/cDrgDUjYr+hWkitg15EbBkR1w/VMuuU463A7sC6ETFpiJe1TAeZfPDftUllWeZg\nLGkrYKuIuGgw00XEcRFxSLPKUWsR+W9Q40rqlfSzJpajUScCn4mINSLijjJ+Bw0azHZ91WBOcJpF\n0grAt4Hd8nadWxWrTgS+nMera6Cd8ifAR2r0/yjw84hYOIgCL9/ouNWTLuV0zbQhcG+tAZLWAC4F\npgGjgfWAY4H/a1npyjUW+NNg9oUONxaYExEvtWh5y7L/xzJOX8uyzO9Q4OdtUI5WzG9ISBL9HI9s\nqY0BVgbuqzUwIp4C7gf6r6GMiLp/wCrAfOCthX6jgX8C44GJwM3APOAJ4LvACoVxFwKfAWYDDxX6\nvTF/3guYCTwLPApMLUz7aB73eeA5YBIwBbihMM6OwB9yGW8DdigM6yNdWf4+T38F8Np+1vWQXM5n\ngIuA1+f+DwGvAP/I81mharq3APP6me9GwLXA34G/kQ4oIwvD5wBfBO7M63EusFJh+Jfytn0cOLi4\n/Wos60DSD+25XO5PFoatRQr88/I6Xg+oznym5e3/LDAD2LnOeJUTh3/l7+kTQC/ws8I443KZl2vk\newF2Bm7K5XwU+Hj+bv6Vl/U8cFFh2+2WP68EnAz8Jf+dBKyYh/Xk7fcF4Om8Paf0852tC1yct9Ns\n4ODc/yDSvr8gl2NqjWmXI53N/i1/B/9Rtf4jgTMK3+n/FIZNIe/f+ftZCLyQl/UBYFT+Dv8KzAUu\nAdarsw4/Y9F++zxwROG7+BjwSC7jlwvTCPgv4EHS/vpLYHSN3+PzwPYMsG/XKNNDwI6F7keAbfPn\nD+f5b1bY1hfmz73kfYrax4WPAzcAJ+Tt8mdgcj/lmADcnqc/FzgH+J/C8HcBd5D2wRuB8YVhDwO7\nApNZfN+f2cBv8CjgFmBE7v40cDd5Px3oj7SPv1DYL2ZX/w5qTNPfMXag/WEV0kXVXOAe4EjgsX7K\n9w5S0JlPigV9wEGF4Z/I22YucDmwYWHYQuCNwCep/Vuv7JfP5bLsk/uvSPqdblmY1+uAF+nneF9V\n7jcXtuvzwNXFMhXG+zLw437n1cDCfgScVug+FLg9f96WFFSXI5253wt8tmojXUE6EKxUXUhgF2CL\n/Hk88BSwd+4eS+FAVOOAsyZph/9wXv6H8hdVOQD0kQ6GbyKdeUwHjquzjrvmnWmb/AV9B7iu+kdU\nZ9rVSQeUn5B+ZKOrhm8E7AasQApq1wEnVc37FtIZ0ui8DQ/NwyYDTwKbkXbun5MOkvUC6p7AG/Ln\nt+WdapvcfRzwQ2BE/tupn+/8w7ksy5GC0JPU+dEDU4GfVnUPFFBrfi/5O38O2C+XcU1g6zzsTOBr\nVct+9XshBemb8jZei3Qg/Foe1gO8TDowjwD2yNum5sGfFMy+l/eFrUkB7O152McpnNTVmPZTpLPc\n9fI2nJ6/s8r6X5i/h1WAtYFbyQddljxhrP5Brwm8N2+31wDnkYNOnbIstt8WvotTSQfnrYCXgE3y\n8M/mbbguaX89BTi7n99jv/t2VVlWy9MXT57OAr5QOM7MBj6Vu39KPpaweECtd1z4FykIK38Hf6lT\njhVJweOzeV94X562sq9MIJ10/Vue18fydlyhxj632L7fz29wQu5W3kZTgY1Jx6utC9POJx3Tav19\nqZ/9or/jU3/H2IH2h2/m8o4C1icF/0frLGct0m9337xdP0f6zX0iD987f7+bkI4r/w3cWGudqP1b\nfz8wJn/+ICkArpO7vw98szDuZ1kUiDfsZ5vOAz7Uz35VvZ33Bf5Y7/cW0VhA3SkvuHK2fyOFoFk1\n7ueAC6oK1FM1Tn9XWCcD/1v1ZdcLqB8Fbqma/ibg4/nzdBY/2/o0cFmd5Z5R9YWsRvqRbTjQDpuH\nb5p3gsfyTnQR8Lo64+5DPiEpzPuAQvfxwA/z5x8DXy8M26i/7VdjWRcCh+fPxwK/ATZqZNqq+cyl\ncJZeNayXxQNodfdi32N/3wtwNPDrOss5k8JVRPX3Qjp7nVwY9k7g4fy5h3SlVtyXngYm1ljOBqQr\n0NUK/b4BnFm9D9Yp57UsflXyjsr6A+uQDlgrF4bvD1xba94DfdekE8C5/QyvF1DXLfS7Ffhg/nxf\n1fivJ/0Olqv+HhvZt6uGrZenX7HQ7xMsOvDdm7vPyd1zWHQy+Oo+VascebvNLnSvmsdZ4jdICnJ/\nqepXPPn6IUsezO8n19JV7XOvlquR32DuHku6oroXOGqwv8Va+0X19zzAtLWOsfX2h4eAdxaGHUKd\nK1TSicdNVf0eY1FAvazyOXcvRzrZ2KB6najxW6+xvJnAe/Ln7YFHCsNmAO8f5DattV9Vb+d3kGta\n6/0NmNiPiBtJV2DvlbQR6cztbABJb5Z0aW6g9CzwdeC1VbOo2ypM0vaSpkv6q6T5pKvf6unrWZdU\nhVH0SO5f8VTh8z9JZ/W1vD5PC0BEvEja6ddrpCARcX9EHBgRGwBb5jKcDCBpHUnnSno8b6OfseQ6\nVpdztUK5itvv8f7KIWkPSbfkhlHzSGfLlWWdQAo6V0p6SNJR/cznCEn35kZW80jVlGv1t+xBqve9\nbECqrlsa61L4Dkn7RnFfeCYWz/P+g9r7w7qkIPVi1bwa2hdY8jsr7qNjSVdzT0qal7ftKaQr1QFJ\nWlXSqbmx0bOkq4eROa82GMXtX9wOY4ELC2W7l3RysU6d8jSyb1fMz/9XL/S7HnirpDGkq5rzgZ0k\njSXVHtyxNOsUEf/IH+t9v3+p6lfcb8YCX6xsg7wd1mfxfamuAX6DRMQjpFqasaQrqyHV4DG23v6w\nLvX35WrrsuTxqTjtWGBaYZs+k/s39LuS9DFJMwvTb0lej4i4FfhnboW8KenCY4nGo02wOov245oa\nbSn3U9IZyEeAyyPib7n/D0k/ujdFxEjSZXz1PKOf+Z5NumpaPyJGkQ4ulen7mw7Sj2JsVb+xLPlj\nacQTpDMUACStRvqyBj2viHiAVJW1Ze71DVKV35Z5G32Uxrf7k6QgU7FBvRElrQT8GvgW6cx8NPA7\ncmOLiHghIo6IiI1IifUv1GoBmluxHgl8ICJG5fk8S/1GG9Xf0wukK4SKMf2sX7VHST+GRpZTbbHv\nkFTV88Qgll2cz5qSigfjDRngZKbgyTx+cdqKx0i5oddGxOj8NzIixjc47y+S8j0T8760C+l7afS7\nGcijpKv80YW/VSPiyTrzanjfzicoD5Gq/Cr9HiQdwP+TlGJ5nnRw/yQpJ1prPQa7TtWeZMmDePE4\n8iipVqi4DV4TEbVuCVusLAP9BvM4e5HyvteQcu3F6V/It2rU+vuvpVzf/o6xA+lvX672BIXjUz7J\nKx6vHiXV3BS362oRUevWs+rtOpaUEvgP0t0Eo0nVz8X9/ixSfPoocH5E/CtPu2E/2/R5SfsPsA2K\nNiPl1usaTEB9B6lRzFmF/q8hJXH/kc8MPj2IwlWmnxcR/5I0ETiARRvzb6RL7noH2MuAN0vaX9Ly\nkvYjVb1eWhin0TP3c4ADJW2dfxTfIFUn93dGlhYgbSLpC5LWy90bkKrxbi6s44vAc3mcIxsoT6Xc\n5+VybSppVeAr/UyzYv77O7BQ0h6kas9KOd8l6U15R3+OdCB8pcZ8Viddlfxd0oqSvgqs0UBZK+4A\n3iZpA0kjSdW4A01TcTawu6QP5O/0tZK2zsOeJjVaqOcc4BhJa0laC/gq6YppUCLiMVLq4DhJKynd\n6vEJGm+deh5wuKT1JI0mNaaozPtJ4ErgfyWtLmk5SRup/j2ET7P4/v8a0hX9s5LWJOXi+lM9/UBO\nAb4haUMASWtr0X3XtX6Pg923f0c6CSi6Djgs/4d09VbshsX3l4GOCwO5CVgg6XBJK0jal1TrVnEa\n8ClJE5WsJmmvqhOsiqeAcYUagoF+g2vl+R9EqqZ+dx4HgBy4V6/z982lXN/+jrEDOQ84WtIoSeuT\nTnzq+S2whdI9sssDh7P4yfQppNtONgeQNFLSB+rMq/q3vlou89+B5SQdyKILloqfk3KcHybFKwAi\n4tF+tunqEXHOANugaBdS3KmroYCaqyluJF15FC+ljyB9Qc+RziDOZeCzyWK/zwBfk/QcKVi8ehaY\nq22+DtyodBP99hTua4qIZ0it8b5I2tBHAO+KiLl1lhXU2ZEi4pq8/F+TzrTeQGrk1IhKi8dbJb1A\nCqR35XJByl1uS7rKuyQvo78duriOl5MaSE0H/sSiIL3ELTn57P5w0o9gLimoF+/3exNwVS7vTcD3\nI+K66vmQWt9dnpc3h3QA7+/EYrHtGhFXk77Hu0gtsC9hyfWt+b3kE5g9SdvuGVKeZKs83hnA5rnK\n54Ia5fh/pNzJXflvRu5Xa5kD2Z90tfsEcAHw1Yi4trq8dZxGaoh3Zy5D9ff9MdJBt9La8XwWHXiq\n590LnJXX+f2kNMIqpP39JtKPu7+yHEc6yZgn6QuFZdQzjfT7vjL/Jm8mNTqs9XucyOD37R+RDnhF\n15EO+tfX6a6UubKP9HtcqJpmCRHxMunAO4W0j30wl7sy/I+kXOH3SN/PbNJ3Vmt+5+f/z0ia0cBv\n8FTgNxFxeT5OHQScnk+8BmMw+3LdY2wD8zqWVB3+MOmY8NN64+fj8QdIDZn+Tjre/L4w/Dek9iHn\nKqUHZgHFZwoU57vYbz0i7iXdI3oz6SRmy+K88/wfI7XcXhgRiw0bhLr7kKTXk65Qf9PfDJSTrW1P\n0o9JTcD/Wq+KTNJ3SC04/0G6LWJm7j+ZdDAaAZweEce3ptTNJWkz0o64YnTPfZ82jEj6BXBeDPLh\nDmYDkXQGqcHZV4dg3icCD0bEKf2O10EB9a2k/NxPawVUSXsCh0XEnvmsdVpETJI0AniA9HSbv5Cu\nmvaPiJo38LYbSe8lVZWtSqpuXxAR+5ZbKjOz9qH0iMCZpJbhj/Q/9tDpmIfjR8QNpNt36nkPOb+b\nW32NUmo9OJF0ZjEnV/ecS7onqlN8kpRTeJB0S85g89RmZsOW0mMKZwHfKjOYAizt4wDb0XoseYvJ\neizZ9PtxUs6zI0TEHgOPZWbWnSLiK/TfYLNlOuYKtUEd8TxOMzMbfobTFepfWPy+p/VJV6MrsOS9\nnDXvKZTUGQllM7M2ExFdf0EznK5QLyY1b0fSJGB+RDxNunVhY6XXPq1Iek5s3adozJwZ7LJLMH58\ncPXVg38s2HD5mzp1aullaJc/bwtvC2+L/v8s6ZgrVEnnkG6sXUvpJbdTSVefRMSpEfE7SXtKepB0\ns/mBedgCSYeR7g0cAZwR/bTw3WYbmD4dLrwQDjkExo+HE0+EjTce4hU0M7OO1jEBNSIGfERURBxW\np/9lDPCEiyIJ9t0X9twTpk2DHXaAKVPgmGNg1KjGy2xmZt1jOFX5Nt3KK8NRR8Hdd8Ozz8Kmm8Kp\np8KCBWWXbOj19PSUXYS24W2xiLfFIt4WVq1jHuzQCpKiv+1xxx3wuc/B3Llw0kmw224tLJyZWZuS\nRLhRkgNq0UABFSAi5VePOML5VTMzcECtcJXvIFXyq/feCzvumPKrRxwB8/t9S56ZmQ13DqhLqZvz\nq2ZmtiRX+RY0UuVbj/OrZtatXOWbOKAWLEtABedXzaw7OaAmrvJtIudXzcy6lwPqEHB+1cys+7jK\nt2BZq3zrcX7VzIYzV/kmDqgFQxVQwflVMxu+HFATV/m2iPOrZmbDmwNqizm/amY2PLnKt2Aoq3zr\ncX7VzDqdq3wTB9SCMgIqOL9qZp3NATVxlW8bKOZXd9op5VePPDJVCZuZWWdwQG0jK68MX/pSyq/O\nnw+bbJLyq6+8UnbJzMxsIK7yLSiryreeYn715JNh113LLpGZ2ZJc5Zs4oBa0W0CFxfOrW20FJ5zg\n/KqZtRcH1MRVvm2umF/dYQfnV83M2pUDaoco3r/q/KqZWftxlW9BO1b51uP8qpm1C1f5Jg6oBZ0U\nUMH5VTNrDw6oSUdV+UqaLOl+SbMlHVVj+GhJF0q6U9KtkrYoDJsj6S5JMyXd1tqSDw3nV83M2kfH\nBFRJI4DvAZOBzYH9JW1WNdqXgdsjYmvgY8C0wrAAeiJiQkRMbEWZW8X5VTOz8nVMQAUmAg9GxJyI\neBk4F9i7apzNgOkAEfEAME7S2oXhw7pKYswYOO00uPxyOOccmDABrr227FKZmXWHTgqo6wGPFbof\nz/2K7gT2BZA0ERgLrJ+HBXC1pBmSDhnispZqm21g+nTo7YWDD4Z99oHZs8sulZnZ8LZ82QUYhEZa\nC30TmCZpJjALmAlUKj53jogn8hXrVZLuj4gbqmfQ29v76ueenh56enqWtdylqORX99wTpk1L+dUD\nD4RjjoGRI8sunZl1sr6+Pvr6+souRtvpmFa+kiYBvRExOXcfDSyMiOP7meZhYHxEvFDVfyrwQkR8\nu6p/R7XyHYynnoKvfAUuuQSOPTZduY4YUXapzGw4cCvfpJOqfGcAG0saJ2lFYD/g4uIIkkbmYeRq\n3esi4gVJq0paPfdfDXgn6Qq2azi/amY2tDrmChVA0h7AycAI4IyIOE7SoQARcaqkHYCfkKqH7wYO\niohnJb0BuDDPZnngFxFxXI35D9sr1CLfv2pmzeQr1KSjAupQ65aAWvHSSym/esIJzq+a2dJzQE06\nqcrXmsz3r5qZNY+vUAu67Qq1WvH5wCedBLvtVnaJzKwT+Ao1cUAt6PaACim/esEF6RGGzq+aWSMc\nUBNX+dpiJHjf+/x8YDOzwXJAtZqK+dV585xfNTMbiKt8C1zlW9/MmSm/Om+e379qZotzlW/igFrg\ngNo/51fNrBYH1MRVvtYw51fNzOpzQLVBc37VzGxJrvItcJXv0inmV33/qln3cZVv4oBa4IC69Ir5\n1fHj4cQTnV816xYOqImrfK0pivnVHXdM+dUjjkiPNDQz6wYOqNZU1c8H3nTTlF9dsKDskpmZDS1X\n+Ra4yrf5nF81G/5c5Zs4oBY4oA4N51fNhjcH1MRVvjbknF81s27ggGot4/yqmQ1nrvItcJVvazm/\najY8uMo3cUAtcEBtPedXzTqfA2riKl8rlfOrZjZcOKBaW6iVXz3lFOdXzaxzuMq3wFW+7cP5VbPO\n4SrfxAG1wAG1vTi/atYZHFCTjqrylTRZ0v2SZks6qsbw0ZIulHSnpFslbdHotNZ+nF81s07SMQFV\n0gjge8BkYHNgf0mbVY32ZeD2iNga+BgwbRDTWpvy/atm1gk6JqACE4EHI2JORLwMnAvsXTXOZsB0\ngIh4ABgn6XUNTmttbswYOP10uOwyOPts2HZbuOaasktlZpZ0UkBdD3is0P147ld0J7AvgKSJwFhg\n/QantQ4xYQL09cHUqXDIIbD33jB7dtmlMrNut3zZBRiERloLfROYJmkmMAuYCbzS4LQA9Pb2vvq5\np6eHnp6eQRXSWqOSX91rL5g2LeVXp0yBY46BUaPKLp3Z8NbX10dfX1/ZxWg7HdPKV9IkoDciJufu\no4GFEXF8P9M8DIwHtmxkWrfy7VxPPZWC6aWXwrHHwkEHwfKddLpo1sHcyjfppCrfGcDGksZJWhHY\nD7i4OIKkkXkYkg4BrouIFxqZ1jpbMb96zjnOr5pZ63XMOXxELJB0GHAFMAI4IyLuk3RoHn4qqQXv\nTyQFcDdwUH/TlrEeNrQmTIDp0+HCC1N+1fevmlmrtLTKN7e4/QDwNmAcKbf5CHA9cH5E/LVlhanB\nVb7Dy0svpfzqCSc4v2o2lFzlm7SsylfSGcB5wGuAU4CPAwcCpwKrA+dJOr1V5bHhr3j/6rPP+v5V\nMxtaLbtClbR1RNw5wDhbRcRdLSlQ7eX7CnUYu+OO9HzguXP9fGCzZvIVatIxrXxbwQF1+ItI+dUj\njnB+1axZHFCTVl6hzupncETEVi0pSD8cULuH86tmzeOAmrTytpl357/L8t8BwIeB3+Vus5ZxftXM\nmq3lVb6S7oiIbar6zYyICS0tSA2+Qu1ezq+aLT1foSZlPNhBknYudOwEdP0XYeXaZpt0/2pvr58P\nbGZLp4yA+gngB5IekfQI8IPcz6xUEuy7r9+/amZLp+UBNSL+mBsgbQVsHRFbR8TtrS6HWT3Or5rZ\n0mh5QJU0Jj/k4ZcRMV/S5pIOanU5zAYyZgycdhpcfrmfD2xmAyujUdLlwJnAf0fEVpJWAGZGxJYt\nLUgNbpRk9fj+VbP63CgpKSOHulZE/JL0nlIi4mXAlWnW1pxfNbOBlBFQX5D02kpHfs/psyWUw2zQ\nnF81s3rKqPLdDvgusAVwD7A28P6BnvPbCq7ytcHy/atmrvKtKOVZvjlvuknufCBX+5bOAdWWhvOr\n1u0cUJMyWvl+EFglIu4G3gv8UtK2rS6HWbM4v2pmUE4O9SsR8Vx+WtJuwI9J70c162jOr5p1tzIC\n6iv5/7uA0yLiUmCFEsphNiR8/6pZdyqjUdJvgb8A7wAmAC8Bt0bE1i0tSA3OoVqzFfOrW22VXhfn\n/KoNN86hJmVcoX4QuAJ4Z0TMB0YDR5ZQDrMhV8yv7rBD+jvyyFQlbGbDS8sCqqQ18seVgOnAM5LW\nBP4PmNGqcpiVoZhfnT8fNtkk5VdfeWXgac2sM7SsylfSbyNiL0lzgOqFRkS8sSUF6YerfK1Vivev\nnnwy7Lpr2SUyW3qu8k1KuQ+1XTmgWis5v2rDhQNq0soq3237+2twHpMl3S9ptqSjagxfS9Llku6Q\ndLekKYVhcyTdJWmmpNuauGpmS8X5VbPhpZVVvn0sWdX7qoh4+wDTjwAeAHYntRL+A7B/RNxXGKcX\nWCkijpa0Vh5/nYhYIOlhYLuImNvPMnyFaqV56in4ylfgkkvg2GPh4INhxIiyS2U2MF+hJsu3akER\n0bOMs5gIPBgRcwAknQvsDdxXGOdJ0ovLAdYAnomI4m31Xf+FW/uq3L9aya9+//vOr5p1kpYF1CJJ\n44HNgJUr/SLipwNMth7wWKH7cWD7qnFOA66V9ASwOukWnVcXAVwt6RXg1Ig4bSmLbzakttkGpk9P\n+dWDD3Z+1axTtDyg5mrZXUhvm/ktsAfwe2CggNpIXeyXgTsiokfSRsBVkraOiOeBnSLiSUlr5/73\nR8QN1TPo7e199XNPTw89PT0NLNasuSr51T33hGnTUn71wAPhmGNg5MiyS2fdrq+vj76+vrKL0XbK\neFLS3cDWwO0RsbWkdYBfRMTuA0w3CeiNiMm5+2hgYUQcXxjnd8DXI+LG3H0NcFREzKia11TghYj4\ndlV/51CtLTm/au3MOdSkjCcl/TMiXgEWSBoJ/BXYoIHpZgAbSxonaUVgP+DiqnHuJzVaIgfqTYA/\nS1pV0uq5/2rAO4FZTVkbsxaofj7whAlw7bVll8rMisrIof5B0mhSvnMG8CJw00AT5Za6h5EeWzgC\nOCMi7pN0aB5+KvAN4ExJd5JOFr4UEXMlvRG4QBKkdf5FRFw5BOtmNqScXzVrX6U+2EHSG4DVI+Ku\n0gpR4Cpf6yQvvZTyqyecAFOmpPzqqFFll8q6kat8kzKqfJG0taS9SW+b2VjSvmWUw6yT+f2rZu2l\njEZJZwLjgXuAhZX+EXFgSwtSg69QrZMVnw980kmw225ll8i6ha9QkzIC6r3AFu0YuRxQrdMVnw88\nfjyceKLzqzb0HFCTMqp8/wBsXsJyzYa94vOBd9wx3b96xBHplXFmNrTKCKhnAjdL+pOkWfmvLRol\nmQ0Xzq+atV4ZVb4PAZ8H7mbxHOqclhakBlf52nA1c2bKr86b5/yqNZ+rfJMyAurNEbFDSxfaIAdU\nG84i4IIL0ivinF+1ZnJATcqo8r1D0tmS9pf0vvzn22bMhpgE73uf86tmQ6WMgLoy8H+kx/+9K/+9\nu4RymHWlYn51/nznV82apaVVvvkl4d+KiC+2bKGD4Cpf60bOr9qycpVvUkYO9RZgh3aMXA6o1q2c\nX7Vl4YCalJJDBS6S9FHnUM3ag/OrZsuurBzqXGBXnEM1ayvOr5otvVLfNtNuXOVrtjjnV60RrvJN\nWn6FKmkDSRdK+lv++7Wk9VtdDjMb2IQJ0NcHvb1wyCGw994we3bZpTJrT2U9evBiYN38d0nuZ2Zt\nyM8HNmtMGQF17Yg4MyJezn8/AV5XQjnMbBCcXzXrXxkB9ZncwneEpOUlfQT4ewnlMLOlMGYMnH46\nXHYZnH02bLstXHNN2aUyK18Z96GOA74LTMq9bgL+MyIebWlBanCjJLPB8f2rBm6UVOFWvgUOqGZL\n56WXYNo0OOEEmDIFjjkGRo0qu1TWKg6oSRlXqK8DDgHGAcvn3hERn2hpQWpwQDVbNk89lYLppZfC\nscfCQQfB8ssPPJ11NgfUpJTXtwHXA39k0ftQIyJ+3dKC1OCAatYcvn+1uzigJmUE1DsiYpuWLrRB\nDqhmzeP8avdwQE3KaOV7qaS9lmZCSZMl3S9ptqSjagxfS9Llku6QdLekKY1Oa2bN5ecDW7cp4wr1\nBWBV4F/3EviUAAAVZUlEQVTAy7l3RMQaA0w3AngA2B34C/AHYP+IuK8wTi+wUkQcLWmtPP46QAw0\nbZ7eV6hmQ8T51eHLV6hJy69QI+I1EbFcRKwcEavnv36DaTYReDAi5kTEy8C5wN5V4zwJVOa1BvBM\nRCxocFozG0K+f9WGu5YFVEkbLeM46wGPFbofz/2KTgO2kPQEcCfw2UFMa2YtUHk+8NSpfj6wDS+t\nrHD5hqTVSM/xnUG6mhTweuAtwHuA54EP1Zm+kbrYLwN3RERPDs5XSdp6MIXs7e199XNPTw89PT2D\nmdzMGlDJr+61V7p/dYcd4MADU5XwyJFll84G0tfXR19fX9nFaDstzaFKehMpYO4EjM29HwF+D5wT\nEX/uZ9pJQG9ETM7dRwMLI+L4wji/A74eETfm7muAo0gnDv1Om/s7h2pWgur86sEHw4gRZZfKGuUc\natIxT0qStDypYdFuwBPAbSzZKOl/gWcj4lhJ65Dudd0KeG6gafP0DqhmJSrev3ryybDrrmWXyBrh\ngJp0TEAFkLQHcDIwAjgjIo6TdChARJyaW/aeCWxIyg8fFxFn15u2xvwdUM1KVrx/daut0uMMff9q\ne3NATToqoA41B1Sz9lF8PrDzq+3NATUp48EOZmYDKr5/dd482GST9P7VV14pu2RmtZXxYIftWLLF\n7rPAI/me0dL4CtWsfc2cCZ//PMyd6+cDtxtfoSZlBNRbgO2Au3Kv8cA9wEjg0xFxRUsLtHjZHFDN\n2pjzq+3JATUpo8r3CWCbiNguIrYDtgH+DLwD+FYJ5TGzDlF8PvAOO6S/I4+EZ58tu2Rm5QTUTSLi\nnkpHRNwLbBoRD9HYwxvMrMs5v2rtqIwq3/OAZ0jP0xXwQWBt4CPA7yPi31paoMXL5ipfsw7k+1fL\n5SrfpIyAuirwGdLTkgBuBH4AvASsFhHPt7RAi5fNAdWsQzm/Wh4H1MT3oRY4oJp1Pt+/2noOqEnL\nc6iSdpZ0VX7R98P5r+4zfM3MBsP5VStLGVW+DwCfA24HXt3FI+LvLS1IDb5CNRt+nF8der5CTcoI\nqLdGxPYtXWiDHFDNhifnV4eWA2pSxm0z0yWdIGkHSdtW/kooh5l1Cd+/aq1QxhVqHzXuN42It7e0\nIDX4CtWsO/j9q83lK9TErXwLHFDNuovzq83hgJqUElAlvQvYHFi50i8ivtbyglRxQDXrPs6vLjsH\n1KSM22ZOJT0d6XAWPSlpbKvLYWYGzq9a85TRKGnHiPgYMDcijgUmAZuUUA4zs1f5/lVbVmUE1H/m\n//+QtB6wABhTQjnMzJYwZgycfjpcdhmcfTZMmADXXlt2qawTlBFQL5E0GjiB9HCHOcA5JZTDzKyu\nCROgrw+mTk2tgPfZB2bPLrtU1s5KbeUraSVg5Yhoi2yFGyWZWS1+PnD/3CgpadkVqqSJkl5f6P44\ncD7wP5LWbFU5zMwGy/lVa0TLrlAlzQR2i4i5kt4G/BI4DJhAesH4+1tSkH74CtXMGuH7VxfnK9Sk\nlQH1zojYOn/+PvC3iOitHlYmB1Qza5TvX13EATVpZaOkEZJWyJ93B6YXhi3fyAwkTZZ0f37121E1\nhh8haWb+myVpgaRRedgcSXflYbct89qYWVfz/atWrZUB9RzgOkkXA/8AbgCQtDEwf6CJJY0AvgdM\nJj1laX9JmxXHiYgTI2JCREwAjgb6IqIy7wB68vCJzVopM+tuzq9aRcsCakR8HfgicCawc0QszIME\n/GcDs5gIPBgRcyLiZeBcYO9+xj+AJW/H6foqCTMbGr5/1Vp6H2pE3BwRF0bEi4V+f4qI2xuYfD3g\nsUL347nfEiStCvw78Ovi4oGrJc2QdMjgS29mNjDfv9q9GspdtonBtBZ6N/D7QnUvwE4R8aSktYGr\nJN0fETdUT9jb2/vq556eHnp6epayuGbWrSr51b32Svev7rDD8Lp/ta+vj76+vrKL0XY65vVtkiYB\nvRExOXcfDSyMiONrjHsh8MuIOLfOvKYCL0TEt6v6u5WvmTXdcH//qlv5JmU8enBpzQA2ljRO0orA\nfsDF1SNJGgm8Dbio0G9VSavnz6sB7wRmtaTUZtb1nF/tDh1T5RsRCyQdBlwBjADOiIj7JB2ah5+a\nR90HuCIi/lmYfB3gQkmQ1vkXEXFl60pvZrYov3rBBekqtdvvXx1uOqbKtxVc5WtmrTKcng/sKt+k\nk6p8zcyGDd+/Ovz4CrXAV6hmVpZOfj6wr1ATB9QCB1QzK1OnPh/YATVxla+ZWZuo9XzgI46A+QM+\nnNXagQOqmVmbKeZX58+HTTdN+dUFC8oumfXHVb4FrvI1s3ZUzK+edBLstlvZJVqcq3wTB9QCB1Qz\na1fF/Or48XDiie2TX3VATVzla2bWAYr51R13dH61HTmgmpl1EOdX25erfAtc5WtmnaYd8quu8k0c\nUAscUM2sE5WdX3VATVzla2bW4ZxfbQ8OqGZmw4Tzq+VylW+Bq3zNbDhpVX7VVb6JA2qBA6qZDTet\nyK86oCau8jUzG8acX20dB1Qzsy7g/OrQc5Vvgat8zaxbNDO/6irfxAG1wAHVzLpJs/KrDqiJq3zN\nzLqU86vN5YBqZtblnF9tDlf5FrjK18xs8PlVV/kmDqgFDqhmZslg8qsOqElHVflKmizpfkmzJR1V\nY/gRkmbmv1mSFkga1ci0Zma2iPOrg9cxAVXSCOB7wGRgc2B/SZsVx4mIEyNiQkRMAI4G+iJifiPT\nmpnZkpxfbVzHBFRgIvBgRMyJiJeBc4G9+xn/AOCcpZzWzMwKxoyB00+Hyy6Ds8+GbbeFa64pu1Tt\nZfmyCzAI6wGPFbofB7avNaKkVYF/Bz4z2GnNzKy+CROgry/lVw85JOVXLemkgDqY1kLvBn4fEZXa\n/oan7e3tffVzT08PPT09g1ismdnwd911fcya1ccBB8CsWWWXpn10TCtfSZOA3oiYnLuPBhZGxPE1\nxr0Q+GVEnDuYad3K18xs8NzKN+mkHOoMYGNJ4yStCOwHXFw9kqSRwNuAiwY7rZmZ2dLqmCrfiFgg\n6TDgCmAEcEZE3Cfp0Dz81DzqPsAVEfHPgaZt7RqYmdlw1jFVvq3gKl8zs8FzlW/SSVW+ZmZmbcsB\n1czMrAkcUM3MzJrAAdXMzKwJHFDNzMyawAHVzMysCRxQzczMmsAB1czMrAkcUM3MzJrAAdXMzKwJ\nHFDNzMyawAHVzMysCRxQzczMmsAB1czMrAkcUM3MzJrAAdXMzKwJHFDNzMyawAHVzMysCRxQzczM\nmsAB1czMrAkcUM3MzJrAAdXMzKwJOiqgSpos6X5JsyUdVWecHkkzJd0tqa/Qf46ku/Kw21pWaDMz\n6wodE1AljQC+B0wGNgf2l7RZ1TijgO8D746ILYH3FwYH0BMREyJiYouK3bH6+vrKLkLb8LZYxNti\nEW8Lq9YxARWYCDwYEXMi4mXgXGDvqnEOAH4dEY8DRMTfq4Zr6Is5PPhgsYi3xSLeFot4W1i1Tgqo\n6wGPFbofz/2KNgbWlDRd0gxJHy0MC+Dq3P+QIS6rmZl1meXLLsAgRAPjrABsC+wGrArcLOmWiJgN\n7BwRT0haG7hK0v0RccMQltfMzLqIIhqJU+WTNAnojYjJuftoYGFEHF8Y5yhglYjozd2nA5dHxK+q\n5jUVeCEivl3VvzM2hplZm4mIrk+pddIV6gxgY0njgCeA/YD9q8a5CPhebsC0ErA98L+SVgVGRMTz\nklYD3gkcW70A7xBmZra0OiagRsQCSYcBVwAjgDMi4j5Jh+bhp0bE/ZIuB+4CFgKnRcS9kt4IXCAJ\n0jr/IiKuLGdNzMxsOOqYKl8zM7N21kmtfIdMIw+M6AaSNsgtpO/JD8Y4vOwylU3SiPwwkEvKLkuZ\nJI2S9CtJ90m6N7dp6EqSjs6/kVmSzpa0UtllahVJP5b0tKRZhX5rSrpK0p8kXZmfB9CVuj6gNvLA\niC7yMvD5iNgCmAT8Rxdvi4rPAvfSWCvz4Wwa8LuI2AzYCriv5PKUIrfhOATYNiLGk9JPHyqzTC12\nJulYWfRfwFUR8Wbgmtzdlbo+oNLYAyO6QkQ8FRF35M8vkA6a65ZbqvJIWh/YEzidLn4oiKSRwFsj\n4seQ2jNExLMlF6ssz5FOPFeVtDzp9ry/lFuk1sm3Gs6r6v0e4Kz8+Sxgn5YWqo04oDb2wIiuk8/E\nJwC3lluSUp0EHElq4NbN3gD8TdKZkm6XdFpuOd91ImIu8G3gUdLdBvMj4upyS1W6dSLi6fz5aWCd\nMgtTJgdUV+UtQdJrgF8Bn81Xql1H0ruAv0bETLr46jRbnvTAlB9ExLbAi3RptZ6kjYDPAeNItTev\nkfThUgvVRiK1cu3aY6oDaqqu2aDQvQHpKrUrSVoB+DXw84j4TdnlKdGOwHskPQycA+wq6acll6ks\njwOPR8QfcvevSAG2G70FuCkinomIBcAFpH2lmz0taQyApNcDfy25PKVxQC08MELSiqQHRlxccplK\noXSj7hnAvRFxctnlKVNEfDkiNoiIN5AanVwbER8ru1xliIingMckvTn32h24p8Qilel+YJKkVfLv\nZXdSo7VudjHw8fz540DXnoh3zIMdhkq9B0aUXKyy7AR8BLhL0szc7+iIuLzEMrWLrq3Gyv4T+EU+\n6XwIOLDk8pQiIu7MNRUzSLn124EflVuq1pF0DrALsJakx4CvAt8EzpN0EDAH+GB5JSyXH+xgZmbW\nBK7yNTMzawIHVDMzsyZwQDUzM2sCB1QzM7MmcEA1MzNrAgdUMzOzJnBAtYZI2kfSQkmbDOEymvaY\nQ0k9lVeuSXr30r6Wr5llGkqStpa0R4Pj9knaroFxts2fv7wU5fmcpFUK3YPajpJ2kbTDUix3vKQf\n1xk2R9Kag51nnvZwSR9dmmmtezigWqP2By7N/4dKwzdFK2tophGXRMTxQ12mkk0gvRmnEY08b7U4\n/OilKM9nSW9iqTW/RrydpXuk35HAD+sMW5bv8kzSwy3M6nJAtQHlh+VvDxxGejRjpX9PvpI5P794\n+ueFYXvmfjMkfadwtdgr6YuF8e6WtGH18iRdLemPku6S9J7cf5ykBySdBcwC1q+abnJe5h+B9xb6\nT5H03fz5A/nF0HdI6isMvyi/XP1Pkr5aaxvUKlMe9jFJd+Z5/jT3W1vphdy35b8dC+t/lqTr8xXT\nvpJOzPO8LL8SDEnb5W07Q9LlhWel9kn6pqRb87bYOT9/+WvAfkovQ/9AVdlXkXSu0ovBLwCKV47v\nlHRTXq/zJK22+KT6JrBKnu/Pcs/f5HLdLemQGtvqcNKD46dLuqbQ///lbXSzpNfV206SxgKHAp/P\ny91Z0rsk3aL0tpurKtNXLXclYFLlmcOSXqv0wuu7JZ1G4SUHkj6St+FMSadIWi73Pyhv11uV3qrz\nXYCIeB54RtIW1cs1e1VE+M9//f4BHwZOyZ+vJ71cGaAHmE86eAq4iXRVsTLp9VZj83hnAxfnz1OB\nLxbmPQvYMH9+Pv8fAayeP68FzM6fxwGvABNrlLGyzI1y9y8Ly5wCfCd/vgt4ff68RmH4E8DoPJ9Z\nhXUcqExbAA8Aa+buUYV13il/3pD0fGSA3rwNR5Be1P0P4N/zsAtI7+JdIW/L1+b++5EeiQkwHTgh\nf96D9GJnSM9Q/U6d7+8LwOn583jS+zy3zetxHbBKHnYU8JXCchbbBoX5jc7/V8nbas0ay3y42J/0\nmL698ufjgf8eYDtNBb5QmH5U4fPBwIk1ljkJuKTQ/R3gmPx5z1yGNYHNSM+fHZGH/QD4KGk/fhgY\nRXos6/XFbQocC3y67N+j/9r3r+uf5WsN2Z/0blCA83P37bn7toh4AkDSHaR3Z/4D+HNEPJLHOQf4\n5CCWtxxwnKS3kg6C6xauSB6JiNtqTLMp8HBEPJS7f161zMrVyY3AWZLOIwWwiisjYl5ejwuAtxbW\nsV6Z1gF2Bc6L9J5MImJ+Hn93YDMtqpVePV/9BXBZRLwi6W5guYi4Io8zi3TS8GZSoL46Tz+CFPAr\nKuW+PY9fWb96VeBvBabl8s2SdFfuPwnYHLgpL2dFUiAfyGclVV4ivT6wMQO/N/dfEfHb/PmPwDvy\n53rbqbJOFRvk72xMLufDNZYxFniy0P1Wck1FRPxO0rw8z92A7YAZebkrA08B/wZcV/kOJZ1P+i4q\nngDeOMB6WhdzQLV+KTXieDuwpaQgHdyDlKsC+L/C6K+Q9qnqXFXxwLiAxVMNK9dY7IdJV0/b5sDz\ncGG8F+sUtb9lLhop4tOSJgJ7AX9U7cY5YsmXitcrU9RZloDtI+Jfi/VMB/B/5bIslPRyYfBC0vYT\ncE9E1MshVrZ5ZXs3orqMle6rIuKABueBpB5SQJoUES9Jmg6s1MCktdazUo5626nou6Sr0ksl7UK6\n0q9W67uod5JxVkQs1thK0t4DTCs6J6duJXAO1QbyfuCnETEuIt4QERsCD+crtVqCVAX6xpwLg1Rl\nWTkQzSG/S1OpFekbasxjDdLLvV+R9HbSlcdAHgDGSapcQdRsPCVpo4i4LSKmAn9jUR72HZJGK7VM\n3Zt0JTtQmQK4FvhAPvFA0ug8/pXA4YXlbt3AOhTXZW1Jk/K0K0jafIBpngNWrzPseuCAPK8tSVXN\nAdwC7KT00mwkrSZp4xrTv1zJ7ZK2w7wcTDclXeXW8nwedyDV22mbwvTF9VmDRVfpU+rM6xHSFWxF\ncb33IFXpB3AN8H5Ja+dhayrl8f8A7CJpVF7f97F4AH09af81q8kB1QbyIeDCqn6/JgWsmq1FI+Il\n4DPA5ZJmkA72zxWmXTNXd/4HKXi8Omn+/wvgLblq8qPAfTXGqbXMTwK/VWqU9HRh3GI5v6XUAGgW\ncGNE3JWH3ZbLdifwq4i4vTBt3TJFxL3A14HrcpX3t/P4h+fx75R0D6mRTa11qF6fiIiXSScyx+d5\nzgTq3UJSmX46sHmtRkmkVq+vkXQvKQ84Iy/o76TgdI6kO0nVvbVui/oR6ZV+PwMuB5bP8zoOuLlO\nuX5E+v4rjZKq17nSXb2dKtX0lwDvrTRKIl2Rnp/3p79Rez+4s6r8xwJvy/vae0kBl0ivZzwGuDKv\n95XAmJy6+AZpX/g9qVr5ucL8JgI31FlfM7++zYaGpNUi4sX8+fvAnyJiWsnFqknSFGC7iPBtER1O\n0k+AH0bEQDndetOvFhEv5ivUC0iNwS6StAZwTUT8WxOLa8OMr1BtqBySry7uIVXXnVp2gfrRyH2Z\n1hlOBD61DNP3SppJaiD254i4KPefQm7YZVaPr1DNzMyawFeoZmZmTeCAamZm1gQOqGZmZk3ggGpm\nZtYEDqhmZmZN4IBqZmbWBP8ftXlamgMlDP4AAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f1048641f10>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import arange\n", + "%matplotlib inline\n", + "from matplotlib.pyplot import plot, subplot, title, xlabel, ylabel, show\n", + "#plot\n", + "lod=[0, 20, 40, 60, 80, 100, 160] #in micro meter\n", + "slong=[1.0, 0.95, 0.92, 0.89, 0.86, 0.83, 0.80]\n", + "lad=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] #in micro meter\n", + "slat=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]\n", + "add=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", + "sang=[0, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, .12]\n", + "\n", + "t=arange(0,201,20)\n", + "s1=arange(1.0,0.7,-0.03)\n", + "#subplot(131)\n", + "plot(t,s1)\n", + "title(\"Variation of Slong as a function of delta x (with deltay=fi and delta theta=fi) \")\n", + "xlabel(\"Longitudinal displacement delta x (micro meter)\")\n", + "ylabel(\"Slong (normalised)\")\n", + "show()\n", + "t1=arange(0,101,10)\n", + "s2=arange(1,-0.1,-0.1)\n", + "\n", + "#subplot(132)\n", + "plot(t1,s2)##\n", + "title(\"Variation of Slat as a function of delta y (with deltax=fi and delta theta=fi) \")\n", + "xlabel(\"Lateral displacement delta y (micro meter)\")\n", + "ylabel(\"Slat (normalised)\")\n", + "show()\n", + "t2=arange(0,11,1)\n", + "s3=arange(1.0,0.7,-0.03)\n", + "#subplot(133)\n", + "plot(t2,s3)##\n", + "title(\"Variation of Sang as a function of delta theta (with deltax=fi and deltay=fi) \")\n", + "xlabel(\"Angular displacement delta theta (deg)\")\n", + "ylabel(\"Sang (normalised)\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.2: Page 332" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "phase change = 106.60 rad/m°C\n" + ] + } + ], + "source": [ + "from math import sqrt, pi\n", + "#phase change\n", + "#given data :\n", + "n=1.45## index of core\n", + "a=10**-5## in C**-1\n", + "b=5.1*10**-7## in C**-1\n", + "lamda=.633*10**-6## in m\n", + "# formula:- (1/L)*(del_fi/del_T)=((2*PI)/lamda)[(n/L)*(del_L/del_T)+(del_n/del_T)]\n", + "#let we assume a=del_n/del_T, b=(1/L)*(del_L/del_T), c=(1/L)*(del_fi/del_T)\n", + "c=((2*pi)/lamda)*((n*b)+a)#\n", + "print \"phase change = %0.2f rad/m°C\"%c" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 13.3: Page 335" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "phase shift, del_fi = 8.99e-05 rad\n" + ] + } + ], + "source": [ + "from math import pi,sqrt\n", + "#phase shift\n", + "#given data :\n", + "L=500## in m\n", + "D=0.1##in m\n", + "ohm=7.3*10**-5## in rad s**-1\n", + "lamda=0.85*10**-6## in m\n", + "c=3*10**8## in m/s\n", + "del_fi=(2*pi*L*D*ohm)/(c*lamda)#\n", + "print \"phase shift, del_fi = %0.2e rad\"%del_fi" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter14_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter14_1.ipynb new file mode 100644 index 00000000..2e777ad5 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter14_1.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter14 - Laser-based systems" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 14.1 : Page 351" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "energy = 1.7 J cm**-2\n", + "part (b)\n", + "threshold energy = 113.9 J cm**-2\n" + ] + } + ], + "source": [ + "#energy and threshold electrical energy\n", + "print \"part (a)\"\n", + "no=1.9*10**19##cm**-3##\n", + "hc=6.6*10**-34##\n", + "v=5.45*10**14##Hz\n", + "av=2##\n", + "nv=1##\n", + "n2=no/2##\n", + "eng=((n2*hc*v)/(av*nv))## J cm**-2\n", + "print \"energy = %0.1f J cm**-2\"%eng\n", + "print \"part (b)\"\n", + "oe=0.50##\n", + "mr=0.15##\n", + "lr=0.20##\n", + "teng=eng/(oe*mr*lr)##\n", + "print \"threshold energy = %0.1f J cm**-2\"%teng\n", + "#electrical energy is calculated wrong in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 14.3 : Page 360" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum power = 157028.23 MW\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log, exp\n", + "#output power\n", + "h=0.6943*10**-6##\n", + "lm=10##in cm\n", + "r1=1.0##\n", + "r2=0.8##\n", + "t1=0.98##\n", + "As=1##cm**2##\n", + "Ls=2##cm\n", + "gth=((1/(2*lm))*log((1/(r1*r2*(t1)**8))))+(As*Ls)/lm##\n", + "sg=1.5*10**-20##\n", + "ndth=gth/sg##cm**-3##\n", + "nth=ndth*As*lm##atoms\n", + "ni=5*nth##atoms\n", + "ng=1.78##\n", + "ns=2.7##\n", + "lair=2##\n", + "c=3*10**10##\n", + "trt=((2*ng*lm)/c)+((2*ns*Ls)/c)+((2*lair)/c)##seconds\n", + "npmax=((ni-nth)/2)-(nth/2)*log(ni/nth)##photons\n", + "L=14##cm\n", + "at=((As*Ls)/L)+((1/(2*L))*log(1/(r1*t1**8)))##\n", + "aext=((1/(2*L))*log(1/r2))##\n", + "tp=((trt)/(1-(r1*r2*t1**8*exp(-2*As*Ls))))##seconds\n", + "hc=6.6*10**-34##\n", + "pmax=((aext/at)*hc*c*npmax)/(h*tp)##in watts\n", + "print \"maximum power = %0.2f MW\"%(pmax*10**-6)\n", + "#answer is wrong in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 14.4 : Page 365" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "pulse width,del_v = 0.67 ns\n", + "spatial length, Lp = 20.00 cm \n", + "part (b)\n", + "pulse width, del_v = 16.67 ps\n", + "spatial length, Lp = 5.00 mm\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#pulse width and spatial length \n", + "print \"part (a)\"\n", + "#given data :\n", + "del_v=1.5*10**9## in Hz\n", + "tau_p=1/del_v#\n", + "C=3*10**8## constant\n", + "print \"pulse width,del_v = %0.2f ns\"%(tau_p*10**9)\n", + "Lp=C*tau_p#\n", + "print \"spatial length, Lp = %0.2f cm \"%(Lp*10**2)\n", + "#spatial length is calculated wrong in the textbook\n", + "print \"part (b)\"\n", + "del_v=6*10**10## in Hz\n", + "tau_p=1/del_v#\n", + "C=3*10**8## constant\n", + "print \"pulse width, del_v = %0.2f ps\"%(tau_p*10**12)\n", + "Lp=C*tau_p*10**3#\n", + "print \"spatial length, Lp = %0.2f mm\"%(Lp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 14.5 : Page 366" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time difference is = 0.44 micro-seconds\n" + ] + } + ], + "source": [ + "#time difference\n", + "n=1.33##\n", + "x=2##\n", + "l=50##m\n", + "c=3*10**8##m/s\n", + "dt=((n*x*l)/c)##s\n", + "print \"time difference is = %0.2f micro-seconds\"%(dt*10**6)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter2_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter2_1.ipynb new file mode 100644 index 00000000..955478be --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter2_1.ipynb @@ -0,0 +1,245 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter2 - Ray propagation in optical fiber" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.1 : Page 21" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "numerical aperture is 0.244\n", + "part (b)\n", + "angle αm = 14.13 degree\n", + "angle Om = 9.37 degree\n", + "angle Φc = 80.63 degree\n", + "part (c)\n", + "pulse broadning per unit length = 6.76e-11 sm**-1\n" + ] + } + ], + "source": [ + "from math import degrees, asin, sqrt\n", + "#NA ,angles and pulse broadning\n", + "print \"part (a)\"\n", + "n1=1.5##core refrative index\n", + "n2=1.48##claddin refractive index\n", + "a=100/2##radius in micro meter\n", + "na=1##air refrative index\n", + "NA=sqrt(n1**2-n2**2)##numerical aperture\n", + "print \"numerical aperture is %0.3f\"%NA\n", + "print \"part (b)\"\n", + "am=(asin(NA))##\n", + "tm=asin(NA/n1)##\n", + "tc=asin(n2/n1)##\n", + "print \"angle αm = %0.2f degree\"%degrees(am)\n", + "print \"angle Om = %0.2f degree\"%degrees(tm)\n", + "print \"angle Φc = %0.2f degree\"%degrees(tc)\n", + "print \"part (c)\"\n", + "c=3*10**8##speed of light in m/s\n", + "dtl=((n1/n2)*(n1-n2)/c)##pulse broadning per unit length\n", + "print \"pulse broadning per unit length = %0.2e sm**-1\"%dtl" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.2 : Page 22" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "all other rays will suffer reflections between these two extremes of : 0 and 1650.0 m**-1\n" + ] + } + ], + "source": [ + "from math import tan,sqrt,asin\n", + "#minimum and maximum number of reflections\n", + "n1=1.5##core refrative index\n", + "n2=1.48##claddin refractive index\n", + "a=100/2##radius in micro meter\n", + "na=1##air refrative index\n", + "NA=sqrt(n1**2-n2**2)##numerical aperture\n", + "am=(asin(NA))##\n", + "tm=asin(NA/n1)##\n", + "tc=asin(n2/n1)##\n", + "L=((a*10**-6)/(tan(tm)))##length in meter\n", + "x=(1/(2*L))##maximum number of reflections per meter\n", + "print \"all other rays will suffer reflections between these two extremes of :\",(0),\" and \",round(x),\" m**-1\"\n", + "#answer is wrong in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.3 : Page 27" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pulse broadning = 2.45 ns km**-1\n" + ] + } + ], + "source": [ + "#pulse broadning\n", + "h=0.85##WAVELENGTH IN MICRO METER\n", + "y=0.035##spectral width\n", + "c=0.021##constant\n", + "cl=3##speed of light in m/s\n", + "dtl=(y/cl)*c##\n", + "print \"pulse broadning = %0.2f ns km**-1\"%(dtl*10**4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.4 : Page 27" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "material dispersion = 253.20 ns when h=850nm\n", + "part (b)\n", + "material dispersion = 6.72 ns when h=1300nm\n" + ] + } + ], + "source": [ + "#pulse broadning\n", + "print \"part (a)\"\n", + "h=850##WAVELENGTH IN NANO METER\n", + "l=80##fiber length in Km\n", + "dh=30##in Nano Meter\n", + "m1=105.5##material dispersion for h=850nm in ps/nm-Km\n", + "m2=2.8##material dispersion for h=1300nm in ps/nm-Km\n", + "t=m1*l*dh*10**-3##material dispersion in ns when h=850nm\n", + "print \"material dispersion = %0.2f ns when h=850nm\"%t\n", + "print \"part (b)\"\n", + "h=1300##WAVELENGTH IN NANO METER\n", + "l=80##fiber length in Km\n", + "dh=30##in Nano Meter\n", + "m1=105.5##material dispersion for h=850nm in ps/nm-Km\n", + "m2=2.8##material dispersion for h=1300nm in ps/nm-Km\n", + "t=m2*l*dh*10**-3##material dispersion in ns when h=850nm\n", + "print \"material dispersion = %0.2f ns when h=1300nm\"%t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2.5 : Page 28" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "material dispersion = 16.88 ns when h=850nm\n", + "part (b)\n", + "material dispersion = 0.448 ns when h=1300nm\n" + ] + } + ], + "source": [ + "# pulse broadning\n", + "print \"part (a)\"\n", + "h=850##WAVELENGTH IN NANO METER\n", + "l=80##fiber length in Km\n", + "dh=2##in Nano Meter\n", + "m1=105.5##material dispersion for h=850nm in ps/nm-Km\n", + "m2=2.8##material dispersion for h=1300nm in ps/nm-Km\n", + "t=m1*l*dh*10**-3##material dispersion in ns when h=850nm\n", + "print \"material dispersion = %0.2f ns when h=850nm\"%t\n", + "print \"part (b)\"\n", + "h=1300##WAVELENGTH IN NANO METER\n", + "l=80##fiber length in Km\n", + "dh=2##in Nano Meter\n", + "m1=105.5##material dispersion for h=850nm in ps/nm-Km\n", + "m2=2.8##material dispersion for h=1300nm in ps/nm-Km\n", + "t=m2*l*dh*10**-3##material dispersion in ns when h=850nm\n", + "print \"material dispersion = %0.3f ns when h=1300nm\"%t" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter3_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter3_1.ipynb new file mode 100644 index 00000000..46f8edc3 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter3_1.ipynb @@ -0,0 +1,226 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter3 - Wave propagation in planor waveguides" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.1 : Page 45" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "range of propagation constant is 1.10880e+07 to 1.1014e+07 m**-1\n", + "number of modes are 4.0\n" + ] + } + ], + "source": [ + "from math import pi, sqrt\n", + "#range of propagation constants and maximum no. of modes\n", + "n1=1.5##core refractive index\n", + "n2=1.49##cladding refrative index\n", + "t=9.83##thickness of guided layer in micro meter\n", + "h=0.85##wavelength in µm\n", + "b1=((2*pi*n1)/(h*10**-6))##phase propagation constant in m**-1\n", + "b2=((2*pi*n2)/(h*10**-6))##phase propagation constant in m**-1\n", + "m=((4*t)/h)*(sqrt(n1**2-n2**2))##number of modes\n", + "print \"range of propagation constant is %0.5e\"%(b1),\" to %0.4e\"%(b2),\" m**-1\"\n", + "print\"number of modes are\",round(m/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2 : Page 51" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "thicknes of the slab should not be greater than 0.794 µm\n" + ] + } + ], + "source": [ + "from math import sqrt\n", + "#thickness\n", + "n1=3.6##core refractive index\n", + "n2=3.56##cladding refrative index\n", + "h=0.85##wavelength in µm\n", + "a=((h/(2*sqrt(n1**2-n2**2))))##thickness in µm\n", + "print \"thicknes of the slab should not be greater than %0.3f\"%(a),\" µm\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.3 : Page 52" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "number of modes are : 5.0\n", + "part (b)\n", + "m \tuma(rad) \tum(m**-1) \twma(rad) \twm(m**-1) \tbm((wma/v)**2] \t\n", + "\n", + "0 1.30644 2.5845e+05 4.8263 9.5476e+05 0.93077\n", + "1 2.59574 5.1350e+05 4.27342 8.4538e+05 0.72974\n", + "2 3.83747 7.5914e+05 3.20529 6.3408e+05 0.41053\n", + "3 4.9063 9.7058e+05 0.963466 1.9060e+05 0.03709\n" + ] + } + ], + "source": [ + "from math import pi, sqrt\n", + "from numpy import nditer\n", + "#no. of modes\n", + "print \"part (a)\"\n", + "n1=1.5##core refractive index\n", + "n2=1.48##cladding refrative index\n", + "t=10.11##thickness of guided layer in micro meter\n", + "h=1.55##wavelength in µm\n", + "b1=((2*pi*n1)/(h*10**-6))##phase propagation constant in m**-1\n", + "b2=((2*pi*n2)/(h*10**-6))##phase propagation constant in m**-1\n", + "m=((2*pi*t)/h)*(sqrt(n1**2-n2**2))##number of modes\n", + "print \"number of modes are : \",round(m/2)\n", + "\n", + "print \"part (b)\"\n", + "t1=10.11##thickness of guided layer in micro meter\n", + "t=t1/2#\n", + "h=1.55##wavelength in µm\n", + "b1=((2*pi*n1)/(h*10**-6))##phase propagation constant in m**-1\n", + "b2=((2*pi*n2)/(h*10**-6))##phase propagation constant in m**-1\n", + "mo=(((2*pi*t1)/h)*(sqrt(n1**2-n2**2)))/2##number of modes\n", + "uma0=1.30644## for m=0 from the curve\n", + "uma1=2.59574## for m=1 from the curve\n", + "uma2=3.83747## for m=2 from the curve\n", + "uma3=4.9063## for m=3 from the curve\n", + "wma0=4.8263## for m=0 from the curve\n", + "wma1=4.27342## for m=1 from the curve\n", + "wma2=3.20529## for m=2 from the curve\n", + "wma3=0.963466## for m=3 from the curve\n", + "um0=uma0/(t*10**-6)##in m**-1\n", + "um1=uma1/(t*10**-6)##in m**-1\n", + "um2=uma2/(t*10**-6)##in m**-1\n", + "um3=uma3/(t*10**-6)##in m**-1\n", + "wm0=wma0/(t*10**-6)##in m**-1\n", + "wm1=wma1/(t*10**-6)##in m**-1\n", + "wm2=wma2/(t*10**-6)##in m**-1\n", + "wm3=wma3/(t*10**-6)##in m**-1\n", + "bm0=((wm0*t*10**-6)/mo)**2##for m=0 \n", + "bm1=((wm1*t*10**-6)/mo)**2##for m=1\n", + "bm2=((wm2*t*10**-6)/mo)**2##for m=2 \n", + "bm3=((wm3*t*10**-6)/mo)**2##for m=3\n", + "m0=sqrt((bm0*(b1**2-b2**2))+b2**2)##for m=0 in m**-1\n", + "m1=sqrt((bm1*(b1**2-b2**2))+b2**2)##for m=1 in m**-1\n", + "m2=sqrt((bm2*(b1**2-b2**2))+b2**2)##for m=2 in m**-1\n", + "m3=sqrt((bm3*(b1**2-b2**2))+b2**2)##for m=3 in m**-1\n", + "params = [\"m\", \"uma(rad)\", \"um(m**-1)\", \"wma(rad)\", \"wm(m**-1)\", \"bm((wma/v)**2]\" ]\n", + "for x in params:\n", + " print x,'\\t',\n", + "\n", + "print '\\n'\n", + "a = range(0,4)\n", + "b = [uma0, uma1, uma2, uma3]\n", + "c = [um0, um1, um2, um3]\n", + "d = [wma0, wma1, wma2, wma3]\n", + "e = [wm0, wm1, wm2, wm3]\n", + "f = [bm0, bm1, bm2, bm3]\n", + "for k,l,m,n,o,p in nditer([a,b,c,d,e,f]) :\n", + " print k,' ',l,' %0.4e'%m,' ',n,' %0.4e'%o,' %0.5f'%p\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.4 : Page 56" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "G factor is 0.5622\n" + ] + } + ], + "source": [ + "from math import sin, cos, pi\n", + "#G factor\n", + "d=0.793##in micro meter\n", + "v=pi/2##point of intersection\n", + "ua=0.934##\n", + "wa=1.262##\n", + "Y=(wa*(1+(sin(ua*pi/180))*(cos(ua*pi/180))/ua))\n", + "G=(1+((cos(ua*pi/180))**2)/Y)**(-1)\n", + "print \"G factor is %0.4f\"%G\n", + "#answer is wrong in the textbook" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter4_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter4_1.ipynb new file mode 100644 index 00000000..c5796425 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter4_1.ipynb @@ -0,0 +1,222 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter4 - Wave propagation in cylindrical waveguides" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.1 : Page 70" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "normalised frequency parameter = 3.01\n", + "part (b)\n", + "propogation constants are Bo1 = 5.911e+06 and B11 = 5.885e+06\n", + "part (c)\n", + "phase velocity are (Vp)01 = 2.06e+08 ms**-1 and (Vp)11 = 2.07e+08 ms**-1 \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#normalised frequency,propagation constants and phase velocity\n", + "print \"part (a)\"\n", + "n1=1.46#core refrative index\n", + "di=7.2#core diameter \n", + "n=1.46#core refrative index\n", + "d=1#relative differnce\n", + "h=1.55 # in micro meter\n", + "v=((2*pi*(di*10**-6)/2)*n*sqrt(2*(d/100)))/(h*10**-6)#normalised frequency parameter\n", + "print \"normalised frequency parameter = %0.2f\"%v\n", + "print \"part (b)\"\n", + "b1=(2*pi*n1)/(h*10**-6)# in m**-1\n", + "n2=n1-(d/100)#cladding refrative index\n", + "b2=(2*pi*n2)/(h*10**-6)# in m**-1\n", + "bo1=0.82#\n", + "b11=0.18#\n", + "B01=(b2**2+(bo1*(b1**2-b2**2)))**(1/2)#\n", + "B11=(b2**2+(b11*(b1**2-b2**2)))**(1/2)#\n", + "print \"propogation constants are Bo1 = %0.3e\"%(B01),\" and B11 = %0.3e\"%(B11)\n", + "#propogation constants are calculated wrong in the text bOOK\n", + "print \"part (c)\"\n", + "c=3*10**8# in ms**-1\n", + "vp1=(2*pi*c)/(h*10**-6*B01)#IN MS**-1\n", + "vp2=(2*pi*c)/(h*10**-6*B11)#IN MS**-1\n", + "print \"phase velocity are (Vp)01 = %0.2e \"%(vp1),\" ms**-1 and (Vp)11 = %0.2e\"%(vp2),\" ms**-1 \"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.2 : Page 73" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "power for LP01 mode is = 11 %\n", + "power for LP11 mode is = 35 %\n" + ] + } + ], + "source": [ + "#frational power\n", + "p01=0.11#from the graph\n", + "p11=0.347#from the graph\n", + "print \"power for LP01 mode is = %0.f %%\"%(p01*100)\n", + "print \"power for LP11 mode is = %0.f %%\" %(p11*100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.3 : Page 76" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of modes : 1974\n" + ] + } + ], + "source": [ + "from math import sqrt,pi\n", + "#Number of the modes\n", + "h= 0.85# Wavelenght in micrometers\n", + "a= 50# Core radius in micrometers\n", + "NA=0.17#\n", + "v1=(2*pi*a*NA)/h#\n", + "m2= round((v1**2)/2)#\n", + "print \"Number of modes : %d\"%m2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.4 : Page 76" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "core diameter = 62 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt,pi\n", + "#core diameter\n", + "d=0.02#difference\n", + "n1=1.5#core refrative index\n", + "m=1000# number of modes\n", + "h= 1.3# Wavelenght in micrometers\n", + "a=((h/(pi*n1))*(m/d)**(1/2))#core diamter in micro meter\n", + "print \"core diameter = %0.f micro meter\"%a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4.5 : Page 76" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "maximum core diameter = 4.82 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#core diameter\n", + "d=0.02#difference\n", + "a1=75#in micro meter\n", + "n1=1.45#core refrative index\n", + "m=700# number of modes\n", + "v=sqrt(4*m)#\n", + "h=((2*pi*(a1/2)*n1*sqrt(2*(d/100)))/v)#in micro meter\n", + "vc=2.405*sqrt(2)#for single mode fiber\n", + "a=((vc*h)/(pi*n1*sqrt(2*(d/100))))#core diamter in micro meter\n", + "print \"maximum core diameter = %0.2f micro meter\"%a" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter5_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter5_1.ipynb new file mode 100644 index 00000000..526b228b --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter5_1.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter5 - Single mode fibers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.1 : Page 86" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " w = 4.7086 and wp = 4.6184 micro meter when wavelength is 1.30 micro meter\n", + " w = 5.5109 and wp = 5.3570 micro meter when wavelength is 1.55 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#w and wp\n", + "n=1.46#core refractive index\n", + "d=0.003#differnce in core-cladding refrative index\n", + "a=4#core radius in micro meter\n", + "h1=1.30# inmicro meter\n", + "h2=1.55#in micro meter\n", + "v1=((2*pi*(a*10**-6))*n*sqrt(2*(d)))/(h1*10**-6)#normalised frequency parameter\n", + "v2=((2*pi*(a*10**-6))*n*sqrt(2*(d)))/(h2*10**-6)#normalised frequency parameter\n", + "w1=(a*10**-6)*(0.65+((1.619)/(v1)**(3/2))+(2.879/(v1)**6))#in meter\n", + "wp1=w1-(a*10**-6)*(0.016+((1.567)/(v1)**7))#in micro meter\n", + "w2=(a*10**-6)*(0.65+((1.619)/(v2)**(3/2))+(2.879/(v2)**6))#in meter\n", + "wp2=w2-(a*10**-6)*(0.016+((1.567)/(v2)**7))#in micro meter\n", + "print \" w = %0.4f\"%(w1*10**6),\"and wp = %0.4f\"%(wp1*10**6),\"micro meter when wavelength is 1.30 micro meter\"\n", + "print \" w = %0.4f\"%(w2*10**6),\"and wp = %0.4f\"%(wp2*10**6),\"micro meter when wavelength is 1.55 micro meter\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.2 : Page 88" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "difference between propogation constant = 62.83 m**-1\n", + "part (b)\n", + "modal birefringence = 1e-05\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#difference between propogation constant and modal birefringence\n", + "print \"part (a)\"\n", + "bl=10#beat length in cm\n", + "h=1#in micro meter\n", + "db=((2*pi)/(bl*10**-2))#in m**-1\n", + "print \"difference between propogation constant = %0.2f m**-1\"%db\n", + "print \"part (b)\"\n", + "mb=db*((h*10**-6)/(2*pi))#modal birefringence\n", + "print \"modal birefringence = %0.e\"%mb\n", + "#answer is approximately equal to the answer in the book" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.3 : Page 93" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " waveguide dispersion factor = -3.149 ps nm**-1 km**-1 at wavelength 1.3 micro meter\n", + " waveguide dispersion factor = -5.537 ps nm**-1 km**-1 at wavelength 1.55 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#waveguide dispersion factor\n", + "n=1.45#core refractive index\n", + "d=0.003#differnce in core-cladding refrative index\n", + "n2=1.45*(1-d)#cladding refractive index\n", + "d1=8.2#core diameter in micro meter\n", + "a=d1/2#core radius in micro meter\n", + "h1=1.30# inmicro meter\n", + "h2=1.55#in micro meter\n", + "v1=(2*pi*a*n*sqrt(2*d))/h1#normalised frequency parameter\n", + "v2=((2*pi*(a))*n*sqrt(2*(d)))/(h2)#normalised frequency parameter\n", + "v1dv=0.080+0.549*(2.834-v1)**2#\n", + "v2dv=0.080+0.549*(2.834-v2)**2#\n", + "c=3*10**8# in m/s\n", + "dw1=-((n2*d*v1dv)/(c*h1))*10**12#waveguide dispersion factor in ps nm**-1 km**-1\n", + "dw2=-((n2*d*v2dv)/(c*h2))*10**12#waveguide dispersion factor in ps nm**-1 km**-1\n", + "print \" waveguide dispersion factor = %0.3f\"%(dw1),\"ps nm**-1 km**-1 at wavelength 1.3 micro meter\"\n", + "print \" waveguide dispersion factor = %0.3f\"%(dw2),\"ps nm**-1 km**-1 at wavelength 1.55 micro meter\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.4 : Page 95" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "diameter of the core = 7.10 micro meter\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi, sqrt\n", + "#diameter of the core\n", + "c=3*10**8#in m/s\n", + "dm=6#material dispersion in ps nm**-1 km**-1\n", + "h=1.55#in micro meter\n", + "n1=1.45#core refrative index\n", + "d=0.005#differnce\n", + "n2=n1*(1-d)#cladding refrative index\n", + "x=((-dm/(((-n2*d)/(c*h))*10**12))-0.080)/0.549#\n", + "v=-(sqrt(x)-2.834)#\n", + "d=((v*h)/(pi*n1*sqrt(2*d)))#diameter in micro meter\n", + "print \"diameter of the core = %0.2f micro meter\"%d" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 5.5 : Page 100" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "splice loss = 0.20 dB when wavelength is 1.30 micro meter\n", + "splice loss = 0.15 dB when wavelength is 1.55 micro meter\n" + ] + } + ], + "source": [ + "#splice loss\n", + "h1=1.30#in micro meter\n", + "wp1=4.6155#in micro meter\n", + "h2=1.55#in micro meter\n", + "wp2=5.355#in micro meter\n", + "sl1=4.34*(1/wp1)**2#splice loss in dB\n", + "sl2=4.34*(1/wp2)**2#splice loss in dB\n", + "print \"splice loss = %0.2f dB when wavelength is 1.30 micro meter\"%sl1\n", + "print \"splice loss = %0.2f dB when wavelength is 1.55 micro meter\"%sl2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter6_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter6_1.ipynb new file mode 100644 index 00000000..8c800768 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter6_1.ipynb @@ -0,0 +1,252 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter6 - Optical fiber cables and connections" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.1 : Page 119" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "refractive index = 1.59\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from sympy import symbols, solve\n", + "#refractive index\n", + "l=0.47##in db\n", + "nf=10**((l/-10))##\n", + "\n", + "x=symbols(\"x\")\n", + "p=1+-2.22*x+x**2##\n", + "y=solve(p,x)##\n", + "print \"refractive index = %0.2F\"%y[1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.2 : Page 121" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "insertion loss at the joint = 0.64 dB\n", + "part (b)\n", + "insertion loss at the joint = 0.286 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import log10, acos, pi\n", + "#loss\n", + "print \"part (a)\"\n", + "dya=0.1##\n", + "n1=1.50##refrative index\n", + "na=1##\n", + "k1=n1/n1##\n", + "k2=1##\n", + "nf=((16*(n1)**2)/((n1+1)**4))##\n", + "nlat=(2/(3.14))*(acos(dya/2)-(dya/2)*(1-(dya/2)**2)**(1/2))##\n", + "nt=nf*nlat##\n", + "lt=(-10*log10(nt))##in dB\n", + "print \"insertion loss at the joint = %0.2f dB\"%lt\n", + "print \"part (b)\"\n", + "dya=0.1##\n", + "n1=1.50##refrative index\n", + "na=1##\n", + "k1=n1/n1##\n", + "k2=1##\n", + "nf=((16*(n1)**2)/((n1+1)**4))##\n", + "nlat=(2/(pi))*(acos(dya/2)-(dya/2)*(1-(dya/2)**2)**(1/2))#\n", + "nt=k2*nlat##\n", + "lt=(-10*log10(nt))##in dB\n", + "print \"insertion loss at the joint = %0.3f dB\"%lt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.3 : Page 122" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total loss = 0.75 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt,pi,acos,log10\n", + "#loss\n", + "d=100##micro meter\n", + "dx=0##\n", + "dy=3##in micro mete\n", + "dth=3##in degree\n", + "dthr=dth*(pi/180)##\n", + "dya=0.02##\n", + "n1=1.48##refrative index\n", + "na=1##\n", + "k1=n1/n1##\n", + "k2=1##\n", + "nf=((16*(n1)**2)/((n1+1)**4))##\n", + "nlat=(2/(pi))*(acos(dy/100)-(dy/100)*(1-(dy/100)**2)**(1/2))##\n", + "NA=n1*(sqrt(2*dya))##\n", + "nang=((1-(na*dthr)/(pi*NA)))##\n", + "nt=nf*nlat*nang##\n", + "lt=(-10*log10(nt))##in dB\n", + "print \"total loss = %0.2f dB\"%lt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.4 : Page 124" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total loss = 4.1260 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy import log10\n", + "#loss\n", + "d1=80##micro meter\n", + "na1=0.25##\n", + "alpha1=2##\n", + "d2=60##in micro meter\n", + "na2=0.21##\n", + "alpha2=1.9##\n", + "ncd=(d2/d1)**2##\n", + "nna=(na2/na1)**2##\n", + "nalpha=((1+(2/alpha1))/(1+((2/alpha2))))##\n", + "nt=ncd*nna*nalpha##\n", + "lt=(-10*log10(nt))##in dB\n", + "print \"total loss = %0.4f dB\"%lt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 6.5 : Page 125" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total loss forward direction = 3.52 dB\n", + "total loss backward direction = 0.217 dB\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from scipy import log10\n", + "#loss\n", + "d1=60##micro meter\n", + "na1=0.25##\n", + "alpha1=2.1##\n", + "d2=50##in micro meter\n", + "na2=0.20##\n", + "alpha2=1.9##\n", + "ncd=(d2/d1)**2##\n", + "nna=(na2/na1)**2##\n", + "nalpha1=1##\n", + "nalpha=((1+(2/alpha1))/(1+((2/alpha2))))##\n", + "ncd1=1##\n", + "nna1=1##\n", + "nt=ncd*nna*nalpha1##\n", + "ltf=(-10*log10(nt))##in dB\n", + "nt1=ncd1*nna1*nalpha##\n", + "ltb=(-10*log10(nt1))##in dB\n", + "print \"total loss forward direction = %0.2f dB\"%ltf\n", + "print \"total loss backward direction = %0.3f dB\"%ltb" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter7_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter7_1.ipynb new file mode 100644 index 00000000..61e58658 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter7_1.ipynb @@ -0,0 +1,338 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter7 - Optoelectronic sources" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.1: Page 153" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Intrinsic carrier concentration ,ni = 2.2e+12 m**-3\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi, exp\n", + "#Intrinsic carrier\n", + "#given data :\n", + "m=9.11*10**-31## in kg\n", + "k=1.38*10**-23## in JK**-1\n", + "h=6.626*10**-34## in Js\n", + "ev=1.6*10**-19## in J\n", + "T=300## in K\n", + "me=0.07*m## in kg\n", + "mh=0.56*m## in kg\n", + "Eg=1.43*ev## in J\n", + "ni=2*((2*pi*k*T)/h**2)**(3/2)*(me*mh)**(3/4)*exp(-Eg/(2*k*T))#\n", + "print \"Intrinsic carrier concentration ,ni = %0.1e m**-3\"%ni" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.2: Page 155" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Diffusion potential, Vd = 1.234 V\n" + ] + } + ], + "source": [ + "#Diffusion potential\n", + "from math import log\n", + "#given data :\n", + "Na=5*10**23## in m**-3\n", + "Nd=5*10**21## in m**-3\n", + "T=300## in K\n", + "e=1.6*10**-19## in J\n", + "k=1.38*10**-23## in JK**-1\n", + "V=(k*T)/e#\n", + "ni=2.2*10**12## in m**-3\n", + "Vd=V*log((Na*Nd)/ni**2)#\n", + "print \"Diffusion potential, Vd = %0.3f V\"%Vd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.3: Page 161" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Injection efficiency, eta_inj = 0.8247\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Injection efficiency\n", + "#given data :\n", + "Na=10**23## in m**-3\n", + "Nd=10**21## in m**-3\n", + "T=300## in K\n", + "e=1.6*10**-19## in J\n", + "k=1.38*10**-23## in JK**-1\n", + "mue=0.85## in m**2V**-1s**-1\n", + "muh=0.04## in m**2V**-1s**-1\n", + "De=(mue*k*T)/e## in m**2s**-1\n", + "Dh=(muh*k*T)/e## in m**2s**-1\n", + "Le=1#\n", + "Lh=Le#\n", + "eta_inj=1/(1+((De/Dh)*(Lh/Le)*(Nd/Na)))#\n", + "print \"Injection efficiency, eta_inj = %0.4f\"%eta_inj" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.4: Page 171" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "Internal quantum efficiency = 0.50\n", + "part (b)\n", + "External quantum efficiency = 0.0337\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Internal and quantum efficiency\n", + "#given data :\n", + "print \"part (a)\"\n", + "tau_rr=1#\n", + "tau_nr=tau_rr#\n", + "eta_int=1/(1+(tau_rr/tau_nr))#\n", + "print \"Internal quantum efficiency = %0.2f\"%eta_int\n", + "print \"part (b)\"\n", + "ns=3.7#\n", + "na=1.5#\n", + "As=0#\n", + "eta_ext=eta_int*(1-As)*((2*na**3)/(ns*(ns+na)**2))#\n", + "print \"External quantum efficiency = %0.4f\"%eta_ext" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.5: Page 180" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The number of longitudinal modes excited = 1.001e-03 nm\n" + ] + } + ], + "source": [ + "#The number of longitudinal modes excited\n", + "#given data :\n", + "lamda=632.8*10**-9## in m\n", + "n=1#\n", + "L=20*10**-2## in m\n", + "del_lamda=((lamda)**2/(2*n*L))*10**9#\n", + "print \"The number of longitudinal modes excited = %0.3e nm\"%del_lamda" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.6: Page 183" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The reduction in threshold gain = 1.31 mm**-1\n", + "part (b)\n", + "Differential quantum efficiency = 0.42\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt, pi, exp,log\n", + "#The reduction and Differential quantum efficiency\n", + "#given data :\n", + "print \"part (a)\"\n", + "alfa_eff=1.5## in mm**-1\n", + "gama=0.8#\n", + "L=0.5## in mm\n", + "R1=0.35#\n", + "R2=R1#\n", + "R2a=1.0#\n", + "g_th1=(1/gama)*(alfa_eff+(1/(2*L))*log(1/(R1*R2)))#\n", + "g_th2=(1/gama)*(alfa_eff+(1/(2*L))*log(1/(R1*R2a)))#\n", + "del_gth=g_th1-g_th2#\n", + "print \"The reduction in threshold gain = %0.2f mm**-1\"%del_gth\n", + "print \"part (b)\"\n", + "eta_D=(gama*(g_th2-alfa_eff))/(g_th2)#\n", + "print \"Differential quantum efficiency = %0.2f\"%eta_D" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 7.7: Page 192" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The internal power efficiency = 0.48\n", + "part (b)\n", + "The external power efficiency = 0.012\n", + "part (c)\n", + "The overall source fiber power coupling efficiency = 8.51e-04\n", + "The optical loss = 30.70 dB\n" + ] + } + ], + "source": [ + "from math import log10\n", + "#Internal and external power efficiency\n", + "#given data :\n", + "print \"part (a)\"\n", + "As=0##\n", + "ns=3.7## assuming that the example 7.4\n", + "eta_int=0.50## internal efficiency\n", + "V=1.5## in V\n", + "I=120*10**-3## in A\n", + "IBYe=120*10**-3## \n", + "Eph=1.43## in eV\n", + "eta_int=0.50## internal efficiency\n", + "fi_int=eta_int*IBYe*Eph#\n", + "t_power=I*V#\n", + "P_int=fi_int/t_power#\n", + "print \"The internal power efficiency = %0.2f\"%P_int\n", + "print \"part (b)\"\n", + "eta_ext=eta_int*(1-As)*2/(ns*(ns+1)**2)#\n", + "fi_ext=eta_ext*IBYe*Eph#\n", + "t_power=I*V#\n", + "P_ext=fi_ext/t_power#\n", + "print \"The external power efficiency = %0.3f\"%P_ext\n", + "print \"part (c)\"\n", + "V=1.5## in V\n", + "I=120*10**-3## in A\n", + "IBYe=120*10**-3## \n", + "Eph=1.43## in eV\n", + "n1=1.5#\n", + "n2=1.48#\n", + "na=n1#\n", + "eta_ext=0.0337#\n", + "eta_T=eta_ext*((n1**2-n2**2)/na**2)#\n", + "fi_T=eta_T*IBYe*Eph#\n", + "t_power=I*V#\n", + "sfpc=fi_T/t_power#\n", + "O_loss=-10*log10(sfpc)#\n", + "print \"The overall source fiber power coupling efficiency = %0.2e\"%sfpc\n", + "print \"The optical loss = %0.2f dB\"%O_loss" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter8_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter8_1.ipynb new file mode 100644 index 00000000..d3376f8c --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter8_1.ipynb @@ -0,0 +1,381 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter8 - Optoelectronic detectors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.1 : Page 204" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The photon energy = 1.31 micro-m \n", + "part (b)\n", + "The optical power = 4.07 micro W \n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#The photon energy and optical power\n", + "#given data :\n", + "print \"part (a)\"\n", + "h=6.626*10**-34## in Js\n", + "c=3*10**8## in ms**-1\n", + "E=1.52*10**-19## in J\n", + "lamda=((h*c)/E)*10**6#\n", + "print \"The photon energy = %0.2f micro-m \"%lamda\n", + "print \"part (b)\"\n", + "e=1.6*10**-19## in J\n", + "Ip=3*10**6## in A\n", + "E=1.52*10**-19## in J\n", + "eta=70/100#\n", + "R=(eta*e)/E#\n", + "P_in=(Ip/R)*10**-6#\n", + "print \"The optical power = %0.2f micro W \"%P_in" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.2 : Page 205" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The quantum efficiency, eta = 50.00 %\n", + "part (b)\n", + "Maximum possible band gap energy,Eg = 1.46 eV \n", + "part (c)\n", + "The mean output, Ip = 3.42 micro A\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#The quantum efficiency,Maximum possible band gap energy and mean output\n", + "#given data :\n", + "print \"part (a)\"\n", + "e=1## electron\n", + "p=2## photon\n", + "eta=(e/p)*100#\n", + "print \"The quantum efficiency, eta = %0.2f %%\"%eta\n", + "print \"part (b)\"\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "lamda_c=0.85*10**-6## in m\n", + "Eg=((h*c)/lamda_c)/1.6*10**19#\n", + "print \"Maximum possible band gap energy,Eg = %0.2f eV \"%Eg\n", + "print \"part (c)\"\n", + "e=1## electron\n", + "p=2## photon\n", + "eta=(e/p)#\n", + "e=1.6*10**-19## in J\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "lamda_c=0.85*10**-6## in m\n", + "Eg=((h*c)/lamda_c)#\n", + "P_in=10*10**-6## in W\n", + "Ip=((eta*e*P_in)/Eg)*10**6#\n", + "print \"The mean output, Ip = %0.2f micro A\"%Ip" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.3 : Page 205" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "The quantum efficiency = 0.4\n", + "part (b)\n", + "The responsivity of the diode,R = 0.29 AW**-1\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#The quantum efficiency and The responsivity of the diode\n", + "#given data :\n", + "print \"part (a)\"\n", + "e=2*10**10## in s**-1\n", + "p=5*10**10## in s**-1\n", + "eta=e/p#\n", + "print \"The quantum efficiency = \",eta\n", + "print \"part (b)\"\n", + "e=2*10**10## in s**-1\n", + "p=5*10**10## in s**-1\n", + "eta=e/p#\n", + "e=1.6*10**-19## in J\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "lamda=0.90*10**-6## in m\n", + "R=(eta*e*lamda)/(h*c)#\n", + "print \"The responsivity of the diode,R = %0.2f AW**-1\"%R" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.4 : Page 210" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The multiplication factor,M = 47.8\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#The multiplication\n", + "#given data :\n", + "eta=40/100##\n", + "e=1.6*10**-19## in J\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "lamda=1.3*10**-6## in m\n", + "P_in=0.3*10**-6## in W\n", + "I=6*10**-6## in A\n", + "M=(I*h*c)/(P_in*eta*e*lamda)#\n", + "print \"The multiplication factor,M = %0.1f\"%M" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.5 : Page 210" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Photon incident rate = 1.74e+07 s**-1\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "#Photon rate\n", + "#given data :\n", + "e=1.6*10**-19## in J\n", + "M=800#\n", + "eta=90/100## quantum efficiency\n", + "I=2*10**-9## in A\n", + "P_rate=I/(e*eta*M)#\n", + "print \"Photon incident rate = %0.2e s**-1\"%P_rate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.6 : Page 212" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "the gain = 58.95\n", + "part (b)\n", + "The output photo-current, I = 2.313e-04 A\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "#Gain and The output photocurrent\n", + "#given data :\n", + "print \"part (a)\"\n", + "tf=6*10**-12## in s\n", + "del_f=450*10**6## in Hz\n", + "G=1/(2*pi*tf*del_f)#\n", + "print \"the gain = %0.2f\"%G\n", + "print \"part (b)\"\n", + "tf=6*10**-12## in s\n", + "del_f=450*10**6## in Hz\n", + "G=1/(2*pi*tf*del_f)#\n", + "eta=75/100#\n", + "P_in=5*10**-6## in W\n", + "e=1.6*10**-19## in J\n", + "lamda=1.3*10**-6#\n", + "h=6.626*10**-34##in Js\n", + "c=3*10**8## in m s**-1\n", + "I=(G*eta*P_in*e*lamda)/(h*c)#\n", + "print \"The output photo-current, I = %0.3e A\"%I" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 8.7 : Page 215" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "rms value of shot noise current is = 1.712 nA\n", + "rms value of dark current is = 0.20 nA\n", + "rms value of thermal noise current is = 20.35 nA \n", + "part (b)\n", + "S/N ratio = 321\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import sqrt\n", + "#rms value of shot noise ,dark noise and thermal noise current and S/N ratio\n", + "print \"part (a)\"\n", + "n=0.7##efficiency\n", + "e=1.6*10**-19##charge\n", + "h=1.3##in micro meter\n", + "hc=6.626*10**-34##plack constant\n", + "c=3*10**8##m/s\n", + "pin=500##nW\n", + "Ip=((n*e*h*10**-6*pin*10**-9)/(hc*c))##in amperes\n", + "df=25##Mhz\n", + "f1=1##\n", + "is2=(2*e*Ip*df*10**6*f1)##\n", + "Is=sqrt(is2)##in amperes\n", + "Id=5*10**-9##amperes\n", + "id2=(2*e*Id*df*10**6)##\n", + "Id=sqrt(id2)##in amperes\n", + "k=1.38*10**-23##\n", + "t=300##in kelvin\n", + "rl=1000##ohms\n", + "it2=((4*k*t*df*10**6)/rl)##\n", + "it=sqrt(it2)##in amperes\n", + "print \"rms value of shot noise current is = %0.3f nA\"%(Is*10**9)\n", + "print \"rms value of dark current is = %0.2f nA\"%(Id*10**9)\n", + "print \"rms value of thermal noise current is = %0.2f nA \"%(it*10**9)\n", + "print \"part (b)\"\n", + "n=0.7##efficiency\n", + "e=1.6*10**-19##charge\n", + "h=1.3##in micro meter\n", + "hc=6.626*10**-34##plack constant\n", + "c=3*10**8##m/s\n", + "pin=500##nW\n", + "Ip=((n*e*h*10**-6*pin*10**-9)/(hc*c))##in amperes\n", + "df=25##Mhz\n", + "f1=1##\n", + "is2=(2*e*Ip*df*10**6*f1)##\n", + "Is=sqrt(is2)##in amperes\n", + "Id=5*10**-9##amperes\n", + "id2=(2*e*Id*df*10**6)##\n", + "Id=sqrt(id2)##in amperes\n", + "k=1.38*10**-23##\n", + "t=300##in kelvin\n", + "rl=1000##ohms\n", + "it2=((4*k*t*df*10**6)/rl)##\n", + "it=sqrt(it2)##in amperes\n", + "itt2=is2+id2+it2##in A**2\n", + "ip2=Ip**2##\n", + "sn=ip2/itt2##\n", + "print \"S/N ratio = %d\"%sn\n", + "#S/N ratio is calculated wrong in the textbook" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter9_1.ipynb b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter9_1.ipynb new file mode 100644 index 00000000..de261050 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/Chapter9_1.ipynb @@ -0,0 +1,243 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter9 - Optoelectronics modulators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.1 : Page 227" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thickness of the a quarter wave plate,x = 0.0164 mm\n" + ] + } + ], + "source": [ + "#The thickness\n", + "#given data :\n", + "lamda=589.3*10**-9## in m\n", + "ne=1.553#J\n", + "no=1.544#\n", + "x=(lamda/(4*(ne-no)))*10**3#\n", + "print \"The thickness of the a quarter wave plate,x = %0.4f mm\"%x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.2 : Page 228" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The thickness of the a quarter wave plate,x = 0.0017 mm\n" + ] + } + ], + "source": [ + "#The thickness\n", + "#given data :\n", + "lamda=589.3*10**-9## in m\n", + "ne=1.486#\n", + "no=1.658#\n", + "x=(lamda/(2*(no-ne)))*10**3#\n", + "print \"The thickness of the a quarter wave plate,x = %0.4f mm\"%x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.3: Page 234" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "change in refrative index = 1.032\n", + "net phase shift = 2.065 \n", + "Vpi = 7.61 kV\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "#change in refractive index ,net phase shiftand Vpi\n", + "v=5##kV\n", + "l=1##cm\n", + "ez=(v*10**3)/(l*10**-2)##in V/m\n", + "no=1.51##\n", + "r63=10.5*10**-12##m/V\n", + "dn=((1/2)*no**3*r63*ez)##\n", + "h=550##nm\n", + "dfi=((2*pi*dn*l*10**-2)/(h*10**-9))##\n", + "fi=2*dfi##\n", + "vpi=((h*10**-9)/(2*no**3*r63))*10**-3##kV\n", + "print \"change in refrative index = %0.3f\"%dfi\n", + "print \"net phase shift = %0.3f \"%fi\n", + "print \"Vpi = %0.2f kV\"%vpi\n", + "#refractive index and phase shift is in the form of pi in the textbook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.4: Page 237" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "phase differnce = 1.371e+04\n", + "part (b)\n", + "additional phase differnce = 1.246\n", + "part (c)\n", + "Vpi = 504.25 V\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import pi\n", + "#phase difference,additional phase difference and Vpi\n", + "print \"part (a)\"\n", + "h=550##nm\n", + "l=3##cm\n", + "no=1.51##\n", + "ne=1.47##\n", + "dfi=((2*pi*l*10**-2*(no-ne))/(h*10**-9))##\n", + "print \"phase differnce = %0.3e\"%dfi\n", + "#phase difference is in the form of pi in the textbook\n", + "print \"part (b)\"\n", + "no=1.51##\n", + "r63=26.4*10**-12##m/V\n", + "V=200##\n", + "d=0.25##cm\n", + "dfi=((pi*r63*no**3*(V)*(l*10**-2))/(h*10**-9*d*10**-2))##\n", + "print \"additional phase differnce = %0.3f\"%dfi\n", + "#additional phase difference is in the form of pi in the textbook\n", + "print \"part (c)\"\n", + "r63=26.4*10**-12##m/V\n", + "V=200##\n", + "d=0.25##cm\n", + "dfi=((pi*r63*no**3*(V)*(l*10**-2))/(h*10**-9*d*10**-2))##\n", + "vpi=((h*10**-9)/(no**3*r63))*(d/l)##V\n", + "print \"Vpi = %0.2f V\"%vpi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 9.5 : Page 239" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "part (a)\n", + "angle = 0.09 degree\n", + "part (b)\n", + "The relative intensity = 0.246\n" + ] + } + ], + "source": [ + "from __future__ import division\n", + "from math import asin,degrees\n", + "#angle and relative intensity\n", + "#given data :\n", + "print \"part (a)\"\n", + "m=1#\n", + "l=633*10**-9## in m\n", + "f=5*10**6## in Hz\n", + "v=1500##in m/s\n", + "n=1.33## for water\n", + "A=v/f#\n", + "theta=asin((l/(n*A)))#\n", + "print \"angle = %0.2f degree\"%degrees(theta)\n", + "print \"part (b)\"\n", + "del_n=10**-5#\n", + "L=1*10**-2## in m\n", + "lamda=633*10**-9## in m\n", + "eta=(pi**2*del_n**2*L**2)/lamda**2#\n", + "print \"The relative intensity = %0.3f\"%eta" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13AngularDisplacement.png b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13AngularDisplacement.png Binary files differnew file mode 100644 index 00000000..42e4e5be --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13AngularDisplacement.png diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LateralDisplacement.png b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LateralDisplacement.png Binary files differnew file mode 100644 index 00000000..a95c8de6 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LateralDisplacement.png diff --git a/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LongitudinalDisplacement.png b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LongitudinalDisplacement.png Binary files differnew file mode 100644 index 00000000..cc78d8c9 --- /dev/null +++ b/Fiber_Optics_and_Optoelectronics_by_R._P._Khare/screenshots/Ch13LongitudinalDisplacement.png |