From 493e0cd17328ace2cec3b49c47edc7d543f3207b Mon Sep 17 00:00:00 2001 From: SteveDoyle2 Date: Mon, 13 Jan 2025 23:51:13 -0800 Subject: [PATCH] adding duplicate check --- pyNastran/dev/bdf_vectorized3/cards/base_card.py | 12 +++++++++++- .../bdf_vectorized3/cards/test/test_vector_coords.py | 9 +++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/pyNastran/dev/bdf_vectorized3/cards/base_card.py b/pyNastran/dev/bdf_vectorized3/cards/base_card.py index e753ec1b8..2ba8bd383 100644 --- a/pyNastran/dev/bdf_vectorized3/cards/base_card.py +++ b/pyNastran/dev/bdf_vectorized3/cards/base_card.py @@ -1022,7 +1022,17 @@ def sort_duplicates(card: VectorizedBaseCard) -> None: #assert (iarg - uarg).sum() == 0, (iarg - uarg).sum() is_duplicate_ids = (len(ids_sorted) != len(uids_sorted)) - if is_duplicate_ids: + model = card.model + if is_duplicate_ids and card.type in model.allow_overwrites_set: + #print(f'ids_sorted = {ids_sorted}') + #print(f'uids_sorted = {uids_sorted}') + idx = np.searchsorted(ids_sorted, uids_sorted, side='right') - 1 + assert np.array_equal(ids_sorted[idx], uids_sorted) + #print(f'idx = {idx}') + card.__apply_slice__(card, idx) + # card._is_sorted = True + # return + elif is_duplicate_ids: # Now that we've sorted the ids, we'll take the delta id with the next id. # We check the two neighoring values when there is a duplicate, # so if they're they same in xyz, cp, cd, etc., the results are the same diff --git a/pyNastran/dev/bdf_vectorized3/cards/test/test_vector_coords.py b/pyNastran/dev/bdf_vectorized3/cards/test/test_vector_coords.py index e3c186061..8ddebcf57 100644 --- a/pyNastran/dev/bdf_vectorized3/cards/test/test_vector_coords.py +++ b/pyNastran/dev/bdf_vectorized3/cards/test/test_vector_coords.py @@ -8,6 +8,15 @@ class TestCoords(unittest.TestCase): + def test_grid_repeated(self): + model = BDF(debug=False, log=None, mode='msc') + model.allow_overwrites_set = {'GRID'} + model._make_card_parser() + model.add_grid(1, [0., 0., 0.], comment='a') + model.add_grid(2, [1., 0., 0.], comment='') + model.add_grid(1, [2., 0., 0.], comment='a') + model.parse_cards() + def test_ricoord(self): model = BDF(debug=False, log=None, mode='msc') fields = ['CORD1R', '1', '1', '101', '2']