diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 2c7ce0004b..432ac8206c 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -1742,15 +1742,15 @@ void Neighbor::requests_new2old() /* ---------------------------------------------------------------------- find and return request made by classptr if not found or classptr = nullptr, return nullptr - TODO: should have optional argument "id" to match ID if multiple requests + id is optional and defaults to 0, which is the request id value unless set explicitly ------------------------------------------------------------------------- */ -NeighRequest *Neighbor::find_request(void *classptr) const +NeighRequest *Neighbor::find_request(void *classptr, const int id) const { if (classptr == nullptr) return nullptr; for (int i = 0; i < nrequest; i++) - if (requests[i]->requestor == classptr) return requests[i]; + if ((requests[i]->requestor == classptr) && (requests[i]->id == id)) return requests[i]; return nullptr; } @@ -1770,15 +1770,15 @@ const std::vector Neighbor::get_pair_requests() const /* ---------------------------------------------------------------------- find and return list requested by classptr if not found or classptr = nullptr, return nullptr - TODO: should have optional argument "id" to match ID if multiple requests + id is optional and defaults to 0, which is the request id value unless set explicitly ------------------------------------------------------------------------- */ -NeighList *Neighbor::find_list(void *classptr) const +NeighList *Neighbor::find_list(void *classptr, const int id) const { if (classptr == nullptr) return nullptr; for (int i = 0; i < nlist; i++) - if (lists[i]->requestor == classptr) return lists[i]; + if ((requests[i]->requestor == classptr) && (requests[i]->id == id)) return lists[i]; return nullptr; } diff --git a/src/neighbor.h b/src/neighbor.h index 06601f96a7..3492693766 100644 --- a/src/neighbor.h +++ b/src/neighbor.h @@ -153,8 +153,12 @@ class Neighbor : protected Pointers { void exclusion_group_group_delete(int, int); // rm a group-group exclusion int exclude_setting(); // return exclude value to accelerator pkg - NeighList *find_list(void *) const; // find a neighbor list based on requestor - NeighRequest *find_request(void *) const; // find a neighbor request based on requestor + + // find a neighbor list based on requestor + NeighList *find_list(void *, const int id = 0) const; + // find a neighbor request based on requestor + NeighRequest *find_request(void *, const int id = 0) const; + const std::vector get_pair_requests() const; int any_full(); // Check if any old requests had full neighbor lists void build_collection(int); // build peratom collection array starting at the given index