def METHOD_NAME(self):
    """ Compute the dual residual
    Returns:
       global_diff (float): difference between to consecutive x bars
    """
    local_sum_diff = np.zeros(1)
    global_sum_diff = np.zeros(1)
    for s in self._ph.local_scenarios.values():
        for node in s._mpisppy_node_list:
            ndn = node.name
            nlen = s._mpisppy_data.nlens[ndn]
            rhos = np.fromiter((s._mpisppy_model.rho[ndn,i]._value
                                for i in range(nlen)), dtype='d')
            xbars = np.fromiter((s._mpisppy_model.xbars[ndn,i]._value
                                    for i in range(nlen)), dtype='d')
            prev_xbars = np.fromiter((self.prev_xbars[ndn,i]
                                        for i in range(nlen)), dtype='d')
            local_sum_diff[0] += np.sum(rhos * np.abs(xbars - prev_xbars))
    self._ph.comms["ROOT"].Allreduce(local_sum_diff, global_sum_diff, op=MPI.SUM)
    return global_sum_diff[0]