Network solver for energy graphs.

Master branch build status Code coverage status

Refinery is an energy-graph solver which, given demands on some nodes and shares on some edges, seeks to find the demand of all the unspecified nodes.

Refinery is used at Quintel to take the the graph defined in ETSource, and determine the way in which energy flows through a country; from the primary sources (such as coal production, or "ambient wind"), all the way to the use in business, industry, and residences.


  • Child and parent nodes: Nodes which are connected to each other with an edge. The edge is "outbound" on the parent node, and "inbound" on the child. Nodes which are joined by an edge are considered adjacent.

  • Descendants and ancestors: These terms are similar to "child" and "parent" but recurse edges infinitely in the respective direction. For example, "descendants" includes the children of the current node, all of it's children and so on.

  • Spouse: Describes an arrangement of nodes which are connected to a common child:

  • Siblings: Describes nodes which are connected to a common parent.