docs: def VariablesValues(self, variables, t):
          """
          Returns the value of given variables at time t. 
          Linear interpolation is performed between two time steps.
  
          :param variables: one variable or a list of variables
          :param t: time of evaluation
          """
          # TODO: put interpolation in variables
          if (t < self.te) | (t > 0):
              i = t//self.ts  # time step
              ti = self.ts*i
              if type(variables) == list:
                  values = []
                  for variable in variables:
                      # interpolation
                      values.append(
                          variables.values[i]*((ti-t)/self.ts+1)+variables.values[i+1]*(t-ti)/self.ts)
                  return values
  
              else:
                  # interpolation
                  return variables.values[i]*((ti-t)/self.ts+1)+variables.values[i+1]*(t-ti)/self.ts
          else:
              raise ValueError