Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Form the potential co-efficient matrix.

P = np.array([(P11, P12, P13, P14, P15, P16, P17, P18),
     (P21, P22, P23, P24, P25, P26, P27, P28),
     (P31, P32, P33, P34, P35, P36, P37, P38),
     (P41, P42, P43, P44, P45, P46, P47, P48),
     (P51, P52, P53, P54, P55, P56, P57, P58),
     (P61, P62, P63, P64, P65, P66, P67, P68),
     (P71, P72, P73, P74, P75, P76, P77, P78),
     (P81, P82, P83, P84, P85, P86, P87, P88)])

Get the full phase capacitance matrix.

C = np.linalg.inv(P)

Determine the +ve, -ve and 0 seq. susceptances after eliminating the earth wires.

Paa = P[:3, :3]
Pab = P[:3, 3:6]
Pba = P[3:6, :3]
Pbb = P[3:6, 3:6]
Pas = P[:3, 6:]
Pbs = P[3:6, 6:]
Pss = P[6:, 6:]

P_AA = Paa-np.dot(Pas,np.dot(np.linalg.inv(Pss),Pas.T))
P_AB = Pab-np.dot(Pas,np.dot(np.linalg.inv(Pss),Pbs.T))
P_BA = Pba-np.dot(Pbs,np.dot(np.linalg.inv(Pss),Pas.T))
P_BB = Pbb-np.dot(Pbs,np.dot(np.linalg.inv(Pss),Pbs.T))

Pph = np.vstack((np.hstack((P_AA,P_AB)), np.hstack((P_BA,P_BB))))

Cph = np.linalg.inv(Pph)

Bph = 2*np.pi*f*Cph
Baa = Bph[:3, :3]
Bab = Bph[:3, 3:6]
Bba = Bph[3:6, :3]
Bbb = Bph[3:6, 3:6]

B_AA = np.dot(np.linalg.inv(H), np.dot(Baa,H))
B_AB = np.dot(np.linalg.inv(H), np.dot(Bab,H))
B_BA = np.dot(np.linalg.inv(H), np.dot(Bba,H))
B_BB = np.dot(np.linalg.inv(H), np.dot(Bbb,H))

Bpnz = np.vstack((np.hstack((B_AA,B_AB)), np.hstack((B_BA,B_BB))))

The +ve, -ve and 0 seq. impedance can be determined in an exactly similar manner. The final output after all the above computations would be:

print 'Positive sequence resistance in ohms/km/ckt = ', np.real(Zp)
print 'Positive sequence reactance in ohms/km/ckt = ', np.imag(Zp)
print 'Positive sequence charging susceptance in microsiemens/km/ckt = ', np.real(Bp)

print 'Positive sequence resistance in percent/km/ckt = ', 100*np.real(Zp)/Zbase
print 'Positive sequence reactance in percent/km/ckt = ', 100*np.imag(Zp)/Zbase
print 'Positive sequence charging susceptance in percent/km/ckt = ', 100*(10**-6)*np.real(Bp)/Ybase

print 'Zero sequence resistance in ohms/km/ckt = ', np.real(Zz)
print 'Zero sequence reactance in ohms/km/ckt = ', np.imag(Zz)
print 'Zero sequence charging susceptance in microsiemens/km/ckt = ', np.real(Bz)

print 'Zero sequence resistance in percent/km/ckt = ', 100*np.real(Zz)/Zbase
print 'Zero sequence reactance in percent/km/ckt = ', 100*np.imag(Zz)/Zbase
print 'Zero sequence charging susceptance in percent/km/ckt = ', 100*(10**-6)*np.real(Bz)/Ybase

That completes the brute force method of determining line constants. Let me know if there are easier or more elegant ways of doing the above computations.

click to hide/show revision 2
relocated to single answer

Form the potential co-efficient matrix.relocated to single answer

P = np.array([(P11, P12, P13, P14, P15, P16, P17, P18),
     (P21, P22, P23, P24, P25, P26, P27, P28),
     (P31, P32, P33, P34, P35, P36, P37, P38),
     (P41, P42, P43, P44, P45, P46, P47, P48),
     (P51, P52, P53, P54, P55, P56, P57, P58),
     (P61, P62, P63, P64, P65, P66, P67, P68),
     (P71, P72, P73, P74, P75, P76, P77, P78),
     (P81, P82, P83, P84, P85, P86, P87, P88)])

Get the full phase capacitance matrix.

C = np.linalg.inv(P)

Determine the +ve, -ve and 0 seq. susceptances after eliminating the earth wires.

Paa = P[:3, :3]
Pab = P[:3, 3:6]
Pba = P[3:6, :3]
Pbb = P[3:6, 3:6]
Pas = P[:3, 6:]
Pbs = P[3:6, 6:]
Pss = P[6:, 6:]

P_AA = Paa-np.dot(Pas,np.dot(np.linalg.inv(Pss),Pas.T))
P_AB = Pab-np.dot(Pas,np.dot(np.linalg.inv(Pss),Pbs.T))
P_BA = Pba-np.dot(Pbs,np.dot(np.linalg.inv(Pss),Pas.T))
P_BB = Pbb-np.dot(Pbs,np.dot(np.linalg.inv(Pss),Pbs.T))

Pph = np.vstack((np.hstack((P_AA,P_AB)), np.hstack((P_BA,P_BB))))

Cph = np.linalg.inv(Pph)

Bph = 2*np.pi*f*Cph
Baa = Bph[:3, :3]
Bab = Bph[:3, 3:6]
Bba = Bph[3:6, :3]
Bbb = Bph[3:6, 3:6]

B_AA = np.dot(np.linalg.inv(H), np.dot(Baa,H))
B_AB = np.dot(np.linalg.inv(H), np.dot(Bab,H))
B_BA = np.dot(np.linalg.inv(H), np.dot(Bba,H))
B_BB = np.dot(np.linalg.inv(H), np.dot(Bbb,H))

Bpnz = np.vstack((np.hstack((B_AA,B_AB)), np.hstack((B_BA,B_BB))))

The +ve, -ve and 0 seq. impedance can be determined in an exactly similar manner. The final output after all the above computations would be:

print 'Positive sequence resistance in ohms/km/ckt = ', np.real(Zp)
print 'Positive sequence reactance in ohms/km/ckt = ', np.imag(Zp)
print 'Positive sequence charging susceptance in microsiemens/km/ckt = ', np.real(Bp)

print 'Positive sequence resistance in percent/km/ckt = ', 100*np.real(Zp)/Zbase
print 'Positive sequence reactance in percent/km/ckt = ', 100*np.imag(Zp)/Zbase
print 'Positive sequence charging susceptance in percent/km/ckt = ', 100*(10**-6)*np.real(Bp)/Ybase

print 'Zero sequence resistance in ohms/km/ckt = ', np.real(Zz)
print 'Zero sequence reactance in ohms/km/ckt = ', np.imag(Zz)
print 'Zero sequence charging susceptance in microsiemens/km/ckt = ', np.real(Bz)

print 'Zero sequence resistance in percent/km/ckt = ', 100*np.real(Zz)/Zbase
print 'Zero sequence reactance in percent/km/ckt = ', 100*np.imag(Zz)/Zbase
print 'Zero sequence charging susceptance in percent/km/ckt = ', 100*(10**-6)*np.real(Bz)/Ybase

That completes the brute force method of determining line constants. Let me know if there are easier or more elegant ways of doing the above computations.