package holeg.simple_grid; import holeg.model.Grid; import holeg.power_flow.ComplexNumber; import java.util.ArrayList; public class SimpleGridBuilder { private Grid grid = new Grid(); public Grid getGrid() { return grid; } public SimpleGridNode addGenerator(ComplexNumber power) { if (power == null) throw new IllegalArgumentException("power is null"); SimpleGridNode node = new SimpleGridNode(); node.edges = new ArrayList<>(); node.voltage = 1; node.powerGeneration = power; node.powerConsumption = ComplexNumber.Zero; grid.addNode(node); return node; } public SimpleGridNode addHouse(ComplexNumber power) { if (power == null) throw new IllegalArgumentException("power is null"); SimpleGridNode node = new SimpleGridNode(); node.edges = new ArrayList<>(); node.voltage = 1; node.powerGeneration = ComplexNumber.Zero; node.powerConsumption = power; grid.addNode(node); return node; } public SimpleGridEdge connect(SimpleGridNode a, SimpleGridNode b, double length) { if (a == null) throw new IllegalArgumentException("a is null"); if (b == null) throw new IllegalArgumentException("b is null"); if (length <= 0) throw new IllegalArgumentException("length <= 0"); SimpleGridEdge edge = new SimpleGridEdge(); edge.from = a; edge.to = b; edge.lengthKilometers = length; // Register edge grid.addEdge(edge); a.edges.add(edge); b.edges.add(edge); return edge; } }