diff --git a/openmc/filter.py b/openmc/filter.py index e63d72412f..6c904e61d1 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -815,6 +815,7 @@ class MeshSurfaceFilter(MeshFilter): mesh_key = 'mesh {}'.format(self.mesh.id) # Find mesh dimensions - use 3D indices for simplicity + n_surfs = 4 * len(self.mesh.dimension) if len(self.mesh.dimension) == 3: nx, ny, nz = self.mesh.dimension elif len(self.mesh.dimension) == 2: @@ -826,31 +827,33 @@ class MeshSurfaceFilter(MeshFilter): # Generate multi-index sub-column for x-axis filter_bins = np.arange(1, nx + 1) - repeat_factor = 12 * stride + repeat_factor = n_surfs * stride filter_bins = np.repeat(filter_bins, repeat_factor) tile_factor = data_size // len(filter_bins) filter_bins = np.tile(filter_bins, tile_factor) filter_dict[(mesh_key, 'x')] = filter_bins # Generate multi-index sub-column for y-axis - filter_bins = np.arange(1, ny + 1) - repeat_factor = 12 * nx * stride - filter_bins = np.repeat(filter_bins, repeat_factor) - tile_factor = data_size // len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - filter_dict[(mesh_key, 'y')] = filter_bins + if len(self.mesh.dimension) > 1: + filter_bins = np.arange(1, ny + 1) + repeat_factor = n_surfs * nx * stride + filter_bins = np.repeat(filter_bins, repeat_factor) + tile_factor = data_size // len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_dict[(mesh_key, 'y')] = filter_bins # Generate multi-index sub-column for z-axis - filter_bins = np.arange(1, nz + 1) - repeat_factor = 12 * nx * ny * stride - filter_bins = np.repeat(filter_bins, repeat_factor) - tile_factor = data_size // len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - filter_dict[(mesh_key, 'z')] = filter_bins + if len(self.mesh.dimension) > 2: + filter_bins = np.arange(1, nz + 1) + repeat_factor = n_surfs * nx * ny * stride + filter_bins = np.repeat(filter_bins, repeat_factor) + tile_factor = data_size // len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_dict[(mesh_key, 'z')] = filter_bins # Generate multi-index sub-column for surface repeat_factor = stride - filter_bins = np.repeat(_CURRENT_NAMES, repeat_factor) + filter_bins = np.repeat(_CURRENT_NAMES[:n_surfs], repeat_factor) tile_factor = data_size // len(filter_bins) filter_bins = np.tile(filter_bins, tile_factor) filter_dict[(mesh_key, 'surf')] = filter_bins