code: def flatten(self):
          
          blocksize = self.get_array()[0][0].get_width()
          width = self.get_width() * blocksize
  
          columnsNew = [[] for dummy in xrange(width)]
  
          for row in self.get_array():
              index = 0
              for submatrix in row:
                  for column in submatrix.get_array(False):
                      columnsNew[index] += column
                      index += 1
  
          columnsFlat = sum(columnsNew, [])
          return Matrix(width, len(columnsNew[0]), columnsFlat, rowBased=False)
docs: If the current Matrix consists of Blockmatrixes as elementes method
          flattens the Matrix into one Matrix only consisting of the 2nd level
          elements
  
          [[[1 2] [[3 4]   to [[1 2 3 4]
            [5 6]] [7 8]]]     [5 6 7 8]]