@@ -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
249254template <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()
473478template <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
508513template <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) {
0 commit comments