@@ -161,32 +161,30 @@ void Cluster::init(const std::unique_ptr<System> &system, const std::unique_ptr<
161161void Cluster::generate_unique_clusters (const size_t natmin, const std::vector<std::vector<int >> &map_p2s,
162162 std::vector<std::set<IntList>> &cluster_out) const
163163{
164- int *pair_tmp ;
164+ std::vector< int > pair_vec ;
165165
166166 for (auto order = 0 ; order < maxorder; ++order) {
167167
168168 cluster_out[order].clear ();
169169
170- allocate (pair_tmp, order + 2 );
170+ pair_vec. resize ( order + 2 );
171171
172172 for (size_t i = 0 ; i < natmin; ++i) {
173173
174174 const auto iat = map_p2s[i][0 ];
175175
176176 for (const auto &it: interaction_cluster[order][i]) {
177177
178- pair_tmp [0 ] = iat;
178+ pair_vec [0 ] = iat;
179179 for (auto j = 0 ; j < order + 1 ; ++j) {
180- pair_tmp [j + 1 ] = it.atom [j];
180+ pair_vec [j + 1 ] = it.atom [j];
181181 }
182- insort (order + 2 , pair_tmp);
183182
184- // Ignore many-body case
185- // if (!satisfy_nbody_rule(order + 2, pair_tmp, order)) continue ;
186- cluster_out[order].insert (IntList (order + 2 , pair_tmp ));
183+ // Use std::sort for deterministic, stable ordering across platforms
184+ std::sort (pair_vec. begin (), pair_vec. end ()) ;
185+ cluster_out[order].insert (IntList (pair_vec ));
187186 }
188187 }
189- deallocate (pair_tmp);
190188 }
191189}
192190
0 commit comments