_getHighestEnergyNode(ignoreClusters) {
    const nodesArray = this.body.nodeIndices;
    const nodes = this.body.nodes;
    let maxEnergy = 0;
    let maxEnergyNodeId = nodesArray[0];
    let dE_dx_max = 0,
      dE_dy_max = 0;

    for (let nodeIdx = 0; nodeIdx < nodesArray.length; nodeIdx++) {
      const m = nodesArray[nodeIdx];
      // by not evaluating nodes with predefined positions we should only move nodes that have no positions.
      if (
        nodes[m].predefinedPosition !== true ||
        (nodes[m].isCluster === true && ignoreClusters === true) ||
        nodes[m].options.fixed.x !== true ||
        nodes[m].options.fixed.y !== true
      ) {
        const [delta_m, dE_dx, dE_dy] = this._getEnergy(m);
        if (maxEnergy < delta_m) {
          maxEnergy = delta_m;
          maxEnergyNodeId = m;
          dE_dx_max = dE_dx;
          dE_dy_max = dE_dy;
        }
      }
    }

    return [maxEnergyNodeId, maxEnergy, dE_dx_max, dE_dy_max];
  }
get the node with the highest energy
@param {boolean} ignoreClusters
@returns {number[]}
@private