Skip to content

Commit 8ec40c2

Browse files
committed
opt: Make pairlist a C array again
1 parent bd60850 commit 8ec40c2

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

src/colvarcomp_coordnums.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,13 @@ int colvar::coordnum::init(std::string const &conf)
147147
COLVARS_INPUT_ERROR);
148148
// return and do not allocate the pairlists below
149149
}
150-
pairlist.resize(num_pairs);
151-
std::fill(pairlist.begin(), pairlist.end(), true);
150+
pairlist.reset(new bool[num_pairs]);
151+
auto *pairlist_elem = pairlist.get();
152+
for (size_t ip = 0; ip < num_pairs; ip++, pairlist_elem++) {
153+
*pairlist_elem = true;
154+
}
155+
} else {
156+
pairlist_freq = 0;
152157
}
153158
}
154159

@@ -192,7 +197,7 @@ template <bool use_group1_com, bool use_group2_com, int flags> void colvar::coor
192197
cvm::atom_pos const group2_com = group2->center_of_mass();
193198
cvm::rvector group1_com_grad, group2_com_grad;
194199

195-
auto pairlist_elem = pairlist.begin();
200+
bool *pairlist_elem = pairlist.get();
196201

197202
for (size_t i = 0; i < group1_num_coords; ++i) {
198203

@@ -248,7 +253,7 @@ template <bool use_group1_com, bool use_group2_com, int flags> void colvar::coor
248253

249254
template<bool use_group1_com, bool use_group2_com, int compute_flags> int colvar::coordnum::compute_coordnum()
250255
{
251-
bool const use_pairlist = !pairlist.empty();
256+
bool const use_pairlist = pairlist_freq > 0;
252257
bool const rebuild_pairlist = use_pairlist && (cvm::step_relative() % pairlist_freq == 0);
253258

254259
if (use_pairlist) {
@@ -473,7 +478,7 @@ colvar::selfcoordnum::selfcoordnum()
473478
template<int flags> void colvar::selfcoordnum::selfcoordnum_sequential_loop()
474479
{
475480
size_t const n = group1->size();
476-
auto pairlist_elem = pairlist.begin();
481+
bool *pairlist_elem = pairlist.get();
477482

478483
for (size_t i = 0; i < n - 1; i++) {
479484
for (size_t j = i + 1; j < n; j++) {
@@ -507,7 +512,7 @@ template<int flags> void colvar::selfcoordnum::selfcoordnum_sequential_loop()
507512

508513
template<int compute_flags> int colvar::selfcoordnum::compute_selfcoordnum()
509514
{
510-
bool const use_pairlist = !pairlist.empty();
515+
bool const use_pairlist = pairlist_freq > 0;
511516
bool const rebuild_pairlist = use_pairlist && (cvm::step_relative() % pairlist_freq == 0);
512517

513518
if (use_pairlist) {

src/colvarcomp_coordnums.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class colvar::coordnum : public colvar::cvc {
107107
int pairlist_freq = 100;
108108

109109
/// Pair list
110-
std::vector<bool> pairlist;
110+
std::unique_ptr<bool []> pairlist;
111111

112112
};
113113

0 commit comments

Comments
 (0)