def get_concn_array(self, detail_level, sif_name):
     self.get_run_dir(detail_level, sif_name)
     grid_length = detail_level * self.side_length
     array_path = os.path.join(self.run_dir, 'concn_array')
     if os.path.isfile(array_path):
         concn_array = toolbox_basic.load_array(array_path)
     else:
         result_file_path = os.path.join(self.run_dir, 'case.result')
         result_file_path = toolbox_basic.check_path(result_file_path)
         # This isn't quite correct! Without wrapping, Elmer skips some nodes
         num_nodes = (grid_length + 1)**2
         array_shape = (grid_length + 1,)*2
         with open(result_file_path, 'Ur') as f:
             last_lines = f.readlines()[-num_nodes:]
         concn_array = numpy.array([float(line) for line in last_lines])
         concn_array = numpy.reshape(concn_array, array_shape)
         toolbox_basic.save_array(concn_array, array_path)
     return concn_array
 def get_rate_array(self, detail_level, sif_name):
     self.get_run_dir(detail_level, sif_name)
     array_path = os.path.join(self.run_dir, 'rate_array')
     if not os.path.isfile(array_path):
         self.get_run_results(detail_level, sif_name)
     return toolbox_basic.load_array(array_path)