SimpleGridBuilder.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package holeg.simple_grid;
  2. import holeg.model.Grid;
  3. import holeg.power_flow.ComplexNumber;
  4. import java.util.ArrayList;
  5. public class SimpleGridBuilder {
  6. private Grid grid = new Grid();
  7. public Grid getGrid() {
  8. return grid;
  9. }
  10. public SimpleGridNode addGenerator(ComplexNumber power) {
  11. if (power == null)
  12. throw new IllegalArgumentException("power is null");
  13. SimpleGridNode node = new SimpleGridNode();
  14. node.edges = new ArrayList<>();
  15. node.voltage = 1;
  16. node.powerGeneration = power;
  17. node.powerConsumption = ComplexNumber.Zero;
  18. grid.addNode(node);
  19. return node;
  20. }
  21. public SimpleGridNode addHouse(ComplexNumber power) {
  22. if (power == null)
  23. throw new IllegalArgumentException("power is null");
  24. SimpleGridNode node = new SimpleGridNode();
  25. node.edges = new ArrayList<>();
  26. node.voltage = 1;
  27. node.powerGeneration = ComplexNumber.Zero;
  28. node.powerConsumption = power;
  29. grid.addNode(node);
  30. return node;
  31. }
  32. public SimpleGridEdge connect(SimpleGridNode a, SimpleGridNode b, double length) {
  33. if (a == null)
  34. throw new IllegalArgumentException("a is null");
  35. if (b == null)
  36. throw new IllegalArgumentException("b is null");
  37. if (length <= 0)
  38. throw new IllegalArgumentException("length <= 0");
  39. SimpleGridEdge edge = new SimpleGridEdge();
  40. edge.from = a;
  41. edge.to = b;
  42. edge.lengthKilometers = length;
  43. // Register edge
  44. grid.addEdge(edge);
  45. a.edges.add(edge);
  46. b.edges.add(edge);
  47. return edge;
  48. }
  49. }