Bus calcStarBusV1V2V3Y(BranchTestCase w1, BranchTestCase w2, BranchTestCase w3) {
Complex v1 = ComplexUtils.polar2Complex(w1.bus1.u, w1.bus1.theta);
Complex v2 = ComplexUtils.polar2Complex(w2.bus1.u, w2.bus1.theta);
Complex v3 = ComplexUtils.polar2Complex(w3.bus1.u, w3.bus1.theta);
Complex ytr1 = new Complex(w1.branch.end1.r, w1.branch.end1.x).reciprocal();
Complex ytr2 = new Complex(w2.branch.end1.r, w2.branch.end1.x).reciprocal();
Complex ytr3 = new Complex(w3.branch.end1.r, w3.branch.end1.x).reciprocal();
Complex a01 = new Complex(w1.branch.end2.ratedU / w1.branch.end1.ratedU, 0);
Complex a1 = new Complex(1, 0);
Complex a02 = new Complex(w2.branch.end2.ratedU / w2.branch.end1.ratedU, 0);
Complex a2 = new Complex(1, 0);
Complex a03 = new Complex(w3.branch.end2.ratedU / w3.branch.end1.ratedU, 0);
Complex a3 = new Complex(1, 0);
Complex ysh01 = new Complex(w1.branch.end2.g, w1.branch.end2.b);
Complex ysh02 = new Complex(w2.branch.end2.g, w2.branch.end2.b);
Complex ysh03 = new Complex(w3.branch.end2.g, w3.branch.end2.b);
Complex y01 = ytr1.negate().divide(a01.conjugate().multiply(a1));
Complex y02 = ytr2.negate().divide(a02.conjugate().multiply(a2));
Complex y03 = ytr3.negate().divide(a03.conjugate().multiply(a3));
Complex y0101 = ytr1.add(ysh01).divide(a01.conjugate().multiply(a01));
Complex y0202 = ytr2.add(ysh02).divide(a02.conjugate().multiply(a02));
Complex y0303 = ytr3.add(ysh03).divide(a03.conjugate().multiply(a03));
Complex v0 = y01.multiply(v1).add(y02.multiply(v2)).add(y03.multiply(v3)).negate()
.divide(y0101.add(y0202).add(y0303));
Bus starBus = new Bus();
starBus.u = v0.abs();
starBus.theta = v0.getArgument();
return starBus;
}