diff --git a/ensembleperturbation/parsing/adcirc.py b/ensembleperturbation/parsing/adcirc.py index d3be4b60..f35adf4c 100644 --- a/ensembleperturbation/parsing/adcirc.py +++ b/ensembleperturbation/parsing/adcirc.py @@ -758,6 +758,20 @@ def combine_outputs( if elevation_selection is not None: elevation_subset = subset + if 'element' in file_data: + # keep only elements where all nodes are present + elements = file_data['element'].values + element_mask = numpy.isin(elements, file_data['node'].values).all(axis=1) + elements = elements[element_mask] + # map nodes in element table to local numbering system (start at 0) + node_mapper = numpy.zeros(file_data['node'].max().values + 1, dtype=int) + node_index = numpy.arange(len(file_data['node'])) + node_mapper[file_data['node'].values] = node_index + elements = node_mapper[elements] + # update element table in dataset + ele_da = DataArray(data=elements, dims=['nele', 'nvertex']) + file_data = file_data.assign_coords({'element': ele_da}) + output_data[basename] = file_data for basename, file_data in output_data.items(): diff --git a/tests/data/reference/test_combine_outputs/fort.63.nc b/tests/data/reference/test_combine_outputs/fort.63.nc index 15ff7cf4..35620500 100644 Binary files a/tests/data/reference/test_combine_outputs/fort.63.nc and b/tests/data/reference/test_combine_outputs/fort.63.nc differ diff --git a/tests/data/reference/test_combine_outputs/fort.64.nc b/tests/data/reference/test_combine_outputs/fort.64.nc index 21a217af..e166f352 100644 Binary files a/tests/data/reference/test_combine_outputs/fort.64.nc and b/tests/data/reference/test_combine_outputs/fort.64.nc differ diff --git a/tests/data/reference/test_combine_outputs/maxele.63.nc b/tests/data/reference/test_combine_outputs/maxele.63.nc index 278a21f8..11c78687 100644 Binary files a/tests/data/reference/test_combine_outputs/maxele.63.nc and b/tests/data/reference/test_combine_outputs/maxele.63.nc differ diff --git a/tests/data/reference/test_combine_outputs/maxvel.63.nc b/tests/data/reference/test_combine_outputs/maxvel.63.nc index ef03ac75..c6d574e1 100644 Binary files a/tests/data/reference/test_combine_outputs/maxvel.63.nc and b/tests/data/reference/test_combine_outputs/maxvel.63.nc differ diff --git a/tests/data/reference/test_combine_outputs/perturbations.nc b/tests/data/reference/test_combine_outputs/perturbations.nc index f76ec4e6..21579e5b 100644 Binary files a/tests/data/reference/test_combine_outputs/perturbations.nc and b/tests/data/reference/test_combine_outputs/perturbations.nc differ