12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package holeg.power_flow;
- import Jama.Matrix;
- public class AdmittanceMatrix extends ComplexMatrix {
- public AdmittanceMatrix(int size) {
- super(size);
- }
- public static AdmittanceMatrix build(Bus[] buses, Line[] lines) {
- AdmittanceMatrix matrix = new AdmittanceMatrix(buses.length);
- // Convert line admittances to complex numbers
- ComplexNumber[] y = new ComplexNumber[lines.length];
- for (int i = 0; i < lines.length; i++) {
- Line line = lines[i];
- y[i] = (new ComplexNumber(line.R, line.X)).reciprocal();
- }
- for (int i = 0; i < lines.length; i++) {
- Line line = lines[i];
- ComplexNumber value = matrix.get(line.from, line.to).subtract(y[i].multiply(1 / line.a));
- matrix.set(line.from, line.to, value);
- matrix.set(line.to, line.from, value);
- }
- for (int i = 0; i < buses.length; i++) {
- for (int j = 0; j < lines.length; j++) {
- Line line = lines[j];
- ComplexNumber yLine = y[j];
- ComplexNumber b = new ComplexNumber(0, line.B_2);
- ComplexNumber Y = matrix.get(i, i);
- if (line.from == i)
- Y = Y.add(yLine.multiply(1 / (line.a * line.a))).add(b);
- else if (line.to == i)
- Y = Y.add(yLine).add(b);
- matrix.set(i, i, Y);
- }
- }
- return matrix;
- }
- public Matrix getG() {
- return getRealMatrix();
- }
- public Matrix getB() {
- return getImaginaryMatrix();
- }
- }
|