summaryrefslogtreecommitdiff
path: root/sample_notebooks
diff options
context:
space:
mode:
Diffstat (limited to 'sample_notebooks')
-rw-r--r--sample_notebooks/FameethaAlamBasha/Chapter7_1.ipynb78
-rw-r--r--sample_notebooks/Hrituraj/Ch-6_1.ipynb547
-rw-r--r--sample_notebooks/NishthaRani/Chapter12.ipynb428
-rw-r--r--sample_notebooks/SaleemAhmed/Chapter10_1.ipynb441
-rw-r--r--sample_notebooks/VivekMaindola/chap3.ipynb617
5 files changed, 2111 insertions, 0 deletions
diff --git a/sample_notebooks/FameethaAlamBasha/Chapter7_1.ipynb b/sample_notebooks/FameethaAlamBasha/Chapter7_1.ipynb
new file mode 100644
index 00000000..b42dd470
--- /dev/null
+++ b/sample_notebooks/FameethaAlamBasha/Chapter7_1.ipynb
@@ -0,0 +1,78 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 7:Starting And Speed Control Of Induction Motor "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 7.1,Page 7-6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x= 0.7453\n",
+ "Thus 74.53 % tapping is required\n",
+ "Ist= 3.33 IF.L\n",
+ "Thus supply starting current is 3.33 times the full load current\n"
+ ]
+ }
+ ],
+ "source": [
+ "import math\n",
+ "\n",
+ "#variable declaration\n",
+ "Isc=6 # starting current at rated voltage(amp)\n",
+ "Sf=5 # full load slip\n",
+ "Tfl=Tst=1 # full load torque=starting torque(N-m)\n",
+ "Ifl=1 # full load current(amp)\n",
+ "\n",
+ "#calculation\n",
+ "x=math.sqrt((Tst/Tfl) * ((float(Ifl)/float(Isc))**2)*(1/(float(Sf)/100)))\n",
+ "print 'x=',str (x)[:6]\n",
+ "print 'Thus',str(x*100)[:5],'% tapping is required'\n",
+ "\n",
+ "#Ist(supply)=x**2 * 6\n",
+ "Ist=(x**2) * Isc # supply starting current(IF.L)\n",
+ "Ist=round(Ist,2)\n",
+ "print 'Ist=',Ist,'IF.L'\n",
+ "print 'Thus supply starting current is',Ist,'times the full load current'"
+ ]
+ }
+ ],
+ "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.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/sample_notebooks/Hrituraj/Ch-6_1.ipynb b/sample_notebooks/Hrituraj/Ch-6_1.ipynb
new file mode 100644
index 00000000..4aa9a7a3
--- /dev/null
+++ b/sample_notebooks/Hrituraj/Ch-6_1.ipynb
@@ -0,0 +1,547 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Ch-6 : Frequency response, bode plots and resonance"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 6.1 Page No: 476"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "peak value of Vout = 6.00 volts\n",
+ "phase angle of Vout = 70.00 degrees\n",
+ "with frequency equal to = 1000.00\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi, cos, sin, atan, sqrt\n",
+ "# given V_in(t)=2*cos(2000*pi*t+A), A=40*pi/180\n",
+ "w=2000*pi# #omega\n",
+ "f=w/(2*pi)# #frequency\n",
+ "A=40*pi/180# #40 degrees = %0.2f radians\n",
+ "#equation of straight line of H_magnitude vs f is x+1000*y-4000=0\n",
+ "H_max=(4000-f)/1000# #magnitude of H(traansfer function)\n",
+ "#equation of straight line of H_phase angle vs f is 6000*y=pi*x (phase angle = %0.2f radians)\n",
+ "H_phi=pi*f/6000# #phase angle of H\n",
+ "H=H_max*complex(cos(H_phi),sin(H_phi))\n",
+ "V_in=2*complex(cos(A),sin(A))# #input voltage phasor\n",
+ "V_out=H*V_in# #output voltage phasor\n",
+ "V_out_R=(V_out.real)# #real part\n",
+ "V_out_I=(V_out.imag)# #imaginary part\n",
+ "V_out_max=sqrt((V_out_R**2)+(V_out_I**2))# #peak value\n",
+ "V_out_phi=atan(V_out_I/V_out_R)\n",
+ "print 'peak value of Vout = %0.2f volts'%V_out_max\n",
+ "print 'phase angle of Vout = %0.2f degrees'%(V_out_phi*180/pi)\n",
+ "print 'with frequency equal to = %0.2f'%f"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 6.2 Page No: 477"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Output voltage is Vout1+Vout2+Vout3 where\n",
+ "\n",
+ "FOR Vout1:\n",
+ "peak value = 12.00 volts\n",
+ "phase angle = 0.00 degrees\n",
+ "with frequency = 0.00 hertz\n",
+ "\n",
+ "FOR Vout2:\n",
+ "peak value = 6.00 volts\n",
+ "phase angle = 30.00 degrees\n",
+ "with frequency = 1000.00 hertz\n",
+ "\n",
+ "FOR Vout3:\n",
+ "peak value = 2.00 volts\n",
+ "phase angle = -10.00 degrees\n",
+ "with frequency = 2000.00 hertz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "from math import pi, cos, sin, atan, sqrt\n",
+ "\n",
+ "#given V_in(t)=3+2*cos(2000*pi*t)+cos(4000*pi*t-A), A=70*pi/180\n",
+ "#the three parts of V_in(t) are V_in_1=3, V_in_2=2*cos(2000*pi*t),V_in_3=cos(4000*pi*t-A)\n",
+ "\n",
+ "#first component V_1\n",
+ "V_in_1=3\n",
+ "f_1=0# #as omega is zero\n",
+ "#equation of straight line of H_magnitude vs f is x+1000*y-4000=0\n",
+ "H_1_max=(4000-f_1)/1000# #magnitude of H(traansfer function)\n",
+ "#equation of straight line of H_phase angle vs f is 6000*y=pi*x (phase angle = %0.2f radians)\n",
+ "H_1_phi=pi*f_1/6000# #phase angle of H\n",
+ "H_1=H_1_max*complex(cos(H_1_phi),sin(H_1_phi))\n",
+ "V_out_1=H_1*V_in_1\n",
+ "V_out_1_R=(V_out_1).real# #real part\n",
+ "V_out_1_I=(V_out_1).imag# #imaginary part\n",
+ "V_out_1_max=sqrt((V_out_1_R**2)+(V_out_1_I**2))# #peak value\n",
+ "V_out_1_phi=atan(V_out_1_I/V_out_1_R)# #phase angle\n",
+ "\n",
+ "#second component V_in_2\n",
+ "V_in_2=2*complex(cos(0),sin(0))# #V_in_2 phasor\n",
+ "w=2000*pi# #omega\n",
+ "f_2=w/(2*pi)# #frequency\n",
+ "#equation of straight line of H_magnitude vs f is x+1000*y-4000=0\n",
+ "H_2_max=(4000-f_2)/1000# #magnitude of H(traansfer function)\n",
+ "#equation of straight line of H_phase angle vs f is 6000*y=pi*x (phase angle = %0.2f radians)\n",
+ "H_2_phi=pi*f_2/6000# #phase angle of H\n",
+ "H_2=H_2_max*complex(cos(H_2_phi),sin(H_2_phi))\n",
+ "V_out_2=H_2*V_in_2\n",
+ "V_out_2_R=(V_out_2).real# #real part\n",
+ "V_out_2_I=(V_out_2).imag# #imaginary part\n",
+ "V_out_2_max=sqrt((V_out_2_R**2)+(V_out_2_I**2))# #peak value\n",
+ "V_out_2_phi=atan(V_out_2_I/V_out_2_R)# #phase angle\n",
+ "\n",
+ "#third component\n",
+ "A=-70*pi/180# #-70 degrees = %0.2f radians\n",
+ "V_in_3=complex(cos(A),sin(A))# #V_in_3 phasor\n",
+ "w=4000*pi# #omega\n",
+ "f_3=w/(2*pi)# #frequency\n",
+ "#equation of straight line of H_magnitude vs f is x+1000*y-4000=0\n",
+ "H_3_max=(4000-f_3)/1000# #magnitude of H(traansfer function)\n",
+ "#equation of straight line of H_phase angle vs f is 6000*y=pi*x (phase angle = %0.2f radians)\n",
+ "H_3_phi=pi*f_3/6000# #phase angle of H\n",
+ "H_3=H_3_max*complex(cos(H_3_phi),sin(H_3_phi))\n",
+ "V_out_3=H_3*V_in_3\n",
+ "V_out_3_R=(V_out_3).real# #real part\n",
+ "V_out_3_I=(V_out_3).imag# #imaginary part\n",
+ "V_out_3_max=sqrt((V_out_3_R**2)+(V_out_3_I**2))# #peak value\n",
+ "V_out_3_phi=atan(V_out_3_I/V_out_3_R)# #phase angle\n",
+ "\n",
+ "print 'Output voltage is Vout1+Vout2+Vout3 where'\n",
+ "print ''\n",
+ "print 'FOR Vout1:'\n",
+ "print 'peak value = %0.2f volts'%V_out_1_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_out_1_phi*180/pi)\n",
+ "print 'with frequency = %0.2f hertz'%f_1\n",
+ "print ''\n",
+ "print 'FOR Vout2:'\n",
+ "print 'peak value = %0.2f volts'%V_out_2_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_out_2_phi*180/pi)\n",
+ "print 'with frequency = %0.2f hertz'%f_2\n",
+ "print ''\n",
+ "print 'FOR Vout3:'\n",
+ "print 'peak value = %0.2f volts'%V_out_3_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_out_3_phi*180/pi)\n",
+ "print 'with frequency = %0.2f hertz'%f_3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 6.3 Page No: 477"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " All the values in the textbook are approximated, hence the values in this code differ from those of Textbook\n",
+ "Output voltage is Vout1+Vout2+Vout3 where\n",
+ "\n",
+ "FOR Vout1:\n",
+ "peak value = 4.98 volts\n",
+ "phase angle = -5.71 degrees\n",
+ "with frequency = 10.00 hertz\n",
+ "\n",
+ "FOR Vout2:\n",
+ "peak value = 3.54 volts\n",
+ "phase angle = -45.00 degrees\n",
+ "with frequency = 100.00 hertz\n",
+ "\n",
+ "FOR Vout3:\n",
+ "peak value = 0.50 volts\n",
+ "phase angle = -84.29 degrees\n",
+ "with frequency = 1000.00 hertz\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi, cos, sin, atan, sqrt\n",
+ "\n",
+ "R=1000/(2*pi)# #resistance\n",
+ "C=10*10**-6# #capacitance\n",
+ "f_B=1/(2*pi*R*C)# #half-power frequency\n",
+ "#the three parts of V_in are V_1=5*cos(20*pi*t)+5*cos(200*pi*t)+5*cos(2000*pi*t)\n",
+ "\n",
+ "#first component V_in_1\n",
+ "V_in_1=5*complex(cos(0),sin(0))# #V_in_1 phasor\n",
+ "w_1=20*pi# #omega\n",
+ "f_1=w_1/(2*pi)# #frequency\n",
+ "H_1=1/(1+1J*(f_1/f_B))# #transfer function\n",
+ "V_out_1=H_1*V_in_1\n",
+ "V_out_1_R=(V_out_1).real# #real part\n",
+ "V_out_1_I=(V_out_1).imag# #imaginary part\n",
+ "V_out_1_max=sqrt((V_out_1_R**2)+(V_out_1_I**2))# #peak value\n",
+ "V_out_1_phi=atan(V_out_1_I/V_out_1_R)# #phase angle\n",
+ "\n",
+ "#second component V_in_2\n",
+ "V_in_2=5*complex(cos(0),sin(0))# #V_in_2 phasor\n",
+ "w_2=200*pi# #omega\n",
+ "f_2=w_2/(2*pi)# #frequency\n",
+ "H_2=1/(1+1J*(f_2/f_B))# #transfer function\n",
+ "V_out_2=H_2*V_in_2\n",
+ "V_out_2_R=(V_out_2).real #real part\n",
+ "V_out_2_I=(V_out_2).imag #imaginary part\n",
+ "V_out_2_max=sqrt((V_out_2_R**2)+(V_out_2_I**2))# #peak value\n",
+ "V_out_2_phi=atan(V_out_2_I/V_out_2_R)# #phase angle\n",
+ "\n",
+ "#third component V_in_3\n",
+ "V_in_3=5*complex(cos(0),sin(0))# #V_in_3 phasor\n",
+ "w_3=2000*pi# #omega\n",
+ "f_3=w_3/(2*pi)# #frequency\n",
+ "H_3=1/(1+1J*(f_3/f_B))# #transfer function\n",
+ "V_out_3=H_3*V_in_3\n",
+ "V_out_3_R=(V_out_3).real #real part\n",
+ "V_out_3_I=(V_out_3).imag #imaginary part\n",
+ "V_out_3_max=sqrt((V_out_3_R**2)+(V_out_3_I**2))# #peak value\n",
+ "V_out_3_phi=atan(V_out_3_I/V_out_3_R)# #phase angle\n",
+ "\n",
+ "print \" All the values in the textbook are approximated, hence the values in this code differ from those of Textbook\"\n",
+ "print 'Output voltage is Vout1+Vout2+Vout3 where'\n",
+ "print ''\n",
+ "print 'FOR Vout1:'\n",
+ "print 'peak value = %0.2f volts'%V_out_1_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_out_1_phi*180/pi)\n",
+ "print 'with frequency = %0.2f hertz'%f_1\n",
+ "print ''\n",
+ "print 'FOR Vout2:'\n",
+ "print 'peak value = %0.2f volts'%V_out_2_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_out_2_phi*180/pi)\n",
+ "print 'with frequency = %0.2f hertz'%f_2\n",
+ "print ''\n",
+ "print 'FOR Vout3:'\n",
+ "print 'peak value = %0.2f volts'%V_out_3_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_out_3_phi*180/pi)\n",
+ "print 'with frequency = %0.2f hertz'%f_3\n",
+ "#we can observe that there is a clear discrimination = %0.2f output signals based on frequencies i.e, lesser the frequency lesser the effect."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 6.4 Page No: 478"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " All the values in the textbook are approximated, hence the values in this code differ from those of Textbook\n",
+ "Break frequency = 1897.37 Hz\n"
+ ]
+ }
+ ],
+ "source": [
+ "H_max=-30# #transfer function magnitude\n",
+ "f=60\n",
+ "m=20# #low-frequency asymptote slope rate = %0.2f db/decade\n",
+ "#f_B must be K higher than f where K is\n",
+ "K=abs(H_max)/m\n",
+ "#(base 10)log(f_B/60)=1.5 ==>\n",
+ "f_B=60*10**1.5\n",
+ "print \" All the values in the textbook are approximated, hence the values in this code differ from those of Textbook\"\n",
+ "print 'Break frequency = %0.2f Hz'%f_B"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 6.5 Page No: 479"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Phasor voltage across Resistance\n",
+ "peak value = 1.00 volts\n",
+ "phase angle = 0.00 degrees\n",
+ "\n",
+ "Phasor voltage across Inductance\n",
+ "peak value = 10.00 volts\n",
+ "phase angle = 90.00 degrees\n",
+ "\n",
+ "Phasor voltage across Capacitance\n",
+ "peak value = 10.00 volts\n",
+ "phase angle = -90.00 degrees\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi, cos, sin, atan, sqrt\n",
+ "V_s=1*complex(cos(0),sin(0))\n",
+ "L=159.2*10**-3\n",
+ "R=100\n",
+ "C=0.1592*10**-6\n",
+ "f_o=1/(2*pi*sqrt(L*C))# #resonant frequency\n",
+ "Q_s=2*pi*f_o*L/R# #quality factor\n",
+ "B=f_o/Q_s# #Bandwidth\n",
+ "#Approximate half-power frequencies are\n",
+ "f_H=f_o+(B/2)\n",
+ "f_L=f_o-(B/2)\n",
+ "#At resonance\n",
+ "Z_L=1J*2*pi*f_o*L# #impedance of inductance\n",
+ "Z_C=-1J/(2*pi*f_o*C)# #impedance of capacitance\n",
+ "Z_s=R+Z_L+Z_C\n",
+ "I=V_s/Z_s# #phasor current\n",
+ "#voltages across diffrent elements are\n",
+ "#for resistance\n",
+ "V_R=R*I\n",
+ "V_R_R=(V_R).real #real part\n",
+ "V_R_I=(V_R).imag #imaginary part\n",
+ "V_R_max=sqrt((V_R_R**2)+(V_R_I**2))# #peak value\n",
+ "V_R_phi=atan(V_R_I/V_R_R)# #phase angle\n",
+ "#for inductance\n",
+ "V_L=Z_L*I\n",
+ "V_L_R=(V_L).real #real part\n",
+ "V_L_I=(V_L).imag #imaginary part\n",
+ "V_L_max=sqrt((V_L_R**2)+(V_L_I**2))# #peak value\n",
+ "#Z_L is pure imaginary ==> V_L is pure imaginary which means V_L_phi can be +or- pi/2\n",
+ "if ((V_L/1J)==abs(V_L)):\n",
+ " V_L_phi=pi/2\n",
+ "elif ((V_L/1J)==-abs(V_L)):\n",
+ " V_L_phi=-pi/2\n",
+ "\n",
+ "\n",
+ "#for capacitance\n",
+ "V_C=Z_C*I\n",
+ "V_C_R=(V_C).real #real part\n",
+ "V_C_I=(V_C).imag #imaginary part\n",
+ "V_C_max=sqrt((V_C_R**2)+(V_C_I**2))# #peak value\n",
+ "#Z_C is pure imaginary ==> V_C is pure imaginary which means V_C_phi can be +or- pi/2\n",
+ "if ((V_C/1J)==abs(V_C)) :\n",
+ " V_C_phi=pi/2\n",
+ "elif ((V_C/1J)==-abs(V_C)) :\n",
+ " V_C_phi=-pi/2\n",
+ "\n",
+ " \n",
+ "print 'Phasor voltage across Resistance'\n",
+ "print 'peak value = %0.2f volts'%V_R_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_R_phi*180/pi)\n",
+ "print ''\n",
+ "print 'Phasor voltage across Inductance'\n",
+ "print 'peak value = %0.2f volts'%V_L_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_L_phi*180/pi)\n",
+ "print ''\n",
+ "print 'Phasor voltage across Capacitance'\n",
+ "print 'peak value = %0.2f volts'%V_C_max\n",
+ "print 'phase angle = %0.2f degrees'%(V_C_phi*180/pi)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 6.6 Page No: 480"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Current phasor across Resistance\n",
+ "peak value = 0.001 amperes\n",
+ "phase angle = 0 degrees\n",
+ "\n",
+ "Current phasor across Inductance\n",
+ "peak value = 0.010 amperes\n",
+ "phase angle = -90.00 degrees\n",
+ "\n",
+ "current phasor across capacitance\n",
+ "peak value = 0.010 amperes\n",
+ "phase angle = 90.00 degrees\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi, cos, sin, atan, sqrt\n",
+ "R=10*10**3\n",
+ "f_o=1*10**6\n",
+ "B=100*10**3\n",
+ "I=10**-3*complex(cos(0),sin(0))\n",
+ "Q_p=f_o/B# #quality factor\n",
+ "L=R/(2*pi*f_o*Q_p)\n",
+ "C=Q_p/(2*pi*f_o*R)\n",
+ "#At resonance\n",
+ "V_out=I*R\n",
+ "Z_L=1J*2*pi*f_o*L\n",
+ "Z_C=-1J/(2*pi*f_o*C)\n",
+ "\n",
+ "#across resistance\n",
+ "I_R=V_out/R\n",
+ "I_R_R=(I_R).real# #real part\n",
+ "I_R_I=(I_R).imag# #imaginary part\n",
+ "I_R_max=sqrt((I_R_R**2)+(I_R_I**2))# #peak value\n",
+ "I_R_phi=atan(I_R_I/I_R_R)# #phase angle\n",
+ "\n",
+ "#across inductance\n",
+ "I_L=V_out/Z_L\n",
+ "I_L_R=(I_L).real #real part\n",
+ "I_L_I=(I_L).imag# #imaginary part\n",
+ "I_L_max=sqrt((I_L_R**2)+(I_L_I**2))# #peak value\n",
+ "#Z_L is pure imaginary ==> V_L is pure imaginary which means V_L_phi can be +or- pi/2\n",
+ "if ((I_L/1J)==abs(I_L)):\n",
+ " I_L_phi=pi/2\n",
+ "elif ((I_L/1J)==-abs(I_L)) :\n",
+ " I_L_phi=-pi/2\n",
+ "\n",
+ "\n",
+ "#across capacitor\n",
+ "I_C=V_out/Z_C\n",
+ "I_C_R=(I_C).real# #real part\n",
+ "I_C_I=(I_C).imag# #imaginary part\n",
+ "I_C_max=sqrt((I_C_R**2)+(I_C_I**2))# #peak value\n",
+ "#Z_C is pure imaginary ==> V_C is pure imaginary which means V_C_phi can be +or- pi/2\n",
+ "if ((I_C/1J)==abs(I_C)):\n",
+ " I_C_phi=pi/2\n",
+ "elif ((I_C/1J)==-abs(I_C)) :\n",
+ " I_C_phi=-pi/2\n",
+ "\n",
+ "\n",
+ "print 'Current phasor across Resistance'\n",
+ "print 'peak value = %0.3f amperes'%I_R_max\n",
+ "print 'phase angle = %0.f degrees'%(I_R_phi*180/pi)\n",
+ "print ''\n",
+ "print 'Current phasor across Inductance'\n",
+ "print 'peak value = %0.3f amperes'%I_L_max\n",
+ "print 'phase angle = %0.2f degrees'%(I_L_phi*180/pi)\n",
+ "print ''\n",
+ "print 'current phasor across capacitance'\n",
+ "print 'peak value = %0.3f amperes'%I_C_max\n",
+ "print 'phase angle = %0.2f degrees'%(I_C_phi*180/pi)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example: 6.7 Page No: 481"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " All the values in the textbook are approximated, hence the values in this code differ from those of Textbook\n",
+ "\n",
+ "The required second order circuit configuration is\n",
+ "Inductance = 50.00 KH\n",
+ "Capacitance = 0.51 mF(micro Farads)\n",
+ "Resistance = 314.16 ohms\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import pi\n",
+ "#We need a high-pass filter\n",
+ "L=50*10**-3\n",
+ "#for the transfer function to be approximately constant = %0.2f passband area(from graph given = %0.2f the text), we choose\n",
+ "Q_s=1\n",
+ "f_o=1*10**3\n",
+ "C=1/(((2*pi)**2)*f_o**2*L)\n",
+ "R=2*pi*f_o*L/Q_s\n",
+ "print \" All the values in the textbook are approximated, hence the values in this code differ from those of Textbook\"\n",
+ "print ''\n",
+ "print 'The required second order circuit configuration is'\n",
+ "print 'Inductance = %0.2f KH'%(L*10**3)\n",
+ "print 'Capacitance = %0.2f mF(micro Farads)'%(C*10**6)\n",
+ "print 'Resistance = %0.2f ohms'%R\n",
+ "\n"
+ ]
+ }
+ ],
+ "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/sample_notebooks/NishthaRani/Chapter12.ipynb b/sample_notebooks/NishthaRani/Chapter12.ipynb
new file mode 100644
index 00000000..63660758
--- /dev/null
+++ b/sample_notebooks/NishthaRani/Chapter12.ipynb
@@ -0,0 +1,428 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 12 : Absorption of Gases"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page No 669 Example 12.1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " For S02:\n",
+ "\n",
+ " kGa = 0.00012 ol/s m**3(kN/m**2)\n",
+ "\n",
+ " For NH3:\n",
+ "\n",
+ " kGa = 0.00016 kmol/s m**3(kN/m**2)\n",
+ "\n",
+ " For a very soluble gas such as NH3, kGa = KGa.\n",
+ "\n",
+ " For NH3 the liquid-film resistance will be small, and:\n",
+ "\n",
+ " kGa =KGa = 0.00016 mol/s m**3(kN/m**2)\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "#Overall liquid transfer coefficient KLa = 0.003 kmol/s.m**3(kmol/m**3)\n",
+ "\n",
+ "#(1/KLa)=(1/kLa)+(1/HkGa)\n",
+ "# let (KLa)=x\n",
+ "x = 0.003#\n",
+ "overall = 1/x#\n",
+ "\n",
+ "#For the absorption of a moderately soluble gas it is reasonable to assume that the liquid and gas phase resistances are of the same order ofmagnitude, assuming them to be equal.\n",
+ "#(1/KLa)=(1/kLa)+(1/HkGa)\n",
+ "#let 1/kLa = 1/HkGa = y\n",
+ "y = (1/(2*x))#\n",
+ "z = (1/y)# #z is in kmol/s m**3(kmol/m**3)\n",
+ "print \"\\n For S02:\"\n",
+ "print \"\\n kGa = %0.5f ol/s m**3(kN/m**2)\"%(z/50)#\n",
+ "print \"\\n For NH3:\"\n",
+ "d_SO2 = 0.103# #diffusivity at 273K for SO2 in cm**2/sec\n",
+ "d_NH3 = 0.170# #diffusivity at 273K for NH3 in cm**2/sec\n",
+ "print \"\\n kGa = %0.5f kmol/s m**3(kN/m**2)\"%((z/50)*(d_NH3/d_SO2)**0.56)#\n",
+ "print \"\\n For a very soluble gas such as NH3, kGa = KGa.\"\n",
+ "print \"\\n For NH3 the liquid-film resistance will be small, and:\"\n",
+ "print \"\\n kGa =KGa = %0.5f mol/s m**3(kN/m**2)\"%((z/50)*(d_NH3/d_SO2)**0.56)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page No 671 Example 12.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " d = 0.05 mm\n",
+ "\n",
+ " kG = 1.19*10**(-8) kmol/m**2sec(N/m**2)\n",
+ "\n",
+ " kG = 7.59*10**(-4)kg SO2/m**2sec(kN/m**2)\n"
+ ]
+ }
+ ],
+ "source": [
+ "G = 2# #air flow rate in kg/m**2.sec\n",
+ "Re = 5160# #Re stands for Reynolds number\n",
+ "f = 0.02# #friction factor = R/pu**2\n",
+ "d_SO2 = 0.116*10**(-4)# #diffusion coefficient in m**2/sec\n",
+ "v = 1.8*10**(-5)# #viscosity in mNs/m**2\n",
+ "p = 1.154# #density is in kg/m**3\n",
+ "\n",
+ "#(hd/u)(Pm/P)(u/p/d_SO2)**0.56 = BRe**(-0.17)=jd\n",
+ "\n",
+ "def a1():\n",
+ " x = (v/(p*d_SO2))**(0.56)#\n",
+ " return x\n",
+ "\n",
+ "\n",
+ "#jd = f =R/pu**2\n",
+ "def a2():\n",
+ " y = f/a1()#\n",
+ " return y\n",
+ "#G = pu\n",
+ "u = (G/p)# #u is in m/sec\n",
+ "\n",
+ "def a3():\n",
+ " x1 = a2()*u#\n",
+ " return x1\n",
+ "\n",
+ "def d1():\n",
+ " d = Re*v/(G)#\n",
+ " return d\n",
+ "\n",
+ "print \"\\n d = %0.2f mm\"%(d1())#\n",
+ "R = 8314# #R is in m**3(N/m**2)/K kmol\n",
+ "T = 298# #T is in Kelvins\n",
+ "def kG1():\n",
+ " kG = a3()/(R*T)#\n",
+ " return kG\n",
+ "\n",
+ "print \"\\n kG = %.2f*10**(-8) kmol/m**2sec(N/m**2)\"%(kG1()*10**(8))#\n",
+ "print \"\\n kG = %.2f*10**(-4)kg SO2/m**2sec(kN/m**2)\"%(kG1()*10**(7)*64)#"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page No 694 Example 12.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " x1 = 0.01\n",
+ "\n",
+ " NoL =7.38\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy import symbols, solve, log\n",
+ "#as the system are dilute mole fractions are approximately equal to mole ratios.\n",
+ "#At the bottom of the tower\n",
+ "y1 =0.015# #mole fraction\n",
+ "G = 1# #Gas flow rate is in kg/m**2sec\n",
+ "#At the top of the tower\n",
+ "y2 = 0.00015# #mole fraction\n",
+ "x2 = 0#\n",
+ "L = 1.6# #liquid flow rate is in kg/m**2.sec\n",
+ "Lm = 1.6/18# #liquid flow rate is in kmol/m**2.sec\n",
+ "Gm = 1.0/29# #gas flow rate is in kmol/m**2.sec\n",
+ "\n",
+ "x1 = symbols('x1')\n",
+ "x11 = solve(Gm*(y1-y2)-Lm*(x1),x1)[0]\n",
+ "\n",
+ "print \"\\n x1 = %0.2f\"%(x11)#\n",
+ "def henry_law(x):\n",
+ " ye1 = 1.75*x#\n",
+ " return ye1\n",
+ "bottom_driving_force = y1 - henry_law(x11)#\n",
+ "def log_mean():\n",
+ " lm = (bottom_driving_force-y2)/log(bottom_driving_force/y2)\n",
+ " return lm\n",
+ "NoG = (y1-y2)/log_mean()\n",
+ "NoL = NoG*1.75*(Gm/Lm)#\n",
+ "print \"\\n NoL =%.2f\"%(NoL)#"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page No 699 Example 12.4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Z =7.80m\n",
+ "\n",
+ " Height of transfer unit HoG = 0.375m\n",
+ "\n",
+ " Number of transfer units NoG = 21.00\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy import symbols, solve\n",
+ "from math import ceil\n",
+ "Gm = 0.015#\n",
+ "KGa = 0.04#\n",
+ "top = 0.0003#\n",
+ "Y1 = 0.03#\n",
+ "Ye = 0.026#\n",
+ "bottom = (Y1-Ye)#\n",
+ "log_mean_driving_force = (bottom-top)/log(bottom/top)#\n",
+ "Z = symbols('Z')\n",
+ "Z1 = solve(Gm*(Y1-top)-KGa*log_mean_driving_force*Z,Z)[0]\n",
+ "print \"\\n Z =%.2fm\"%(Z1)#\n",
+ "HoG = Gm/KGa#\n",
+ "print \"\\n Height of transfer unit HoG = %.3fm\"%(HoG)#\n",
+ "print \"\\n Number of transfer units NoG = %0.2f\"%(ceil(7.79/0.375))#"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page No 700 Example 12.5"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEZCAYAAABvpam5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmczeUXwPHPsbVRaVMkUlJKkiVpoV3ai0QLEYpSsv0k\n0SaklUoiSWkTRaRsQwxirDGEIrJkzb7M3PP74/lO3cYs95q7fGfmvF+vebn3u557x71nnud8v88j\nqooxxhgTjgLxDsAYY0zuY8nDGGNM2Cx5GGOMCZslD2OMMWGz5GGMMSZsljyMMcaEzZKHiTsRuUpE\nlsU7juyISFMR+SkO5+0iIh94j8uKSEBECnjPx4nIg0caX/D+0ZRV3CZ3KhTvAEz0iUhToD1QDtgJ\njAK6qOrfcYonAJyrqr8BqOpPwPnxiCU3UNVXslhXL4fHztH+ue28JnKs5ZHHiUh7oBcueRwP1ATK\nABNEpHAUzlcw1E0jfW4TOvHEOw6Te1nyyMNE5HigB/C4qv6oqqmquga4FygLPOBt10NERojI5yKy\nU0SSROTioOOUFJGvReQvEflNRJ4IWpe27zAR+RtoIiLVRWSmiGwXkfUi0i8tUYnING/XhSKyS0Qa\niEgdEVkbdMzVItJeRBaKyA4vrqOC1nfyjrtORB7xukPKZfIePCwiS73XtUpEWgatq+Md42kR2eQd\ns2nQ+pNFZLSI/C0is4Fzsnm/a4pIove6F4hI7aB1Z4vIVC+OH0Wkv4gMC4pjbbpjrRaRa4Pe42GZ\nnDNBRJr/d5H089635LRjBG37kojMAHYD5YL3T3+eDLqaEkTkRRGZ4f3uRovIKSLyqfce/SwiZbJ6\njzKK2+tumy4ir4rINu//WN2gbU8QkcFBv/MXg2I613tfd4jIZhH5PJTzm5yz5JG31QKOBkYGL1TV\nPcA44IagxbcDXwLFgeHANyJS0PuQjgHmAyWB64CnROTGdPt+paonePumAk8CJwOXe/u09s59tbfP\nxapaTFW/yiBuBRoANwFnAxcDTQG8L5V23jHLA3W87TOzCbhFVY8HHgbeEJEqQetL4FpkJYHmwDsi\ncoK37h1gL3A60MzbP8NziUgp4DvgBVUtDnQAvhaRk71NhgNzvPfkReChbOLWTB5ntF3w+suAld55\nugMjReTEoPUPAI8AxYA16fYPZayiht4xSuGS6UxgMHASkOydMxTp464BLPPi7uMdM81HwEHvfFWA\nG73XAO69HK+qJ3oxvR3i+U0OWfLI204BtqhqIIN1G731aeaq6khVTQVexyWdy4HqwCmq+pKqpqjq\n78Ag4L6gfRNVdTSAqu5X1Xmq+rOqBryWzkCgNuF5W1U3qup2XPK6xFt+L/Chqiar6j7cl1Wm3S+q\nOs6LGVWdBvwIXBW0ySHcF36qqn6P+4u8grjut7uB51R1n6ouAYZmca4HgHGqOt4710RgLnCLiJwF\nVAO6qeohr8YzJoz3Ipzupb9U9S3v9XwJLAdu9dYp8JH33gVUNSXM8ygwRFV/V9WdwPfAr6o62ft/\n8xXuy/1IrFHVweoG2/sYOENEThOREsDNQDvv97AZeJN///8dBMqKSClVPaiqiUd4fhMmSx552xbg\nlLQmfjpnAJuDnq9Le+B9gNfh/ho/CyjpdcVsF5HtQBfgtIz2BRCR80TkOxHZ4HVlvYz7izIcG4Me\n7wOOC4o7uIvnP+dOT0RuFpFZIrLVi71euli2pkuue4GiwKm4C0qCz/VHFqcqAzRI9z5dgWu1lAS2\ne8kuzRqiU/f5M93zNbj3LM1acmZT0OP9wF/pnhc9wuP+8/tW1b3ew6K497UwsCHofR2A+/0AdMK9\njz+LyC8i8vARnt+EyZJH3jYTOADcE7xQRIoCdYFJQYtLB60vAJyJ+yJaC/yuqsWDfo5X1eC/ZtN3\nd7wHLMVdUXUC0JXI/V/bEBxrusf/4dVJvsZ1g5zmdSeNI7Qv7c1ACi55pjkrk23BJZZh6d6nYqra\nx4u5uIgcG7R9Gf593/YA/6zzWj2ncmRKpXteBlgf9DyrrqndwXHgEl9WYjEk91rc/+GTg97XE1S1\nEoCqblLVlqpaCmgFvJtZ/ctEliWPPMy7FPd5oJ+I3CQihUWkLK62sRYILsJWFZG7RKQQ8BTur8hZ\nuH76XeKK1Md4dZCLRKSat19GX8RFgV3AXhE5H3gs3fpNZFN8zkDaeb4EHhaR870v425Z7FPE+9kC\nBETkZlx/eba8bpiRQA/vdVcEmpD5F+YnwG0icqP3Hh3tFcJLeV13c4Hnvd/BlfzblQTwK3C0iNQT\nd2HBs8BRh58iJKeJSFvvPA1wl0CPC1qfVeJcAFwtIqW9uk+XDLaRTB5HhapuwHU1vi4ixUSkgIic\nIyJXA4i74OJMb/MduN9PRt20JsIseeRxqvoq8AzQF/gblxDWANep6qG0zYBvccXQbcD9wN1ev3kq\n7ovuEuA33F/kA3FF5rR903+hdgAa4+4pGQh8nm6bHsBQrxuifibH+M/LSFvv1RTeBqbgvnRnetsc\nyOC17wLa4hLONqCR9zrTHzszj+MS4UbgQ+8n4wBV1wF34N7rv3Atkfb8+xlrjCtmbwOew/Xri7fv\n37gLCgbhuuF289/upfTvT2YxK+73Wx73e3oRuMerG2X7er06zRfAItwfDWMy2D59HFmtzyi+zJZn\ndZyHcH8ELMW9f1/xb6uoGjBLRHbhfrdtVXV1FjGYCJFoTgblXRnzJlAQGKSqvdOtv59/+yx3AY+p\n6qJQ9jWRIyLdcV1Mue6OXxG5AFgMFMnkwgBfys3vuTEQxZaH12/bH9e3XhFo5H3Qg/0GXK2qF+P+\nShoYxr4mcnLVzWJe99pRIlIc6A2Mzk2Jw5Or3nNj0otmt1UNYKWqrva6Rz7HNev/oaozg4bImI0r\n0oa0r4mo7LqN/KYlrm6yEnepbfqaSm6Q295zY/4jmmNbleLwSyovy2L75vxb2At3X5MDqvp8vGMI\nh6reHO8Yciq3vefGpBfN5BHyX1Uicg3uDt4rwt3XGGNM7EUzefzJ4dfjH3ZDl7gxlD4A6gZdFRLq\nvpZkjDHmCKhqjupu0ax5zAXKixtcrQjuMtDRwRt4wzaMBB5Q1ZXh7JtGVX3/071797jHYHFanLk1\nRosz8j+RELWWh6qmiMjjwA+4y20Hq2qyiLTy1r+Pu969OPCeuNGhD6lqjcz2jVasxhhjwhPVyaDU\nDTT3fbpl7wc9foR/R8fMdl9jjDH+YHeYx0CdOnXiHUJILM7Iyg1x5oYYweL0o6jeYR5tIqK5OX5j\njIkHEUF9XDA3xhiTR1nyMMYYEzZLHsYYY8JmycMYY0zYLHkYY4wJmyUPY4wxYbPkYYwxJmyWPIwx\nxoTNkocxxuRRe/ZAx46QlBT5Y1vyMMaYPGjsWLjwQti4EUqXzn77cEV1YERjjDGxtX49PPkkzJ8P\ngwbB9ddH5zzW8jDGmDwgNRXefRcqV4YKFWDx4uglDrCWhzHG5HoLF0KrVlC4MCQkuO6qaLOWhzHG\n5FJ79kCnTnDDDfDIIzB1amwSB1jyMMaYXGncOLjoIlfjWLzYJY8CMfxGt24rY4zJRTZscAXxefNg\n4EDX6ogHa3kYY0wuEAjAe+/BxRdD+fKutRGvxAHW8jDGGN9btMgVxAsWjF1BPDvW8jDGGJ/aswc6\nd3aX3DZrBtOm+SNxgCUPY4zxpe+/dwXxdetcF1WLFkdeEA9ogN7Te/Pjqh8jFp91WxljjI9s2ADt\n2sGcOTBgANx0U86Ot23fNpp804Qte7fQuFLjyASJtTyMMcYXAgGXLC6+GMqVc62NnCaOOX/OoerA\nqpQ/qTxTm06l9AmRG+TKWh7GGBNnixe7grgITJniuqtyQlV5Z847PD/1eQbcMoB7Kt4TmUCDWPIw\nxpg42bsXXngBBg+Gl1+OzI1+uw7sosWYFizbsoyZzWdy7knnRibYdKzbyhhj4mD8eNfCWLPGtTxa\ntsx54li8aTHVPqhGsSLFopo4wFoexhgTUxs3uoL47NluFNy6dSNz3I8WfETHCR157cbXeKjyQ5E5\naBas5WGMMTEQCMD770OlSlC2LPzyS2QSx75D+2j+bXN6z+hNQpOEmCQOsJaHMcZE3S+/uIK4Kkye\n7BJIJKzYuoL6X9XnwlMvZE6LORQtUjQyBw6BtTyMMSZK9u6FLl3gmmvgwQdh+vTIJY4RS0dQ68Na\nPFr1UT69+9OYJg6wlocxxkTFDz9A69ZQvbobm+qMMyJz3IOpB+n4Y0fG/DqG7+//nmolq0XmwGGy\n5GGMMRG0aZMriM+c6QriN98cuWOv2bGGe0fcy+lFTyepZRLFjykeuYOHybqtjDEmAgIB+OAD1y1V\nujQsWRLZxDFuxThqDKpB/Qvq803Db+KaOMBaHsYYk2NLlriCeEoKTJzohhiJlJRACs9NeY6PF37M\niAYjuKrMVZE7eA5Y8jDGmCO0bx+89JKb0e+FF1wCieRUsBt2baDxyMYUKlCIea3mcdpxp0Xu4Dlk\n3VbGGHMEJkxwXVQrV7qC+GOPRTZxJKxOoNoH1ahdpjbj7x/vq8QB1vIwxpiw/PWXK4gnJsI770C9\nepE9fkAD9Jrei34/92PonUO58ZwbI3uCCLHkYYwxIQgE4MMP4ZlnoGlTd+PfccdF9hxb927loW8e\nYsf+HcxpMYczjz8zsieIIEsexhiTjaVLXT3j0CHXXVW5cuTPMXvdbBqOaEj9ivV55bpXKFywcORP\nEkFW8zDGmEzs2wfPPgu1a0OjRjBjRuQTh6ry1qy3uO2z23iz7pv0vbGv7xMHWMvDGGMyNHEiPPoo\nXHopLFwIJUtG/hw7D+yk+ejmrNq2ilmPzKJc8XKRP0mUWMvDGGOC/PWXG4fqkUfgzTfhyy+jkzgW\nblxI1YFVOfmYk0lsnpirEgdY8jDGGMAVxAcPdhM0nX66u/Hv1lsjfx5VZfC8wVw/7Hp61O7BgFsH\ncHShoyN/oiizbitjTL63dKnrojpwAH78ES65JDrn2XtoL63HtmbO+jlMazqNC069IDonigFreRhj\n8q39+6FbN1cQb9jQ3bsRrcSxfMtyLht0Gamays+P/JyrEwdY8jDG5FOTJrk7xJOTYcECaNMGChaM\nzrm++OULrhxyJU/UeIKP7/yY44pE+AaROIhqt5WI1AXeBAoCg1S1d7r15wNDgCpAV1V9LWjdamAn\nkAocUtUa0YzVGJM/bN4M7dvD1KnQvz/cdlv0znUg5QDtf2zP+JXj+eGBH7j0jEujd7IYi1rLQ0QK\nAv2BukBFoJGIpG+nbQWeAPpmcAgF6qhqFUscxpicUnV3iF90EZx2miuIRzNxrN6xmiuHXMn6XetJ\napmUpxIHRLflUQNYqaqrAUTkc+AOIDltA1XdDGwWkVsyOYZEMT5jTD6RnOwK4vv2wfjxUKVKdM83\nZvkYHhnzCJ2v6Ey7mu0QyXtfZdGseZQC1gY9X+ctC5UCE0Vkroi0iGhkxph8Yf9+eO45uOoqqF/f\nze4XzcSREkih84TOtBnXhlENR/H05U/nycQB0W15aA73v0JVN4jIqcAEEVmmqj+l36hHjx7/PK5T\npw516tTJ4WmNMXnB5MmutVGpkiuInxnlMQbX71rPfSPu49jCx5LUMolTjzs1uicMQ0JCAgkJCRE9\npqjm9Ds+kwOL1AR6qGpd73kXIJC+aO6t6w7sDi6Yh7JeRDRa8RtjcqfNm6FDB0hIgH794Pbbo3/O\nSb9N4sFRD/JYtcfoenVXCoi/L2QVEVQ1R02iaL7CuUB5ESkrIkWAhsDoTLb9z4sQkWNFpJj3+Djg\nRmBxFGM1xuRyqjBkiCuIn3KKK4hHO3EENMCLU1/kgVEPMOyuYXSr3c33iSNSotZtpaopIvI48APu\nUt3BqposIq289e+LyOnAHOB4ICAiT+KuzDoNGOn1FRYCPlXVH6MVqzEmd1u2zHVR7dkD33/vBjOM\nti17t/DAyAfYe2gvSS2TKFksCgNg+VjUuq1iwbqtjMnf9u+HXr3c/RrPPRfdG/2CJa5N5L4R99G4\nUmNeuvYlChXIXSM9RaLbKne9YmOM8UyZ4lobF14Ym4I4uEEN35j1Br1n9GbQbYO4rUIUbxTxOUse\nxphcZcsWVxCfPNkVxO+4Izbn3bF/B82+bcbanWuZ1XwWZxc/OzYn9qn8UdkxxuR6qjB0qCuIFy/u\nCuKxShzzN8yn2sBqnFH0DKY/PD3fJw6wlocxJhdYvtx1Ue3cCWPHQtWqsTmvqvLBvA/oOrkr/W7u\nx30X3RebE+cCljyMMb514IAriPfr54ZOb9MGCsXoW2vPwT08OvZRFmxcwPSHp1PhlAqxOXEuYd1W\nxhhfSkiAypVh/nz38+STsUscyZuTqTGoBgWlILMfmW2JIwNZJg8RKSgiGY14a4wxUbFlCzz8sJtH\nvFcv+OYbKF06ducfvng4V390NU/XfJohdwzh2MLHxu7kuUiWeVxVU0XkSrEbKowxUaYKH38MnTpB\no0ZuathixWJ3/v0p+2k3vh0Tf5/IxAcnUvn0yrE7eS4USiNwAfCtiHwF7PWWqaqOjF5Yxpj85Ndf\nXUH8779dQbxatdie/7ftv9HgqwaUK16OpJZJHH/U8bENIBcKpeZxNLANuBa41fvJv3fGGGMi5sAB\neOEFqFXLjUM1e3bsE8c3y76h5qCaNKnchC/rf2mJI0TZtjxUtWkM4jDG5DPTpkGrVlC+PMybB2ed\nFdvzH0o9RJdJXfhq6VeMbjSammfWjG0AuVymyUNEOqtqbxHpl8FqVdW2UYzLGJNHbd3q6ho//ghv\nvw133gmxni9p3c513DfiPo4/6njmtZzHyceeHNsA8oCsuq2Wev8m4YZXT0r3Y4wxIVOFYcPcWFRF\ni7o7xO+6K/aJY8KqCVT/oDr1ytfju8bfWeI4QjaqrjEm6lascAXx7dvh/fehevXYx5AaSOXFaS8y\nMGkgn979KdecfU3sg/CJmIyqKyKnAZ1w82wc4y1WVb02Jyc2xuR9Bw5Anz7w1lvwzDPQtm3sbvQL\n9teev7h/5P0cSj1EUsskzih2RuyDyGNCudrqU2AZUA7oAazGdWMZY0ymfvoJqlSBn3+GpCR4+un4\nJI7pf0yn6sCq1ChZg4kPTbTEESHZdluJyDxVvVREFqnqxd6yuaoa4wvqMozNuq2M8Zlt21xBfPx4\nVxCPR10D3KCGfRP70ndmX4bcMYR65evFPgifitVkUAe9fzeKyK3AeqB4Tk5qjMl7VOHTT91cG/fe\n6+4QPz5Ot0xs37edpt82ZePujfz8yM+UObFMfALJw0JJHi+LyIlAe6Afbr7xdlGNyhiTq6xYAY89\n5i7DHT0aatSIXyxJ65No8FUDbj3vVr5q8BVFChaJXzB5mF1tZYw5YgcPwquvwhtvQJcusR35Nj1V\nZcDcATyX8Bzv1nuXBhc2iE8guYDNYW6MiZvp06FlSyhXzhXEy8SxZ2j3wd20HNOSJZuXMKPZDM47\n+bz4BZNP2HwexpiwbNsGLVrAfffBiy/CmDHxTRxL/lpC9Q+qc0yhY5jVfJYljhix5GGMCUlaQfzC\nC+Goo9wd4vfcE58rqdIMWziMOkPr0PmKzgy+YzDHFD4m+51MRGQ1tlX7LPZTVX09CvEYY3xo1SpX\nEN+0yU3OdNll8Y1n36F9PDn+SaaumcrkhyZTqUSl+AaUD2XV8igGFM3gp5j3Y4zJ4w4ehJ49XbK4\n8UaYOzf+iWPltpXU+rAWOw/sZG6LuZY44sSutjLGZGj6dDdketmy8M477t94G5k8kke/e5TutbvT\nunprJJ59ZrlYrMa2Kg28DVzpLZoGPKmq63JyYmOMP23fDp07uxn93nwT6tePb10D4GDqQTpP6Myo\nZaP4rvF31CgVxxtJDBBawXwIMBoo6f2M8ZYZY/IQVfjsM6hYEQoXdneIN2gQ/8Sx9u+11PmoDiu3\nr2Req3mWOHwilLGtFqpq5eyWxYN1WxkTGatWQevWsHGjGzK9pk8m1Ru/cjxNv2lKu5rt6HhFRwqI\nXSAaCZHotgrlN7FVRB4UkYIiUkhEHgC25OSkxhh/OHgQXnnFFcGvv94VxP2QOFIDqXSb3I1HRj/C\nlw2+pPOVnS1x+Ewod5g3w41plXZpbiLwcNQiMsbExIwZriBeujTMmQNnnx3viJxNuzfReGRjAJJa\nJlGiaIk4R2QyYldbGZPPbN8O//ufuzP8zTf9UddIM23NNBp/3ZhmVZrRvXZ3ChYoGO+Q8qRYXW1V\nDngCKBu0varq7Tk5sTEmtlThiy/cpEx33ukK4ieeGO+onIAG6DOjD2/OepOP7vyIuufWjXdIJhuh\ndFt9AwzCXWUV8JbZn/vG5CK//eYK4uvXw9dfw+WXxzuif23bt40m3zRh696tzGkxh9InlI53SCYE\noVSg9qvq26o6WVUTvJ+pUY/MGJNjhw5Br15ufo1rrnGj3/opccz5cw5VB1al/EnlSWiaYIkjFwml\n5dFPRHoAPwAH0haq6rxoBWWMybmZM92Q6aVKuXnEy5WLd0T/UlXemfMOL0x9gQG3DuDuC+6Od0gm\nTKEkjwuBB4Fr+LfbCu+5McZnduxwEzN9+62bpOnee/1TEAfYdWAXj4x5hF+3/kpi80TOPenceIdk\njkAoyaMBcLaqHsx2S2NM3KjCl19Cu3Zwxx3+KoinWbxpMfW/qk/tMrVJbJZoQ6jnYqEkj8VAcWBT\nlGMxxhyh3393BfF162DECKhVK94RHe6jBR/RcUJHXr/xdR6s/GC8wzE5FEryKA4sE5E5/FvzsEt1\njfGBQ4dc11SfPtChA7Rv78al8pO9h/byxLgnSFyXSEKTBC487cJ4h2QiIJTk0T2DZXaprjFxNnOm\nu0P8jDP8VxBP8+vWX6n/ZX0qlajEnBZzKFqkaLxDMhESSvI4RlW/D14gIo8BdrmuMXGwYwc884yb\n0e/116FhQ38VxNN8teQrWo9rzYvXvEirqq1s7o08JpT7PLqJyHVpT0SkE3BH9EIyxmQkrSB+4YUQ\nCLg5xO+7z3+J42DqQdp+35bOEzsz/v7xPFrtUUsceVAoLY/bge9E5CBQFzjfW2aMiZHVq6FNG1iz\nxiWQK66Id0QZW7NjDfeOuJczip5BUsskih9TPN4hmSjJtuWhqltwyeJd3GRQ9e2yXWNi49AhePVV\nqFYNrrwS5s3zb+IY++tYagyqQYOKDRjVcJQljjwu05aHiOzmv4XxIsDZQH1vNNvjox2cMfnZrFmu\nIF6iBMyeDeecE++IMpYSSOG5Kc8xbNEwvr73a64868rsdzK5XlbdVidZC8OY2Pv7b1cQHznSFcT9\nWNdIs2HXBhp93YjCBQuT1DKJ0447Ld4hmRjJqtsqUUS+EZFHRaTskRxcROqKyDIRWSEinTNYf76I\nzBSR/SLSPpx9jclrVN0NfhUruu6qpUuhUSP/Jo4pv0+h2gfVuKbsNYy/f7wljnwmy8mgRORsXJH8\nJuBMYDowDpiqqgcy3dHtWxBYDlwP/AnMARqpanLQNqcCZYA7ge2q+lqo+3rb2WRQJk9YvRoef9zd\nKf7++66+4VcBDfDKT6/Qf05/Pr7zY24454Z4h2TCFPU5zFX1d1V9T1XvBGrh5vS4AfhJRMZmc+wa\nwEpVXa2qh4DPSXeJr6puVtW5wKFw9zUmLzh0CPr2dQXxWrVg/nx/J44te7dw6/Bb+X7l98xtMdcS\nRz4WyqW6AHj1j0neDyJyZja7lALWBj1fB1wW4ulysq8xucLs2a4gfuqprjh+ro8Hlw1ogA/nf0jX\nyV1pUrkJL1/7MoUL+mwcFBNTWV1tVRo3NMkWoBfwBlAdmA+0V9V12Rw7J/1JIe/bo0ePfx7XqVOH\nOnXq5OC0xkTf339D165uRr++faFxY//WNQCS1ifRelxrCkpBxt8/nipnVIl3SCZMCQkJJCQkRPSY\nWbU8PsJNQVsUmOU9747rPnoPuCebY/8JBE8LVhrXgghFyPsGJw9j/EzVXUH15JNw883uDvGTTop3\nVJnbtm8bXSd1ZdSyUbxy3Ss0uaQJBSSUQSmM36T/w/r555/P8TGzSh4nq2o/cGNZqWovb3k/EWke\nwrHnAuW9K7XWAw2BRplsm/7vrnD2Ncb31qxxBfFVq+Czz+Cqq+IdUeaCu6gaVGxAcptku+HPHCar\n5BH8hT4s3bqC2R1YVVNE5HHc9LUFgcGqmiwirbz174vI6bgrqY4HAiLyJFBRVXdntG/Ir8oYn0hJ\ngbfegldegaeecl1VRYrEO6rMJa1Pos24NhSQAtZFZbKU6aW6IvIi0EdVd6VbXh54RVXrxyC+LNml\nusbPfv7ZFcRPPhneew/Kl493RJmzLqr8JaqX6qpqt/SJw1u+wg+Jwxi/2rkT2raF2293kzNNmODf\nxBHQAIPnDabiOxUpWKAgyW2SebjKw5Y4TLayutoq+I5v5b/dWKqqr0ctKmNyIVUYNcoljrp1XUH8\n5JPjHVXm0rqoRIRx94/j0jMujXdIJhfJquZRjH+TRitgQEwiMiYX+uMPVxBfsQKGD4err453RJnb\ntm8bz05+lpHJI62LyhyxLIcn+Wcjkfmq6rvKmdU8TLylpMDbb0PPnu4S3E6d4Kij4h1VxgIaYMj8\nIXSd3JV7LriHl659ya6iyqciUfMI+Q5zY8x/zZ0LLVtC8eKQmAjnnRfviDI3b8M8Wo9tbV1UJmIs\neRgTpp07oVs3+OILN1HTAw/49w7x4C6qntf1pOklTa2LykREpv+LRGRx2g9QIfi5iCyKYYzG+Mao\nUW4O8d27XUH8wQf9mTiCr6IShKVtltKsSjNLHCZismp53BazKIzxuT/+gCeegOXL4ZNPoHbteEeU\nubQuKoCxjcdStWTVOEdk8qJMk4eqro5hHMb4UkoK9OsHL7/sLsH98kv/FsSti8rEUlb3efyexX6q\nquWiEI8xvpGU5AriJ5wAM2ZAhQrxjihjAQ3w0YKPeGbSM9x9wd0sbbOUk47x8YiLJk/IqtuqetBj\nxdVHGgIdgHnRDMqYeNq1yxXEP/8c+vTxb10DrIvKxE9Ww5NsUdUtwDZc/SMBuByop6rZDcduTK70\n7beuIP6kxppGAAAZlUlEQVT33/DLL/DQQ/5MHNv3bafN2DbU+7QeLS5tQWLzREscJqay6rYqAjQD\n2uHmLr9DVVfGKjBjYmntWlfTWLoUPv4Y/DqnmHVRGb/IqtvqNyAFeAv4A7hYRC7GDVeiqjoyBvEZ\nE1WpqdC/P7z4orua6vPP/VsQn7dhHm3GtUFVrYvKxF1WyWOi9+/F3k96ljxMrpaU5IZML1oUpk+H\n88+Pd0QZ275vO89OfpYRySPoeW1PG/XW+EJWl+o2jWEcxsTM7t2uID58OPTuDU2a+LOuEdAAQxcM\npcukLtx9wd0kt0m2LirjGzY8iclXRo92o99ee627Q/yUU+IdUcasi8r4nSUPky+sW+cK4r/8AkOH\nwjXXxDuijG3ft51uU7rx1dKvrIvK+Jr9rzR5WmqqGzL9kkugUiVYtMifiSNtuPQL3rmAgAZIbpNM\n80ubW+IwvpXVpbr3cPgMgmnsaivje/PmuYL4scf6uyA+f8N82oxrQ6qm8l3j76hWslq8QzImW9kN\njJjVTEuWPIwv7d4N3bu7AQx79YKmTf1ZELcuKpOb2dVWJk8ZM8YVxOvUcfWNU0+Nd0SHC76K6q7z\n77KrqEyulG3BXEROBLoDabMyJwAvqOrfUYzLmLD8+acriC9eDEOGuKup/Mi6qExeEUob+UNgJ9AA\nuBfYBQyJZlDGhCo11Q2ZXrmyG5Nq0SJ/Jo7t+7bz+LjHqftpXZpVacbM5jMtcZhcLZRLdc9R1buD\nnvcQkYXRCsiYUC1Y4IZMP/po+OknuOCCeEd0uLQuqmcmP8OdFe5kaeulnHzsyfEOy5gcCyV57BOR\nq1T1JwARuRLYG92wjMnc7t3Qo4cbwDCtIF7Ah3XmtC6qlEAKYxqNsZaGyVNCSR6PAh+LyAne8+1A\nk+iFZEzmvvvOFcSvvtoVxE87Ld4RHS74KqqXr33Z5g43eVK2yUNVF+BG1D3ee74z6lEZk86ff8KT\nT8LChTBoEFx/fbwjOlzwVVR3nm9dVCZvC+Vqq+LAQ0BZoJC4C+ZVVdtGNzRjXEH8vfdcN9Vjj8Gw\nYXDMMfGO6nCTfptExwkdKVKwiF1FZfKFULqtxgEzgUVAAG8+j2gGZQy4gnirVlCkCEybBhUrxjui\nw/3y1y90mtCJ5VuX0+u6XtSvWB/x4x2JxkRYKMnjKFV9OuqRGOPZs8e1NIYOhVdegYcf9l9BfMOu\nDTw35Tm+Xf4tz1z1DKMajuKoQj6dRcqYKAjlIzlcRFqKyBkiclLaT9QjM/nS2LHufo0NG1xBvHlz\nfyWO3Qd3031Kdy567yKKH1Oc5Y8v56maT1niMPlOKC2P/cCrQFdctxW4bqty0QrK5D/r17uC+Pz5\n8MEHcMMN8Y7ov1ICKXw4/0N6JPTgmrOvIallEmVPLBvvsIyJm1CSR3vcjYJboh2MyX9SU+H9991A\nhq1auXs3/FQQV1XGrhhLpwmdKFG0BKMbjbZiuDGEljxWAPuiHYjJfxYudAmjUCFISHDdVX6StD6J\nDhM6sHH3Rvpc34dbz7vViuHGeEJJHnuBBSIyBTjgLbNLdc0R27MHnn8ePvoIevaEZs38VddYs2MN\nXSd3ZdLvk+hRuwfNL21OoQI26aYxwUL5RHzj/aRdnmuX6pojNm4ctGkDtWq5EXBLlIh3RP/asX8H\nPX/qyeD5g2lTvQ3v3fIexY4qFu+wjPGlUJLHL6o6N3iBiNwWpXhMHrVhgyuIJyW5GseNN8Y7on8d\nTD3Ie3Peo+f0ntx23m0sfmwxJYuVjHdYxvhaKJ0FA0WkUtoTEWkEdIteSCYvCQTcHeIXXwznnusu\nv/VL4lBVvlryFRXfqcj4VeOZ+OBEBt0+yBKHMSEIpeVRHxghIo2Bq3BDlfjsQkrjR4sWuYJ4gQIw\nZQpcdFG8I/pX4tpEOvzYgX0p+xhw6wCuL+fDwbKM8TFRzb58ISIVcHWPNcDdquqLIdlFREOJ38TW\n3r3wwgvw4Yfw0kvwyCP+KYiv2LqC/036H3P+nMNL177EAxc/YCPemnxHRFDVHF06mGnLQ0QWp1t0\nEq6ba7b3pX1xTk5s8qbvv3cF8Zo1Xcvj9NPjHZGzec9mXpj6Ap/98hntL2/PJ3d9wjGFfXRDiTG5\nTFbdVlYUNyHbsAHatYOff3Y1jptuindEzr5D+3hr9lv0TexLo4sakdwmmVOPOzXeYRmT62WaPFR1\ndQzjMLlUIAADB0K3bq576sMP4dhj4x2Vm1vjk0Wf8OzkZ6lWshqJzRM57+Tz4h2WMXmG3flkjtji\nxa4gDjB5MlSqlPX2sRI8t8bwe4Zz5VlXxjskY/IcSx4mbHv3wosvuhn9XnoJWrTwR0Hc5tYwJnZ8\n8JE3ucn48e6S29Wr/215xDtxbNi1gRajW3Dt0Gu58ZwbWdp6KQ0ubGCJw5goiurHXkTqisgyEVkh\nIp0z2eZtb/1CEakStHy1iCwSkfki8nM04zTZ27gRGjVyU8G+8w589ln8r6SyuTWMiZ+oJQ8RKQj0\nB+oCFYFGInJBum3qAeeqanmgJfBe0GoF6qhqFVWtEa04TdYCATecSKVKUKYMLFkCN98c35hSAikM\nTBrIef3OY+X2lSS1TKLPDX0ofkzx+AZmTD4SzZpHDWBl2lVbIvI5cAeQHLTN7cBQAFWdLSInikgJ\nVd3krbd+hzj65RfXLRUIwKRJboiReLK5NYzxj2gmj1LA2qDn64DLQtimFLAJ1/KYKCKpwPuq+kEU\nYzVB9u51hfAPPnCF8ZYt41/XsLk1jPGXaCaPUMcNyewb4EpVXS8ipwITRGSZqv6UfqMePXr887hO\nnTrUqVMn3DhNkB9+gNatoVo1d4f4GWfENx6bW8OYnEtISCAhISGixwxpbKsjOrBITaCHqtb1nncB\nAqraO2ibAUCCqn7uPV8G1A7qtkrbrjuwW1VfS7fcxraKkE2b3B3iM2e6gni9evGNJ/3cGh1rdbS5\nNYyJkEiMbRXNzoi5QHkRKSsiRYCGwOh024zGjdKblmx2qOomETlWRIp5y48DbgTSj7VlIiAQcN1T\nlSpB6dKuzhHPxHEw9SBvzXqLCv0rsG3fNhY/tpgXrnnBEocxPhO19r+qpojI48APQEFgsKomi0gr\nb/37qjpOROqJyEpgD/Cwt/vpwEivT7sQ8Kmq/hitWPOrJUtcQTwlBSZMgMqV4xeLqjJi6Qi6TOpC\n+ZPLM/HBiVQq4ZNb1o0xh4lat1UsWLfVkdm3zxXEBw50Q6e3bAkFC8YvnuC5NV694VWbW8OYKIvq\nkOwmb5owwd3od+mlsHAhlIzjpHk2t4YxuZclj3zir79cQXzGDFcQv+WWOMay5y9emvYSwxcPt7k1\njMml7M+8PC4QcAMYXnSRa2UsWRK/xPH79t9pM7YNFfpXQFVJbpNMl6u6WOIwJheylkcetnSpK4gf\nPAg//giXXBKfOBZtWkTvGb0Zv3I8raq2IrlNMqcX9ckUg8aYI2Itjzxo3z549lm4+mq47z5ITIx9\n4lBVpq2ZRr1P61H3k7pULlGZ39r+Rs/relriMCYPsJZHHjNxIjz6KFSp4u4Qj3VBPKABvvv1O3pN\n78XmvZvpWKsjIxuO5OhCR8c2EGNMVFnyyCP++gvat4effoL+/eHWW2N7/kOphxi+eDh9EvtwdKGj\n+d8V/+PuC+6mYIE4XgNsjIkaSx65XCAAQ4ZAly7w0EPuDvGiRWN3/j0H9zBo3iBem/ka5U8uz5s3\nvcn15a63QQuNyeMseeRiS5e6Lqr9+92AhlWqZL9PpGzdu5X+P/fnnTnvcHWZq/n63q+pXqp67AIw\nxsSVFcxzof37oVs3VxC/9143mGGsEscff//BU+Ofony/8qzduZafHv6JEfeOsMRhTD5jLY9cZtIk\n19qoXNndIV6qVGzOu3TzUvrM6MPo5aNpVqUZix9bTKnjY3RyY4zvWPLIJTZvdgXxqVNdQfy222Jz\n3plrZ9JrRi9mrZtF2xptWdV2lU33aoyx5OF3qq4g/r//wYMPujvEo10QD2iA8SvH03tGb/74+w86\nXN6Bz+75jGMLHxvdExtjcg1LHj6WnOy6qPbuhfHj3WCG0XQg5QCfLv6U12a+RpGCRehweQcaXtTQ\nZu4zxhzGvhV8aP9+6NkT3n0Xund308JGc8j0rXu3MmDuAPrP6c8lp1/C23Xf5tqzr7XLbY0xmbLk\n4TOTJ7vWxkUXwYIFcOaZ0TvXb9t/442Zb/DJ4k+48/w7+fGBH20CJmNMSCx5+MTmzdChA0yZAv36\nwR13RO9cs9fNpu/Mvkz5fQotLm3BktZLKFksjhN7GGNyHUsecaYKQ4dC585w//2uIF4sCtN1BzTA\nmOVj6DuzL+t2rqNdzXYMuWMIRYvE8HZ0Y0yeYckjjpYtc11Uu3fD999HpyC+79A+Pl74Ma/NfI0T\njj6BjrU6cvcFd1sR3BiTI/YNEgf790OvXu5+jeeegzZtIl8Q37xnM+/OeZd3577LZaUuY9Dtg7jq\nrKusCG6MiQhLHjE2ZYprbVSsCPPnQ+nSkT3+r1t/5fWZr/PFki9oULEBU5tO5fxTzo/sSYwx+Z4l\njxjZssUVxCdPhrffhjvvjNyxVZUZa2fQN7EviWsTebTaoyxrs4wSRUtE7iTGGBPEkkeUqcLHH0On\nTtC4cWQL4qmBVEYtG0XfxL5s3beVp2s+zfB7htud4MaYqLPkEUXLl7suqp07Ydw4qFo1Msfdc3AP\nQxYM4Y1Zb1DiuBJ0vqIzt1e43SZeMsbEjCWPKDhwwBXE+/Vzc4k//jgUisA7vXH3Rvr/3J/3k97n\n6jJXM+yuYdQqXSvnBzbGmDBZ8oiwhATX2qhQIXIF8aWbl/L6zNf5OvlrGl/UmJnNZ3LuSefm/MDG\nGHOELHlEyNat0LEjTJjgWhw5LYirKlPXTKVvYl/mrp9Lm+ptWPHECk459pTIBGyMMTlgySOHVGHY\nMFcQv+8+NzVsTgriKYEURiwdQd/Evuw+uJv2l7dnxL0jOLrQ0ZEL2hhjcsiSRw78+qvrotqxA777\nDqpVO/Jj7Tqwi8HzB/PmrDcpc2IZutfuzi3n3UIBsZmCjTH+Y8njCBw4AL17u/s1unaFJ5448oL4\nnzv/5O3ZbzNo/iCuL3c9Xzb4khqlakQ2YGOMiTBLHmGaNg1atYLy5WHePDjrrCM7zqJNi3ht5muM\nWT6Ghyo/xNwWczm7+NmRDdYYY6JEVDXeMRwxEdFYxb91q6tr/PCDa3HcdReEO0yUqjLxt4n0ndmX\nxZsW0/aytrSq2srmBDfGxJSIoKo5GujOWh7ZUIVPPnFXUt17ryuIH398+MeZtW4Wrb5rRWoglQ61\nOjD6vtEcVeioyAdsjDExYC2PLKxY4Qri27bBwIFQvfqRH+v37b+zfOtybjrnJhvZ1hgTV5FoeVjy\nyMCBA9CnD7z1FjzzDLRtG5k7xI0xxg+s2yoKfvrJFcTPOQeSkqBMmXhHZIwx/mPJw7NtmyuIjx/v\nWhx33x1+QdwYY/KLfH8HWlpBvGJFOOYYN2T6PfdY4jDGmKzk65bHihXw2GNuoqbRo6GG3ZtnjDEh\nyZctj4MH4eWX4fLL4eabYe5cSxzGGBOOfNfymD4dWraEs892SaNs2XhHZIwxuU++SR7btkHnzm5G\nv7fesrqGMcbkRJ7vtlKFTz+FCy+Eo45yd4jXr2+JwxhjciJPtzxWrXIF8U2b4Jtv4LLL4h2RMcbk\nDXmy5XHwIPTs6ZLFDTe42oYlDmOMiZw81/KYPt3dIV6mjBXEjTEmWqLa8hCRuiKyTERWiEjnTLZ5\n21u/UESqhLNvsO3b3VVUDRtCjx4wdqwlDmOMiZaoJQ8RKQj0B+oCFYFGInJBum3qAeeqanmgJfBe\nqPumUYXPPnN3iBcu7O4Qb9DAXwXxhISEeIcQEoszsnJDnLkhRrA4/SiaLY8awEpVXa2qh4DPgTvS\nbXM7MBRAVWcDJ4rI6SHuC0DduvDKKzBqFLzzDpx4YrRezpHLLf+hLM7Iyg1x5oYYweL0o2gmj1LA\n2qDn67xloWxTMoR9AbjuOjf6bc2aOY7XGGNMiKJZMA91oo0cdTB16pSTvY0xxhyJqE0GJSI1gR6q\nWtd73gUIqGrvoG0GAAmq+rn3fBlQGzg7u3295bl3JitjjIkjP08GNRcoLyJlgfVAQ6BRum1GA48D\nn3vJZoeqbhKRrSHsm+MXb4wx5shELXmoaoqIPA78ABQEBqtqsoi08ta/r6rjRKSeiKwE9gAPZ7Vv\ntGI1xhgTnlw9h7kxxpj48O3wJLG8wTAecYpIaRGZIiJLROQXEWnrtxiD1hUUkfkiMiZaMeY0ThE5\nUURGiEiyiCz1ukH9GGcX73e+WESGi8hR8YpTRM4XkZkisl9E2oezrx/ijOVnKCdxBq2P+ucoh7/z\n8D5Dquq7H1xX1UqgLFAYWABckG6besA47/FlwKxQ9/VJnKcDl3iPiwLLoxFnTmIMWv808Ckw2o+/\nc+/5UKCZ97gQcILf4vT2+Q04ynv+BdAkjnGeClQDXgLah7OvT+KMyWcop3EGrY/q5yinMYb7GfJr\nyyMmNxjGMc4SqrpRVRd4y3cDybj7W3wTI4CInIn7MhxEDi+rjlacInICcJWqfuitS1HVv/0WJ7AT\nOAQcKyKFgGOBP+MVp6puVtW5Xkxh7euHOGP4GcpRnBCzz9ERx3gknyG/Jo+Y3GAYAUca55nBG3hX\nlVUBZkc8wpy9lwBvAB2BQBRiCzWGrLY5E3dp92YRGSIi80TkAxE51mdxllLVbcBrwB+4qwh3qOrE\nOMYZjX3DFZFzRfkzBDmPMxafo5zEGPZnyK/JIyY3GEbAkcb5z34iUhQYATzp/fUUaUcao4jIrcBf\nqjo/g/WRlpP3shBwKfCuql6Ku3LvfxGMLf35QnHY+yUi5wBP4boVSgJFReT+yIX2Hzm5EiaWV9Hk\n+Fwx+AxBDuKM4ecoJ+9l2J8hvyaPP4HSQc9L47JoVtuc6W0Tyr6RcqRx/gkgIoWBr4FPVPUbH8ZY\nC7hdRH4HPgOuFZGPfRjnOmCdqs7xlo/AfRD8Fmc1IFFVt6pqCjAS9x7HK85o7BuuHJ0rRp8hyFmc\nsfoc5STG8D9D0SjcRKDwUwhYhfsLrQjZFyVr8m9RMtt9fRKnAB8Db/j1vUy3TW1gjF/jBKYB53mP\newC9/RYncAnwC3CM9/sfCrSJV5xB2/bgv4VoX32GsogzJp+hnMaZbl3UPkc5jTHcz1BU3/AcvhE3\n466eWAl08Za1AloFbdPfW78QuDSrff0WJ3Alrv9zATDf+6nrpxjTHaM2UbzaKgK/88rAHG/5SKJ0\ntVUE4uwELAEW45JH4XjFibtaaS3wN7AdV4spmtm+foszlp+hnL6fQceI6ucoh7/zsD5DdpOgMcaY\nsPm15mGMMcbHLHkYY4wJmyUPY4wxYbPkYYwxJmyWPIwxxoTNkocxxpiwWfIwviIiZUVkcRSO+5GI\n3JPJ8nUiUsR7fop3J3CGsYhIj7ShrEXkRW/I9QUiMklESqfbdq6IFBGRiA+ZERxHdstFZLWInJTd\nEOYi8qyI/Coiy0VksohUjHTcJu+w5GHyCyXzsX9SgGZhHCdNH1WtrKqXAN8A3dNWiMjZuOEeDmZx\n3pzI7JgZvc6054eAdqp6Ie7O9zYicoEX7+PesotVtQLwCjA6mvONmNzNkofxLREp543wWU1EmorI\nNyLyo4j8LiKPi0gHb/1MESnu7XOJiMzyWgQjReTE4ENmcBoF3gLaiUgon4d/jqGqu4KWFwW2BD2v\nC4xP93pOEZFEEblZROqIyFTvNa0SkV4i8qCI/Cwii0SknLdPWa8VsFBEJqZv3WQX439eaNZDmHcC\nHlfV/d76CUAiEK2BG00uZ8nD+JKIVMANztZE3fwDABcCdwHVgZeBnepGAJ0JPORt8zHQUVUr44YA\n6U72/gCme8dI/1f7Od7sb/NFZD5uqIfgUZFfFpE/gCZAr6D9biIoeYjIacB3QDdV/d5bfLF3vAuA\nB4FzVLUGbs6HJ7xt+gFDvNfzKfB2Nq9FcIkwOObD5rgIHsJcRI4HjlPV1ek2m4t7z405jCUP40en\n4bqBGqtqWs1BgSmqukdVtwA7gLTpPBcDZb0vwRNU9Sdv+VDg6hDOp7humo4c/plYpapV0n6AAfy3\n9dFVVc8CPsLN2YBXPzkz6Mu4CDAJl9QmBR17jqpu8rq2VgI/eMt/wQ1uB64rabj3+BPceE7ZvZbX\n08W8PniDMIYwj/eUB8bHLHkYP9oBrAGuSrf8QNDjQNDzAG5E0fRC/vJT1ZW4AfYahh7mfwzHtYjA\nxT09aN0h3F/xddPtE+rrCfdLPNPtMxrCXFV3Anu8Ok2wqrhEZsxhLHkYPzoI3A08JCKNvGVZfYEK\n/PMluF1E0v46fxBICOF8acd+GegQapAiUj7o6R24UV3BJYlxQesUV5A/X0Q6hXp8TyJwn/f4ftyw\n2cExh0xEBBgMLFXVN9OtfhV4W0SO9ra9HriCf1s9xvxHRn+tGRNvqqp7vRnYJniXuqa/iij947Tn\nTYAB3hSaq4CHM9mH9MtVdamIJOFqAVntk7bsFa82k+qd6zFveW3g2XSvR71EOFpEdgFLs4knbd0T\nwBAR6Qj8FfR6srp6LLOrra4AHgAWebUQgGdU9XtV7edddLBYRFKBDcDtqnoAYzJgQ7IbE0Eicibw\nvqreEu9YjIkmSx7GGGPCZjUPY4wxYbPkYYwxJmyWPIwxxoTNkocxxpiwWfIwxhgTNksexhhjwmbJ\nwxhjTNj+D3ist4aa/CKkAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<matplotlib.figure.Figure at 0x7f4b195450d0>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The height of the tower is 4.91 meters\n"
+ ]
+ }
+ ],
+ "source": [
+ "%matplotlib inline\n",
+ "from matplotlib.pyplot import plot, show, xlabel, ylabel, title\n",
+ "from numpy import arange\n",
+ "y1 = 0.10#\n",
+ "Y1 = 0.10/(1-0.10)#\n",
+ "y2 = 0.001#\n",
+ "Y2 = y2#\n",
+ "mass_flowrate_gas = 0.95# #mass flow rate in kg/m**2.sec\n",
+ "mass_percent_air = (0.9*29/(0.1*17+0.9*29))*100#\n",
+ "mass_flowrate_air = (mass_percent_air*mass_flowrate_gas)##in kg/m**2.sec\n",
+ "Gm = (mass_flowrate_air/29)#\n",
+ "Lm = 0.65/18# #Lm is in kmol/m**2.sec\n",
+ "#A mass balance between a plane in the tower where the compositions are X and Y and the top of the tower gives:\n",
+ "\n",
+ "#Y = 1.173X+0.001\n",
+ "X = arange(0,0.159,0.001)\n",
+ "Y=[]\n",
+ "for x in X:\n",
+ " Y.append(1.173*x+0.001)\n",
+ "plot(X,Y)#\n",
+ "\n",
+ "x=[0.021,0.031,0.042,0.053,0.079,0.106,0.159]\n",
+ "\n",
+ "PG = [12,18.2,24.9, 31.7, 50.0, 69.6, 114.0]\n",
+ "i=0\n",
+ "Y1=[]\n",
+ "while i<7:\n",
+ " Y1.append(PG[(i)]/(760-PG[(i)]))\n",
+ " i=i+1\n",
+ "\n",
+ "plot(x,Y1)#\n",
+ "#xlabel(\"Area under the curve is 3.82m\"%(\"kmolNH3/kmolH2O\"%(\"kmolNH3/kmol air\"\n",
+ "\n",
+ " \n",
+ "title(\"Operating and equilibrium lines\")\n",
+ "xlabel(\"kmol NH3/kmol H2O\")\n",
+ "ylabel(\"kmol NH3/kmol air\")\n",
+ "show()\n",
+ "#If the equilibrium line is assumed to be straight, then:\n",
+ "#Gm(Y2 − Y1) = KGaZdeltaPlm\n",
+ "\n",
+ "#Top driving force\n",
+ "deltaY2 = 0.022#\n",
+ "#Bottom driving force\n",
+ "deltaY1 = 0.001#\n",
+ "deltaYlm = 0.0068#\n",
+ "Z = (0.0307*0.11)/(0.001*0.688)#\n",
+ "print \"The height of the tower is %.2f meters\"%(Z)#"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Page No 708 Example 12.6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Number of theoretical plates = 9\n",
+ "\n",
+ " LHS = 0.98\n",
+ "\n",
+ " 1/A = 1.00\n",
+ "\n",
+ " Gm/Lm = 0.333\n",
+ "\n",
+ " Actual/minimum Gm/Lm = 1.39\n",
+ "\n",
+ " Actual Gm/Lm = 0.656\n",
+ "\n",
+ " 1/A = mGm/Lm = 1.968\n",
+ "\n",
+ " The actual number of plates are : 17.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sympy import symbols, solve, log\n",
+ "print \"\\n Number of theoretical plates = %d\"%((30*0.3))#\n",
+ "\n",
+ "#At the bottom of the tower:\n",
+ "#Flowrate of steam = Gm (kmol/m**22s)\n",
+ "#Mole ratio of pentane in steam = Y1, and\n",
+ "#Mole ratio of pentane in oil = X1\n",
+ "X1 = 0.001#\n",
+ "\n",
+ "#At the top of the tower:\n",
+ "#exit steam composition = Y2\n",
+ "#inlet oil composition = X2\n",
+ "X2 = 0.06#\n",
+ "#flowrate of oil = Lm (kmol/m**2.sec)\n",
+ "\n",
+ "#The minimum steam consumption occurs when the exit steam stream is in equilibrium with the inlet oil, that is when:\n",
+ "#The equilibrium relation for the system may be taken as Ye = 3.0X, where Ye and X are expressed in mole ratios of pentane in the gas and liquid phases respectively.\n",
+ "Ye2 = X2*3#\n",
+ "#Lmin(X2 − X1) = Gmin(Y2 − Y1)\n",
+ "#If Y1 = 0, that is the inlet steam is pentane-free, then:\n",
+ "ratio_min = (X2 - X1)/Ye2#\n",
+ "\n",
+ "\n",
+ "#The operating line may be fixed by trial and error as it passes through the point (0.001, 0), and 9 theoretical plates are required for the separation. Thus it is a matter of selecting the operating line which, with 9 steps, will give X2 = 0.001 when X1 = 0.06. This is tedious but possible, and the problem may be better solved analytically since the equilibrium line is straight.\n",
+ "\n",
+ "#let x = 1/A\n",
+ "#for a stripping operation\n",
+ "LHS = (X2-X1)/(X2)#\n",
+ "print \"\\n LHS = %0.2f\"%(LHS)#\n",
+ "x = symbols('x')\n",
+ "x1 = solve((x**10-x)-LHS*(x**(10)-1),x)[0]\n",
+ "print \"\\n 1/A = %.2f\"%(x1)#\n",
+ "#A = Lm/mGm\n",
+ "print \"\\n Gm/Lm = %.3f\"%(x1/3)#\n",
+ "print \"\\n Actual/minimum Gm/Lm = %.2f\"%(0.457/0.328)#\n",
+ "\n",
+ "#If (actual Gm/Lm)/(min Gm/Lm) = 2,\n",
+ "print \"\\n Actual Gm/Lm = %.3f\"%(.328*2)#\n",
+ "x2 = 3*(0.656)#\n",
+ "print \"\\n 1/A = mGm/Lm = %.3f\"%(3*0.656)#\n",
+ "\n",
+ "#y = (1.968)**(N+1)\n",
+ "y = symbols('y')\n",
+ "y1 = solve(0.983*(y-1)-(y-1.968),y)[0]\n",
+ "N = log(y1)/log(1.968)-1#\n",
+ "print \"\\n The actual number of plates are : %.1f\"%(ceil(N/0.3))#"
+ ]
+ }
+ ],
+ "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/sample_notebooks/SaleemAhmed/Chapter10_1.ipynb b/sample_notebooks/SaleemAhmed/Chapter10_1.ipynb
new file mode 100644
index 00000000..70597c5b
--- /dev/null
+++ b/sample_notebooks/SaleemAhmed/Chapter10_1.ipynb
@@ -0,0 +1,441 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter10 - Optical Fiber Systems"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.1 Page No: 349"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The voltage required to have a pi radian phase change = 4.56 volt\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "r=30.8*10**-12## electro optice coefficient in m/V\n",
+ "L=3*10**-2## length in m\n",
+ "y=1.3*10**-6## wavelength in m\n",
+ "n=2.1#\n",
+ "d=30*10**-6## distance between the electrodes in m\n",
+ "V=(y*d)/((n)**3*r*L)## voltage required to have a pi radian phase change in volt\n",
+ "print \"The voltage required to have a pi radian phase change = %0.2f volt\"%( V)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.2 Page No: 350"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The total channel loss =31 dB\n"
+ ]
+ }
+ ],
+ "source": [
+ "a_fc=4## fider cable loss in dB/km\n",
+ "aj=0.7## splice loss in db/km\n",
+ "L=5## length in km\n",
+ "a_cr1=4## connector losses\n",
+ "a_cr2=3.5## connector losses\n",
+ "CL=(a_fc+aj)*L+(a_cr1+a_cr2)## total channel loss in dB\n",
+ "print \"The total channel loss =%d dB\"%( CL)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.3 Page No: 350"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "with mode coupling, the total rms broadening = 1.73 ns\n",
+ "\n",
+ " The dispersion equalization penalty = 1.84 dB\n",
+ "\n",
+ " without mode coupling, the total rms broadening = 6.00 dB\n",
+ "\n",
+ " without mode coupling, equalization penalty = 0.03 dB\n",
+ "\n",
+ " without mode coupling,dispersion equalization penalty with 125 Mb/s = 83.98 dB\n",
+ "\n",
+ " with mode coupling,dispersion equalization penalty with 125 Mb/s = 0.28 dB\n",
+ "\n",
+ " The answer is wrong in the textbook\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sqrt\n",
+ "p=0.5*10**-9## pulse broadening in s/km\n",
+ "L=12## length in km\n",
+ "Pt=p*sqrt(L)## with mode coupling, the total rms broadening in s\n",
+ "BT=20*10**6##\n",
+ "DL=2*(2*Pt*BT*sqrt(2))**4## dispersion equalization penalty in dB\n",
+ "Pt1=p*L## without mode coupling, the total rms broadening in s\n",
+ "DL1=2*(2*Pt1*BT*sqrt(2))**4## without mode coupling, equalization penalty in dB\n",
+ "DL2=2*(2*Pt1*150*10**6*sqrt(2))**4## without mode coupling,dispersion equalization penalty with 125 Mb/s\n",
+ "DL3=2*(2*Pt*125*10**6*sqrt(2))**4## with mode coupling,dispersion equalization penalty with 125 Mb/s\n",
+ "print \"with mode coupling, the total rms broadening = %0.2f ns\"%( Pt*10**9)#\n",
+ "print \"\\n The dispersion equalization penalty = %0.2f dB\"%( DL*10**4)#\n",
+ "print \"\\n without mode coupling, the total rms broadening = %0.2f dB\"%( Pt1*10**9)#\n",
+ "print \"\\n without mode coupling, equalization penalty = %0.2f dB\"%( DL1)#\n",
+ "print \"\\n without mode coupling,dispersion equalization penalty with 125 Mb/s = %0.2f dB\"%( DL2)#\n",
+ "print \"\\n with mode coupling,dispersion equalization penalty with 125 Mb/s = %0.2f dB\"%( DL3)#\n",
+ "print \"\\n The answer is wrong in the textbook\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.4 Page No: 351"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The length when system operating at 25 Mbps = 78.89 km\n",
+ "\n",
+ " The length when system operating at 350 Mbps = 56.67 km\n"
+ ]
+ }
+ ],
+ "source": [
+ "Pi=-2.5## mean optical power launched into the fiber in dBm\n",
+ "Po=-45## mean output optical power available at the receiver in dBm\n",
+ "a_fc=0.35## fider cable loss in dB/km\n",
+ "aj=0.1## splice loss in db/km\n",
+ "a_cr=1## connector losses\n",
+ "Ma=6## safety margin in dB\n",
+ "L=(Pi-Po-a_cr-Ma)/(a_fc+aj)## length in km when system operating at 25 Mbps\n",
+ "Po1=-35## mean output optical power available at the receiver in dBm\n",
+ "L1=(Pi-Po1-a_cr-Ma)/(a_fc+aj)## length in km when system operating at 350 Mbps\n",
+ "print \"The length when system operating at 25 Mbps = %0.2f km\"%( L)#\n",
+ "print \"\\n The length when system operating at 350 Mbps = %0.2f km\"%( L1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.5 Page No: 351"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The fider loss = 20.00 dB\n",
+ "\n",
+ " The total splicing loss = 3.20 dB\n",
+ "\n",
+ " The fangle effects & future splice = 5.00 dB\n",
+ "\n",
+ " The total attenuation = 29.20 dB\n",
+ "\n",
+ " The excess power margin = 2.80 dB\n",
+ "\n",
+ " hence the system can operate with small excess power margin\n"
+ ]
+ }
+ ],
+ "source": [
+ "Tx=-80## transmitter output in dBm\n",
+ "Rx=-40## receiver sensitivity in dBm\n",
+ "sm=32## system margin in dB\n",
+ "L=10## in km\n",
+ "fl=2*L## fider loss in dB\n",
+ "cl=1## detector coupling loss in dB\n",
+ "tl=0.4*8## total splicing loss in dB\n",
+ "ae=5## angle effects & future splice in dB\n",
+ "ta=29.2## total attenuation in dB\n",
+ "Ep=2.8## excess power margin in dB\n",
+ "print \"The fider loss = %0.2f dB\"%( fl)#\n",
+ "print \"\\n The total splicing loss = %0.2f dB\"%( tl)#\n",
+ "print \"\\n The fangle effects & future splice = %0.2f dB\"%( ae)#\n",
+ "print \"\\n The total attenuation = %0.2f dB\"%( ta)#\n",
+ "print \"\\n The excess power margin = %0.2f dB\"%( Ep)#\n",
+ "print \"\\n hence the system can operate with small excess power margin\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.6 Page No: 352"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The max transmission length when transmission star coupler is used = 1.99 km\n",
+ "\n",
+ " The max transmission length when reflection star coupler is used = 1.24 km\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import log\n",
+ "Lc=1## connector loss in db\n",
+ "Ls=5## star coupler insertion loss in dB\n",
+ "af=2## fider loss in dB\n",
+ "Ps=-14## transmitted power in dBm\n",
+ "Pr=-49## receiver sensitivity in dBm\n",
+ "sm=6## system margin in dB\n",
+ "N=16#\n",
+ "L=(Ps-Pr-Ls-4*Lc-(10*log(N))/log(10)-sm)/(2*af)## max transmission length in km when transmission star coupler is used\n",
+ "N1=32#\n",
+ "L1=(Ps-Pr-Ls-4*Lc-(10*log(N1))/log(10)-sm)/(2*af)## max transmission length in km when reflection star coupler is used\n",
+ "print \"The max transmission length when transmission star coupler is used = %0.2f km\"%( L)#\n",
+ "print \"\\n The max transmission length when reflection star coupler is used = %0.2f km\"%( L1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.7 Page No: 353"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The system rise time = 18.51 ns\n",
+ "\n",
+ " The max bit rate for NRZ coding = 37.81 Mbit/s\n",
+ "\n",
+ " The max bit rate for RZ coding = 18.90 Mbit/s\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sqrt\n",
+ "y=860*10**-9## wavelength in m\n",
+ "L=5000## length in m\n",
+ "X=0.024#\n",
+ "dy=20*10**-9## spectral width in m\n",
+ "dts=6*10**-9## silica optical link rise time in s\n",
+ "dtr=8*10**-9## detector rise in s\n",
+ "c=3*10**8## speed of light in m/s\n",
+ "dtm=-(L*dy*X)/(c*y)## material dispersion delay time in s\n",
+ "id=2.5*10**-12## intermodel dispersion in s/m\n",
+ "dti=id*L## intermodel dispersion delay time\n",
+ "dtsy=sqrt((dts**2)+(dtr**2)+(dtm**2)+(dti**2))## system rise time in s\n",
+ "Br_max=0.7/dtsy## max bit rate for NRZ coding in bit/s\n",
+ "Br_max1=0.35/dtsy## max bit rate for RZ coding in bit/s\n",
+ "print \"The system rise time = %0.2f ns\"%( dtsy*10**9)#\n",
+ "print \"\\n The max bit rate for NRZ coding = %0.2f Mbit/s\"%( Br_max/10**6)#\n",
+ "print \"\\n The max bit rate for RZ coding = %0.2f Mbit/s\"%( Br_max1/10**6)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.8 Page No: 353"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The transmission distance for Si fiber = 71.43 m\n",
+ "\n",
+ " The transmission distance for GRIN fiber = 420.00 m\n"
+ ]
+ }
+ ],
+ "source": [
+ "Br=50*10**6## data rate in b/s\n",
+ "c=3*10**8## speed of light in m/s\n",
+ "n1=1.47## \n",
+ "dl=0.02## \n",
+ "n12=n1*dl## the difference b/w n1 and n2\n",
+ "L_si=(0.35*c)/(n12*Br)## transmission distance for Si fiber\n",
+ "L_GI=(2.8*c*n1**2)/(2*n1*n12*Br)## transmission distance for GRIN fiber\n",
+ "print \"The transmission distance for Si fiber = %0.2f m\"%( L_si)#\n",
+ "print \"\\n The transmission distance for GRIN fiber = %0.2f m\"%( L_GI)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.9 Page No: 353"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The material dispersion limited transmission distance =627 m\n"
+ ]
+ }
+ ],
+ "source": [
+ "Br=20.0*10**6## data rate in b/s\n",
+ "c=3*10**8## speed of light in m/s\n",
+ "y=86*10**-9## wavelength in m\n",
+ "dy=30*10**-9## spectral width in m\n",
+ "X=0.024#\n",
+ "Tb=1/Br#\n",
+ "Lmax=(0.35*Tb*c*y)/(dy*X)## material dispersion limited transmission distance for RZ coding in m\n",
+ "print \"The material dispersion limited transmission distance =%d m\"%( Lmax)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Ex:10.10 Page No: 354"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The material dispersion limited distance = 12.54*10**10*1/Br m\n",
+ "\n",
+ " The model dispersion limited distance = 2.10*10**10*1/Br m\n",
+ "\n",
+ " The attenuation limited distance =60-20log(Br) km\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import division\n",
+ "y=860*10**-9## wavelength in m\n",
+ "c=3*10**8## speed of light in m/s\n",
+ "n1=1.47## \n",
+ "dl=0.02## \n",
+ "n12=n1*dl## the difference b/w n1 and n2\n",
+ "La=1/1000## loss a in dB/m\n",
+ "Pr=-65## receiver power in dB\n",
+ "Pt=-5## transmitted power in dB\n",
+ "dy=30*10**-9## line width in m\n",
+ "X=0.024#\n",
+ "Lmax=(0.35*c*y)/(dy*X)## material dispersion limited distance for RZ coding in m\n",
+ "L_GI=(1.4*c*n1)/(n12)## model dispersion limited distance for RZ coding in m\n",
+ "L_At=(Pt-Pr)/(La)## attenuation limited distance for RZ coding in m \n",
+ "print \"The material dispersion limited distance = %0.2f*10**10*1/Br m\"%( Lmax/10**10)#\n",
+ "print \"\\n The model dispersion limited distance = %0.2f*10**10*1/Br m\"%( L_GI/10**10)#\n",
+ "print \"\\n The attenuation limited distance =%d-20log(Br) km\"%( L_At/10**3)"
+ ]
+ }
+ ],
+ "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/sample_notebooks/VivekMaindola/chap3.ipynb b/sample_notebooks/VivekMaindola/chap3.ipynb
new file mode 100644
index 00000000..299b3f5a
--- /dev/null
+++ b/sample_notebooks/VivekMaindola/chap3.ipynb
@@ -0,0 +1,617 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter No.3 : The cellular concept system design fundamentals"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.1 Page No.61"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " The number of channels available per cell for 4-cell reuse system = 165 channels\n",
+ "\n",
+ " One control channel and 160 voice channels would be assigned to each cell.\n",
+ "\n",
+ " \n",
+ " The number of channels available per cell for 7-cell reuse system = 95 channels\n",
+ "\n",
+ " Each cell would have one control channel, four cells would have 90 voice channels and three cells would have 91 voice channels.\n",
+ "\n",
+ " \n",
+ " The number of channels available per cell for 12-cell reuse system = 55 channels\n",
+ "\n",
+ " Each cell would have one control channel, eight cells would have 53 voice channels and four cells would have 54 voice channels.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import ceil\n",
+ "# To compute the number of channels available per cell for a)four-cell reuse system a)seven-cell reuse system a)12-cell reuse system\n",
+ "\n",
+ "# Given data\n",
+ "B=33*10**6# # Total bandwidth allocated to particular FDD system in Hz\n",
+ "Bc=25*10**3# # Bandwidth per channel in Hz\n",
+ "Nc=2# # Number of simplex channels\n",
+ "Bc=Bc*Nc# # Channel bandwidth in Hz\n",
+ "\n",
+ "Ntotal=B/Bc# # Total number of channels\n",
+ "\n",
+ "#a) To compute the number of channels available per cell for four-cell reuse system\n",
+ "N=4# # frequency reuse factor\n",
+ "chpercell=Ntotal/N# # number of channels available per cell for four-cell reuse system\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n The number of channels available per cell for 4-cell reuse system = %0.0f channels\"%(chpercell)\n",
+ "print \"\\n One control channel and 160 voice channels would be assigned to each cell.\"\n",
+ "\n",
+ "# b) To compute the number of channels available per cell for seven-cell reuse system\n",
+ "N=7# # frequency reuse factor\n",
+ "chpercell=ceil(Ntotal/N)# # number of channels available per cell for seven-cell reuse system\n",
+ "\n",
+ "# Answer is varrying due to round-off error\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n The number of channels available per cell for 7-cell reuse system = %0.0f channels\"%(chpercell)\n",
+ "print \"\\n Each cell would have one control channel, four cells would have 90 voice channels and three cells would have 91 voice channels.\"\n",
+ "\n",
+ "# c) To compute the number of channels available per cell for 12-cell reuse system\n",
+ "N=12# # frequency reuse factor\n",
+ "chpercell=Ntotal/N# # number of channels available per cell for seven-cell reuse system\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n The number of channels available per cell for 12-cell reuse system = %0.0f channels\"%(chpercell)\n",
+ "print \"\\n Each cell would have one control channel, eight cells would have 53 voice channels and four cells would have 54 voice channels.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.2 Page No.72"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Signal to noise ratio for n=4 with frequency reuse factor N=7 = 18.66 dB\n",
+ "\n",
+ " Signal to noise ratio for n=3 with frequency reuse factor N=7 = 12.05 dB\n",
+ "\n",
+ " Signal to noise ratio for n=3 with frequency reuse factor N=12 = 15.56 dB\n",
+ "\n",
+ " Since SIR is for n=3 with frequency reuse factor N=7 greater than the minimum required, so N=12 is used.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import sqrt, log10\n",
+ "from __future__ import division\n",
+ "# To find frequency reuse factor for path loss exponent (n) a)n=4 b)n=3\n",
+ "\n",
+ "# Given data\n",
+ "SIdB=15# # Signal to interference(dB)\n",
+ "io=6# # Number of cochannel cell\n",
+ "\n",
+ "# For n=4\n",
+ "n1=4# # Path loss exponent\n",
+ "N1=7# # First consideration: frequency reuse factor N=7\n",
+ "DR1=sqrt(3*N1)# # Co-channel reuse ratio\n",
+ "si1=(1/io)*(DR1)**n1# # Signal to interference\n",
+ "sidB1=10*log10(si1)# # Signal to interference(dB)\n",
+ "\n",
+ "# For n=3\n",
+ "n2=3# # Path loss exmponent\n",
+ "si=(1/io)*(DR1)**n2# # Signal to interference for first consideration: frequency reuse factor N=7\n",
+ "sidB=10*log10(si)# # Signal to interference(dB)\n",
+ "\n",
+ "N2=12# # second consideration : frequency reuse factor N=12 since sidB<SIdB \n",
+ "DR2=sqrt(3*N2)# # Co-channel reuse ratio\n",
+ "si2=(1/io)*(DR2)**n2# # Signal to interference\n",
+ "sidB2=10*log10(si2)# # Signal to interference(dB)\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n Signal to noise ratio for n=4 with frequency reuse factor N=7 = %0.2f dB\"%(sidB1)\n",
+ "print \"\\n Signal to noise ratio for n=3 with frequency reuse factor N=7 = %0.2f dB\"%(sidB)\n",
+ "print \"\\n Signal to noise ratio for n=3 with frequency reuse factor N=12 = %0.2f dB\"%(sidB2)\n",
+ "print \"\\n Since SIR is for n=3 with frequency reuse factor N=7 greater than the minimum required, so N=12 is used.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.4 Page No.80"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Total number of users for 1 channel = 1\n",
+ "\n",
+ " Total number of users for 5 channel = 11\n",
+ "\n",
+ " Total number of users for 10 channel = 40\n",
+ "\n",
+ " Total number of users for 20 channel = 111\n",
+ "\n",
+ " Total number of users for 100 channel = 809\n"
+ ]
+ }
+ ],
+ "source": [
+ "# To find number of users for Number of channels (C) a)C=1 b)C=5 c)C=10 d)C=20 e)C=100\n",
+ "\n",
+ "# Given data\n",
+ "GOS=0.005# #G rade of Service\n",
+ "Au=0.1# # Traffic intensity per user\n",
+ "\n",
+ "# a)To find number of users for C=1\n",
+ "C1=1# # Number of channels\n",
+ "A1=0.005# # Total traffic intensity from Erlangs B chart\n",
+ "U1=(A1/Au)# # Number of users\n",
+ "U1=1# # Since one user could be supported on one channel\n",
+ "\n",
+ "# b)To find number of users for C=5\n",
+ "C2=5# # Number of channels\n",
+ "A2=1.13# # Total traffic intensity from Erlangs B chart\n",
+ "U2=round(A2/Au)# # Number of users\n",
+ "\n",
+ "# c)To find number of users for C=10\n",
+ "C3=10# # Number of channels\n",
+ "A3=3.96# # Total traffic intensity from Erlangs B chart\n",
+ "U3=round(A3/Au)# # Number of users\n",
+ "\n",
+ "# Answer is varrying due to round off error\n",
+ "\n",
+ "# d)To find number of users for C=20\n",
+ "C4=20# # Number of channels\n",
+ "A4=11.10# # Total traffic intensity from Erlangs B chart\n",
+ "U4=round(A4/Au)# # Number of users\n",
+ "\n",
+ "# Answer is varrying due to round off error\n",
+ "\n",
+ "# e)To find number of users for C=100\n",
+ "C5=100# # Number of channels\n",
+ "A5=80.9# # Total traffic intensity from Erlangs B chart\n",
+ "U5=round(A5/Au)# # Number of users\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n Total number of users for 1 channel = %0.0f\"%(U1)\n",
+ "print \"\\n Total number of users for 5 channel = %0.0f\"%(U2)\n",
+ "print \"\\n Total number of users for 10 channel = %0.0f\"%(U3)\n",
+ "print \"\\n Total number of users for 20 channel = %0.0f\"%(U4)\n",
+ "print \"\\n Total number of users for 100 channel = %0.0f\"%(U5)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.5 Page No.83"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Total number of users in system A = 47280\n",
+ "\n",
+ " The percentage market penetration of system A = 2.36\n",
+ "\n",
+ " \n",
+ " Total number of users in system B = 44100\n",
+ "\n",
+ " The percentage market penetration of system B = 2.205\n",
+ "\n",
+ " \n",
+ " Total number of users in system C = 43120\n",
+ "\n",
+ " The percentage market penetration of system C = 2.156\n",
+ "\n",
+ " \n",
+ " Total number of users in all 3 systems = 134500\n",
+ "\n",
+ " The combined Market penetration percentage of all systems = 6.725\n"
+ ]
+ }
+ ],
+ "source": [
+ "# To find number of users for a)system A b)system B c)system C\n",
+ "\n",
+ "# Given data\n",
+ "GOS=0.02# # Grade of Service (Probability of bloacking)\n",
+ "lamda=2# # Average calls per hour\n",
+ "H=(3/60)# # Call duration in seconds\n",
+ "\n",
+ "Au=lamda*H# # Traffic intensity per user\n",
+ "\n",
+ "# a)To find number of users for System A\n",
+ "C1=19# # Number of channels used\n",
+ "A1=12# # Traffic intensity from Erlang B chart\n",
+ "U1=round(A1/Au)# # Number of users per cell\n",
+ "cells1=394\n",
+ "TU1=U1*cells1# # Total number of users\n",
+ "MP1=TU1/(2*10**6)*100# # Market penetration percentage\n",
+ "\n",
+ "# b)To find number of users for System B\n",
+ "C2=57# # No. of channels used\n",
+ "A2=45# # Traffic intensity from Erlang B chart\n",
+ "U2=round(A2/Au)# # Number of users per cell\n",
+ "cells2=98\n",
+ "TU2=U2*cells2# # Total no. of users\n",
+ "MP2=TU2/(2*10**6)*100# # Market penetration percentage\n",
+ "\n",
+ "# c)To find number of users for System C\n",
+ "C3=100# # Number of channels used\n",
+ "A3=88# # traffic intensity from Erlang B chart\n",
+ "U3=round(A3/Au)# # Number of users per cell\n",
+ "cells3=49\n",
+ "TU3=U3*cells3# # Total no. of users\n",
+ "MP3=TU3/(2*10**6)*100# # Market penetration percentage\n",
+ "\n",
+ "TU=TU1+TU2+TU3# # Total number of users in all 3 systems\n",
+ "MP=TU/(2*10**6)*100# # Combined Market penetration percentage\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n Total number of users in system A = %0.0f\"%(TU1)\n",
+ "print \"\\n The percentage market penetration of system A = %0.2f\"%(MP1)\n",
+ "print \"\\n \\n Total number of users in system B = %0.0f\"%(TU2)\n",
+ "print \"\\n The percentage market penetration of system B = %0.3f\"%(MP2)\n",
+ "print \"\\n \\n Total number of users in system C = %0.0f\"%(TU3)\n",
+ "print \"\\n The percentage market penetration of system C = %0.3f\"%(MP3)\n",
+ "print \"\\n \\n Total number of users in all 3 systems = %0.0f\"%(TU)\n",
+ "print \"\\n The combined Market penetration percentage of all systems = %0.3f\"%(MP)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.6 Page No.84"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Number of cells in given system = 31 cells\n",
+ "\n",
+ " \n",
+ " Number of channels per cell in given system = 95 channels/cell\n",
+ "\n",
+ " \n",
+ " Traffic intensity in given system = 84 Erlangs/cell\n",
+ "\n",
+ " \n",
+ " Maximum carried traffic in given system = 2604 Erlangs\n",
+ "\n",
+ " \n",
+ " Total number of users = 86800 users\n",
+ "\n",
+ " \n",
+ " Number of mobiles per unique channel = 130 mobiles/channel\n",
+ "\n",
+ " \n",
+ " Theoretically maximum number of served mobiles is the number of available channels in the system.\n",
+ "\n",
+ " Theoretical Maximum number of users could be served at one time = 2945 users\n",
+ "It is 3.4% of customer base.\n"
+ ]
+ }
+ ],
+ "source": [
+ "# To find a)Number of cells in given area b)Number of channels/cell c)Traffic intensity per cell d)Maximum carried traffic e)Total number of users for 2% GOS f) Number of mobiles per unique channel g)Maximum number of users could be served at one time\n",
+ "\n",
+ "# Given data\n",
+ "Area=1300# # Total coverage area in m**2\n",
+ "R=4# # Radius of cell in m\n",
+ "N=7# # Frequecy reuse factor\n",
+ "S=40*10**6# # Allocated spectrum in Hz\n",
+ "Ch=60*10**3# # Channel width in Hz\n",
+ "\n",
+ "# a)Number of cells\n",
+ "CA=2.5981*R**2# # Area of hexagonal cell in m**2\n",
+ "Nc=round(Area/CA)# # Number of cells\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n Number of cells in given system = %0.0f cells\"%(Nc)\n",
+ "\n",
+ "# b)Number of channels/cell\n",
+ "C1=round(S/(Ch*N))# # Number of channels\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n Number of channels per cell in given system = %0.0f channels/cell\"%(C1)\n",
+ "\n",
+ "# c) Traffic intensity per cell\n",
+ "C1=95# # Number of channels from b)\n",
+ "GOS=0.02# # Grade of service\n",
+ "A=84# # Traffic intensity from Erlang B chart\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n Traffic intensity in given system = %0.0f Erlangs/cell\"%(A)\n",
+ "\n",
+ "# d)Maximum carried traffic\n",
+ "traffic=Nc*A# # Maximum carried traffic\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n Maximum carried traffic in given system = %0.0f Erlangs\"%(traffic)\n",
+ "\n",
+ "# e)Total number of users for 2% GOS \n",
+ "trafficperuser=0.03# # Given traffic per user\n",
+ "U=traffic/trafficperuser# # Total number of users\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n Total number of users = %0.0f users\"%(U)\n",
+ "\n",
+ "# f) Number of mobiles per unique channel\n",
+ "C=666# # Number of channels\n",
+ "mobilesperchannel=round(U/C)# # Number of mobiles per unique channel\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n Number of mobiles per unique channel = %0.0f mobiles/channel\"%(mobilesperchannel)\n",
+ "\n",
+ "# g)Maximum number of users could be served at one time\n",
+ "print \"\\n \\n Theoretically maximum number of served mobiles is the number of available channels in the system.\"\n",
+ "C=C1*Nc# # Maximum number of users could be served at one time\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n Theoretical Maximum number of users could be served at one time = %0.0f users\"%(C)\n",
+ "print \"It is 3.4% of customer base.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.7 Page 85"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Number of users per square km in given system = 62 users/sq km\n",
+ "\n",
+ " \n",
+ " Percentage of probability that delayed call have to wait longer than t=10 sec = 56.29 percent\n",
+ "\n",
+ " \n",
+ " Percentage of probability that call is delayed more than 10 sec = 2.81 percent\n"
+ ]
+ }
+ ],
+ "source": [
+ "from math import exp\n",
+ "# To find a)number of users per square km b)probability that delayed call have to wait longer than t=10sec c)probability that call is delayed more than 10 sec\n",
+ "\n",
+ "# Given data\n",
+ "R=1.387# # Radius of cell in m\n",
+ "Area=2.598*R**2# # Area of hexagonal cell in m**2\n",
+ "cellpercluster=4# # Number of cells/cluster\n",
+ "channels=60# # Number of channels\n",
+ "\n",
+ "channelspercell=channels/cellpercluster# # Number of channels per cell\n",
+ "\n",
+ "# a)To find number of users per square km\n",
+ "A=0.029# # Traffic intensity per user\n",
+ "delayprob=0.05# # Grade of service\n",
+ "traffic=9# # Traffic intensity from Erlang chart C\n",
+ "U1=traffic/A# # Total number of users in 5sq.km.\n",
+ "U=round(U1/Area)# # Number of users per square km\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n Number of users per square km in given system = %0.0f users/sq km\"%(U)\n",
+ "\n",
+ "# b)To find the probability that delayed call have to wait longer than t=10sec\n",
+ "lamda=1# # Holding time\n",
+ "H1=A/lamda# # Duration of call\n",
+ "H=H1*3600# # Duration of call in second\n",
+ "t=10\n",
+ "Pr=exp(-(channelspercell-traffic)*t/H)*100# # probability that delayed call have to wait longer than t=10sec.\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n Percentage of probability that delayed call have to wait longer than t=10 sec = %0.2f percent\"%(Pr)\n",
+ "\n",
+ "# c)To find the probability that call is delayed more than 10 sec\n",
+ "Pr10=delayprob*Pr# # probability that call is delayed more than 10 sec\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n \\n Percentage of probability that call is delayed more than 10 sec = %0.2f percent\"%(Pr10)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.8 Page 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Number of channels without use of microcell = 300 channels\n",
+ "\n",
+ " \n",
+ " Number of channels with the use of lettered microcells = 660 channels\n",
+ "\n",
+ " \n",
+ " Number of channels if all base stations are replaced by microcells = 1020 channels\n"
+ ]
+ }
+ ],
+ "source": [
+ "# To find number of channels in 3 km by 3 km square centered around A in Figure 3.9 for a)without use of microcell b)with the use of lettered microcells c)all base stations are replaced by microcells\n",
+ "\n",
+ "# Given data\n",
+ "R=1# # Cell radius in km\n",
+ "r=0.5# # Micro-cell radius in km\n",
+ "Nc=60# # Number of channels in base station\n",
+ "\n",
+ "# a)To find number of channels without use of microcell\n",
+ "Nb1=5# # Number of base stations in given area\n",
+ "N1=Nb1*Nc# # Number of channels without use of microcell\n",
+ "\n",
+ "# b)To find number of channels with the use of lettered microcells\n",
+ "Nb2=6# # Number of lettered microcells\n",
+ "Nb2=Nb1+Nb2# # Total number of base stations in given area\n",
+ "N2=Nb2*Nc# # Number of channels with the use of lettered microcells\n",
+ "\n",
+ "# c)To find number of channels if all base stations are replaced by microcells\n",
+ "Nb3=12# # Number of all the microcells\n",
+ "Nb3=Nb1+Nb3# # Total number of base stations in given area\n",
+ "N3=Nb3*Nc# # Number of channels if all base stations are replaced by microcells\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n Number of channels without use of microcell = %0.0f channels\"%(N1)\n",
+ "print \"\\n \\n Number of channels with the use of lettered microcells = %0.0f channels\"%(N2)\n",
+ "print \"\\n \\n Number of channels if all base stations are replaced by microcells = %0.0f channels\"%(N3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 3.9 Page 92"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " Cell capacity of unsectored system = 1326 calls/hour\n",
+ "\n",
+ " \n",
+ " Cell capacity of 120 degree sectored system = 1008 calls/hour\n",
+ "\n",
+ " \n",
+ " Decrease in cell capacity in 120 degree sectored system = 24 percent\n"
+ ]
+ }
+ ],
+ "source": [
+ "# To analyze trunking efficiency capacity of sectoring and unsectoring\n",
+ "\n",
+ "# Given data\n",
+ "H=2/60# # Average call duration in hour\n",
+ "GOS=0.01# # Probability of blocking\n",
+ "\n",
+ "# Unsectored system\n",
+ "C1=57# # Number of traffic channels per cell in unsectored system\n",
+ "A=44.2# # Carried traffic in unsectored system\n",
+ "calls1=1326# # Number of calls per hour in unsectored system from Erlangs B table\n",
+ "\n",
+ "# 120 degree sectored system\n",
+ "C2=C1/3# # Number of traffic channels per antenna sector in 120 degree sectored system\n",
+ "calls2=336# # Number of calls per hour in 120 degree sectored system from Erlangs B table\n",
+ "Ns1=3# # Number of sectors\n",
+ "capacity=Ns1*calls2# # Cell capacity or number of calls handled by system per hour\n",
+ "\n",
+ "dif=calls1-capacity# # decrease in cell capacity in 120 degree sectored system\n",
+ "percentdif=(dif/calls1)*100# # decrease in cell capacity in 120 degree sectored system in percentage\n",
+ "\n",
+ "# Displaying the result in command window\n",
+ "print \"\\n Cell capacity of unsectored system = %0.0f calls/hour\"%(calls1)\n",
+ "print \"\\n \\n Cell capacity of 120 degree sectored system = %0.0f calls/hour\"%(capacity)\n",
+ "print \"\\n \\n Decrease in cell capacity in 120 degree sectored system = %0.0f percent\"%(percentdif)"
+ ]
+ }
+ ],
+ "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
+}