Chapter 12 : Unsymmetrical Faults

Example 12.1, Page No 308

In [1]:
import math
#initialisation of variables
P = 20e6
V = 13.8e3
P_b = 20e6
V_b = 13.8e3
Z1 = complex(0.25)
Z2 = complex(0.35)
Z0 = complex(0.10)
a = 1 * complex(math.cos(120*math.pi / 180),math.sin(120 * math.pi / 180))

#Calculations
Ea = V / V_b
Ia1 = Ea / (Z0 + Z1 + Z2)
Ia2 = Ia1
Ia0 = Ia1
Ia = 3 * Ia1
I_b = P / (math.sqrt(3) * V)
Ia_1 = Ia * I_b
print(" Base Current = %f A" %I_b)
print(" Subtransient current in line a = -j%.0f A " %abs(Ia_1.imag))
#Symmetrical Components of voltage from point a to ground
Va1 = Ea - Ia1 * Z1
Va2 = -Ia2 * Z2
Va0 = -Ia0 * Z0
print('Symmetrical Components of voltage from point a to ground')
print( "Va1= {0:.5f}+{1:.5f}i per unit".format(Va1.real, Va1.imag))
print( "Va2= {0:.5f}+{1:.5f}i per unit".format(Va2.real, Va2.imag))
print( "Va0= {0:.5f}+{1:.5f}i per unit".format(Va0.real, Va0.imag))

#Line to ground voltages
Va = Va0 + Va1 + Va2
Vb = Va0 + Va1 * a**2 + Va2 * a
Vc = Va0 + Va2 * a**2 + Va1 * a

#Results
print('Line to ground voltages')
print( "Va = {0:.2f}".format(abs(Va.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Va.imag,Va.real))))
print( "Vb = {0:.2f}".format(abs(Vb.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vb.imag,Vb.real))))
print( "Vc = {0:.2f}".format(abs(Vc.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vc.imag,Vc.real))))

#Line to line voltages in per-unit are
Vab = Va - Vb
Vbc = Vb - Vc
Vca = Vc - Va
print('Line to line voltages in per-unit are')
print( "Vab = {0:.2f}".format(abs(Vab.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vab.imag,Vab.real))))
print( "Vbc = {0:.2f}".format(abs(Vbc.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vbc.imag,Vbc.real))))
print( "Vca = {0:.2f}".format(abs(Vca.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vca.imag,Vca.real))))
#Line to line voltages in volts
Vab_1 = Vab * V / math.sqrt(3)
Vbc_1 = Vbc * V / math.sqrt(3)
Vca_1 = Vca * V / math.sqrt(3)
print('Line to line voltages in volts')
print( "Vab = {0:.2f}".format(abs(Vab_1.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vab_1.imag,Vab_1.real))))
print( "Vbc = {0:.2f}".format(abs(Vbc_1.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vbc_1.imag,Vbc_1.real))))
print( "Vca = {0:.2f}".format(abs(Vca_1.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vca_1.imag,Vca_1.real))))
 Base Current = 836.739521 A
 Subtransient current in line a = -j0 A 
Symmetrical Components of voltage from point a to ground
Va1= 0.64286+0.00000i per unit
Va2= -0.50000+-0.00000i per unit
Va0= -0.14286+-0.00000i per unit
Line to ground voltages
Va = 0.00
Angle = 180.00 per unit 
Vb = 0.21
Angle = -102.22 per unit 
Vc = 0.21
Angle = 102.22 per unit 
Line to line voltages in per-unit are
Vab = 0.21
Angle = 77.78 per unit 
Vbc = 0.00
Angle = -90.00 per unit 
Vca = 0.21
Angle = 102.22 per unit 
Line to line voltages in volts
Vab = 1707.31
Angle = 77.78 per unit 
Vbc = 0.00
Angle = -90.00 per unit 
Vca = 1707.31
Angle = 102.22 per unit 

Example 12.2, Page No 311

In [2]:
import math
#initialisation of variables
P = 20e6
V = 13.8e3
P_b = 20e6
V_b = 13.8e3
Z1 = complex(0.25)
Z2 = complex(0.35)
Z0 = complex(0.10)
a = 1 * complex(math.cos(120 * math.pi / 180),math.sin(120 * math.pi / 180))
#Calculations
Ea = V / V_b
Ia1 = Ea / (Z1 + Z2)
Ia2 = - Ia1
Ia0 = 0
Ia = Ia1 + Ia2 + Ia0
Ib = a**2 * Ia1 + a*Ia2 + Ia0
Ic = -Ib
I_b = P / (math.sqrt(3) * V)
print( "Base Current = {0:.2f}+{1:.2f}i A".format(I_b.real, I_b.imag))
Ia_1 = Ia * I_b
Ib_1 = Ib * I_b
Ic_1 = Ic * I_b
print(" Subtransient current in line a = {0:.2f}+{1:.2f}i A".format(Ia_1.real, Ia_1.imag))
print( "Subtransient current in line b = {0:.2f}".format(abs(Ib_1.real)))
print("Angle = %.2f A " %(math.degrees(math.atan2(Ib_1.imag,Ib_1.real))))
print( "Subtransient current in line c =  = {0:.2f}".format(abs(Ic_1.real)))
print("Angle = %.2f A " %(math.degrees(math.atan2(Ic_1.imag,Ic_1.real))))

##Symmetrical Components of voltage from point a to ground
Va1 = Ea - Ia1 * Z1
Va2 = Va1
Va0 = 0
print('Symmetrical Components of voltage from point a to ground')
print( "Va1= {0:.5f}+{1:.5f}i per unit".format(Va1.real, Va1.imag))
print( "Va2= {0:.5f}+{1:.5f}i per unit".format(Va2.real, Va2.imag))
print( "Va0= {0:.5f}+{1:.5f}i per unit".format(Va0.real, Va0.imag))

#Line to ground voltages
Va = Va0 + Va1 + Va2
Vb = Va0 + Va1 * a**2 + Va2 * a
Vc = Vb
print('Line to ground voltages')
print( "Va = {0:.2f}".format(abs(Va.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Va.imag,Va.real))))
print( "Vb= {0:.5f}+{1:.5f}i per unit".format(Vb.real, Vb.imag))

#Line to line voltages in per-unit are
Vab = Va - Vb
Vbc = Vb - Vc
Vca = Vc - Va

#Results
print('Line to line voltages in per-unit are')
print( "Vab = {0:.2f}".format(abs(Vab.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vab.imag,Vab.real))))
print( "Vbc= {0:.5f}+{1:.5f}i per unit".format(Vbc.real, Vbc.imag))
print( "Vca = {0:.2f}".format(abs(Vca.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vca.imag,Vca.real))))

#Line to line voltages in volts
Vab_1 = Vab * V / math.sqrt(3)
Vbc_1 = Vbc * V / math.sqrt(3)
Vca_1 = Vca * V / math.sqrt(3)
print('Line to line voltages in volts')
print( "Vab = {0:.2f}".format(abs(Vab_1.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vab_1.imag,Vab_1.real))))
print( "Vbc= {0:.5f}+{1:.5f}i per unit".format(Vbc_1.real, Vbc_1.imag))
print( "Vca = {0:.2f}".format(abs(Vca_1.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vca_1.imag,Vca_1.real))))
Base Current = 836.74+0.00i A
 Subtransient current in line a = 0.00+0.00i A
Subtransient current in line b = 0.00
Angle = -90.00 A 
Subtransient current in line c =  = 0.00
Angle = 90.00 A 
Symmetrical Components of voltage from point a to ground
Va1= 0.58333+0.00000i per unit
Va2= 0.58333+0.00000i per unit
Va0= 0.00000+0.00000i per unit
Line to ground voltages
Va = 1.17
Angle = 0.00 per unit 
Vb= -0.58333+0.00000i per unit
Line to line voltages in per-unit are
Vab = 1.75
Angle = -0.00 per unit 
Vbc= 0.00000+0.00000i per unit
Vca = 1.75
Angle = 180.00 per unit 
Line to line voltages in volts
Vab = 13943.01
Angle = -0.00 per unit 
Vbc= 0.00000+0.00000i per unit
Vca = 13943.01
Angle = 180.00 per unit 

Example 12.3, Page No 314

In [3]:
import math
#initialisation of variables
P = 20e6
V = 13.8e3
P_b = 20e6
V_b = 13.8e3
Z1 = complex(0.25)
Z2 = complex(0.35)
Z0 = complex(0.10)
a = 1 * complex(math.cos(120 * math.pi / 180), math.sin(120 * math.pi/180))

#Calculations
Ea = V / V_b
Ia1 = Ea / (Z1 + (Z2*Z0)/(Z2+Z0))
I_b = P / (math.sqrt(3) * V)
Va1 = Ea - Ia1 * Z1
Va2 = Va1Va0 = Va1
Ia2 = - Va2 / Z2
Ia0 = - Va0 / Z0
Ia = Ia1 + Ia2 + Ia0
Ib = a**2*Ia1 + a*Ia2 + Ia0
Ic = a*Ia1 + a**2*Ia2 + Ia0
In = 3 * Ia0
Va = Va1 + Va2 + Va0
Vb = 0
Vc = 0
print('Line to ground voltages')
print( "Va = {0:.2f}".format(abs(Va.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Va.imag,Va.real))))
print( "Vb= {0:.5f}+{1:.5f}i per unit".format(Vb.real, Vb.imag))
Vab = Va - Vb
Vbc = Vb - Vc
Vca = Vc - Va
print('Line to line voltages in per-unit are')

print( "Vab= {0:.2f}+{1:.2f}i per unit".format(Vab.real, Vab.imag))
print( "Vbc= {0:.2f}+{1:.2f}i per unit".format(Vbc.real, Vbc.imag))
print( "Vca= {0:.2f}+{1:.2f}i per unit".format(Vca.real, Vca.imag))
I_a1 = I_b * Ia
I_b1 = I_b * Ib
I_c1 = I_b * Ic
I_n1 = I_b * In

#Results
print( "Base Current = {0:.2f}+{1:.2f}i per unit".format(I_b.real, I_b.imag))
print(" Subtransient current in line a = {0:.2f}+{1:.2f}i A".format(Ia_1.real, Ia_1.imag))
print( "Subtransient current in line b = {0:.2f}".format(abs(Ib_1.real)))
print("Angle = %.2f A " %(math.degrees(math.atan2(Ib_1.imag,Ib_1.real))))
print( "Subtransient current in line c =  = {0:.2f}".format(abs(Ic_1.real)))
print("Angle = %.2f A " %(math.degrees(math.atan2(Ic_1.imag,Ic_1.real))))
print( "Subtransient current in line c =  = {0:.2f}".format(abs(Ic_1.real)))
print("Angle = %.2f A " %(math.degrees(math.atan2(Ic_1.imag,Ic_1.real))))

Vab_1 = Vab * V / math.sqrt(3)
Vbc_1 = Vbc * V / math.sqrt(3)
Vca_1 = Vca * V / math.sqrt(3)
print('Line to line voltages in volts')
print( "Vab = {0:.2f}".format(abs(Vab.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vab.imag,Vab.real))))
print( "Vbc= {0:.5f}+{1:.5f}i per unit".format(Vbc.real, Vbc.imag))
print( "Vca = {0:.2f}".format(abs(Vca.real)))
print("Angle = %.2f per unit " %(math.degrees(math.atan2(Vca.imag,Vca.real))))
Line to ground voltages
Va = 0.47
Angle = 0.00 per unit 
Vb= 0.00000+0.00000i per unit
Line to line voltages in per-unit are
Vab= 0.47+0.00i per unit
Vbc= 0.00+0.00i per unit
Vca= -0.47+0.00i per unit
Base Current = 836.74+0.00i per unit
 Subtransient current in line a = 0.00+0.00i A
Subtransient current in line b = 0.00
Angle = -90.00 A 
Subtransient current in line c =  = 0.00
Angle = 90.00 A 
Subtransient current in line c =  = 0.00
Angle = 90.00 A 
Line to line voltages in volts
Vab = 0.47
Angle = 0.00 per unit 
Vbc= 0.00000+0.00000i per unit
Vca = 0.47
Angle = 180.00 per unit 

Example 12.4 Page No 321

In [4]:
import math
#initialisation of variables
V_bus1 = 4.16e3
V_bus_2 = 600
Vm = 600
n_m = 0.895
Pop_m = 6000
X11_m = 0.2
X_2_m = 0.20
X_0_m = 0.04
X_n_m= 0.02
Vtr_ht = math.sqrt(3) * 2400
Vtr_lt = 600
Ptr =3 * 2500e3
X11_tr = 0.10
Pg = 7500e3
Vg = 4.16e3
X11_g = 0.10
X_2_g = 0.10
X_0_g = 0.05
X_n_g = 0.05
#At the time of fault
Pload = 5000
pf_load = 0.85
n_load = 0.88
Vbase_sysbus = Vg
Pbase_sysbus = Pg
Vbase_m = Vtr_lt
Pbase_m = Ptr

#Calculations
Pin_m =(Pop_m * 0.746) * 1e3/ n_m
print(" Input Rating of the math.single equivalent motor = %.0f kVA " %Pin_m)
X11_m_new = X11_m * Pbase_m / Pin_m
X_2_m_new = X_2_m * Pbase_m / Pin_m
X_0_m_new = X_0_m * Pbase_m / Pin_m
X_n_m_new = 3 * X_n_m * Pbase_m / Pin_m
print('For Motor')
print("X11 = %.1f per unit X_2 = %.1f per unit X_0 = %0.2f per unit 3X_n = %.2f per unit" %(X11_m_new,X_2_m_new,X_0_m_new,X_n_m_new))
print(" The equivalent generator reactance from neutral to ground in the zero-sequence network = %.2f per unit" %(3*X_0_g))

Vf = 1 * complex(math.cos(0),math.sin(0))
Ibase_m = Pbase_m / (math.sqrt(3) * Vbase_m)
print(" Base current in motor circuit = {0:.2f}+{1:.2f}i".format(Ibase_m.real, Ibase_m.imag))
Iactual_m = 746 * Pload / (n_load * math.sqrt(3) * Vbase_m * pf_load)
magIa = Iactual_m / Ibase_m
angleIa = - math.acos(0.85)
Ia_prefault = magIa * complex(math.cos(angleIa),math.sin(angleIa))
print(" Prefault current through line a = %.3f - j%.3f per unit" %((Ia_prefault.real),abs(Ia_prefault.imag)))
Eg_11 = 1
Em_11 = 1
Z1 = ((complex(X11_g) + complex(X_2_g)) * (complex(X11_m_new))) / (complex((X11_g + X_2_g),X11_m_new))
Z2 = Z1Z0 = 3 * complex(X_0_g)
print(" Z1 = j%.2f per unit Z2 = j%.2f per unit Z0 = j%.2f per unit" %(abs(Z1.real),abs(Z2.real),abs(Z0.real)))
Ia1 = Vf / (Z1 + Z2 + Z0)
Ia2 = Ia1Ia0 = Ia1
Ia_fault = 3 * Ia0
print(" Current Ia in fault = -j%.3f per unit " %abs(Ia_fault.real))
 Input Rating of the math.single equivalent motor = 5001117 kVA 
For Motor
X11 = 0.3 per unit X_2 = 0.3 per unit X_0 = 0.06 per unit 3X_n = 0.09 per unit
 The equivalent generator reactance from neutral to ground in the zero-sequence network = 0.15 per unit
 Base current in motor circuit = 7216.88+0.00i
 Prefault current through line a = 0.565 - j0.350 per unit
 Z1 = j0.09 per unit Z2 = j0.15 per unit Z0 = j0.10 per unit
 Current Ia in fault = -j0.000 per unit 

Example 12.5, Page No 329

In [5]:
import math
#initialisation of variables
V_bus1 = 4.16e3
V_bus_2 = 600
Vm = 600
n_m = 0.895
Pop_m = 6000
X11_m = complex(0.2)
X_2_m = complex(0.20)
X_0_m = complex(0.04)
X_n_m= complex(0.02)
Vtr_ht = math.sqrt(3) * 2400
Vtr_lt = 600
Ptr =3 * 2500e3
X11_tr = complex(0.10)
Pg = 7500e3
Vg = 4.16e3
X11_g = complex(0.10)
X_2_g = complex(0.10)
X_0_g = complex(0.05)
X_n_g = complex(0.05)
#At the time of fault
Pload = 5000
pf_load = 0.85
n_load = 0.88
Vbase_sysbus = Vg
Pbase_sysbus = Pg
Vbase_m = Vtr_lt
Pbase_m = Ptr
Pin_m =(Pop_m * 0.746) * 1e3/ n_m
X11_m_new = X11_m * Pbase_m / Pin_m
X_2_m_new = X_2_m * Pbase_m / Pin_m
X_0_m_new = X_0_m * Pbase_m / Pin_m
X_n_m_new = 3 * X_n_m * Pbase_m / Pin_m
X_n_g_new = 3 * X_n_g
Y1 =[[0,0],[0,0]]
Y2 =[[0,0],[0,0]]
Y0 =[[0,0],[0,0]]
Y1[0][0] = 1.0/X11_g + 1/X11_m_new
Y2[0][0] = Y1[0][0]
Y1[0][1] = - 1 / X11_g
Y2[0][1] = Y1[0][1]
Y1[1][1] = 1/X11_g + 1/X_2_g
Y2[1][1] = Y1[1][1]
Y1[1][0] = Y1[0][1]
Y2[1][0] = Y2[0][1]
Y0[0][0] = 1.0/ X_n_g_new
Y0[1][1] = 1.0/X11_m + 1/X_2_g
print('Y_bus1 = Y_bus2 = ')
print(Y2)
print('Y_bus0 = ')
print(Y0) 
Z0 =[[complex(0.15),0],[0,complex(0,0.0666667)]]
Z2 =[[complex(0.1199893),complex(0.0599946)],[complex(0.0599946),complex(0.0799973)]]
Z1 =[[complex(0.1199893),complex(0.0599946)],[complex(0.0599946),complex(0.0799973) ]]
print('Z_bus1 = Z_bus2 = ')
print(Z1)
print('Z_bus0 = ')
print(Z0)
Vf = 1 * complex(math.cos(0),math.sin(0))
If_bus1 = 3 * Vf / (Z1[0][0] + Z2[0][0] + Z0[0][0])
print('The current in fault on bus 1 in per unit is')
print(If_bus1)
If_bus2 = 3 * Vf / (Z1[1][1] + Z2[1][1] + Z0[1][1])
print('The current in fault on bus 2 in per unit is')
print(If_bus2)
Ia_1 =If_bus1 / 3
Ia_2 = Ia_1
Ia_0 = Ia_1
Va1 = Vf - (Z1[1][0] * Ia_1)
Va2 = - Ia_2 * Z2[1][0]
Va0 = - Ia_0 * Z0[1][0]
print('Sequence components of phase A in the order Va1,Va2,Va0 in per unit are')
print(Va1)
print(Va2)
print(Va0)
VA1 = -complex(Va1)
VA2 = complex(Va2)
VA = VA1 + VA2
a = 1 * complex(math.cos(120 * math.pi / 180),math.sin(120 * math.pi / 180))
VB = a**2 * VA1 + a * VA2
VC = a * VA1 + a**2 * VA2
print('Currents in phases in the order VA,VB,VC in per unit are')
print(VA)
print(VB)
print(VC)
Y_bus1 = Y_bus2 = 
[[(13.334078212290503+0j), (-10+0j)], [(-10+0j), (20+0j)]]
Y_bus0 = 
[[(6.666666666666666+0j), 0], [0, (15+0j)]]
Z_bus1 = Z_bus2 = 
[[(0.1199893+0j), (0.0599946+0j)], [(0.0599946+0j), (0.0799973+0j)]]
Z_bus0 = 
[[(0.15+0j), 0], [0, 0.0666667j]]
The current in fault on bus 1 in per unit is
(7.6927298062+0j)
The current in fault on bus 2 in per unit is
(15.9767086779-6.65718995778j)
Sequence components of phase A in the order Va1,Va2,Va0 in per unit are
(0.84615925079+0j)
(-0.15384074921-0j)
-0j
Currents in phases in the order VA,VB,VC in per unit are
(-1-0j)
(0.5+0.599565409878j)
(0.5-0.599565409878j)