From 2052d35a06121da0273ede25e764d8d354b66a90 Mon Sep 17 00:00:00 2001
From: Gareth Tribello <gareth.tribello@gmail.com>
Date: Mon, 8 May 2017 19:19:39 +0100
Subject: [PATCH] Fix to bug in multicolvars + filters

This fixes a problem in the way atoms are setup for calculations where you take an input
from a multicolvar filter as input to a new multicolvar if SPECIESA and SPECIESB are used.
For instance you might be calculating Q6 for those atoms that have a coordination number
greater than 4
---
 .../rt-q6-subset/deriv3.reference             | 584 +++++++++---------
 src/crystallization/CubicHarmonicBase.cpp     |   3 +-
 src/crystallization/OrientationSphere.cpp     |   3 +-
 src/crystallization/Steinhardt.cpp            |   4 +-
 src/multicolvar/CoordinationNumbers.cpp       |   3 +-
 src/multicolvar/LocalAverage.cpp              |   3 +-
 src/multicolvar/MultiColvarBase.cpp           |   9 +-
 7 files changed, 311 insertions(+), 298 deletions(-)

diff --git a/regtest/crystallization/rt-q6-subset/deriv3.reference b/regtest/crystallization/rt-q6-subset/deriv3.reference
index ddb88fd1c..5b6599395 100644
--- a/regtest/crystallization/rt-q6-subset/deriv3.reference
+++ b/regtest/crystallization/rt-q6-subset/deriv3.reference
@@ -1,19 +1,19 @@
 #! FIELDS time parameter w6.mean
- 0.000000 0  -0.0263
- 0.000000 1  -0.0045
- 0.000000 2   0.0090
- 0.000000 3  -0.0214
- 0.000000 4   0.0054
- 0.000000 5  -0.0470
- 0.000000 6   0.0387
- 0.000000 7  -0.0254
- 0.000000 8  -0.0831
- 0.000000 9  -0.0156
- 0.000000 10   0.0026
- 0.000000 11   0.0182
- 0.000000 12   0.0013
- 0.000000 13   0.0369
- 0.000000 14   0.0071
+ 0.000000 0  -0.0199
+ 0.000000 1  -0.0007
+ 0.000000 2   0.0263
+ 0.000000 3  -0.0219
+ 0.000000 4   0.0074
+ 0.000000 5  -0.0449
+ 0.000000 6   0.0372
+ 0.000000 7  -0.0158
+ 0.000000 8  -0.0789
+ 0.000000 9  -0.0129
+ 0.000000 10   0.0002
+ 0.000000 11   0.0222
+ 0.000000 12   0.0052
+ 0.000000 13   0.0257
+ 0.000000 14   0.0018
  0.000000 15   0.0000
  0.000000 16   0.0000
  0.000000 17   0.0000
@@ -29,198 +29,198 @@
  0.000000 27   0.0000
  0.000000 28   0.0000
  0.000000 29   0.0000
- 0.000000 30  -0.0134
- 0.000000 31  -0.0220
+ 0.000000 30  -0.0144
+ 0.000000 31  -0.0214
  0.000000 32   0.0061
  0.000000 33   0.0000
  0.000000 34   0.0000
  0.000000 35  -0.0000
- 0.000000 36   0.0091
- 0.000000 37   0.0053
- 0.000000 38  -0.0099
+ 0.000000 36   0.0101
+ 0.000000 37   0.0059
+ 0.000000 38  -0.0108
  0.000000 39  -0.0000
  0.000000 40   0.0000
  0.000000 41   0.0000
  0.000000 42   0.0000
- 0.000000 43  -0.0001
+ 0.000000 43  -0.0000
  0.000000 44  -0.0001
- 0.000000 45  -0.0133
- 0.000000 46   0.0004
- 0.000000 47   0.0048
- 0.000000 48   0.0117
+ 0.000000 45  -0.0131
+ 0.000000 46  -0.0018
+ 0.000000 47   0.0025
+ 0.000000 48   0.0105
  0.000000 49  -0.0055
- 0.000000 50   0.0012
- 0.000000 51  -0.0006
- 0.000000 52  -0.0006
+ 0.000000 50   0.0005
+ 0.000000 51  -0.0005
+ 0.000000 52  -0.0005
  0.000000 53   0.0005
- 0.000000 54   0.0070
- 0.000000 55   0.0014
+ 0.000000 54   0.0032
+ 0.000000 55  -0.0014
  0.000000 56   0.0147
- 0.000000 57  -0.0000
- 0.000000 58   0.0002
- 0.000000 59   0.0002
+ 0.000000 57   0.0000
+ 0.000000 58   0.0001
+ 0.000000 59   0.0001
  0.000000 60   0.0000
  0.000000 61   0.0000
  0.000000 62   0.0000
- 0.000000 63   0.0096
- 0.000000 64  -0.0058
- 0.000000 65   0.0032
+ 0.000000 63   0.0088
+ 0.000000 64  -0.0063
+ 0.000000 65   0.0021
  0.000000 66   0.0000
  0.000000 67   0.0000
  0.000000 68   0.0000
- 0.000000 69  -0.0040
- 0.000000 70  -0.0035
- 0.000000 71   0.0148
- 0.000000 72  -0.0008
- 0.000000 73   0.0051
- 0.000000 74   0.0074
- 0.000000 75   0.0005
- 0.000000 76  -0.0009
- 0.000000 77  -0.0009
- 0.000000 78   0.0003
- 0.000000 79  -0.0005
- 0.000000 80  -0.0002
- 0.000000 81   0.0035
- 0.000000 82   0.0005
- 0.000000 83  -0.0010
- 0.000000 84   0.0037
- 0.000000 85   0.0027
- 0.000000 86  -0.0008
- 0.000000 87   0.0077
- 0.000000 88   0.0014
- 0.000000 89  -0.0000
+ 0.000000 69  -0.0026
+ 0.000000 70  -0.0040
+ 0.000000 71   0.0156
+ 0.000000 72   0.0034
+ 0.000000 73   0.0079
+ 0.000000 74   0.0049
+ 0.000000 75  -0.0004
+ 0.000000 76  -0.0011
+ 0.000000 77  -0.0015
+ 0.000000 78   0.0002
+ 0.000000 79  -0.0004
+ 0.000000 80  -0.0001
+ 0.000000 81   0.0031
+ 0.000000 82   0.0012
+ 0.000000 83  -0.0017
+ 0.000000 84   0.0022
+ 0.000000 85   0.0000
+ 0.000000 86  -0.0023
+ 0.000000 87   0.0072
+ 0.000000 88   0.0022
+ 0.000000 89   0.0017
  0.000000 90  -0.0000
  0.000000 91   0.0000
  0.000000 92   0.0000
- 0.000000 93   0.0074
- 0.000000 94  -0.0047
- 0.000000 95   0.0023
+ 0.000000 93   0.0067
+ 0.000000 94  -0.0038
+ 0.000000 95   0.0024
  0.000000 96  -0.0000
  0.000000 97  -0.0000
  0.000000 98   0.0000
- 0.000000 99  -0.0101
- 0.000000 100   0.0184
- 0.000000 101  -0.0038
- 0.000000 102  -0.0063
- 0.000000 103  -0.0019
- 0.000000 104   0.0027
- 0.000000 105   0.0025
- 0.000000 106   0.0028
- 0.000000 107   0.0029
+ 0.000000 99  -0.0104
+ 0.000000 100   0.0198
+ 0.000000 101  -0.0040
+ 0.000000 102  -0.0051
+ 0.000000 103  -0.0016
+ 0.000000 104   0.0020
+ 0.000000 105   0.0018
+ 0.000000 106   0.0030
+ 0.000000 107   0.0032
  0.000000 108   0.0000
  0.000000 109   0.0000
  0.000000 110   0.0000
  0.000000 111  -0.0000
  0.000000 112   0.0001
- 0.000000 113  -0.0001
+ 0.000000 113  -0.0000
  0.000000 114   0.0000
  0.000000 115   0.0000
  0.000000 116  -0.0000
- 0.000000 117  -0.0030
- 0.000000 118  -0.0143
- 0.000000 119  -0.0110
+ 0.000000 117  -0.0041
+ 0.000000 118  -0.0116
+ 0.000000 119  -0.0089
  0.000000 120   0.0055
- 0.000000 121   0.0043
- 0.000000 122   0.0234
+ 0.000000 121   0.0037
+ 0.000000 122   0.0190
  0.000000 123  -0.0000
  0.000000 124   0.0000
  0.000000 125   0.0000
- 0.000000 126  -0.0040
- 0.000000 127   0.0007
- 0.000000 128  -0.0057
- 0.000000 129   0.0024
- 0.000000 130  -0.0056
- 0.000000 131  -0.0244
- 0.000000 132   0.0020
- 0.000000 133  -0.0059
- 0.000000 134   0.0076
- 0.000000 135  -0.0070
- 0.000000 136   0.0009
- 0.000000 137   0.0080
+ 0.000000 126  -0.0028
+ 0.000000 127  -0.0012
+ 0.000000 128  -0.0041
+ 0.000000 129   0.0044
+ 0.000000 130  -0.0054
+ 0.000000 131  -0.0224
+ 0.000000 132   0.0011
+ 0.000000 133  -0.0034
+ 0.000000 134   0.0059
+ 0.000000 135  -0.0090
+ 0.000000 136   0.0019
+ 0.000000 137   0.0088
  0.000000 138  -0.0000
  0.000000 139   0.0000
  0.000000 140   0.0000
  0.000000 141   0.0000
  0.000000 142  -0.0002
  0.000000 143  -0.0001
- 0.000000 144  -0.0003
- 0.000000 145  -0.0181
- 0.000000 146   0.0127
- 0.000000 147   0.0003
- 0.000000 148  -0.0033
- 0.000000 149   0.0012
- 0.000000 150  -0.0001
+ 0.000000 144  -0.0033
+ 0.000000 145  -0.0162
+ 0.000000 146   0.0084
+ 0.000000 147  -0.0001
+ 0.000000 148  -0.0038
+ 0.000000 149   0.0011
+ 0.000000 150  -0.0000
  0.000000 151  -0.0000
  0.000000 152   0.0000
- 0.000000 153   0.0085
- 0.000000 154  -0.0073
- 0.000000 155   0.0006
+ 0.000000 153   0.0095
+ 0.000000 154  -0.0087
+ 0.000000 155  -0.0001
  0.000000 156  -0.0000
- 0.000000 157   0.0000
+ 0.000000 157  -0.0000
  0.000000 158   0.0000
- 0.000000 159  -0.0000
- 0.000000 160  -0.0001
- 0.000000 161  -0.0004
- 0.000000 162  -0.0097
- 0.000000 163   0.0027
- 0.000000 164  -0.0004
- 0.000000 165   0.0014
- 0.000000 166  -0.0010
- 0.000000 167   0.0075
- 0.000000 168   0.0057
- 0.000000 169  -0.0039
- 0.000000 170   0.0127
- 0.000000 171   0.0075
- 0.000000 172  -0.0013
- 0.000000 173   0.0002
+ 0.000000 159  -0.0004
+ 0.000000 160   0.0008
+ 0.000000 161  -0.0007
+ 0.000000 162  -0.0095
+ 0.000000 163   0.0021
+ 0.000000 164  -0.0005
+ 0.000000 165   0.0018
+ 0.000000 166  -0.0015
+ 0.000000 167   0.0072
+ 0.000000 168   0.0062
+ 0.000000 169  -0.0028
+ 0.000000 170   0.0102
+ 0.000000 171   0.0066
+ 0.000000 172   0.0011
+ 0.000000 173  -0.0011
  0.000000 174  -0.0000
  0.000000 175  -0.0000
  0.000000 176  -0.0000
- 0.000000 177   0.0019
- 0.000000 178   0.0004
- 0.000000 179   0.0028
- 0.000000 180  -0.0020
- 0.000000 181  -0.0043
- 0.000000 182   0.0106
+ 0.000000 177   0.0016
+ 0.000000 178   0.0001
+ 0.000000 179   0.0017
+ 0.000000 180  -0.0007
+ 0.000000 181  -0.0048
+ 0.000000 182   0.0101
  0.000000 183  -0.0000
  0.000000 184  -0.0001
  0.000000 185   0.0000
- 0.000000 186   0.0051
- 0.000000 187   0.0206
- 0.000000 188  -0.0031
+ 0.000000 186   0.0031
+ 0.000000 187   0.0176
+ 0.000000 188  -0.0028
  0.000000 189   0.0000
  0.000000 190   0.0000
  0.000000 191   0.0000
- 0.000000 192   0.0019
- 0.000000 193   0.0029
- 0.000000 194  -0.0073
- 0.000000 195   0.0023
- 0.000000 196   0.0096
- 0.000000 197  -0.0043
- 0.000000 198   0.0013
- 0.000000 199   0.0055
- 0.000000 200   0.0042
- 0.000000 201   0.0019
- 0.000000 202  -0.0002
- 0.000000 203  -0.0001
+ 0.000000 192   0.0003
+ 0.000000 193   0.0035
+ 0.000000 194  -0.0084
+ 0.000000 195   0.0015
+ 0.000000 196   0.0079
+ 0.000000 197  -0.0050
+ 0.000000 198   0.0035
+ 0.000000 199   0.0047
+ 0.000000 200   0.0030
+ 0.000000 201   0.0015
+ 0.000000 202  -0.0003
+ 0.000000 203  -0.0002
  0.000000 204  -0.0000
  0.000000 205   0.0000
  0.000000 206  -0.0000
- 0.000000 207   0.0000
- 0.000000 208   0.0000
- 0.000000 209   0.0000
- 0.000000 210   0.0000
- 0.000000 211   0.0000
- 0.000000 212   0.0000
- 0.000000 213   0.0000
- 0.000000 214   0.0000
- 0.000000 215   0.0000
- 0.000000 216   0.0000
- 0.000000 217   0.0000
- 0.000000 218   0.0000
- 0.000000 219   0.0000
- 0.000000 220   0.0000
- 0.000000 221   0.0000
+ 0.000000 207  -0.0064
+ 0.000000 208  -0.0037
+ 0.000000 209  -0.0173
+ 0.000000 210   0.0005
+ 0.000000 211  -0.0020
+ 0.000000 212  -0.0021
+ 0.000000 213   0.0015
+ 0.000000 214  -0.0096
+ 0.000000 215  -0.0042
+ 0.000000 216  -0.0027
+ 0.000000 217   0.0024
+ 0.000000 218  -0.0040
+ 0.000000 219  -0.0039
+ 0.000000 220   0.0113
+ 0.000000 221   0.0053
  0.000000 222   0.0000
  0.000000 223   0.0000
  0.000000 224   0.0000
@@ -236,182 +236,182 @@
  0.000000 234   0.0000
  0.000000 235   0.0000
  0.000000 236   0.0000
- 0.000000 237   0.0000
- 0.000000 238   0.0000
- 0.000000 239   0.0000
+ 0.000000 237   0.0010
+ 0.000000 238  -0.0005
+ 0.000000 239   0.0001
  0.000000 240   0.0000
  0.000000 241   0.0000
- 0.000000 242   0.0000
- 0.000000 243   0.0000
- 0.000000 244   0.0000
- 0.000000 245   0.0000
+ 0.000000 242  -0.0000
+ 0.000000 243  -0.0010
+ 0.000000 244  -0.0006
+ 0.000000 245   0.0009
  0.000000 246   0.0000
- 0.000000 247   0.0000
+ 0.000000 247  -0.0000
  0.000000 248   0.0000
- 0.000000 249   0.0000
- 0.000000 250   0.0000
- 0.000000 251   0.0000
- 0.000000 252   0.0000
- 0.000000 253   0.0000
- 0.000000 254   0.0000
- 0.000000 255   0.0000
- 0.000000 256   0.0000
- 0.000000 257   0.0000
- 0.000000 258   0.0000
- 0.000000 259   0.0000
+ 0.000000 249  -0.0000
+ 0.000000 250  -0.0000
+ 0.000000 251  -0.0000
+ 0.000000 252  -0.0002
+ 0.000000 253   0.0022
+ 0.000000 254   0.0023
+ 0.000000 255   0.0012
+ 0.000000 256  -0.0000
+ 0.000000 257   0.0006
+ 0.000000 258  -0.0001
+ 0.000000 259  -0.0000
  0.000000 260   0.0000
- 0.000000 261   0.0000
- 0.000000 262   0.0000
- 0.000000 263   0.0000
- 0.000000 264   0.0000
- 0.000000 265   0.0000
+ 0.000000 261   0.0038
+ 0.000000 262   0.0028
+ 0.000000 263  -0.0000
+ 0.000000 264  -0.0000
+ 0.000000 265   0.0001
  0.000000 266   0.0000
  0.000000 267   0.0000
  0.000000 268   0.0000
  0.000000 269   0.0000
- 0.000000 270   0.0000
- 0.000000 271   0.0000
- 0.000000 272   0.0000
- 0.000000 273   0.0000
- 0.000000 274   0.0000
+ 0.000000 270   0.0008
+ 0.000000 271   0.0005
+ 0.000000 272   0.0012
+ 0.000000 273  -0.0000
+ 0.000000 274  -0.0000
  0.000000 275   0.0000
- 0.000000 276   0.0000
- 0.000000 277   0.0000
- 0.000000 278   0.0000
- 0.000000 279   0.0000
- 0.000000 280   0.0000
- 0.000000 281   0.0000
- 0.000000 282   0.0000
- 0.000000 283   0.0000
- 0.000000 284   0.0000
- 0.000000 285   0.0000
- 0.000000 286   0.0000
- 0.000000 287   0.0000
- 0.000000 288   0.0000
- 0.000000 289   0.0000
- 0.000000 290   0.0000
- 0.000000 291   0.0000
- 0.000000 292   0.0000
- 0.000000 293   0.0000
- 0.000000 294   0.0000
- 0.000000 295   0.0000
- 0.000000 296   0.0000
+ 0.000000 276  -0.0014
+ 0.000000 277   0.0005
+ 0.000000 278  -0.0009
+ 0.000000 279  -0.0042
+ 0.000000 280  -0.0028
+ 0.000000 281   0.0025
+ 0.000000 282   0.0009
+ 0.000000 283   0.0002
+ 0.000000 284   0.0006
+ 0.000000 285   0.0001
+ 0.000000 286  -0.0001
+ 0.000000 287  -0.0000
+ 0.000000 288   0.0004
+ 0.000000 289  -0.0007
+ 0.000000 290   0.0007
+ 0.000000 291   0.0015
+ 0.000000 292   0.0027
+ 0.000000 293   0.0015
+ 0.000000 294   0.0005
+ 0.000000 295  -0.0008
+ 0.000000 296  -0.0017
  0.000000 297   0.0000
- 0.000000 298   0.0000
- 0.000000 299   0.0000
- 0.000000 300   0.0000
- 0.000000 301   0.0000
- 0.000000 302   0.0000
+ 0.000000 298  -0.0000
+ 0.000000 299  -0.0000
+ 0.000000 300   0.0007
+ 0.000000 301  -0.0009
+ 0.000000 302  -0.0001
  0.000000 303   0.0000
- 0.000000 304   0.0000
+ 0.000000 304  -0.0000
  0.000000 305   0.0000
- 0.000000 306   0.0000
- 0.000000 307   0.0000
- 0.000000 308   0.0000
- 0.000000 309   0.0000
- 0.000000 310   0.0000
- 0.000000 311   0.0000
- 0.000000 312   0.0000
- 0.000000 313   0.0000
- 0.000000 314   0.0000
+ 0.000000 306   0.0002
+ 0.000000 307  -0.0014
+ 0.000000 308   0.0002
+ 0.000000 309  -0.0012
+ 0.000000 310  -0.0003
+ 0.000000 311   0.0007
+ 0.000000 312   0.0007
+ 0.000000 313  -0.0002
+ 0.000000 314  -0.0003
  0.000000 315   0.0000
  0.000000 316   0.0000
  0.000000 317   0.0000
- 0.000000 318   0.0000
+ 0.000000 318  -0.0000
  0.000000 319   0.0000
- 0.000000 320   0.0000
+ 0.000000 320  -0.0000
  0.000000 321   0.0000
  0.000000 322   0.0000
- 0.000000 323   0.0000
- 0.000000 324   0.0000
- 0.000000 325   0.0000
- 0.000000 326   0.0000
- 0.000000 327   0.0000
- 0.000000 328   0.0000
- 0.000000 329   0.0000
- 0.000000 330   0.0000
- 0.000000 331   0.0000
+ 0.000000 323  -0.0000
+ 0.000000 324   0.0011
+ 0.000000 325  -0.0026
+ 0.000000 326  -0.0021
+ 0.000000 327  -0.0001
+ 0.000000 328   0.0006
+ 0.000000 329   0.0044
+ 0.000000 330  -0.0000
+ 0.000000 331  -0.0000
  0.000000 332   0.0000
- 0.000000 333   0.0000
- 0.000000 334   0.0000
- 0.000000 335   0.0000
- 0.000000 336   0.0000
- 0.000000 337   0.0000
- 0.000000 338   0.0000
- 0.000000 339   0.0000
- 0.000000 340   0.0000
- 0.000000 341   0.0000
- 0.000000 342   0.0000
- 0.000000 343   0.0000
- 0.000000 344   0.0000
- 0.000000 345   0.0000
+ 0.000000 333  -0.0013
+ 0.000000 334   0.0019
+ 0.000000 335  -0.0016
+ 0.000000 336  -0.0020
+ 0.000000 337  -0.0002
+ 0.000000 338  -0.0019
+ 0.000000 339   0.0010
+ 0.000000 340  -0.0025
+ 0.000000 341   0.0017
+ 0.000000 342   0.0020
+ 0.000000 343  -0.0010
+ 0.000000 344  -0.0008
+ 0.000000 345  -0.0000
  0.000000 346   0.0000
- 0.000000 347   0.0000
+ 0.000000 347  -0.0000
  0.000000 348   0.0000
- 0.000000 349   0.0000
+ 0.000000 349  -0.0000
  0.000000 350   0.0000
- 0.000000 351   0.0000
- 0.000000 352   0.0000
- 0.000000 353   0.0000
- 0.000000 354   0.0000
- 0.000000 355   0.0000
- 0.000000 356   0.0000
- 0.000000 357   0.0000
- 0.000000 358   0.0000
+ 0.000000 351   0.0030
+ 0.000000 352  -0.0019
+ 0.000000 353   0.0043
+ 0.000000 354   0.0004
+ 0.000000 355   0.0004
+ 0.000000 356   0.0001
+ 0.000000 357  -0.0000
+ 0.000000 358  -0.0000
  0.000000 359   0.0000
- 0.000000 360   0.0000
- 0.000000 361   0.0000
- 0.000000 362   0.0000
- 0.000000 363   0.0000
+ 0.000000 360  -0.0010
+ 0.000000 361   0.0015
+ 0.000000 362   0.0006
+ 0.000000 363  -0.0000
  0.000000 364   0.0000
  0.000000 365   0.0000
- 0.000000 366   0.0000
- 0.000000 367   0.0000
- 0.000000 368   0.0000
- 0.000000 369   0.0000
- 0.000000 370   0.0000
- 0.000000 371   0.0000
- 0.000000 372   0.0000
- 0.000000 373   0.0000
- 0.000000 374   0.0000
- 0.000000 375   0.0000
- 0.000000 376   0.0000
- 0.000000 377   0.0000
- 0.000000 378   0.0000
- 0.000000 379   0.0000
- 0.000000 380   0.0000
- 0.000000 381   0.0000
- 0.000000 382   0.0000
- 0.000000 383   0.0000
- 0.000000 384   0.0000
- 0.000000 385   0.0000
- 0.000000 386   0.0000
- 0.000000 387   0.0000
- 0.000000 388   0.0000
- 0.000000 389   0.0000
+ 0.000000 366   0.0004
+ 0.000000 367  -0.0009
+ 0.000000 368   0.0003
+ 0.000000 369  -0.0002
+ 0.000000 370   0.0006
+ 0.000000 371   0.0001
+ 0.000000 372  -0.0003
+ 0.000000 373   0.0004
+ 0.000000 374   0.0003
+ 0.000000 375  -0.0005
+ 0.000000 376  -0.0011
+ 0.000000 377   0.0025
+ 0.000000 378   0.0010
+ 0.000000 379  -0.0024
+ 0.000000 380   0.0013
+ 0.000000 381  -0.0000
+ 0.000000 382  -0.0000
+ 0.000000 383  -0.0000
+ 0.000000 384   0.0003
+ 0.000000 385   0.0003
+ 0.000000 386   0.0011
+ 0.000000 387  -0.0013
+ 0.000000 388   0.0006
+ 0.000000 389   0.0005
  0.000000 390   0.0000
  0.000000 391   0.0000
- 0.000000 392   0.0000
- 0.000000 393   0.0000
- 0.000000 394   0.0000
- 0.000000 395   0.0000
+ 0.000000 392  -0.0000
+ 0.000000 393   0.0019
+ 0.000000 394   0.0029
+ 0.000000 395  -0.0003
  0.000000 396   0.0000
  0.000000 397   0.0000
  0.000000 398   0.0000
- 0.000000 399   0.0000
- 0.000000 400   0.0000
- 0.000000 401   0.0000
- 0.000000 402   0.0000
- 0.000000 403   0.0000
- 0.000000 404   0.0000
- 0.000000 405   0.0000
- 0.000000 406   0.0000
- 0.000000 407   0.0000
- 0.000000 408   0.0000
+ 0.000000 399   0.0016
+ 0.000000 400  -0.0005
+ 0.000000 401   0.0010
+ 0.000000 402   0.0007
+ 0.000000 403   0.0017
+ 0.000000 404   0.0007
+ 0.000000 405  -0.0022
+ 0.000000 406   0.0008
+ 0.000000 407   0.0012
+ 0.000000 408   0.0003
  0.000000 409   0.0000
  0.000000 410   0.0000
- 0.000000 411   0.0000
- 0.000000 412   0.0000
+ 0.000000 411  -0.0000
+ 0.000000 412  -0.0000
  0.000000 413   0.0000
  0.000000 414  -0.0010
  0.000000 415  -0.0030
diff --git a/src/crystallization/CubicHarmonicBase.cpp b/src/crystallization/CubicHarmonicBase.cpp
index a51b066d6..c7629e726 100644
--- a/src/crystallization/CubicHarmonicBase.cpp
+++ b/src/crystallization/CubicHarmonicBase.cpp
@@ -102,7 +102,8 @@ double CubicHarmonicBase::compute( const unsigned& tindex, multicolvar::AtomValu
 
     if ( (d2=distance[0]*distance[0])<rcut2 &&
          (d2+=distance[1]*distance[1])<rcut2 &&
-         (d2+=distance[2]*distance[2])<rcut2) {
+         (d2+=distance[2]*distance[2])<rcut2 &&
+          d2>epsilon ){
 
       double sw = switchingFunction.calculateSqr( d2, dfunc );
 
diff --git a/src/crystallization/OrientationSphere.cpp b/src/crystallization/OrientationSphere.cpp
index 1f0dc4969..9d544d8fd 100644
--- a/src/crystallization/OrientationSphere.cpp
+++ b/src/crystallization/OrientationSphere.cpp
@@ -83,7 +83,8 @@ double OrientationSphere::compute( const unsigned& tindex, multicolvar::AtomValu
     Vector& distance=myatoms.getPosition(i);
     if ( (d2=distance[0]*distance[0])<rcut2 &&
          (d2+=distance[1]*distance[1])<rcut2 &&
-         (d2+=distance[2]*distance[2])<rcut2) {
+         (d2+=distance[2]*distance[2])<rcut2 &&
+          d2>epsilon ){
 
       sw = switchingFunction.calculateSqr( d2, dfunc );
 
diff --git a/src/crystallization/Steinhardt.cpp b/src/crystallization/Steinhardt.cpp
index 0cfeb4475..398625a65 100644
--- a/src/crystallization/Steinhardt.cpp
+++ b/src/crystallization/Steinhardt.cpp
@@ -81,7 +81,9 @@ void Steinhardt::calculateVector( multicolvar::AtomValuePack& myatoms ) const {
     Vector& distance=myatoms.getPosition(i);  // getSeparation( myatoms.getPosition(0), myatoms.getPosition(i) );
     if ( (d2=distance[0]*distance[0])<rcut2 &&
          (d2+=distance[1]*distance[1])<rcut2 &&
-         (d2+=distance[2]*distance[2])<rcut2) {
+         (d2+=distance[2]*distance[2])<rcut2 &&
+          d2>epsilon ){
+
       dlen = sqrt(d2);
       sw = switchingFunction.calculate( dlen, dfunc );
       accumulateSymmetryFunction( -1, i, sw, (+dfunc)*distance, (-dfunc)*Tensor( distance,distance ), myatoms );
diff --git a/src/multicolvar/CoordinationNumbers.cpp b/src/multicolvar/CoordinationNumbers.cpp
index a3823b488..c7ea37a03 100644
--- a/src/multicolvar/CoordinationNumbers.cpp
+++ b/src/multicolvar/CoordinationNumbers.cpp
@@ -127,7 +127,8 @@ double CoordinationNumbers::compute( const unsigned& tindex, AtomValuePack& myat
     Vector& distance=myatoms.getPosition(i);
     if ( (d2=distance[0]*distance[0])<rcut2 &&
          (d2+=distance[1]*distance[1])<rcut2 &&
-         (d2+=distance[2]*distance[2])<rcut2) {
+         (d2+=distance[2]*distance[2])<rcut2 && 
+          d2>epsilon ){
 
       sw = switchingFunction.calculateSqr( d2, dfunc );
       accumulateSymmetryFunction( 1, i, sw, (dfunc)*distance, (-dfunc)*Tensor(distance,distance), myatoms );
diff --git a/src/multicolvar/LocalAverage.cpp b/src/multicolvar/LocalAverage.cpp
index 7f5edf694..171aa61ba 100644
--- a/src/multicolvar/LocalAverage.cpp
+++ b/src/multicolvar/LocalAverage.cpp
@@ -183,7 +183,8 @@ double LocalAverage::compute( const unsigned& tindex, AtomValuePack& myatoms ) c
     Vector& distance=myatoms.getPosition(i);  // getSeparation( myatoms.getPosition(0), myatoms.getPosition(i) );
     if ( (d2=distance[0]*distance[0])<rcut2 &&
          (d2+=distance[1]*distance[1])<rcut2 &&
-         (d2+=distance[2]*distance[2])<rcut2) {
+         (d2+=distance[2]*distance[2])<rcut2 &&
+          d2>epsilon) {
 
       sw = switchingFunction.calculateSqr( d2, dfunc );
 
diff --git a/src/multicolvar/MultiColvarBase.cpp b/src/multicolvar/MultiColvarBase.cpp
index 6babc9254..7cd118677 100644
--- a/src/multicolvar/MultiColvarBase.cpp
+++ b/src/multicolvar/MultiColvarBase.cpp
@@ -376,8 +376,15 @@ void MultiColvarBase::setupMultiColvarBase( const std::vector<AtomNumber>& atoms
         bool found=false; unsigned inum;
         for(unsigned j=0; j<nat1; ++j) {
           if( atom_lab[nat1+i].first>0 && atom_lab[j].first>0 ) {
-            if( mybasemulticolvars[atom_lab[nat1+i].first-1]->getAbsoluteIndexOfCentralAtom(atom_lab[nat1+i].second)==
+            if( atom_lab[nat1+i].first==atom_lab[j].first && 
+                mybasemulticolvars[atom_lab[nat1+i].first-1]->getAbsoluteIndexOfCentralAtom(atom_lab[nat1+i].second)==
                 mybasemulticolvars[atom_lab[j].first-1]->getAbsoluteIndexOfCentralAtom(atom_lab[j].second) ) { found=true; inum=j; break; }
+          } else if( atom_lab[nat1+i].first>0 ){
+            if( mybasemulticolvars[atom_lab[nat1+i].first-1]->getAbsoluteIndexOfCentralAtom(atom_lab[nat1+i].second)==
+                all_atoms[atom_lab[j].second] ){ found=true; inum=nat1 + i; break; }
+          } else if( atom_lab[j].first>0 ){
+            if( all_atoms[atom_lab[nat1+i].second]==
+                mybasemulticolvars[atom_lab[j].first-1]->getAbsoluteIndexOfCentralAtom(atom_lab[j].second) ) { found=true; inum=nat1+i; break; }
           } else if( all_atoms[atom_lab[nat1+i].second]==all_atoms[atom_lab[j].second] ) { found=true; inum=j; break; }
         }
         // This prevents mistakes being made in colvar setup
-- 
GitLab