docs: def calc_circuit_breaker_position(self, debug=False):
          """ Calculates the optimal position of a circuit breaker on route.
          
          Parameters
          ----------
          debug: bool, defaults to False
              If True, prints process information.
          
          Returns
          -------
          int
              position of circuit breaker on route (index of last node on 1st half-ring preceding the circuit breaker)
  
          Notes
          -----
          According to planning principles of MV grids, a MV ring is run as two strings (half-rings) separated by a
          circuit breaker which is open at normal operation.
          Assuming a ring (route which is connected to the root node at either sides), the optimal position of a circuit
          breaker is defined as the position (virtual cable) between two nodes where the conveyed current is minimal on
          the route. Instead of the peak current, the peak load is used here (assuming a constant voltage).
  
          The circuit breakers are used here for checking tech. constraints only and will be re-located after connection
          of satellites and stations in ding0.grid.mv_grid.tools.set_circuit_breakers
  
          References
          ----------
          
          See Also
          --------
          ding0.grid.mv_grid.tools.set_circuit_breakers
  
          """
          # TODO: add references (Tao)
  
          # set init value
          demand_diff_min = 10e6
  
          # check possible positions in route
          for ctr in range(len(self._nodes)):
              # split route and calc demand difference
              route_demand_part1 = sum([node.demand() for node in self._nodes[0:ctr]])
              route_demand_part2 = sum([node.demand() for node in self._nodes[ctr:len(self._nodes)]])
              demand_diff = abs(route_demand_part1 - route_demand_part2)
  
              if demand_diff < demand_diff_min:
                  demand_diff_min = demand_diff
                  position = ctr
  
          if debug:
              logger.debug('sum 1={}'.format(
                  sum([node.demand() for node in self._nodes[0:position]])))
              logger.debug('sum 2={}'.format(sum([node.demand() for node in
                                                  self._nodes[
                                                  position:len(self._nodes)]])))
              logger.debug(
                  'Position of circuit breaker: {0}-{1} (sumdiff={2})'.format(
                      self._nodes[position - 1], self._nodes[position],
                      demand_diff_min))
  
          return position