def get_outflow(self, v, w, t):
     """
     :param v: tail of edge
     :param w: head of edge
     :param t: time
     :return: f_(v,w)^-(t), i.e. outflow rate of e=(v,w) at time t (picking the newest value)
     """
     if Utilities.is_eq_tol(t, 0):
         return 0
     for wTimeLower, wTimeUpper in self.network[v][w]['outflow']:
         if Utilities.is_between_tol(wTimeLower, t, wTimeUpper):
             # t lies between l_w(theta_k) and l_w(theta_k+1)
             lastOutflow = self.network[v][w]['outflow'][(wTimeLower,
                                                          wTimeUpper)]
     return lastOutflow
 def get_cumulative_outflow(self, v, w, t):
     """
     :param v: tail of edge
     :param w: head of edge
     :param t: time
     :return: F_(v,w)^-(t)
     """
     if Utilities.is_leq_tol(t, 0):
         return 0
     for timeInterval, outflowVal in reversed(
             self.network[v][w]['outflow'].items()):
         wTimeLower, wTimeUpper = timeInterval
         if Utilities.is_between_tol(wTimeLower, t, wTimeUpper):
             # This is the interval in which t lies
             return self.network[v][w]['cumulativeOutflow'][
                 wTimeLower] + outflowVal * (t - wTimeLower)